{"version":3,"file":"pdf.worker.mjs","sources":["../build/pdf.worker.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsWorker = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  WorkerMessageHandler: () => (/* reexport */ WorkerMessageHandler)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  IS_EDITING: 0x80,\n  OPLIST: 0x100\n};\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15\n};\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n  HIGHLIGHT_COLOR: 31,\n  HIGHLIGHT_DEFAULT_COLOR: 32,\n  HIGHLIGHT_THICKNESS: 33,\n  HIGHLIGHT_FREE: 34,\n  HIGHLIGHT_SHOW_ALL: 35,\n  DRAW_STEP: 41\n};\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\"\n};\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\"\n};\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nconst OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n  setStrokeTransparent: 92,\n  setFillTransparent: 93\n};\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\nfunction getVerbosityLevel() {\n  return verbosity;\n}\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        if (dots?.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch {}\n      }\n    }\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch {}\n  return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n  function BaseException(message, name) {\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n  return BaseException;\n}();\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nfunction isEvalSupported() {\n  try {\n    new Function(\"\");\n    return true;\n  } catch {\n    return false;\n  }\n}\nclass FeatureTest {\n  static get isLittleEndian() {\n    return shadow(this, \"isLittleEndian\", isLittleEndian());\n  }\n  static get isEvalSupported() {\n    return shadow(this, \"isEvalSupported\", isEvalSupported());\n  }\n  static get isOffscreenCanvasSupported() {\n    return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n  }\n  static get isImageDecoderSupported() {\n    return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n  }\n  static get platform() {\n    if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n      return shadow(this, \"platform\", {\n        isMac: navigator.platform.includes(\"Mac\"),\n        isWindows: navigator.platform.includes(\"Win\"),\n        isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n      });\n    }\n    return shadow(this, \"platform\", {\n      isMac: false,\n      isWindows: false,\n      isFirefox: false\n    });\n  }\n  static get isCSSRoundSupported() {\n    return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n  }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[2] *= transform[0];\n      if (transform[3] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[1];\n      minMax[1] = temp;\n      temp = minMax[2];\n      minMax[2] = minMax[3];\n      minMax[3] = temp;\n      if (transform[1] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[1];\n      minMax[3] *= transform[1];\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[2] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[5];\n    minMax[2] += transform[4];\n    minMax[3] += transform[5];\n  }\n  static transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  }\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = this.applyTransform(r, m);\n    const p2 = this.applyTransform(r.slice(2, 4), m);\n    const p3 = this.applyTransform([r[0], r[3]], m);\n    const p4 = this.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  }\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  }\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n  static normalizeRect(rect) {\n    const r = rect.slice(0);\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n    const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n    const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n    if (yLow > yHigh) {\n      return null;\n    }\n    return [xLow, yLow, xHigh, yHigh];\n  }\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n    if (t <= 0 || t >= 1) {\n      return;\n    }\n    const mt = 1 - t;\n    const tt = t * t;\n    const ttt = tt * t;\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n    if (Math.abs(a) < 1e-12) {\n      if (Math.abs(b) >= 1e-12) {\n        this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n      }\n      return;\n    }\n    const delta = b ** 2 - 4 * c * a;\n    if (delta < 0) {\n      return;\n    }\n    const sqrtDelta = Math.sqrt(delta);\n    const a2 = 2 * a;\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n    this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n  }\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    if (minMax) {\n      minMax[0] = Math.min(minMax[0], x0, x3);\n      minMax[1] = Math.min(minMax[1], y0, y3);\n      minMax[2] = Math.max(minMax[2], x0, x3);\n      minMax[3] = Math.max(minMax[3], y0, y3);\n    } else {\n      minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n    }\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n    this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n    return minMax;\n  }\n}\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (!decoded.includes(\"\\x1b\")) {\n          return decoded;\n        }\n        return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (charCode === 0x1b) {\n      while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n      continue;\n    }\n    const code = PDFStringTranslateTable[charCode];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getModificationDate(date = new Date()) {\n  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n  return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ﬅ\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n  if (typeof crypto.randomUUID === \"function\") {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  crypto.getRandomValues(buf);\n  return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n  BEZIER_CURVE_TO: 0,\n  MOVE_TO: 1,\n  LINE_TO: 2,\n  QUADRATIC_CURVE_TO: 3,\n  RESTORE: 4,\n  SAVE: 5,\n  SCALE: 6,\n  TRANSFORM: 7,\n  TRANSLATE: 8\n};\nfunction toHexUtil(arr) {\n  if (Uint8Array.prototype.toHex) {\n    return arr.toHex();\n  }\n  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n  if (Uint8Array.prototype.toBase64) {\n    return arr.toBase64();\n  }\n  return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n  if (Uint8Array.fromBase64) {\n    return Uint8Array.fromBase64(str);\n  }\n  return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n  Promise.try = function (fn, ...args) {\n    return new Promise(resolve => {\n      resolve(fn(...args));\n    });\n  };\n}\n\n;// ./src/core/primitives.js\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\nfunction clearPrimitiveCaches() {\n  CmdCache = Object.create(null);\n  NameCache = Object.create(null);\n  RefCache = Object.create(null);\n}\nclass Name {\n  constructor(name) {\n    this.name = name;\n  }\n  static get(name) {\n    return NameCache[name] ||= new Name(name);\n  }\n}\nclass Cmd {\n  constructor(cmd) {\n    this.cmd = cmd;\n  }\n  static get(cmd) {\n    return CmdCache[cmd] ||= new Cmd(cmd);\n  }\n}\nconst nonSerializable = function nonSerializableClosure() {\n  return nonSerializable;\n};\nclass Dict {\n  constructor(xref = null) {\n    this._map = new Map();\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable;\n  }\n  assignXref(newXref) {\n    this.xref = newXref;\n  }\n  get size() {\n    return this._map.size;\n  }\n  get(key1, key2, key3) {\n    let value = this._map.get(key1);\n    if (value === undefined && key2 !== undefined) {\n      value = this._map.get(key2);\n      if (value === undefined && key3 !== undefined) {\n        value = this._map.get(key3);\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetch(value, this.suppressEncryption);\n    }\n    return value;\n  }\n  async getAsync(key1, key2, key3) {\n    let value = this._map.get(key1);\n    if (value === undefined && key2 !== undefined) {\n      value = this._map.get(key2);\n      if (value === undefined && key3 !== undefined) {\n        value = this._map.get(key3);\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetchAsync(value, this.suppressEncryption);\n    }\n    return value;\n  }\n  getArray(key1, key2, key3) {\n    let value = this._map.get(key1);\n    if (value === undefined && key2 !== undefined) {\n      value = this._map.get(key2);\n      if (value === undefined && key3 !== undefined) {\n        value = this._map.get(key3);\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      value = this.xref.fetch(value, this.suppressEncryption);\n    }\n    if (Array.isArray(value)) {\n      value = value.slice();\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  getRaw(key) {\n    return this._map.get(key);\n  }\n  getKeys() {\n    return [...this._map.keys()];\n  }\n  getRawValues() {\n    return [...this._map.values()];\n  }\n  set(key, value) {\n    this._map.set(key, value);\n  }\n  has(key) {\n    return this._map.has(key);\n  }\n  *[Symbol.iterator]() {\n    for (const [key, value] of this._map) {\n      yield [key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) : value];\n    }\n  }\n  static get empty() {\n    const emptyDict = new Dict(null);\n    emptyDict.set = (key, value) => {\n      unreachable(\"Should not call `set` on the empty dictionary.\");\n    };\n    return shadow(this, \"empty\", emptyDict);\n  }\n  static merge({\n    xref,\n    dictArray,\n    mergeSubDicts = false\n  }) {\n    const mergedDict = new Dict(xref),\n      properties = new Map();\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of 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          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.set(name, values[0]);\n        continue;\n      }\n      const subDict = new Dict(xref);\n      for (const dict of values) {\n        for (const [key, value] of dict._map) {\n          if (!subDict._map.has(key)) {\n            subDict._map.set(key, value);\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map.set(name, subDict);\n      }\n    }\n    properties.clear();\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\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  delete(key) {\n    delete this._map[key];\n  }\n}\nclass Ref {\n  constructor(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n  toString() {\n    if (this.gen === 0) {\n      return `${this.num}R`;\n    }\n    return `${this.num}R${this.gen}`;\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    return RefCache[str] = new Ref(parseInt(m[1]), !m[2] ? 0 : parseInt(m[2]));\n  }\n  static get(num, gen) {\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n    return RefCache[key] ||= new Ref(num, gen);\n  }\n}\nclass RefSet {\n  constructor(parent = null) {\n    this._set = new Set(parent?._set);\n  }\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n  [Symbol.iterator]() {\n    return this._set.values();\n  }\n  clear() {\n    this._set.clear();\n  }\n}\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n  get size() {\n    return this._map.size;\n  }\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n  [Symbol.iterator]() {\n    return this._map.values();\n  }\n  clear() {\n    this._map.clear();\n  }\n  *values() {\n    yield* this._map.values();\n  }\n  *items() {\n    for (const [ref, value] of this._map) {\n      yield [Ref.fromString(ref), value];\n    }\n  }\n}\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\nfunction isDict(v, type) {\n  return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\nfunction isRefsEqual(v1, v2) {\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\n;// ./src/core/base_stream.js\n\nclass BaseStream {\n  get length() {\n    unreachable(\"Abstract getter `length` accessed\");\n  }\n  get isEmpty() {\n    unreachable(\"Abstract getter `isEmpty` accessed\");\n  }\n  get isDataLoaded() {\n    return shadow(this, \"isDataLoaded\", true);\n  }\n  getByte() {\n    unreachable(\"Abstract method `getByte` called\");\n  }\n  getBytes(length) {\n    unreachable(\"Abstract method `getBytes` called\");\n  }\n  async getImageData(length, decoderOptions) {\n    return this.getBytes(length, decoderOptions);\n  }\n  async asyncGetBytes() {\n    unreachable(\"Abstract method `asyncGetBytes` called\");\n  }\n  get isAsync() {\n    return false;\n  }\n  get canAsyncDecodeImageFromBuffer() {\n    return false;\n  }\n  async getTransferableImage() {\n    return null;\n  }\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n  peekBytes(length) {\n    const bytes = this.getBytes(length);\n    this.pos -= bytes.length;\n    return bytes;\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  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  getByteRange(begin, end) {\n    unreachable(\"Abstract method `getByteRange` called\");\n  }\n  getString(length) {\n    return bytesToString(this.getBytes(length));\n  }\n  skip(n) {\n    this.pos += n || 1;\n  }\n  reset() {\n    unreachable(\"Abstract method `reset` called\");\n  }\n  moveStart() {\n    unreachable(\"Abstract method `moveStart` called\");\n  }\n  makeSubStream(start, length, dict = null) {\n    unreachable(\"Abstract method `makeSubStream` called\");\n  }\n  getBaseStreams() {\n    return null;\n  }\n}\n\n;// ./src/core/core_utils.js\n\n\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst MIN_INT_32 = -(2 ** 31);\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}\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}\nclass ParserEOFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"ParserEOFException\");\n  }\n}\nclass XRefEntryException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefEntryException\");\n  }\n}\nclass XRefParseException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefParseException\");\n  }\n}\nfunction arrayBuffersToBytes(arr) {\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}\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true\n}) {\n  let values;\n  const visited = new RefSet();\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}\nfunction getParentToUpdate(dict, ref, xref) {\n  const visited = new RefSet();\n  const firstDict = dict;\n  const result = {\n    dict: null,\n    ref: null\n  };\n  while (dict instanceof Dict && !visited.has(ref)) {\n    visited.put(ref);\n    if (dict.has(\"T\")) {\n      break;\n    }\n    ref = dict.getRaw(\"Parent\");\n    if (!(ref instanceof Ref)) {\n      return result;\n    }\n    dict = xref.fetch(ref);\n  }\n  if (dict instanceof Dict && dict !== firstDict) {\n    result.dict = dict;\n    result.ref = ref;\n  }\n  return result;\n}\nconst ROMAN_NUMBER_MAP = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\", \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\", \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n  const roman = \"M\".repeat(number / 1000 | 0) + ROMAN_NUMBER_MAP[number % 1000 / 100 | 0] + ROMAN_NUMBER_MAP[10 + (number % 100 / 10 | 0)] + ROMAN_NUMBER_MAP[20 + number % 10];\n  return lowerCase ? roman.toLowerCase() : roman;\n}\nfunction log2(x) {\n  return x > 0 ? Math.ceil(Math.log2(x)) : 0;\n}\nfunction readInt8(data, offset) {\n  return data[offset] << 24 >> 24;\n}\nfunction readUint16(data, offset) {\n  return data[offset] << 8 | data[offset + 1];\n}\nfunction readUint32(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\nfunction isBooleanArray(arr, len) {\n  return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === \"boolean\");\n}\nfunction isNumberArray(arr, len) {\n  if (Array.isArray(arr)) {\n    return (len === null || arr.length === len) && arr.every(x => typeof x === \"number\");\n  }\n  return ArrayBuffer.isView(arr) && (arr.length === 0 || typeof arr[0] === \"number\") && (len === null || arr.length === len);\n}\nfunction lookupMatrix(arr, fallback) {\n  return isNumberArray(arr, 6) ? arr : fallback;\n}\nfunction lookupRect(arr, fallback) {\n  return isNumberArray(arr, 4) ? arr : fallback;\n}\nfunction lookupNormalRect(arr, fallback) {\n  return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\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 {\n        name: m[1],\n        pos: parseInt(m[2], 10)\n      };\n    }\n    return {\n      name: component,\n      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    if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) {\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  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}\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}\nfunction _collectJS(entry, xref, list, parents) {\n  if (!entry) {\n    return;\n  }\n  let parent = null;\n  if (entry instanceof Ref) {\n    if (parents.has(entry)) {\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  if (parent) {\n    parents.remove(parent);\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    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  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}\nconst XMLEntities = {\n  0x3c: \"&lt;\",\n  0x3e: \"&gt;\",\n  0x26: \"&amp;\",\n  0x22: \"&quot;\",\n  0x27: \"&apos;\"\n};\nfunction* codePointIter(str) {\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n    if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n      i++;\n    }\n    yield char;\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      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        i++;\n      }\n      start = i + 1;\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}\nfunction validateFontName(fontFamily, mustWarn = false) {\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    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}\nfunction validateCSSFont(cssFontInfo) {\n  const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n  const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n  const CSS_FONT_WEIGHT_VALUES = new Set([\"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"1000\", \"normal\", \"bold\", \"bolder\", \"lighter\"]);\n  const {\n    fontFamily,\n    fontWeight,\n    italicAngle\n  } = cssFontInfo;\n  if (!validateFontName(fontFamily, true)) {\n    return false;\n  }\n  const weight = fontWeight ? fontWeight.toString() : \"\";\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT;\n  const angle = parseFloat(italicAngle);\n  cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString();\n  return true;\n}\nfunction recoverJsURL(str) {\n  const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n  const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n  const jsUrl = regex.exec(str);\n  if (jsUrl?.[2]) {\n    return {\n      url: jsUrl[2],\n      newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\"\n    };\n  }\n  return null;\n}\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n  return value.toFixed(2);\n}\nfunction getNewAnnotationsMap(annotationStorage) {\n  if (!annotationStorage) {\n    return null;\n  }\n  const newAnnotationsByPage = new Map();\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}\nfunction stringToAsciiOrUTF16BE(str) {\n  return isAscii(str) ? str : stringToUTF16String(str, true);\n}\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\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(hexNumbers[char >> 8 & 0xff], hexNumbers[char & 0xff]);\n  }\n  return buf.join(\"\");\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(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n  }\n  return buf.join(\"\");\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}\nfunction getSizeInBytes(x) {\n  return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8);\n}\n\n;// ./src/core/stream.js\n\n\nclass Stream extends BaseStream {\n  constructor(arrayBuffer, start, length, dict) {\n    super();\n    this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n  get length() {\n    return this.end - this.start;\n  }\n  get isEmpty() {\n    return this.length === 0;\n  }\n  getByte() {\n    if (this.pos >= this.end) {\n      return -1;\n    }\n    return this.bytes[this.pos++];\n  }\n  getBytes(length) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n    if (!length) {\n      return bytes.subarray(pos, strEnd);\n    }\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    this.pos = end;\n    return bytes.subarray(pos, end);\n  }\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    return this.bytes.subarray(begin, end);\n  }\n  reset() {\n    this.pos = this.start;\n  }\n  moveStart() {\n    this.start = this.pos;\n  }\n  makeSubStream(start, length, dict = null) {\n    return new Stream(this.bytes.buffer, start, length, dict);\n  }\n}\nclass StringStream extends Stream {\n  constructor(str) {\n    super(stringToBytes(str));\n  }\n}\nclass NullStream extends Stream {\n  constructor() {\n    super(new Uint8Array(0));\n  }\n}\n\n;// ./src/core/chunked_stream.js\n\n\n\nclass ChunkedStream extends Stream {\n  constructor(length, chunkSize, manager) {\n    super(new Uint8Array(length), 0, length, null);\n    this.chunkSize = chunkSize;\n    this._loadedChunks = new Set();\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1;\n  }\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n  get numChunksLoaded() {\n    return this._loadedChunks.size;\n  }\n  get isDataLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      this._loadedChunks.add(curChunk);\n    }\n  }\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      this._loadedChunks.add(curChunk);\n    }\n  }\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk > this.numChunks) {\n      return;\n    }\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n    if (!this._loadedChunks.has(chunk)) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    if (beginChunk > this.numChunks) {\n      return;\n    }\n    const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks);\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks;\n      if (!this._loadedChunks.has(chunk)) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n  hasChunk(chunk) {\n    return this._loadedChunks.has(chunk);\n  }\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n  getBytes(length) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      return bytes.subarray(pos, strEnd);\n    }\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n    this.pos = end;\n    return bytes.subarray(pos, end);\n  }\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n  makeSubStream(start, length, dict = null) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else if (start >= this.progressiveDataLength) {\n      this.ensureByte(start);\n    }\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this._loadedChunks.has(chunk)) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n      get() {\n        if (this.numChunksLoaded === this.numChunks) {\n          return true;\n        }\n        return this.getMissingChunks().length === 0;\n      },\n      configurable: true\n    });\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n  getBaseStreams() {\n    return [this];\n  }\n}\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n    this.currRequestId = 0;\n    this._chunksNeededByRequest = new Map();\n    this._requestsByChunk = new Map();\n    this._promisesByRequest = new Map();\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n    this._loadedStreamCapability = Promise.withResolvers();\n  }\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n    let chunks = [],\n      loaded = 0;\n    return new Promise((resolve, reject) => {\n      const readChunk = ({\n        value,\n        done\n      }) => {\n        try {\n          if (done) {\n            const chunkData = arrayBuffersToBytes(chunks);\n            chunks = null;\n            resolve(chunkData);\n            return;\n          }\n          loaded += value.byteLength;\n          if (rangeReader.isStreamingSupported) {\n            this.onProgress({\n              loaded\n            });\n          }\n          chunks.push(value);\n          rangeReader.read().then(readChunk, reject);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    }).then(data => {\n      if (this.aborted) {\n        return;\n      }\n      this.onReceiveData({\n        chunk: data,\n        begin\n      });\n    });\n  }\n  requestAllChunks(noFetch = false) {\n    if (!noFetch) {\n      const missingChunks = this.stream.getMissingChunks();\n      this._requestChunks(missingChunks);\n    }\n    return this._loadedStreamCapability.promise;\n  }\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n    const chunksNeeded = new Set();\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded.add(chunk);\n      }\n    }\n    if (chunksNeeded.size === 0) {\n      return Promise.resolve();\n    }\n    const capability = Promise.withResolvers();\n    this._promisesByRequest.set(requestId, capability);\n    const chunksToRequest = [];\n    for (const chunk of chunksNeeded) {\n      let requestIds = this._requestsByChunk.get(chunk);\n      if (!requestIds) {\n        requestIds = [];\n        this._requestsByChunk.set(chunk, requestIds);\n        chunksToRequest.push(chunk);\n      }\n      requestIds.push(requestId);\n    }\n    if (chunksToRequest.length > 0) {\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n      for (const groupedChunk of groupedChunksToRequest) {\n        const begin = groupedChunk.beginChunk * this.chunkSize;\n        const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n        this.sendRequest(begin, end).catch(capability.reject);\n      }\n    }\n    return capability.promise.catch(reason => {\n      if (this.aborted) {\n        return;\n      }\n      throw reason;\n    });\n  }\n  getStream() {\n    return this.stream;\n  }\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({\n          beginChunk,\n          endChunk: prevChunk + 1\n        });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({\n          beginChunk,\n          endChunk: chunk + 1\n        });\n      }\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length\n    });\n  }\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n    if (this.stream.isDataLoaded) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n    const loadedRequests = [];\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      const requestIds = this._requestsByChunk.get(curChunk);\n      if (!requestIds) {\n        continue;\n      }\n      this._requestsByChunk.delete(curChunk);\n      for (const requestId of requestIds) {\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n        if (chunksNeeded.has(curChunk)) {\n          chunksNeeded.delete(curChunk);\n        }\n        if (chunksNeeded.size > 0) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n    for (const requestId of loadedRequests) {\n      const capability = this._promisesByRequest.get(requestId);\n      this._promisesByRequest.delete(requestId);\n      capability.resolve();\n    }\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length\n    });\n  }\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n  abort(reason) {\n    this.aborted = true;\n    this.pdfNetworkStream?.cancelAllRequests(reason);\n    for (const capability of this._promisesByRequest.values()) {\n      capability.reject(reason);\n    }\n  }\n}\n\n;// ./src/core/colorspace.js\n\n\n\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0;\n  const xScaled = new Uint16Array(w2);\n  if (alpha01 === 1) {\n    for (let i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio);\n    }\n    const src32 = new Uint32Array(src.buffer);\n    const dest32 = new Uint32Array(dest.buffer);\n    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n    for (let i = 0; i < h2; i++) {\n      const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n      for (let j = 0; j < w2; j++) {\n        dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n      }\n    }\n  } else {\n    const COMPONENTS = 4;\n    const w1Scanline = w1 * COMPONENTS;\n    for (let i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n    }\n    for (let i = 0; i < h2; i++) {\n      const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n      for (let j = 0; j < w2; j++) {\n        const oldIndex = xScaled[j];\n        dest[newIndex++] = buf[oldIndex];\n        dest[newIndex++] = buf[oldIndex + 1];\n        dest[newIndex++] = buf[oldIndex + 2];\n      }\n    }\n  }\n}\nfunction copyRgbaImage(src, dest, alpha01) {\n  if (alpha01 === 1) {\n    const src32 = new Uint32Array(src.buffer);\n    const dest32 = new Uint32Array(dest.buffer);\n    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n    for (let i = 0, ii = src32.length; i < ii; i++) {\n      dest32[i] |= src32[i] & rgbMask;\n    }\n  } else {\n    let j = 0;\n    for (let i = 0, ii = src.length; i < ii; i += 4) {\n      dest[j++] = src[i];\n      dest[j++] = src[i + 1];\n      dest[j++] = src[i + 2];\n    }\n  }\n}\nclass ColorSpace {\n  constructor(name, numComps) {\n    this.name = name;\n    this.numComps = numComps;\n  }\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n  isPassthrough(bits) {\n    return false;\n  }\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n      const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n      if (!needsResizing) {\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else if (!needsResizing) {\n      this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n    } else {\n      rgbBuf = new Uint8ClampedArray(count * 3);\n      this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n    }\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n    if (!localColorSpaceCache) {\n      throw new Error('ColorSpace._cache - expected \"localColorSpaceCache\" argument.');\n    }\n    if (!parsedColorSpace) {\n      throw new Error('ColorSpace._cache - expected \"parsedColorSpace\" argument.');\n    }\n    let csName, csRef;\n    if (cacheKey instanceof Ref) {\n      csRef = cacheKey;\n      cacheKey = xref.fetch(cacheKey);\n    }\n    if (cacheKey instanceof Name) {\n      csName = cacheKey.name;\n    }\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n    }\n  }\n  static getCached(cacheKey, xref, localColorSpaceCache) {\n    if (!localColorSpaceCache) {\n      throw new Error('ColorSpace.getCached - expected \"localColorSpaceCache\" argument.');\n    }\n    if (cacheKey instanceof Ref) {\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n      try {\n        cacheKey = xref.fetch(cacheKey);\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n      }\n    }\n    if (cacheKey instanceof Name) {\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n    }\n    return null;\n  }\n  static async parseAsync({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n    return parsedColorSpace;\n  }\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n    if (cachedColorSpace) {\n      return cachedColorSpace;\n    }\n    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n    return parsedColorSpace;\n  }\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (cs instanceof Name) {\n      switch (cs.name) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n        case \"DeviceRGBA\":\n          return this.singletons.rgba;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n        case \"Pattern\":\n          return new PatternCS(null);\n        default:\n          if (resources instanceof Dict) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n            if (colorSpaces instanceof Dict) {\n              const resourcesCS = colorSpaces.get(cs.name);\n              if (resourcesCS) {\n                if (resourcesCS instanceof Name) {\n                  return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);\n                }\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n          warn(`Unrecognized ColorSpace: ${cs.name}`);\n          return this.singletons.gray;\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n      switch (mode) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          const alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return this.singletons.gray;\n          } else if (numComps === 3) {\n            return this.singletons.rgb;\n          } else if (numComps === 4) {\n            return this.singletons.cmyk;\n          }\n          break;\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n          if (baseCS) {\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n          }\n          return new PatternCS(baseCS);\n        case \"I\":\n        case \"Indexed\":\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n          const hiVal = Math.max(0, Math.min(xref.fetchIfRef(cs[2]), 255));\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          warn(`Unimplemented ColorSpace object: ${mode}`);\n          return this.singletons.gray;\n      }\n    }\n    warn(`Unrecognized ColorSpace object: ${cs}`);\n    return this.singletons.gray;\n  }\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get rgba() {\n        return shadow(this, \"rgba\", new DeviceRgbaCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      }\n    });\n  }\n}\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);\n  }\n}\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    const length = base.numComps * (highVal + 1);\n    this.lookup = new Uint8Array(length);\n    if (lookup instanceof BaseStream) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01) / 3 | 0;\n  }\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\nclass DeviceRgbaCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGBA\", 4);\n  }\n  getOutputLength(inputLength, _alpha01) {\n    return inputLength * 4;\n  }\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n    if (originalHeight !== height || originalWidth !== width) {\n      resizeRgbaImage(comps, dest, originalWidth, originalHeight, width, height, alpha01);\n    } else {\n      copyRgbaImage(comps, dest, alpha01);\n    }\n  }\n}\nclass DeviceCmykCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceCMYK\", 4);\n  }\n  #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    this.#toRgb(src, srcOffset, 1, dest, destOffset);\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const scale = 1 / ((1 << bits) - 1);\n    for (let i = 0; i < count; i++) {\n      this.#toRgb(src, srcOffset, scale, dest, destOffset);\n      srcOffset += 4;\n      destOffset += 3 + alpha01;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return inputLength / 4 * (3 + alpha01) | 0;\n  }\n}\nclass CalGrayCS extends ColorSpace {\n  constructor(whitePoint, blackPoint, gamma) {\n    super(\"CalGray\", 1);\n    if (!whitePoint) {\n      throw new FormatError(\"WhitePoint missing - required for color space CalGray\");\n    }\n    [this.XW, this.YW, this.ZW] = whitePoint;\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n    this.G = gamma || 1;\n    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n      throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n    }\n    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n      info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n      this.XB = this.YB = this.ZB = 0;\n    }\n    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n      warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n    }\n    if (this.G < 1) {\n      info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);\n      this.G = 1;\n    }\n  }\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\n    const A = src[srcOffset] * scale;\n    const AG = A ** this.G;\n    const L = this.YW * AG;\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const scale = 1 / ((1 << bits) - 1);\n    for (let i = 0; i < count; ++i) {\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n      srcOffset += 1;\n      destOffset += 3 + alpha01;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\nclass CalRGBCS extends ColorSpace {\n  static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n  static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n  static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n  static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n  static #tempNormalizeMatrix = new Float32Array(3);\n  static #tempConvertMatrix1 = new Float32Array(3);\n  static #tempConvertMatrix2 = new Float32Array(3);\n  static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n  constructor(whitePoint, blackPoint, gamma, matrix) {\n    super(\"CalRGB\", 3);\n    if (!whitePoint) {\n      throw new FormatError(\"WhitePoint missing - required for color space CalRGB\");\n    }\n    const [XW, YW, ZW] = this.whitePoint = whitePoint;\n    const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3);\n    [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n    [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n    if (XW < 0 || ZW < 0 || YW !== 1) {\n      throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n    }\n    if (XB < 0 || YB < 0 || ZB < 0) {\n      info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n      this.blackPoint = new Float32Array(3);\n    }\n    if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n      info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n      this.GR = this.GG = this.GB = 1;\n    }\n  }\n  #matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n  #toFlat(sourceWhitePoint, LMS, result) {\n    result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n    result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n    result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n  }\n  #toD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n    result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n  }\n  #sRGBTransferFunction(color) {\n    if (color <= 0.0031308) {\n      return this.#adjustToRange(0, 1, 12.92 * color);\n    }\n    if (color >= 0.99554525) {\n      return 1;\n    }\n    return this.#adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n  #adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n  #decodeL(L) {\n    if (L < 0) {\n      return -this.#decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * CalRGBCS.#DECODE_L_CONSTANT;\n  }\n  #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n    const zeroDecodeL = this.#decodeL(0);\n    const X_DST = zeroDecodeL;\n    const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n  #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n    const LMS = result;\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n    const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n    this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n  #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n    const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n    this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\n    const A = this.#adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = this.#adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = this.#adjustToRange(0, 1, src[srcOffset + 2] * scale);\n    const AGR = A === 1 ? 1 : A ** this.GR;\n    const BGG = B === 1 ? 1 : B ** this.GG;\n    const CGB = C === 1 ? 1 : C ** this.GB;\n    const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n    const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n    const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n    const XYZ = CalRGBCS.#tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n    this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n    const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n    this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n    const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n    this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n    const SRGB = CalRGBCS.#tempConvertMatrix1;\n    this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n    dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const scale = 1 / ((1 << bits) - 1);\n    for (let i = 0; i < count; ++i) {\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n      srcOffset += 3;\n      destOffset += 3 + alpha01;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01) / 3 | 0;\n  }\n}\nclass LabCS extends ColorSpace {\n  constructor(whitePoint, blackPoint, range) {\n    super(\"Lab\", 3);\n    if (!whitePoint) {\n      throw new FormatError(\"WhitePoint missing - required for color space Lab\");\n    }\n    [this.XW, this.YW, this.ZW] = whitePoint;\n    [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100];\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n    if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n      throw new FormatError(\"Invalid WhitePoint components, no fallback available\");\n    }\n    if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n      info(\"Invalid BlackPoint, falling back to default\");\n      this.XB = this.YB = this.ZB = 0;\n    }\n    if (this.amin > this.amax || this.bmin > this.bmax) {\n      info(\"Invalid Range, falling back to defaults\");\n      this.amin = -100;\n      this.amax = 100;\n      this.bmin = -100;\n      this.bmax = 100;\n    }\n  }\n  #fn_g(x) {\n    return x >= 6 / 29 ? x ** 3 : 108 / 841 * (x - 4 / 29);\n  }\n  #decode(value, high1, low2, high2) {\n    return low2 + value * (high2 - low2) / high1;\n  }\n  #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = this.#decode(Ls, maxVal, 0, 100);\n      as = this.#decode(as, maxVal, this.amin, this.amax);\n      bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n    }\n    if (as > this.amax) {\n      as = this.amax;\n    } else if (as < this.amin) {\n      as = this.amin;\n    }\n    if (bs > this.bmax) {\n      bs = this.bmax;\n    } else if (bs < this.bmin) {\n      bs = this.bmin;\n    }\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n    const X = this.XW * this.#fn_g(L);\n    const Y = this.YW * this.#fn_g(M);\n    const Z = this.ZW * this.#fn_g(N);\n    let r, g, b;\n    if (this.ZW < 1) {\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    this.#toRgb(src, srcOffset, false, dest, destOffset);\n  }\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const maxVal = (1 << bits) - 1;\n    for (let i = 0; i < count; i++) {\n      this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n      srcOffset += 3;\n      destOffset += 3 + alpha01;\n    }\n  }\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01) / 3 | 0;\n  }\n  isDefaultDecode(decodeMap, bpc) {\n    return true;\n  }\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", false);\n  }\n}\n\n;// ./src/core/binary_cmap.js\n\nfunction hexToInt(a, size) {\n  let n = 0;\n  for (let i = 0; i <= size; i++) {\n    n = n << 8 | a[i];\n  }\n  return n >>> 0;\n}\nfunction hexToStr(a, size) {\n  if (size === 1) {\n    return String.fromCharCode(a[0], a[1]);\n  }\n  if (size === 3) {\n    return String.fromCharCode(a[0], a[1], a[2], a[3]);\n  }\n  return String.fromCharCode(...a.subarray(0, size + 1));\n}\nfunction addHex(a, b, size) {\n  let c = 0;\n  for (let i = size; i >= 0; i--) {\n    c += a[i] + b[i];\n    a[i] = c & 255;\n    c >>= 8;\n  }\n}\nfunction incHex(a, size) {\n  let c = 1;\n  for (let i = size; i >= 0 && c > 0; i--) {\n    c += a[i];\n    a[i] = c & 255;\n    c >>= 8;\n  }\n}\nconst MAX_NUM_SIZE = 16;\nconst MAX_ENCODED_NUM_SIZE = 19;\nclass BinaryCMapStream {\n  constructor(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n  readByte() {\n    if (this.pos >= this.end) {\n      return -1;\n    }\n    return this.buffer[this.pos++];\n  }\n  readNumber() {\n    let n = 0;\n    let last;\n    do {\n      const b = this.readByte();\n      if (b < 0) {\n        throw new FormatError(\"unexpected EOF in bcmap\");\n      }\n      last = !(b & 0x80);\n      n = n << 7 | b & 0x7f;\n    } while (!last);\n    return n;\n  }\n  readSigned() {\n    const n = this.readNumber();\n    return n & 1 ? ~(n >>> 1) : n >>> 1;\n  }\n  readHex(num, size) {\n    num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n    this.pos += size + 1;\n  }\n  readHexNumber(num, size) {\n    let last;\n    const stack = this.tmpBuf;\n    let sp = 0;\n    do {\n      const b = this.readByte();\n      if (b < 0) {\n        throw new FormatError(\"unexpected EOF in bcmap\");\n      }\n      last = !(b & 0x80);\n      stack[sp++] = b & 0x7f;\n    } while (!last);\n    let i = size,\n      buffer = 0,\n      bufferSize = 0;\n    while (i >= 0) {\n      while (bufferSize < 8 && stack.length > 0) {\n        buffer |= stack[--sp] << bufferSize;\n        bufferSize += 7;\n      }\n      num[i] = buffer & 255;\n      i--;\n      buffer >>= 8;\n      bufferSize -= 8;\n    }\n  }\n  readHexSigned(num, size) {\n    this.readHexNumber(num, size);\n    const sign = num[size] & 1 ? 255 : 0;\n    let c = 0;\n    for (let i = 0; i <= size; i++) {\n      c = (c & 1) << 8 | num[i];\n      num[i] = c >> 1 ^ sign;\n    }\n  }\n  readString() {\n    const len = this.readNumber(),\n      buf = new Array(len);\n    for (let i = 0; i < len; i++) {\n      buf[i] = this.readNumber();\n    }\n    return String.fromCharCode(...buf);\n  }\n}\nclass BinaryCMapReader {\n  async process(data, cMap, extend) {\n    const stream = new BinaryCMapStream(data);\n    const header = stream.readByte();\n    cMap.vertical = !!(header & 1);\n    let useCMap = null;\n    const start = new Uint8Array(MAX_NUM_SIZE);\n    const end = new Uint8Array(MAX_NUM_SIZE);\n    const char = new Uint8Array(MAX_NUM_SIZE);\n    const charCode = new Uint8Array(MAX_NUM_SIZE);\n    const tmp = new Uint8Array(MAX_NUM_SIZE);\n    let code;\n    let b;\n    while ((b = stream.readByte()) >= 0) {\n      const type = b >> 5;\n      if (type === 7) {\n        switch (b & 0x1f) {\n          case 0:\n            stream.readString();\n            break;\n          case 1:\n            useCMap = stream.readString();\n            break;\n        }\n        continue;\n      }\n      const sequence = !!(b & 0x10);\n      const dataSize = b & 15;\n      if (dataSize + 1 > MAX_NUM_SIZE) {\n        throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n      }\n      const ucs2DataSize = 1;\n      const subitemsCount = stream.readNumber();\n      switch (type) {\n        case 0:\n          stream.readHex(start, dataSize);\n          stream.readHexNumber(end, dataSize);\n          addHex(end, start, dataSize);\n          cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n          for (let i = 1; i < subitemsCount; i++) {\n            incHex(end, dataSize);\n            stream.readHexNumber(start, dataSize);\n            addHex(start, end, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n          }\n          break;\n        case 1:\n          stream.readHex(start, dataSize);\n          stream.readHexNumber(end, dataSize);\n          addHex(end, start, dataSize);\n          stream.readNumber();\n          for (let i = 1; i < subitemsCount; i++) {\n            incHex(end, dataSize);\n            stream.readHexNumber(start, dataSize);\n            addHex(start, end, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber();\n          }\n          break;\n        case 2:\n          stream.readHex(char, dataSize);\n          code = stream.readNumber();\n          cMap.mapOne(hexToInt(char, dataSize), code);\n          for (let i = 1; i < subitemsCount; i++) {\n            incHex(char, dataSize);\n            if (!sequence) {\n              stream.readHexNumber(tmp, dataSize);\n              addHex(char, tmp, dataSize);\n            }\n            code = stream.readSigned() + (code + 1);\n            cMap.mapOne(hexToInt(char, dataSize), code);\n          }\n          break;\n        case 3:\n          stream.readHex(start, dataSize);\n          stream.readHexNumber(end, dataSize);\n          addHex(end, start, dataSize);\n          code = stream.readNumber();\n          cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n          for (let i = 1; i < subitemsCount; i++) {\n            incHex(end, dataSize);\n            if (!sequence) {\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n            } else {\n              start.set(end);\n            }\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n          }\n          break;\n        case 4:\n          stream.readHex(char, ucs2DataSize);\n          stream.readHex(charCode, dataSize);\n          cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n          for (let i = 1; i < subitemsCount; i++) {\n            incHex(char, ucs2DataSize);\n            if (!sequence) {\n              stream.readHexNumber(tmp, ucs2DataSize);\n              addHex(char, tmp, ucs2DataSize);\n            }\n            incHex(charCode, dataSize);\n            stream.readHexSigned(tmp, dataSize);\n            addHex(charCode, tmp, dataSize);\n            cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n          }\n          break;\n        case 5:\n          stream.readHex(start, ucs2DataSize);\n          stream.readHexNumber(end, ucs2DataSize);\n          addHex(end, start, ucs2DataSize);\n          stream.readHex(charCode, dataSize);\n          cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n          for (let i = 1; i < subitemsCount; i++) {\n            incHex(end, ucs2DataSize);\n            if (!sequence) {\n              stream.readHexNumber(start, ucs2DataSize);\n              addHex(start, end, ucs2DataSize);\n            } else {\n              start.set(end);\n            }\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n          }\n          break;\n        default:\n          throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n      }\n    }\n    if (useCMap) {\n      return extend(useCMap);\n    }\n    return cMap;\n  }\n}\n\n;// ./src/core/decode_stream.js\n\n\nconst emptyBuffer = new Uint8Array(0);\nclass DecodeStream extends BaseStream {\n  constructor(maybeMinBufferLength) {\n    super();\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n  get isEmpty() {\n    while (!this.eof && this.bufferLength === 0) {\n      this.readBlock();\n    }\n    return this.bufferLength === 0;\n  }\n  ensureBuffer(requested) {\n    const buffer = this.buffer;\n    if (requested <= buffer.byteLength) {\n      return buffer;\n    }\n    let size = this.minBufferLength;\n    while (size < requested) {\n      size *= 2;\n    }\n    const buffer2 = new Uint8Array(size);\n    buffer2.set(buffer);\n    return this.buffer = buffer2;\n  }\n  getByte() {\n    const pos = this.pos;\n    while (this.bufferLength <= pos) {\n      if (this.eof) {\n        return -1;\n      }\n      this.readBlock();\n    }\n    return this.buffer[this.pos++];\n  }\n  getBytes(length, decoderOptions = null) {\n    const pos = this.pos;\n    let end;\n    if (length) {\n      this.ensureBuffer(pos + length);\n      end = pos + length;\n      while (!this.eof && this.bufferLength < end) {\n        this.readBlock(decoderOptions);\n      }\n      const bufEnd = this.bufferLength;\n      if (end > bufEnd) {\n        end = bufEnd;\n      }\n    } else {\n      while (!this.eof) {\n        this.readBlock(decoderOptions);\n      }\n      end = this.bufferLength;\n    }\n    this.pos = end;\n    return this.buffer.subarray(pos, end);\n  }\n  async getImageData(length, decoderOptions = null) {\n    if (!this.canAsyncDecodeImageFromBuffer) {\n      return this.getBytes(length, decoderOptions);\n    }\n    const data = await this.stream.asyncGetBytes();\n    return this.decodeImage(data, decoderOptions);\n  }\n  reset() {\n    this.pos = 0;\n  }\n  makeSubStream(start, length, dict = null) {\n    if (length === undefined) {\n      while (!this.eof) {\n        this.readBlock();\n      }\n    } else {\n      const end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n    }\n    return new Stream(this.buffer, start, length, dict);\n  }\n  getBaseStreams() {\n    return this.str ? this.str.getBaseStreams() : null;\n  }\n}\nclass StreamsSequenceStream extends DecodeStream {\n  constructor(streams, onError = null) {\n    streams = streams.filter(s => s instanceof BaseStream);\n    let maybeLength = 0;\n    for (const stream of streams) {\n      maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n    }\n    super(maybeLength);\n    this.streams = streams;\n    this._onError = onError;\n  }\n  readBlock() {\n    const streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    const stream = streams.shift();\n    let chunk;\n    try {\n      chunk = stream.getBytes();\n    } catch (reason) {\n      if (this._onError) {\n        this._onError(reason, stream.dict?.objId);\n        return;\n      }\n      throw reason;\n    }\n    const bufferLength = this.bufferLength;\n    const newLength = bufferLength + chunk.length;\n    const buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  }\n  getBaseStreams() {\n    const baseStreamsBuf = [];\n    for (const stream of this.streams) {\n      const baseStreams = stream.getBaseStreams();\n      if (baseStreams) {\n        baseStreamsBuf.push(...baseStreams);\n      }\n    }\n    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n  }\n}\n\n;// ./src/core/ascii_85_stream.js\n\n\nclass Ascii85Stream extends DecodeStream {\n  constructor(str, maybeLength) {\n    if (maybeLength) {\n      maybeLength *= 0.8;\n    }\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n  }\n  readBlock() {\n    const TILDA_CHAR = 0x7e;\n    const Z_LOWER_CHAR = 0x7a;\n    const EOF = -1;\n    const str = this.str;\n    let c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n    const bufferLength = this.bufferLength;\n    let buffer, i;\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      const input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n        input[i] = c;\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      let t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  }\n}\n\n;// ./src/core/ascii_hex_stream.js\n\nclass AsciiHexStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    if (maybeLength) {\n      maybeLength *= 0.5;\n    }\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.firstDigit = -1;\n  }\n  readBlock() {\n    const UPSTREAM_BLOCK_SIZE = 8000;\n    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n    const maxDecodeLength = bytes.length + 1 >> 1;\n    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    let bufferLength = this.bufferLength;\n    let firstDigit = this.firstDigit;\n    for (const ch of bytes) {\n      let digit;\n      if (ch >= 0x30 && ch <= 0x39) {\n        digit = ch & 0x0f;\n      } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = firstDigit << 4 | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  }\n}\n\n;// ./src/core/ccitt.js\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;\nconst twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];\nconst whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];\nconst whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];\nconst blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];\nconst blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];\nconst blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\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    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    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\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    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  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    let refPos, blackPixels, bits, i;\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      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        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(codingLine[this.codingPos] + code2, blackPixels ^ 1);\n              }\n              while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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 (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\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      let gotEOL = false;\n      if (this.byteAlign) {\n        this.inputBits &= ~7;\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      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n        this.nextLine2D = !this._lookBits(1);\n        this._eatBits(1);\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      this.outputBits = codingLine[0] > 0 ? codingLine[this.codingPos = 0] : codingLine[this.codingPos = 1];\n      this.row++;\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 = 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('Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.');\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 = 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  _addPixels(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\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      codingLine[codingPos] = a1;\n    }\n    this.codingPos = codingPos;\n  }\n  _addPixelsNeg(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\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      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    this.codingPos = codingPos;\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  _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  _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      p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3];\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      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  _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      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      result = this._findTableCode(7, 12, blackTable2, 64);\n      if (result[0]) {\n        return result[1];\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  _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  _eatBits(n) {\n    if ((this.inputBits -= n) < 0) {\n      this.inputBits = 0;\n    }\n  }\n}\n\n;// ./src/core/ccitt_stream.js\n\n\n\nclass CCITTFaxStream extends DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    if (!(params instanceof Dict)) {\n      params = Dict.empty;\n    }\n    const source = {\n      next() {\n        return str.getByte();\n      }\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\")\n    });\n  }\n  readBlock() {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  }\n}\n\n;// ./src/core/flate_stream.js\n\n\n\nconst codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nconst lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\nconst distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\nconst fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\nconst fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\nclass FlateStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    const cmf = str.getByte();\n    const flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n    this.codeSize = 0;\n    this.codeBuf = 0;\n  }\n  async getImageData(length, _decoderOptions) {\n    const data = await this.asyncGetBytes();\n    return data?.subarray(0, length) || this.getBytes(length);\n  }\n  async asyncGetBytes() {\n    this.str.reset();\n    const bytes = this.str.getBytes();\n    try {\n      const {\n        readable,\n        writable\n      } = new DecompressionStream(\"deflate\");\n      const writer = writable.getWriter();\n      await writer.ready;\n      writer.write(bytes).then(async () => {\n        await writer.ready;\n        await writer.close();\n      }).catch(() => {});\n      const chunks = [];\n      let totalLength = 0;\n      for await (const chunk of readable) {\n        chunks.push(chunk);\n        totalLength += chunk.byteLength;\n      }\n      const data = new Uint8Array(totalLength);\n      let offset = 0;\n      for (const chunk of chunks) {\n        data.set(chunk, offset);\n        offset += chunk.byteLength;\n      }\n      return data;\n    } catch {\n      this.str = new Stream(bytes, 2, bytes.length, this.str.dict);\n      this.reset();\n      return null;\n    }\n  }\n  get isAsync() {\n    return true;\n  }\n  getBits(bits) {\n    const str = this.str;\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n    let b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & (1 << bits) - 1;\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n    return b;\n  }\n  getCode(table) {\n    const str = this.str;\n    const codes = table[0];\n    const maxLen = table[1];\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n    let b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    const code = codes[codeBuf & (1 << maxLen) - 1];\n    const codeLen = code >> 16;\n    const codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  }\n  generateHuffmanTable(lengths) {\n    const n = lengths.length;\n    let maxLen = 0;\n    let i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n    const size = 1 << maxLen;\n    const codes = new Int32Array(size);\n    for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n      for (let val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          let code2 = 0;\n          let t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = code2 << 1 | t & 1;\n            t >>= 1;\n          }\n          for (i = code2; i < size; i += skip) {\n            codes[i] = len << 16 | val;\n          }\n          ++code;\n        }\n      }\n    }\n    return [codes, maxLen];\n  }\n  #endsStreamOnError(err) {\n    info(err);\n    this.eof = true;\n  }\n  readBlock() {\n    let buffer, hdr, len;\n    const str = this.str;\n    try {\n      hdr = this.getBits(3);\n    } catch (ex) {\n      this.#endsStreamOnError(ex.message);\n      return;\n    }\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n    if (hdr === 0) {\n      let b;\n      if ((b = str.getByte()) === -1) {\n        this.#endsStreamOnError(\"Bad block header in flate stream\");\n        return;\n      }\n      let blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        this.#endsStreamOnError(\"Bad block header in flate stream\");\n        return;\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        this.#endsStreamOnError(\"Bad block header in flate stream\");\n        return;\n      }\n      let check = b;\n      if ((b = str.getByte()) === -1) {\n        this.#endsStreamOnError(\"Bad block header in flate stream\");\n        return;\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n      this.codeBuf = 0;\n      this.codeSize = 0;\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n    let litCodeTable;\n    let distCodeTable;\n    if (hdr === 1) {\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      const numLitCodes = this.getBits(5) + 257;\n      const numDistCodes = this.getBits(5) + 1;\n      const numCodeLenCodes = this.getBits(4) + 4;\n      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n      let i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n      len = 0;\n      i = 0;\n      const codes = numLitCodes + numDistCodes;\n      const codeLengths = new Uint8Array(codes);\n      let bitsLength, bitsOffset, what;\n      while (i < codes) {\n        const code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n        let repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n      litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n      distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n    buffer = this.buffer;\n    let limit = buffer ? buffer.length : 0;\n    let pos = this.bufferLength;\n    while (true) {\n      let code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      let code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      const dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (let k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  }\n}\n\n;// ./src/core/arithmetic_decoder.js\nconst QeTable = [{\n  qe: 0x5601,\n  nmps: 1,\n  nlps: 1,\n  switchFlag: 1\n}, {\n  qe: 0x3401,\n  nmps: 2,\n  nlps: 6,\n  switchFlag: 0\n}, {\n  qe: 0x1801,\n  nmps: 3,\n  nlps: 9,\n  switchFlag: 0\n}, {\n  qe: 0x0ac1,\n  nmps: 4,\n  nlps: 12,\n  switchFlag: 0\n}, {\n  qe: 0x0521,\n  nmps: 5,\n  nlps: 29,\n  switchFlag: 0\n}, {\n  qe: 0x0221,\n  nmps: 38,\n  nlps: 33,\n  switchFlag: 0\n}, {\n  qe: 0x5601,\n  nmps: 7,\n  nlps: 6,\n  switchFlag: 1\n}, {\n  qe: 0x5401,\n  nmps: 8,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x4801,\n  nmps: 9,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x3801,\n  nmps: 10,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x3001,\n  nmps: 11,\n  nlps: 17,\n  switchFlag: 0\n}, {\n  qe: 0x2401,\n  nmps: 12,\n  nlps: 18,\n  switchFlag: 0\n}, {\n  qe: 0x1c01,\n  nmps: 13,\n  nlps: 20,\n  switchFlag: 0\n}, {\n  qe: 0x1601,\n  nmps: 29,\n  nlps: 21,\n  switchFlag: 0\n}, {\n  qe: 0x5601,\n  nmps: 15,\n  nlps: 14,\n  switchFlag: 1\n}, {\n  qe: 0x5401,\n  nmps: 16,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x5101,\n  nmps: 17,\n  nlps: 15,\n  switchFlag: 0\n}, {\n  qe: 0x4801,\n  nmps: 18,\n  nlps: 16,\n  switchFlag: 0\n}, {\n  qe: 0x3801,\n  nmps: 19,\n  nlps: 17,\n  switchFlag: 0\n}, {\n  qe: 0x3401,\n  nmps: 20,\n  nlps: 18,\n  switchFlag: 0\n}, {\n  qe: 0x3001,\n  nmps: 21,\n  nlps: 19,\n  switchFlag: 0\n}, {\n  qe: 0x2801,\n  nmps: 22,\n  nlps: 19,\n  switchFlag: 0\n}, {\n  qe: 0x2401,\n  nmps: 23,\n  nlps: 20,\n  switchFlag: 0\n}, {\n  qe: 0x2201,\n  nmps: 24,\n  nlps: 21,\n  switchFlag: 0\n}, {\n  qe: 0x1c01,\n  nmps: 25,\n  nlps: 22,\n  switchFlag: 0\n}, {\n  qe: 0x1801,\n  nmps: 26,\n  nlps: 23,\n  switchFlag: 0\n}, {\n  qe: 0x1601,\n  nmps: 27,\n  nlps: 24,\n  switchFlag: 0\n}, {\n  qe: 0x1401,\n  nmps: 28,\n  nlps: 25,\n  switchFlag: 0\n}, {\n  qe: 0x1201,\n  nmps: 29,\n  nlps: 26,\n  switchFlag: 0\n}, {\n  qe: 0x1101,\n  nmps: 30,\n  nlps: 27,\n  switchFlag: 0\n}, {\n  qe: 0x0ac1,\n  nmps: 31,\n  nlps: 28,\n  switchFlag: 0\n}, {\n  qe: 0x09c1,\n  nmps: 32,\n  nlps: 29,\n  switchFlag: 0\n}, {\n  qe: 0x08a1,\n  nmps: 33,\n  nlps: 30,\n  switchFlag: 0\n}, {\n  qe: 0x0521,\n  nmps: 34,\n  nlps: 31,\n  switchFlag: 0\n}, {\n  qe: 0x0441,\n  nmps: 35,\n  nlps: 32,\n  switchFlag: 0\n}, {\n  qe: 0x02a1,\n  nmps: 36,\n  nlps: 33,\n  switchFlag: 0\n}, {\n  qe: 0x0221,\n  nmps: 37,\n  nlps: 34,\n  switchFlag: 0\n}, {\n  qe: 0x0141,\n  nmps: 38,\n  nlps: 35,\n  switchFlag: 0\n}, {\n  qe: 0x0111,\n  nmps: 39,\n  nlps: 36,\n  switchFlag: 0\n}, {\n  qe: 0x0085,\n  nmps: 40,\n  nlps: 37,\n  switchFlag: 0\n}, {\n  qe: 0x0049,\n  nmps: 41,\n  nlps: 38,\n  switchFlag: 0\n}, {\n  qe: 0x0025,\n  nmps: 42,\n  nlps: 39,\n  switchFlag: 0\n}, {\n  qe: 0x0015,\n  nmps: 43,\n  nlps: 40,\n  switchFlag: 0\n}, {\n  qe: 0x0009,\n  nmps: 44,\n  nlps: 41,\n  switchFlag: 0\n}, {\n  qe: 0x0005,\n  nmps: 45,\n  nlps: 42,\n  switchFlag: 0\n}, {\n  qe: 0x0001,\n  nmps: 45,\n  nlps: 43,\n  switchFlag: 0\n}, {\n  qe: 0x5601,\n  nmps: 46,\n  nlps: 46,\n  switchFlag: 0\n}];\nclass ArithmeticDecoder {\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n    this.chigh = data[start];\n    this.clow = 0;\n    this.byteIn();\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  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\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  readBit(contexts, pos) {\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    if (this.chigh < qeIcx) {\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      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    do {\n      if (this.ct === 0) {\n        this.byteIn();\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    contexts[pos] = cx_index << 1 | cx_mps;\n    return d;\n  }\n}\n\n;// ./src/core/jbig2.js\n\n\n\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(msg, \"Jbig2Error\");\n  }\n}\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}\nclass DecodingContext {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n  get decoder() {\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n    return shadow(this, \"decoder\", decoder);\n  }\n  get contextCache() {\n    const cache = new ContextCache();\n    return shadow(this, \"contextCache\", cache);\n  }\n}\nfunction decodeInteger(contextCache, procedure, decoder) {\n  const contexts = contextCache.getContexts(procedure);\n  let prev = 1;\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  const sign = readBits(1);\n  const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);\n  let signedValue;\n  if (sign === 0) {\n    signedValue = value;\n  } else if (value > 0) {\n    signedValue = -value;\n  }\n  if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) {\n    return signedValue;\n  }\n  return null;\n}\nfunction decodeIAID(contextCache, decoder, codeLength) {\n  const contexts = contextCache.getContexts(\"IAID\");\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}\nconst SegmentTypes = [\"SymbolDictionary\", null, null, null, \"IntermediateTextRegion\", null, \"ImmediateTextRegion\", \"ImmediateLosslessTextRegion\", null, null, null, null, null, null, null, null, \"PatternDictionary\", null, null, null, \"IntermediateHalftoneRegion\", null, \"ImmediateHalftoneRegion\", \"ImmediateLosslessHalftoneRegion\", null, null, null, null, null, null, null, null, null, null, null, null, \"IntermediateGenericRegion\", null, \"ImmediateGenericRegion\", \"ImmediateLosslessGenericRegion\", \"IntermediateGenericRefinementRegion\", null, \"ImmediateGenericRefinementRegion\", \"ImmediateLosslessGenericRefinementRegion\", null, null, null, null, \"PageInformation\", \"EndOfPage\", \"EndOfStripe\", \"EndOfFile\", \"Profiles\", \"Tables\", null, null, null, null, null, null, null, null, \"Extension\"];\nconst CodingTemplates = [[{\n  x: -1,\n  y: -2\n}, {\n  x: 0,\n  y: -2\n}, {\n  x: 1,\n  y: -2\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: 2,\n  y: -1\n}, {\n  x: -4,\n  y: 0\n}, {\n  x: -3,\n  y: 0\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}], [{\n  x: -1,\n  y: -2\n}, {\n  x: 0,\n  y: -2\n}, {\n  x: 1,\n  y: -2\n}, {\n  x: 2,\n  y: -2\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: 2,\n  y: -1\n}, {\n  x: -3,\n  y: 0\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}], [{\n  x: -1,\n  y: -2\n}, {\n  x: 0,\n  y: -2\n}, {\n  x: 1,\n  y: -2\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}], [{\n  x: -3,\n  y: -1\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: -4,\n  y: 0\n}, {\n  x: -3,\n  y: 0\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}]];\nconst RefinementTemplates = [{\n  coding: [{\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }],\n  reference: [{\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }, {\n    x: 0,\n    y: 0\n  }, {\n    x: 1,\n    y: 0\n  }, {\n    x: -1,\n    y: 1\n  }, {\n    x: 0,\n    y: 1\n  }, {\n    x: 1,\n    y: 1\n  }]\n}, {\n  coding: [{\n    x: -1,\n    y: -1\n  }, {\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }],\n  reference: [{\n    x: 0,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }, {\n    x: 0,\n    y: 0\n  }, {\n    x: 1,\n    y: 0\n  }, {\n    x: 0,\n    y: 1\n  }, {\n    x: 1,\n    y: 1\n  }]\n}];\nconst ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];\nconst RefinementReusedContexts = [0x0020, 0x0008];\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  const OLD_PIXEL_MASK = 0x7bf7;\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    contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;\n    for (j = 0; j < width; j++) {\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\n      contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n    }\n  }\n  return bitmap;\n}\nfunction decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {\n  if (mmr) {\n    const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n    return decodeMMRBitmap(input, width, height, false);\n  }\n  if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n    return decodeBitmapTemplate0(width, height, decodingContext);\n  }\n  const useskip = !!skip;\n  const template = CodingTemplates[templateIndex].concat(at);\n  template.sort(function (a, b) {\n    return a.y - b.y || a.x - b.x;\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  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    if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {\n      reuseMask |= 1 << templateLength - 1 - k;\n    } else {\n      changingTemplateEntries.push(k);\n    }\n  }\n  const changingEntriesLength = changingTemplateEntries.length;\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  const sbb_left = -minX;\n  const sbb_top = -minY;\n  const sbb_right = width - maxX;\n  const pseudoPixelContext = ReusedContexts[templateIndex];\n  let row = new Uint8Array(width);\n  const bitmap = [];\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\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);\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      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\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        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}\nfunction decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {\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  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  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n  const bitmap = [];\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GR\");\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;\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;\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  return bitmap;\n}\nfunction decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n  }\n  const newSymbols = [];\n  let currentHeight = 0;\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let tableB1, symbolWidths;\n  if (huffman) {\n    tableB1 = getStandardTable(1);\n    symbolWidths = [];\n    symbolCodeLength = Math.max(symbolCodeLength, 1);\n  }\n  while (newSymbols.length < numberOfNewSymbols) {\n    const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, \"IADH\", decoder);\n    currentHeight += deltaHeight;\n    let currentWidth = 0,\n      totalWidth = 0;\n    const firstSymbol = huffman ? symbolWidths.length : 0;\n    while (true) {\n      const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, \"IADW\", decoder);\n      if (deltaWidth === null) {\n        break;\n      }\n      currentWidth += deltaWidth;\n      totalWidth += currentWidth;\n      let bitmap;\n      if (refinement) {\n        const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n        if (numberOfInstances > 1) {\n          bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);\n        } else {\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n          const rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n          const rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n          const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];\n          bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);\n        }\n        newSymbols.push(bitmap);\n      } else if (huffman) {\n        symbolWidths.push(currentWidth);\n      } else {\n        bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);\n        newSymbols.push(bitmap);\n      }\n    }\n    if (huffman && !refinement) {\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n      huffmanInput.byteAlign();\n      let collectiveBitmap;\n      if (bitmapSize === 0) {\n        collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);\n      } else {\n        const originalEnd = huffmanInput.end;\n        const bitmapEnd = huffmanInput.position + bitmapSize;\n        huffmanInput.end = bitmapEnd;\n        collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);\n        huffmanInput.end = originalEnd;\n        huffmanInput.position = bitmapEnd;\n      }\n      const numberOfSymbolsDecoded = symbolWidths.length;\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\n        newSymbols.push(collectiveBitmap);\n      } else {\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  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 ? tableB1.decode(huffmanInput) : 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}\nfunction decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\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  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, \"IADT\", decoder);\n  let firstS = 0;\n  i = 0;\n  while (i < numberOfSymbolInstances) {\n    const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, \"IADT\", decoder);\n    stripT += deltaT;\n    const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, \"IAFS\", decoder);\n    firstS += deltaFirstS;\n    let currentS = firstS;\n    do {\n      let currentT = 0;\n      if (stripSize > 1) {\n        currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, \"IAIT\", decoder);\n      }\n      const t = stripSize * stripT + currentT;\n      const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);\n      const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : 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);\n        const rdh = decodeInteger(contextCache, \"IARDH\", decoder);\n        const rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n        const rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n        symbolWidth += rdw;\n        symbolHeight += rdh;\n        symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);\n      }\n      let increment = 0;\n      if (!transposed) {\n        if (referenceCorner > 1) {\n          currentS += symbolWidth - 1;\n        } else {\n          increment = symbolWidth - 1;\n        }\n      } else if (!(referenceCorner & 1)) {\n        currentS += symbolHeight - 1;\n      } else {\n        increment = symbolHeight - 1;\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        for (s2 = 0; s2 < symbolHeight; s2++) {\n          row = bitmap[offsetS + s2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[s2];\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\n          switch (combinationOperator) {\n            case 0:\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] |= symbolRow[t2];\n              }\n              break;\n            case 2:\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] ^= symbolRow[t2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n          }\n        }\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:\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] |= symbolRow[s2];\n              }\n              break;\n            case 2:\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] ^= symbolRow[s2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n          }\n        }\n      }\n      i++;\n      const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, \"IADS\", decoder);\n      if (deltaS === null) {\n        break;\n      }\n      currentS += increment + deltaS + dsOffset;\n    } while (true);\n  }\n  return bitmap;\n}\nfunction decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: -patternWidth,\n      y: 0\n    });\n    if (template === 0) {\n      at.push({\n        x: -3,\n        y: -1\n      }, {\n        x: 2,\n        y: -2\n      }, {\n        x: -2,\n        y: -2\n      });\n    }\n  }\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n  const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);\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}\nfunction decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {\n  const skip = null;\n  if (enableSkip) {\n    throw new Jbig2Error(\"skip is not supported\");\n  }\n  if (combinationOperator !== 0) {\n    throw new Jbig2Error(`operator \"${combinationOperator}\" is not supported in halftone region`);\n  }\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  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        x: -3,\n        y: -1\n      }, {\n        x: 2,\n        y: -2\n      }, {\n        x: -2,\n        y: -2\n      });\n    }\n  }\n  const grayScaleBitPlanes = [];\n  let mmrInput, bitmap;\n  if (mmr) {\n    mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n  }\n  for (i = bitsPerValue - 1; i >= 0; i--) {\n    if (mmr) {\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n    } else {\n      bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);\n    }\n    grayScaleBitPlanes[i] = bitmap;\n  }\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];\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      if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {\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}\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  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  segmentHeader.retainBits = retainBits;\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  if (segmentHeader.length === 0xffffffff) {\n    if (segmentType === 38) {\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\n      const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\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}\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;\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}\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;\nfunction processSegment(segment, visitor) {\n  const header = segment.header;\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:\n      const dictionary = {};\n      const dictionaryFlags = readUint16(data, position);\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 = [dictionary, header.number, header.referredTo, data, position, end];\n      break;\n    case 6:\n    case 7:\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 = !!(textRegionHuffmanFlags & 0x4000);\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:\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:\n    case 23:\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:\n    case 39:\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:\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);\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:\n      break;\n    case 50:\n      break;\n    case 51:\n      break;\n    case 53:\n      args = [header.number, data, position, end];\n      break;\n    case 62:\n      break;\n    default:\n      throw new Jbig2Error(`segment type ${header.typeName}(${header.type}) is not implemented`);\n  }\n  const callbackName = \"on\" + header.typeName;\n  if (callbackName in visitor) {\n    visitor[callbackName].apply(visitor, args);\n  }\n}\nfunction processSegments(segments, visitor) {\n  for (let i = 0, ii = segments.length; i < ii; i++) {\n    processSegment(segments[i], visitor);\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}\nfunction parseJbig2(data) {\n  throw new Error(\"Not implemented: parseJbig2\");\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    if (info.defaultPixelValue) {\n      buffer.fill(0xff);\n    }\n    this.buffer = buffer;\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 ? regionInfo.combinationOperator : 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:\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:\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(`operator ${combinationOperator} is not supported`);\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(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);\n    this.drawBitmap(regionInfo, bitmap);\n  }\n  onImmediateLosslessGenericRegion() {\n    this.onImmediateGenericRegion(...arguments);\n  }\n  onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {\n    let huffmanTables, huffmanInput;\n    if (dictionary.huffman) {\n      huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);\n      huffmanInput = new Reader(data, start, end);\n    }\n    let symbols = this.symbols;\n    if (!symbols) {\n      this.symbols = symbols = {};\n    }\n    const inputSymbols = [];\n    for (const referredSegment of referredSegments) {\n      const referredSymbols = symbols[referredSegment];\n      if (referredSymbols) {\n        inputSymbols.push(...referredSymbols);\n      }\n    }\n    const decodingContext = new DecodingContext(data, start, end);\n    symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);\n  }\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\n    const regionInfo = region.info;\n    let huffmanTables, huffmanInput;\n    const symbols = this.symbols;\n    const inputSymbols = [];\n    for (const referredSegment of referredSegments) {\n      const referredSymbols = symbols[referredSegment];\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(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);\n    }\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);\n    this.drawBitmap(regionInfo, bitmap);\n  }\n  onImmediateLosslessTextRegion() {\n    this.onImmediateTextRegion(...arguments);\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(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);\n  }\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n    const patterns = this.patterns[referredSegments[0]];\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);\n    this.drawBitmap(regionInfo, bitmap);\n  }\n  onImmediateLosslessHalftoneRegion() {\n    this.onImmediateHalftoneRegion(...arguments);\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}\nclass HuffmanLine {\n  constructor(lineData) {\n    if (lineData.length === 2) {\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      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}\nclass HuffmanTreeNode {\n  constructor(line) {\n    this.children = [];\n    if (line) {\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      this.isLeaf = false;\n    }\n  }\n  buildTree(line, shift) {\n    const bit = line.prefixCode >> shift & 1;\n    if (shift <= 0) {\n      this.children[bit] = new HuffmanTreeNode(line);\n    } else {\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  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}\nclass HuffmanTable {\n  constructor(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\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  decode(reader) {\n    return this.rootNode.decodeNode(reader);\n  }\n  assignPrefixCodes(lines) {\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    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    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}\nfunction decodeTablesSegment(data, start, end) {\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  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  do {\n    prefixLength = reader.readBits(prefixSizeBits);\n    rangeLength = reader.readBits(rangeSizeBits);\n    lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));\n    currentRangeLow += 1 << rangeLength;\n  } while (currentRangeLow < highestValue);\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n  if (flags & 1) {\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([prefixLength, 0]));\n  }\n  return new HuffmanTable(lines, false);\n}\nconst standardTablesCache = {};\nfunction getStandardTable(number) {\n  let table = standardTablesCache[number];\n  if (table) {\n    return table;\n  }\n  let lines;\n  switch (number) {\n    case 1:\n      lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];\n      break;\n    case 2:\n      lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]];\n      break;\n    case 3:\n      lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, \"lower\"], [75, 7, 32, 0x7e], [6, 0x3e]];\n      break;\n    case 4:\n      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]];\n      break;\n    case 5:\n      lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, \"lower\"], [76, 6, 32, 0x3e]];\n      break;\n    case 6:\n      lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, \"lower\"], [2048, 6, 32, 0x3f]];\n      break;\n    case 7:\n      lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, \"lower\"], [2048, 5, 32, 0x1f]];\n      break;\n    case 8:\n      lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, \"lower\"], [1670, 9, 32, 0x1ff], [2, 0x1]];\n      break;\n    case 9:\n      lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, \"lower\"], [3339, 9, 32, 0x1ff], [2, 0x0]];\n      break;\n    case 10:\n      lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, \"lower\"], [4166, 8, 32, 0xff], [2, 0x2]];\n      break;\n    case 11:\n      lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n      break;\n    case 12:\n      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]];\n      break;\n    case 13:\n      lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n      break;\n    case 14:\n      lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];\n      break;\n    case 15:\n      lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, \"lower\"], [25, 7, 32, 0x7f]];\n      break;\n    default:\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\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}\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  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  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  byteAlign() {\n    this.shift = -1;\n  }\n  next() {\n    if (this.position >= this.end) {\n      return -1;\n    }\n    return this.data[this.position++];\n  }\n}\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\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}\nfunction getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {\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  const runCodesTable = new HuffmanTable(codes, false);\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  let customIndex = 0,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT;\n  switch (textRegion.huffmanFS) {\n    case 0:\n    case 1:\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n      break;\n    case 3:\n      tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman FS selector\");\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(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DS selector\");\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(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DT selector\");\n  }\n  if (textRegion.refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n  return {\n    symbolIDTable,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT\n  };\n}\nfunction getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {\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(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DH selector\");\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(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DW selector\");\n  }\n  let tableBitmapSize, tableAggregateInstances;\n  if (dictionary.bitmapSizeSelector) {\n    tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);\n    customIndex++;\n  } else {\n    tableBitmapSize = getStandardTable(1);\n  }\n  if (dictionary.aggregationInstancesSelector) {\n    tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);\n  } else {\n    tableAggregateInstances = getStandardTable(1);\n  }\n  return {\n    tableDeltaHeight,\n    tableDeltaWidth,\n    tableBitmapSize,\n    tableAggregateInstances\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}\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\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  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          currentByte = 0;\n          eof = true;\n        }\n        shift = 7;\n      }\n      row[x] = currentByte >> shift & 1;\n      shift--;\n    }\n  }\n  if (endOfBlock && !eof) {\n    const lookForEOFLimit = 5;\n    for (let i = 0; i < lookForEOFLimit; i++) {\n      if (decoder.readNextChar() === -1) {\n        break;\n      }\n    }\n  }\n  return bitmap;\n}\nclass Jbig2Image {\n  parseChunks(chunks) {\n    return parseJbig2Chunks(chunks);\n  }\n  parse(data) {\n    throw new Error(\"Not implemented: Jbig2Image.parse\");\n  }\n}\n\n;// ./src/core/jbig2_stream.js\n\n\n\n\n\nclass Jbig2Stream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n  get bytes() {\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n  ensureBuffer(requested) {}\n  readBlock() {\n    this.decodeImage();\n  }\n  decodeImage(bytes) {\n    if (this.eof) {\n      return this.buffer;\n    }\n    bytes ||= this.bytes;\n    const jbig2Image = new Jbig2Image();\n    const chunks = [];\n    if (this.params instanceof Dict) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (globalsStream instanceof BaseStream) {\n        const globals = globalsStream.getBytes();\n        chunks.push({\n          data: globals,\n          start: 0,\n          end: globals.length\n        });\n      }\n    }\n    chunks.push({\n      data: bytes,\n      start: 0,\n      end: bytes.length\n    });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n    return this.buffer;\n  }\n  get canAsyncDecodeImageFromBuffer() {\n    return this.stream.isAsync;\n  }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n  return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n    }\n  }\n  return {\n    srcPos,\n    destPos\n  };\n}\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height\n}) {\n  let i = 0;\n  const len = width * height * 3;\n  const len32 = len >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n  if (FeatureTest.isLittleEndian) {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n      dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n      dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n    }\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i];\n      const s2 = src32[i + 1];\n      const s3 = src32[i + 2];\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n      dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n      dest[destPos + 3] = s3 << 8 | 0xff;\n    }\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n    }\n  }\n  return {\n    srcPos: srcPos + len,\n    destPos\n  };\n}\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = src[i] * 0x10101 | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = src[i] * 0x1010100 | 0x000000ff;\n    }\n  }\n}\n\n;// ./src/core/jpg.js\n\n\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(msg, \"JpegError\");\n  }\n}\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message, \"DNLMarkerError\");\n    this.scanLines = scanLines;\n  }\n}\nclass EOIMarkerError extends BaseException {\n  constructor(msg) {\n    super(msg, \"EOIMarkerError\");\n  }\n}\nconst dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\nconst dctCos1 = 4017;\nconst dctSin1 = 799;\nconst dctCos3 = 3406;\nconst dctSin3 = 2276;\nconst dctCos6 = 1567;\nconst dctSin6 = 3784;\nconst dctSqrt2 = 5793;\nconst dctSqrt1d2 = 2896;\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 = [{\n    children: [],\n    index: 0\n  }];\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 = {\n          children: [],\n          index: 0\n        });\n        p.children[p.index] = q.children;\n        p = q;\n      }\n      k++;\n    }\n    if (i + 1 < length) {\n      code.push(q = {\n        children: [],\n        index: 0\n      });\n      p.children[p.index] = q.children;\n      p = q;\n    }\n  }\n  return code[0].children;\n}\nfunction getBlockBufferOffset(component, row, col) {\n  return 64 * ((component.blocksPerLine + 1) * row + col);\n}\nfunction decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n  const mcusPerLine = frame.mcusPerLine;\n  const progressive = frame.progressive;\n  const startOffset = offset;\n  let bitsData = 0,\n    bitsCount = 0;\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 === 0xdc && parseDNLMarker) {\n          offset += 2;\n          const scanLines = readUint16(data, offset);\n          offset += 2;\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\n            throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n          }\n        } else if (nextByte === 0xd9) {\n          if (parseDNLMarker) {\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n            if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 5) {\n              throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n            }\n          }\n          throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n        }\n        throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);\n      }\n    }\n    bitsCount = 7;\n    return bitsData >>> 7;\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  function receive(length) {\n    let n = 0;\n    while (length > 0) {\n      n = n << 1 | readBit();\n      length--;\n    }\n    return 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  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  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  function decodeDCSuccessive(component, blockOffset) {\n    component.blockData[blockOffset] |= readBit() << successive;\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] = receiveAndExtend(s) * (1 << successive);\n      k++;\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:\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:\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:\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:\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  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  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  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  let mcu = 0,\n    fileMarker;\n  const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn;\n  let h, v;\n  while (mcu <= mcuExpected) {\n    const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n    if (mcuToRead > 0) {\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\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    bitsCount = 0;\n    fileMarker = findNextFileMarker(data, offset);\n    if (!fileMarker) {\n      break;\n    }\n    if (fileMarker.invalid) {\n      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n      warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n      offset = fileMarker.offset;\n    }\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n      offset += 2;\n    } else {\n      break;\n    }\n  }\n  return offset - startOffset;\n}\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  if (!qt) {\n    throw new JpegError(\"missing required Quantization Table.\");\n  }\n  for (let row = 0; row < 64; row += 8) {\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    p0 *= qt[row];\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    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    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    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    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    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  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    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = dctSqrt2 * p0 + 8192 >> 14;\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    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    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    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    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    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    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}\nfunction buildComponentData(frame, component) {\n  const blocksPerLine = component.blocksPerLine;\n  const blocksPerColumn = component.blocksPerColumn;\n  const computationBuffer = new Int16Array(64);\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}\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n  const maxPos = data.length - 1;\n  let newPos = startPos < currentPos ? startPos : currentPos;\n  if (currentPos >= maxPos) {\n    return null;\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;\n    }\n    newMarker = readUint16(data, newPos);\n  }\n  return {\n    invalid: currentMarker.toString(16),\n    marker: newMarker,\n    offset: newPos\n  };\n}\nfunction 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(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n    const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n    const blocksPerLineForMcu = mcusPerLine * component.h;\n    const blocksPerColumnForMcu = mcusPerColumn * component.v;\n    const blocksBufferSize = 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}\nfunction readDataBlock(data, offset) {\n  const length = readUint16(data, offset);\n  offset += 2;\n  let endOffset = offset + length - 2;\n  const fileMarker = findNextFileMarker(data, endOffset, offset);\n  if (fileMarker?.invalid) {\n    warn(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n    endOffset = fileMarker.offset;\n  }\n  const array = data.subarray(offset, endOffset);\n  offset += array.length;\n  return {\n    appData: array,\n    newOffset: offset\n  };\n}\nfunction skipData(data, offset) {\n  const length = readUint16(data, offset);\n  offset += 2;\n  const endOffset = offset + length - 2;\n  const fileMarker = findNextFileMarker(data, endOffset, offset);\n  if (fileMarker?.invalid) {\n    return fileMarker.offset;\n  }\n  return endOffset;\n}\nclass JpegImage {\n  constructor({\n    decodeTransform = null,\n    colorTransform = -1\n  } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n  static canUseImageDecoder(data, colorTransform = -1) {\n    let offset = 0;\n    let numComponents = null;\n    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n    markerLoop: while (fileMarker !== 0xffd9) {\n      switch (fileMarker) {\n        case 0xffc0:\n        case 0xffc1:\n        case 0xffc2:\n          numComponents = data[offset + (2 + 1 + 2 + 2)];\n          break markerLoop;\n        case 0xffff:\n          if (data[offset] !== 0xff) {\n            offset--;\n          }\n          break;\n      }\n      offset = skipData(data, offset);\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n    if (numComponents === 4) {\n      return false;\n    }\n    if (numComponents === 3 && colorTransform === 0) {\n      return false;\n    }\n    return true;\n  }\n  parse(data, {\n    dnlScanLines = null\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    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n    markerLoop: while (fileMarker !== 0xffd9) {\n      let i, j, l;\n      switch (fileMarker) {\n        case 0xffe0:\n        case 0xffe1:\n        case 0xffe2:\n        case 0xffe3:\n        case 0xffe4:\n        case 0xffe5:\n        case 0xffe6:\n        case 0xffe7:\n        case 0xffe8:\n        case 0xffe9:\n        case 0xffea:\n        case 0xffeb:\n        case 0xffec:\n        case 0xffed:\n        case 0xffee:\n        case 0xffef:\n        case 0xfffe:\n          const {\n            appData,\n            newOffset\n          } = readDataBlock(data, offset);\n          offset = newOffset;\n          if (fileMarker === 0xffe0) {\n            if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n              jfif = {\n                version: {\n                  major: appData[5],\n                  minor: appData[6]\n                },\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(14, 14 + 3 * appData[12] * appData[13])\n              };\n            }\n          }\n          if (fileMarker === 0xffee) {\n            if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\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        case 0xffdb:\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              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = data[offset++];\n              }\n            } else if (quantizationTableSpec >> 4 === 1) {\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        case 0xffc0:\n        case 0xffc1:\n        case 0xffc2:\n          if (frame) {\n            throw new JpegError(\"Only single frame JPEGs supported\");\n          }\n          offset += 2;\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\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        case 0xffc4:\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            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n          }\n          break;\n        case 0xffdd:\n          offset += 2;\n          resetInterval = readUint16(data, offset);\n          offset += 2;\n          break;\n        case 0xffda:\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n          offset += 2;\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(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\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, {\n                dnlScanLines: ex.scanLines\n              });\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        case 0xffdc:\n          offset += 4;\n          break;\n        case 0xffff:\n          if (data[offset] !== 0xff) {\n            offset--;\n          }\n          break;\n        default:\n          const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n          if (nextFileMarker?.invalid) {\n            warn(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n            offset = nextFileMarker.offset;\n            break;\n          }\n          if (!nextFileMarker || offset >= data.length - 1) {\n            warn(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n            break markerLoop;\n          }\n          throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n    if (!frame) {\n      throw new JpegError(\"JpegImage.parse - no frame data found.\");\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      const quantizationTable = quantizationTables[component.quantizationId];\n      if (quantizationTable) {\n        component.quantizationTable = quantizationTable;\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  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n    const scaleX = this.width / width,\n      scaleY = this.height / height;\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;\n    let lastComponentScaleX;\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      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      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    let transform = this._decodeTransform;\n    if (!isSourcePDF && numComponents === 4 && !transform) {\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\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  get _isColorConversionNeeded() {\n    if (this.adobe) {\n      return !!this.adobe.transformCode;\n    }\n    if (this.numComponents === 3) {\n      if (this._colorTransform === 0) {\n        return false;\n      } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n        return false;\n      }\n      return true;\n    }\n    if (this._colorTransform === 1) {\n      return true;\n    }\n    return false;\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  _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  _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      data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n      data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n      data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n    }\n    return data.subarray(0, offset);\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      data[i] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n      data[i + 1] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n      data[i + 2] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n      data[i + 3] = 255;\n    }\n    return data;\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    }\n    return data;\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      data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n      data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n      data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n    }\n    return data.subarray(0, offset);\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      data[i] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n      data[i + 1] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n      data[i + 2] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n      data[i + 3] = 255;\n    }\n    return data;\n  }\n  getData({\n    width,\n    height,\n    forceRGBA = false,\n    forceRGB = false,\n    isSourcePDF = false\n  }) {\n    if (this.numComponents > 4) {\n      throw new JpegError(\"Unsupported color mode\");\n    }\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\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\n;// ./src/core/jpeg_stream.js\n\n\n\n\nclass JpegStream extends DecodeStream {\n  static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n  static get canUseImageDecoder() {\n    return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/jpeg\") : Promise.resolve(false));\n  }\n  static setOptions({\n    isImageDecoderSupported = false\n  }) {\n    this.#isImageDecoderSupported = isImageDecoderSupported;\n  }\n  get bytes() {\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n  ensureBuffer(requested) {}\n  readBlock() {\n    this.decodeImage();\n  }\n  get jpegOptions() {\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined\n    };\n    const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n    if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;\n        transform[i + 1] = decodeArr[i] * maxValue | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    if (this.params instanceof Dict) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    return shadow(this, \"jpegOptions\", jpegOptions);\n  }\n  #skipUselessBytes(data) {\n    for (let i = 0, ii = data.length - 1; i < ii; i++) {\n      if (data[i] === 0xff && data[i + 1] === 0xd8) {\n        if (i > 0) {\n          data = data.subarray(i);\n        }\n        break;\n      }\n    }\n    return data;\n  }\n  decodeImage(bytes) {\n    if (this.eof) {\n      return this.buffer;\n    }\n    bytes = this.#skipUselessBytes(bytes || this.bytes);\n    const jpegImage = new JpegImage(this.jpegOptions);\n    jpegImage.parse(bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGBA: this.forceRGBA,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n    return this.buffer;\n  }\n  get canAsyncDecodeImageFromBuffer() {\n    return this.stream.isAsync;\n  }\n  async getTransferableImage() {\n    if (!(await JpegStream.canUseImageDecoder)) {\n      return null;\n    }\n    const jpegOptions = this.jpegOptions;\n    if (jpegOptions.decodeTransform) {\n      return null;\n    }\n    let decoder;\n    try {\n      const bytes = this.canAsyncDecodeImageFromBuffer && (await this.stream.asyncGetBytes()) || this.bytes;\n      if (!bytes) {\n        return null;\n      }\n      const data = this.#skipUselessBytes(bytes);\n      if (!JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform)) {\n        return null;\n      }\n      decoder = new ImageDecoder({\n        data,\n        type: \"image/jpeg\",\n        preferAnimation: false\n      });\n      return (await decoder.decode()).image;\n    } catch (reason) {\n      warn(`getTransferableImage - failed: \"${reason}\".`);\n      return null;\n    } finally {\n      decoder?.close();\n    }\n  }\n}\n\n;// ./external/openjpeg/openjpeg.js\nvar OpenJPEG = (() => {\n  var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n  return function (moduleArg = {}) {\n    var moduleRtn;\n    var Module = moduleArg;\n    var readyPromiseResolve, readyPromiseReject;\n    var readyPromise = new Promise((resolve, reject) => {\n      readyPromiseResolve = resolve;\n      readyPromiseReject = reject;\n    });\n    var ENVIRONMENT_IS_WEB = true;\n    var ENVIRONMENT_IS_WORKER = false;\n    Module.decode = function (bytes, {\n      numComponents = 4,\n      isIndexedColormap = false,\n      smaskInData = false\n    }) {\n      const size = bytes.length;\n      const ptr = Module._malloc(size);\n      Module.HEAPU8.set(bytes, ptr);\n      const ret = Module._jp2_decode(ptr, size, numComponents > 0 ? numComponents : 0, !!isIndexedColormap, !!smaskInData);\n      Module._free(ptr);\n      if (ret) {\n        const {\n          errorMessages: errorMessages\n        } = Module;\n        if (errorMessages) {\n          delete Module.errorMessages;\n          return errorMessages;\n        }\n        return \"Unknown error\";\n      }\n      const {\n        imageData: imageData\n      } = Module;\n      Module.imageData = null;\n      return imageData;\n    };\n    var moduleOverrides = Object.assign({}, Module);\n    var arguments_ = [];\n    var thisProgram = \"./this.program\";\n    var quit_ = (status, toThrow) => {\n      throw toThrow;\n    };\n    var scriptDirectory = \"\";\n    var read_, readAsync, readBinary;\n    if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n      if (ENVIRONMENT_IS_WORKER) {\n        scriptDirectory = self.location.href;\n      } else if (typeof document != \"undefined\" && document.currentScript) {\n        scriptDirectory = document.currentScript.src;\n      }\n      if (_scriptName) {\n        scriptDirectory = _scriptName;\n      }\n      if (scriptDirectory.startsWith(\"blob:\")) {\n        scriptDirectory = \"\";\n      } else {\n        scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1);\n      }\n      read_ = url => {\n        var xhr = new XMLHttpRequest();\n        xhr.open(\"GET\", url, false);\n        xhr.send(null);\n        return xhr.responseText;\n      };\n      if (ENVIRONMENT_IS_WORKER) {\n        readBinary = url => {\n          var xhr = new XMLHttpRequest();\n          xhr.open(\"GET\", url, false);\n          xhr.responseType = \"arraybuffer\";\n          xhr.send(null);\n          return new Uint8Array(xhr.response);\n        };\n      }\n      readAsync = (url, onload, onerror) => {\n        fetch(url, {\n          credentials: \"same-origin\"\n        }).then(response => {\n          if (response.ok) {\n            return response.arrayBuffer();\n          }\n          return Promise.reject(new Error(response.status + \" : \" + response.url));\n        }).then(onload, onerror);\n      };\n    } else {}\n    var out = Module[\"print\"] || console.log.bind(console);\n    var err = Module[\"printErr\"] || console.error.bind(console);\n    Object.assign(Module, moduleOverrides);\n    moduleOverrides = null;\n    if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n    if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n    if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n    var wasmBinary;\n    if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n    function intArrayFromBase64(s) {\n      var decoded = atob(s);\n      var bytes = new Uint8Array(decoded.length);\n      for (var i = 0; i < decoded.length; ++i) {\n        bytes[i] = decoded.charCodeAt(i);\n      }\n      return bytes;\n    }\n    function tryParseAsDataURI(filename) {\n      if (!isDataURI(filename)) {\n        return;\n      }\n      return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n    }\n    var wasmMemory;\n    var ABORT = false;\n    var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n    function updateMemoryViews() {\n      var b = wasmMemory.buffer;\n      Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n      Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n      Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n      Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n      Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n      Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n      Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n      Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n    }\n    var __ATPRERUN__ = [];\n    var __ATINIT__ = [];\n    var __ATPOSTRUN__ = [];\n    var runtimeInitialized = false;\n    function preRun() {\n      if (Module[\"preRun\"]) {\n        if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n        while (Module[\"preRun\"].length) {\n          addOnPreRun(Module[\"preRun\"].shift());\n        }\n      }\n      callRuntimeCallbacks(__ATPRERUN__);\n    }\n    function initRuntime() {\n      runtimeInitialized = true;\n      callRuntimeCallbacks(__ATINIT__);\n    }\n    function postRun() {\n      if (Module[\"postRun\"]) {\n        if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n        while (Module[\"postRun\"].length) {\n          addOnPostRun(Module[\"postRun\"].shift());\n        }\n      }\n      callRuntimeCallbacks(__ATPOSTRUN__);\n    }\n    function addOnPreRun(cb) {\n      __ATPRERUN__.unshift(cb);\n    }\n    function addOnInit(cb) {\n      __ATINIT__.unshift(cb);\n    }\n    function addOnPostRun(cb) {\n      __ATPOSTRUN__.unshift(cb);\n    }\n    var runDependencies = 0;\n    var runDependencyWatcher = null;\n    var dependenciesFulfilled = null;\n    function addRunDependency(id) {\n      runDependencies++;\n      Module[\"monitorRunDependencies\"]?.(runDependencies);\n    }\n    function removeRunDependency(id) {\n      runDependencies--;\n      Module[\"monitorRunDependencies\"]?.(runDependencies);\n      if (runDependencies == 0) {\n        if (runDependencyWatcher !== null) {\n          clearInterval(runDependencyWatcher);\n          runDependencyWatcher = null;\n        }\n        if (dependenciesFulfilled) {\n          var callback = dependenciesFulfilled;\n          dependenciesFulfilled = null;\n          callback();\n        }\n      }\n    }\n    var dataURIPrefix = \"data:application/octet-stream;base64,\";\n    var isDataURI = filename => filename.startsWith(dataURIPrefix);\n    function findWasmBinary() {\n      var f = \"data:application/octet-stream;base64,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A0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAswAQF/AkAgAEUNACABRQ0AQQggACABbCIBECUiAARAIABBACABEBUaCyAAIQILIAILEQAgAEUEQEEADwtBCCAAECUL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAALJwEBfyMAQRBrIgMkACADIAI2AgwgACABIAJBAEEAEGsgA0EQaiQAC+gFAQl/IAFFBEBBAA8LAn8gAEUE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ACAEIE5BCmpBAiAFEBpBAkcEQCAFQQFBAiAAKAK4ARtBlhJBABAPIAAoArgBRSFnDAELIE5BCmogTkEMakECEBEgTigCDCIBQZD/A0YNACABQdn/A0YEQCAAQYACNgIIIABBADYCzAEMAQsgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQBEAgAEHAADYCCCAFQQJBrD9BABAPDAELQQAhZyAFQQFB7D5BABAPCyBOQRBqJAAgZwsLACAABEAgABAQCwu0AQEBfyAAKAIMRQRAIAIgACgCJCABEQMADwsCQEEIEBQiA0UNACADIAI2AgQgAyABNgIAQQgQFCIBRQRAIAMQEA8LIAEgAzYCACAAIAAoAgRB5ABsIgI2AigDQCAAKAIYIAJKDQALIAEgACgCFDYCBCAAIAE2AhQgACAAKAIYQQFqNgIYIAAoAhwiAUUNACABKAIAQQA2AgggACABKAIENgIcIAAgACgCIEEBazYCICABEBALC/oCAQR/AkAgAEUNACAAKAKsKCIBBEAgACgCqCgiAgRAQQAhAQNAIAAoAqwoIAFBA3RqKAIAIgMEQCADEBAgACgCqCghAgsgAUEBaiIBIAJJDQALIAAoAqwoIQELIABBADYCqCggARAQIABBADYCrCgLIAAoArQoIgEEQCABEBAgAEEANgK0KAsgACgC0CsiAQRAIAEQECAAQQA2AtArCyAAKALsKyIBBEAgARAQIABBADYC7CsLIAAoAugrIgEEQCABEBAgAEEANgLoKwsgACgC/CsiAQRAIAEQECAAQQA2AoQsIABCADcC/CsLIAAoAvArIgEEQCAAKAL0KyIDBH9BACECA0AgASgCDCIEBEAgBBAQIAFBADYCDCAAKAL0KyEDCyABQRRqIQEgAkEBaiICIANJDQALIAAoAvArBSABCxAQIABBADYC8CsLIAAoAuQrIgEEQCABEBAgAEEANgLkKwsgACgC3CsiAUUNACABEBAgAEIANwLcKwsLyAcCEX8BfiAAKAIQIghBIE8EQCAAKQMIpw8LAkAgACgCFCIDQQROBEAgACgCACICQQNrKAIAIQEgACADQQRrIgM2AhQgACACQQRrNgIADAELIANBAEwEQAwBCyADQQFxIQ0gACgCACECAkAgA0EBRgRAQRghBAwBCyADQf7///8HcSEJQRghBANAIAAgAkEB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IABBADYCiAEgACgCZBAQIABBADYCZCAALQC8AUECcUUEQCAAKAKoARAQCyAAQdAAakEAQfAAEBUaIAAoAsABEDIgAEEANgLAASAAKALEARAyIABBADYCwAEgACgCyAEiAQRAIAEoAhwiAgRAIAIQECABQQA2AhwLIAEoAigiAgRAIAEoAiQEQANAIAIgBUEobCIDaigCJCIEBEAgBBAQIAEoAigiAiADakEANgIkCyACIANqKAIQIgQEQCAEEBAgASgCKCICIANqQQA2AhALIAIgA2ooAhgiBARAIAQQECABKAIoIgIgA2pBADYCGAsgBUEBaiIFIAEoAiRJDQALCyACEBAgAUEANgIoCyABEBALIABBADYCyAEgACgCSBAhIABBADYCSCAAKAJMECEgAEEANgJMIAAoAtQBIgMEQAJAIAMoAghFDQAgAygCDARAIANBADYCKANAIAMoAhhBAEoNAAsLIANBATYCECADKAIAEBAgAygCHCICRQ0AA0AgAigCBCEBIAIQECADIAE2AhwgASICDQALCyADKAIkIgIEQCACKAIEIgVBAEoEQEEAIQEDQCACKAIAIAFBDGxqIgQoAggiBgRAIAQoAgQgBhECACACKAIEIQULIAFBAWoiASAFSA0ACwsgAigCABAQIAIQEAsgAxAQCyAAQQA2AtQBIAAQEAsL5gMCCH8EfiAAKAIUKAIAKAIUIAFBzABsaiIJKAIMIgggACgCGCgCGCABQTRsaiIKNQIEIhBCAX0iEiAANQI8fCAQgKciCyAIIAtJGyEMIAkoAggiCCAKNQIAIhFCAX0iEyAANQI4fCARgKciCiAIIApJGyEKIAkoAgQiCCASIAA1AjR8IBCApyILIAggC0sbIQsgCSgCACIIIBMgADUCMHwgEYCnIg0gCCANSxshDUEAIQggACgCICgC0CsgAUG4CGxqKAIUIQ4CQCAJKAIUQQAgAmtBfyACG2oiAkUEQCAKIQAgDSEIIAshAQwBCyADQQFxIAJBAWsiD3QiCSANSQRAIA0gCWutQn8gAq0iEIZCf4V8IBCIpyEIC0EAIQBBACEBIANBAXYgD3QiAyALSQRAIAsgA2utQn8gAq0iEIZCf4V8IBCIpyEBCyAJIApJBEAgCiAJa61CfyACrSIQhkJ/hXwgEIinIQALIAMgDE8EQEEAIQwMAQsgDCAD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IABBADYCPCAAQucHNwI0IABBADYCLCAAQucHNwIkIABBADYCHCAAQucHNwIUIABBADYCDCAAQucHNwIEIABBQGshACACQQRqIgIgA0cNAAsLIAFBA3EiAUUNAEEAIQIDQCAAQQA2AgwgAELnBzcCBCAAQRBqIQAgAkEBaiICIAFHDQALCwv7BQEQfyMAQYACayIIJAACf0EBQRQQEyIGRQRAIAJBAUH0MEEAEA9BAAwBCyAGIAE2AgQgBiAANgIAIAggATYCACAIIAA2AoABA0AgCCAFIg1BAWoiBUECdCIHaiABQQFqQQJtIgM2AgAgCEGAAWogB2ogAEEBakECbSIHNgIAIAQgACABbCIJaiEEIAMhASAHIQAgCUEBSw0ACyAGIAQ2AgggBEUEQCAGEBBBAAwBCyAGIARBEBATIgM2AgwgA0UEQCACQQFB2hpBABAPIAYQEEEADAELIAYgBigCCCILQQR0NgIQIAMhACANBEAgAyAGKAIEIAYoAgBsQQR0aiIEIQEDQAJAIAggDkECdCICaigCACIJQQBMDQAgCUEBayEMQQAhBwJAIAhBgAFqIAJqKAIAIgJBAEwEQEEAIQUgCUEBRwRAIAlB/v///wdxIQoDQCAFIAxGIQ8gBUECaiEFIAEgBCAPGyIEIQEgB0ECaiIHIApHDQALCyAJQQFxDQEgBCEBDAILA0AgBCEFIAIhBANAAkAgACABNgIAIARBAUYEQCAAQRBqIQAgAUEQaiEBDAELIAAgATYCECABQRBqIQEgAEEgaiEAIARBAkohECAEQQJrIQQgEA0BCwsgASAFIAJBBHRqIAcgByAMRnJBAXEiChshBCABIAUgChshASAHQQFqIgcgCUcNAAsMAQsgASAEIAJBBHRqIAUgBSAMRnJBAXEiBRshESABIAQgBRshASARIQQLIA5BAWoiDiANRw0ACwsgAEEANgIAAkAgC0UNACALQQRPBEAgC0F8cSEAQQAhAQNAIANBADYCPCADQucHNwI0IANBADYCLCADQucHNwIkIANBADYCHCADQucHNwIUIANBADYCDCADQucHNwIEIANBQGshAyABQQRqIgEgAEcNAAsLIAtBA3EiAEUNAEEAIQEDQCADQQA2AgwgA0LnBzcCBCADQRBqIQMgAUEBaiIBIABHDQALCyAGCyESIAhBgAJqJAAgEgtTAQF/An8gAC0ADEH/AUYEQCAAQoD+g4DwADcCDEEAIAAoAggiASAAKAIETw0BGiAAIAFBAWo2AgggACABLQAAQYD+A3I2AgwLIABBADYCEEEBCwt+AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARBlIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLSQEBfwJAQQFBLBATIgEEQCABQQA2AhACQCAAQQBMBEAgAUEBQQgQEyIANgIkIABFDQEMAwsgAUEANgIMCyABEBALQQAhAQsgAQuRAgAgAEUEQEEADwsCfwJAIAFB/wBNDQACQEGU0AEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTHAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsE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AyAAQRh2NgIUIAMgBDYCECADIABBCHZB/wFxNgIcIAMgAEEQdkH/AXE2AhggAkEBQc31ACADQRBqEA8MBwsgBSAITQRAIAYhBAwECyAFIQggBiAFEBciBA0DIAYQECACQQFB/w9BABAPQQAMBwsgBEECcUUEQCACQQFBwg9BABAPIAYQEEEADAcLIAAgBEH/////B3I2AmQgASAHIAVrrSINIAIgASgCKBEIACANUQ0DIAAtAGRBCHFFDQEgAkECQZIcQQAQDwsgBhAQQQEMBQsgAkEBQZIcQQAQDyAGEBBBAAwECyABIAQgBSACEBogBUcEQCACQQFBxBxBABAPIAQQEEEADAQLIAAgBCIGIAUgAiAKKAIEEQEADQALIAQQEEEADAILIAJBAUGiJUEAEA9BAAwBCyAGEBBBAAshDCADQfAAaiQAIAwL5gEBBn8gACgCCEE1IAIQJARAAkAgACgCCCIGKAIAIQMgBigCCCEFAkACQAJ/AkAgAwRAQQEhBCADQQFxIQcgA0EBRw0BQQAMAgsgBkEANgIADAILIANBfnEhAwNAAn9BACAERQ0AGkEAIAAgASACIAUoAgARAABFDQAaIAAgASACIAUoAgQRAABBAEcLIQQgBUEIaiEFIAhBAmoiCCADRw0ACyAERQshAyAHBEAgAw0CIAAgASACIAUoAgARAABBAEchBAsgBkEANgIAIARFDQILIAAoAgAaQQEPCyAGQQA2AgALC0EACwoAIAAoAgAaQQALFAAgACgCACIABEAgACABNgK4AQsLIQAgACgCACABEFMgAEEAOgB8IAAgASgCuEBBAXE2AoABCzIAIAJFBEBBAA8LIAAoAgAgASACIAMQSEUEQCADQQFBqS9BABAPQQAPCyAAIAIgAxBxC2kCAn8BfCMAQRBrIgMkACACBEADQCAAIANBCGoQRCABAn8gAysDCCIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAs2AgAgAUEEaiEBIABBCGohACAEQQFqIgQgAkcNAAsLIANBEGokAAuEAQICfwF9IwBBEGsiAyQAIAIEQANAIAMgAC0AADoADyADIAAtAAE6AA4gAyAALQACOgANIAMgAC0AAzoADCABAn8gAyoCDCIFi0MAAABPXQRAIAWoDAELQYCAgIB4CzYCACABQQRqIQEgAEEEaiEAIARBAWoiBCACRw0ACwsgA0EQaiQAC0sBAn8jAEEQayIDJAAgAgRAA0AgACADQQxqQQQQESABIAMoAgw2AgAgAUEEaiEBIABBBGohACAEQQFqIgQgAkcNAAsLIANBEGokAAtLAQJ/IwBBEGsiAyQAIAIEQANAIAAgA0EMakECEBEgASADKAIMNgIAIAFBBGohASAAQQJqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALSgECfyMAQRBrIgMkACACBEADQCAAIANBCGoQRCABIAMrAwi2OAIAIAFBBGohASAAQQhqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALaAECfyMAQRBrIgMkACACBEADQCADIAAtAAA6AA8gAyAALQABOgAOIAMgAC0AAjoADSADIAAtAAM6AAwgASADKgIMOAIAIAFBBGohASAAQQRqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALTAECfyMAQRBrIgMkACACBEADQCAAIANBDGpBBBARIAEgAygCDLM4AgAgAUEEaiEBIABBBGohACAEQQFqIgQgAkcNAAsLIANBEGokAAtMAQJ/IwBBEGsiAyQAIAIEQANAIAAgA0EMakECEBEgASADKAIMszgCACABQQRqIQEgAEECaiEAIARBAWoiBCACRw0ACwsgA0EQaiQAC6oIAg1/AXsjAEEQayIIJAACfyAAKAIIQRBGBEAgACgCnAEgACgCzAFBjCxsagwBCyAAKAIMCyEJAkAgAkUEQCADQQFB8B9BABAPDAELIAAoAkghBkEBIQQgASAIQQhqQQEQESAIKAIIIgVBAk8EQCADQQJBxsgAQQAQDwwBCyACIAVBAWpHBEBBACEEIANBAkHwH0EAEA8MAQsCQCAGKAIQIgNFDQAgCSgC0CshBCADQQhPBEAgA0F4cSEGQQAhAgNAIARBADYCvEMgBEEANgKEOyAEQQA2AswyIARBADYClCogBEEANgLcISAEQQA2AqQZIARBADYC7BAgBEEANgK0CCAEQcDDAGohBCACQQhqIgIgBkcNAAsLIANBB3EiA0UNAEEAIQIDQCAEQQA2ArQIIARBuAhqIQQgAkEBaiICIANHDQALCyAJKALoKyICBH8gAhAQIAlBADYC6CsgCCgCCAUgBQtFBEBBASEEDAELA0AgAUEBaiIBIAhBDGpBARARAkAgCSgCgCxFDQAgCSgC/CsiAygCACAIKAIMRw0AIAMoAgQiBSAAKAJIIgYoAhBHDQAgAygCCCICBEBBACEEIAIoAhAgBSAFbCIFIAIoAgBBAnRB0L0BaigCAGxHDQMgCSAFQQJ0EBQiBzYC6CsgB0UNAyACKAIMIAcgBSACKAIAQQJ0QYDAAWooAgARBQALIAMoAgwiAkUNAEEAIQQgAigCECAGKAIQIgMgAigCAEECdEHQvQFqKAIAbEcNAiADQQJ0EBQiBUUNAiACKAIMIAUgAyACKAIAQQJ0QZDAAWooAgARBQACQCAGKAIQIgdFDQAgCSgC0CshBEEAIQsCQAJAIAdBBEkNACAEQbQIaiIMIAUgB0ECdGpJBEAgBSAEIAdBuAhsakkNAQsgBEHcIWohDSAEQaQZaiEOIARB7BBqIQ8gBSAHQXxxIgZBAnRqIQIgBCAGQbgIbGohBEEAIQMDQCAMIANBuAhsIgpqIAUgA0ECdGr9AAIAIhH9WgIAACAKIA9qIBH9WgIAASAKIA5qIBH9WgIAAiAKIA1qIBH9WgIAAyADQQRqIgMgBkcNAAsgBiAHRg0CDAELIAUhAkEAIQYLIAcgBiIDa0EHcSIKBEADQCAEIAIoAgA2ArQIIANBAWohAyAEQbgIaiEEIAJBBGohAiALQQFqIgsgCkcNAAsLIAYgB2tBeEsNAANAIAQgAigCADYCtAggBCACKAIENgLsECAEIAIoAgg2AqQZIAQgAigCDDYC3CEgBCACKAIQNgKUKiAEIAIoAhQ2AswyIAQgAigCGDYChDsgBCACKAIcNgK8QyAEQcDDAGohBCACQSBqIQIgA0EIaiIDIAdHDQALCyAFEBALQQEhBCAQQQFqIhAgCCgCCEkNAAsLIAhBEGokACAECwQAQn8LvwkBC38jAEEQayIFJAACfyAAKAIIQRBGBEAgACgCnAEgACgCzAFBjCxsagwBCyAAKAIMCyEHAn8gAkEBTQRAIANBAUHYI0EAEA9BAAwBCyABIAVBDGpBAhARIAUoAgwEQCADQQJB8CxBABAPQQEMAQsgAkEGTQRAIANBAUHYI0EAEA9BAAwBCyABQQJqIAVBCGpBARARIAcoAvwrIgkhAAJAAkACQCAHKAKALCIGRQ0AIAUoAgghCANAIAAoAgAgCEYNASAAQRRqIQAgBEEBaiIEIAZHDQALDAELIAQgBkcNAQsgBygChCwgBkYEfyAHIAZBCmoiADYChCwgCSAAQRRsEBciAEUEQCAHKAL8KxAQIAdBADYChCwgB0IANwL8KyADQQFB8iNBABAPQQAMAwsgByAANgL8KyAAIAcoAoAsIgRBFGxqQQAgBygChCwgBGtBFGwQFRogBygC/CshCSAHKAKALAUgBgtBFGwgCWohAEEBIQsLIAAgBSgCCDYCACABQQNqIAVBDGpBAhARIAUoAgwEQCADQQJB8CxBABAPQQEMAQsgAUEFaiAFQQRqQQIQESAFKAIEIgRBAk8EQCADQQJBqBdBABAPQQEMAQsgAkEHayEGIAQEQCABQQdqIQJBACEJA0AgBkECTQRAIANBAUHYI0EAEA9BAAwDCyACIAVBDGpBARARIAUoAgxBAUcEQCADQQJBsipBABAPQQEMAwsgAkEBaiAFQQIQESAAIAUoAgAiBEH//wFxIgE2AgQgBkEDayIIIARBD3ZBAWoiBiABbEECaiIKSQRAIANBAUHYI0EAEA9BAAwDCyACQQNqIQJBACEEIAEEQANAIAIgBUEMaiAGEBEgBCAFKAIMRwRAIANBAkHaL0EAEA9BAQwFCyACIAZqIQIgBEEBaiIEIAAoAgRJDQALCyACIAVBAhARIAUgBSgCACIEQf//AXEiATYCACAAKAIEIAFHBEAgA0ECQdgYQQAQD0EBDAMLIAggCmsiCiAEQQ92QQFqIgYgAWxBA2oiDEkEQCADQQFB2CNBABAPQQAMAwsgAkECaiECQQAhBCABBEADQCACIAVBDGogBhARIAQgBSgCDEcEQCADQQJB2i9BABAPQQEMBQsgAiAGaiECIARBAWoiBCAAKAIESQ0ACwsgAiAFQQxqQQMQESAFKAIMIQYgAEIANwIIIAAgBkGAgARxRSAALQAQQf4BcXI6ABAgBSAGQf8BcSIINgIIAkAgCEUNACAHKAL0KyINBEAgBygC8CshBEEAIQEDQCAIIAQoAghGBEAgACAENgIIDAMLIARBFGohBCABQQFqIgEgDUcNAAsLIANBAUHYI0EAEA9BAAwDCyAFIAZBCHZB/wFxIgY2AggCQCAGRQ0AIAcoAvQrIggEQCAHKALwKyEEQQAhAQNAIAYgBCgCCEYEQCAAIAQ2AgwMAwsgBEEUaiEEIAFBAWoiASAIRw0ACwsgA0EBQdgjQQAQD0EADAMLIAogDGshBiACQQNqIQIgCUEBaiIJIAUoAgRJDQALCyAGBEAgA0EBQdgjQQAQD0EADAELQQEgC0UNABogByAHKAKALEEBajYCgCxBAQshDiAFQRBqJAAgDgv1AQEFfyMAQRBrIgQkAAJAIAIgACgCSCgCECIGQQJqRwRAIANBAUHwIkEAEA8MAQsgASAEQQxqQQIQESAGIAQoAgxHBEAgA0EBQfAiQQAQDwwBCyAGRQRAQQEhBQwBCyABQQJqIQIgACgCSCgCGCEAQQAhAQNAIAIgBEEIakEBEBEgACAEKAIIIgVB/wBxIgdBAWoiCDYCGCAAIAVBB3ZBAXE2AiAgB0EfTwRAIAQgCDYCBCAEIAE2AgAgA0EBQbfzACAEEA9BACEFDAILIABBNGohAEEBIQUgAkEBaiECIAFBAWoiASAGRw0ACwsgBEEQaiQAIAULmAUBCn8jAEEQayIHJAACfyAAKAIIQRBGBEAgACgCnAEgACgCzAFBjCxsagwBCyAAKAIMCyEFAn8gAkEBTQRAIANBAUHxHkEAEA9BAAwBCyABIAdBDGpBAhARAkAgBygCDARAIANBAkGGG0EAEA8MAQsgAkEGTQRAIANBAUHxHkEAEA9BAAwCCyABQQJqIAdBDGpBAhARIAUoAvArIQQgBy0ADCEKAkACQAJAIAUoAvQrIgZFBEAgBCEADAELIAQhAANAIAAoAgggCkYNASAAQRRqIQAgCEEBaiIIIAZHDQALDAELIAYgCEcNAQsgBSgC+CsgBkYEQCAFIAZBCmoiADYC+CsgBCAAQRRsEBchACAFKALwKyEEIABFBEAgBBAQIAVBADYC+CsgBUIANwLwKyADQQFBix9BABAPQQAMBAsCQCAAIARGDQAgBSgCgCwiC0UNACAFKAL8KyEMQQAhCANAIAwgCEEUbGoiBigCCCIJBEAgBiAAIAkgBGtqNgIICyAGKAIMIgkEQCAGIAAgCSAEa2o2AgwLIAhBAWoiCCALRw0ACwsgBSAANgLwKyAAIAUoAvQrIgRBFGxqQQAgBSgC+CsgBGtBFGwQFRogBSgC9CshBiAFKALwKyEECyAFIAZBAWo2AvQrIAQgBkEUbGohAAsgACgCDCIEBEAgBBAQIABCADcCDAsgACAKNgIIIAAgBygCDCIEQQp2QQNxNgIAIAAgBEEIdkEDcTYCBCABQQRqIAdBDGpBAhARIAcoAgwEQCADQQJBvRZBABAPDAELIAAgAkEGayICEBQiBDYCDCAERQRAIANBAUHxHkEAEA9BAAwCCyAEIAFBBmogAhASGiAAIAI2AhALQQELIQ0gB0EQaiQAIA0LJwBBASEBIAIgACgCSCgCEEECdEcEfyADQQFB1yFBABAPQQAFQQELC6sDAQV/IwBBEGsiBiQAAn8gAkEBTQRAIANBAUH9HUEAEA9BAAwBCyAALQC8AUEBcQRAIANBAUGJ3gBBABAPQQAMAQsgACgCnAEgACgCzAFBjCxsaiIAIAAtAIgsQQJyOgCILCABIAZBDGpBARARAkAgACgCrCgiBEUEQCAAIAYoAgxBAWoiBUEIEBMiBDYCrCggBEUEQCADQQFBlx5BABAPQQAMAwsgACAFNgKoKAwBCyAGKAIMIgUgACgCqChJDQAgBCAFQQFqIgRBA3QQFyIFRQRAIANBAUGXHkEAEA9BAAwCCyAAIAU2AqwoIAUgACgCqCgiB0EDdGpBACAEIAdrQQN0EBUaIAAgBDYCqCggACgCrCghBAsgBCAGKAIMIgVBA3RqKAIABEAgBiAFNgIAIANBAUG9NSAGEA9BAAwBCyACQQFrIgIQFCEEIAAoAqwoIgAgBigCDCIFQQN0aiAENgIAIARFBEAgA0EBQZceQQAQD0EADAELIAAgBUEDdGogAjYCBCAAIAYoAgxBA3RqKAIAIAFBAWogAhASGkEBCyEIIAZBEGokACAIC/UCAQV/IwBBEGsiBiQAAn8gAkEBTQRAIANBAUGkIEEAEA9BAAwBCyAAIAAtALwBQQFyOgC8ASABIAZBDGpBARARAkAgACgCdCIERQRAIAAgBigCDEEBaiIFQQgQEyIENgJ0IARFBEAgA0EBQb4gQQAQD0EADAMLIAAgBTYCcAwBCyAGKAIMIgUgACgCcEkNACAEIAVBAWoiBEEDdBAXIgVFBEAgA0EBQb4gQQAQD0EADAILIAAgBTYCdCAFIAAoAnAiB0EDdGpBACAEIAdrQQN0EBUaIAAgBDYCcCAAKAJ0IQQLIAQgBigCDCIFQQN0aigCAARAIAYgBTYCACADQQFB0zUgBhAPQQAMAQsgAkEBayICEBQhBCAAKAJ0IgAgBigCDCIFQQN0aiAENgIAIARFBEAgA0EBQb4gQQAQD0EADAELIAAgBUEDdGogAjYCBCAAIAYoAgxBA3RqKAIAIAFBAWogAhASGkEBCyEIIAZBEGokACAIC6ABAQR/IwBBEGsiBCQAAn8gAkUEQCADQQFB1x5BABAPQQAMAQsgASAEQQxqQQEQEUEBIAJBAWsiBUUNABpBACEAQQAhAgNAIAFBAWoiASAEQQhqQQEQESAEKAIIIgZBGHRBH3UgBkH/AHEgAnJBB3RxIQIgAEEBaiIAIAVHDQALQQEgAkUNABogA0EBQdceQQAQD0EACyEHIARBEGokACAHCxsAQQEhACACBH9BAQUgA0EBQf4gQQAQD0EACwuAAQEBfyMAQRBrIgAkAEEBIQQCQCACQQFNBEBBACEEIANBAUHkIEEAEA8MAQsgASAAQQxqQQEQESABQQFqIABBCGpBARARIAJBAmsgACgCCCIBQQV2QQJxIAFBBHZBA3FqQQJqcEUNAEEAIQQgA0EBQeQgQQAQDwsgAEEQaiQAIAQLBABBAAsLorwBIQBBgAgLkXVjYW5ub3QgYWxsb2NhdGUgb3BqX3RjZF9zZWdfZGF0YV9jaHVua190KiBhcnJheQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AFVua25vd24gZm9ybWF0AEZhaWxlZCB0byBzZXR1cCB0aGUgZGVjb2RlcgBGYWlsZWQgdG8gcmVhZCB0aGUgaGVhZGVyAG5hbgAqbF90aWxlX2xlbiA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEgLSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoAGluZgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBpbWFnZQBJbnZhbGlkIGFjY2VzcyB0byBwaS0+aW5jbHVkZQAvdG1wL29wZW5qcGVnL3NyYy9iaW4vY29tbW9uL2NvbG9yLmMAQUxMX0NQVVMAT1BKX05VTV9USFJFQURTAE5BTgBJTkYAcF9qMmstPm1fc3BlY2lmaWNfcGFyYW0ubV9kZWNvZGVyLm1fc290X2xlbmd0aCA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEACQkJIHByZWNjaW50c2l6ZSAodyxoKT0ACQkJIHN0ZXBzaXplcyAobSxlKT0ALgAobnVsbCkAKCVkLCVkKSAAJXN9CgAJCSB9CgBbREVWXSBEdW1wIGFuIGltYWdlX2NvbXBfaGVhZGVyIHN0cnVjdCB7CgBbREVWXSBEdW1wIGFuIGltYWdlX2hlYWRlciBzdHJ1Y3QgewoASW1hZ2UgaW5mbyB7CgAJIGRlZmF1bHQgdGlsZSB7CgAlcwkgY29tcG9uZW50ICVkIHsKAAkJIGNvbXAgJWQgewoACSBUaWxlIGluZGV4OiB7CgAJIE1hcmtlciBsaXN0OiB7CgBDb2Rlc3RyZWFtIGluZGV4IGZyb20gbWFpbiBoZWFkZXI6IHsKAENvZGVzdHJlYW0gaW5mbyBmcm9tIG1haW4gaGVhZGVyOiB7CgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveAoARm91bmQgYSBtaXNwbGFjZWQgJyVjJWMlYyVjJyBib3ggb3V0c2lkZSBqcDJoIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogZmlyc3QgYm94IG11c3QgYmUgSlBFRyAyMDAwIHNpZ25hdHVyZSBib3gKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IHNlY29uZCBib3ggbXVzdCBiZSBmaWxlIHR5cGUgYm94CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUganBlZzIwMDAgYm94CgBOb3QgZW5vdWdoIG1lbW9yeSB3aXRoIEZUWVAgQm94CgBBIG1hcmtlciBJRCB3YXMgZXhwZWN0ZWQgKDB4ZmYtLSkgaW5zdGVhZCBvZiAlLjh4CgAJCSBtY3Q9JXgKAAkJCSBjYmxrc3R5PSUjeAoACQkJIGNzdHk9JSN4CgAJCSBwcmc9JSN4CgBJbnRlZ2VyIG92ZXJmbG93CgAJIHRkeD0ldSwgdGR5PSV1CgAJIHR3PSV1LCB0aD0ldQoACSB0eDA9JXUsIHR5MD0ldQoASW52YWxpZCBjb21wb25lbnQgaW5kZXg6ICV1CgBTdHJlYW0gdG9vIHNob3J0CgBNYXJrZXIgaGFuZGxlciBmdW5jdGlvbiBmYWlsZWQgdG8gcmVhZCB0aGUgbWFya2VyIHNlZ21lbnQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjdXJyZW50IHByZWNpbmN0IGNvZGVibG9jayBlbGVtZW50CgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1FjZCBvciBTUWNjIGVsZW1lbnQKAEEgQlBDQyBoZWFkZXIgYm94IGlzIGF2YWlsYWJsZSBhbHRob3VnaCBCUEMgZ2l2ZW4gYnkgdGhlIElIRFIgYm94ICglZCkgaW5kaWNhdGUgY29tcG9uZW50cyBiaXQgZGVwdGggaXMgY29uc3RhbnQKAEVycm9yIHdpdGggU0laIG1hcmtlcjogaWxsZWdhbCB0aWxlIG9mZnNldAoASW52YWxpZCBwcmVjaW5jdAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGJhbmQgcHJlY2ludHMKAEZhaWxlZCB0byBkZWNvZGUgYWxsIHVzZWQgY29tcG9uZW50cwoAU2l6ZSBvZiBjb2RlIGJsb2NrIGRhdGEgZXhjZWVkcyBzeXN0ZW0gbGltaXRzCgBTaXplIG9mIHRpbGUgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBNQ1QgbWFya2VycwoAQ29ycnVwdGVkIFBQTSBtYXJrZXJzCgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgdGlsZSByZXNvbHV0aW9ucwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGNvbGxlY3Rpb25zCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzIDAgcGFsZXR0ZSBjb2x1bW5zCgBXZSBkbyBub3Qgc3VwcG9ydCBST0kgaW4gZGVjb2RpbmcgSFQgY29kZWJsb2NrcwoAQ2Fubm90IGhhbmRsZSBib3ggb2YgdW5kZWZpbmVkIHNpemVzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgd2l0aG91dCBzYW1lIG51bWJlciBvZiBpbmRpeGVzCgBJbnZhbGlkIHRpbGVjLT53aW5feHh4IHZhbHVlcwoAQ2Fubm90IGhhbmRsZSBib3ggb2YgbGVzcyB0aGFuIDggYnl0ZXMKAENhbm5vdCBoYW5kbGUgWEwgYm94IG9mIGxlc3MgdGhhbiAxNiBieXRlcwoAQ29tcG9uZW50IGluZGV4ICV1IHVzZWQgc2V2ZXJhbCB0aW1lcwoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAlZCBlbnRyaWVzCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUgbm9kZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtY3QgZGF0YSB3aXRoaW4gbXVsdGlwbGUgTUNUIHJlY29yZHMKAENhbm5vdCBkZWNvZGUgdGlsZSwgbWVtb3J5IGVycm9yCgBvcGpfajJrX2FwcGx5X25iX3RpbGVfcGFydHNfY29ycmVjdGlvbiBlcnJvcgoAUHJvYmxlbSB3aXRoIHNraXBwaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBQcm9ibGVtIHdpdGggcmVhZGluZyBKUEVHMjAwMCBib3gsIHN0cmVhbSBlcnJvcgoAVW5rbm93biBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCB0bCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBtaCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHRha2UgaW4gY2hhcmdlIFNJWiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUFQgbWFya2VyCgBFcnJvciByZWFkaW5nIFNPVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExUIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIFNPUCBtYXJrZXIKAEV4cGVjdGVkIFNPUCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgTUNPIG1hcmtlcgoARXJyb3IgcmVhZGluZyBSR04gbWFya2VyCgBFcnJvciByZWFkaW5nIFBQTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBNIG1hcmtlcgoARXJyb3IgcmVhZGluZyBUTE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFBMTSBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIEVQSCBtYXJrZXIKAEV4cGVjdGVkIEVQSCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ1JHIG1hcmtlcgoAVW5rbm93biBwcm9ncmVzc2lvbiBvcmRlciBpbiBDT0QgbWFya2VyCgBVbmtub3duIFNjb2QgdmFsdWUgaW4gQ09EIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIFFDRCBtYXJrZXIKAENycm9yIHJlYWRpbmcgQ0JEIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQT0MgbWFya2VyCgBFcnJvciByZWFkaW5nIENPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNDIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DQyBtYXJrZXIKAHJlcXVpcmVkIFNJWiBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBDT0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoAcmVxdWlyZWQgUUNEIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBmaWxlIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBoZWFkZXIKAEVycm9yIHdpdGggSlAgU2lnbmF0dXJlIDogYmFkIG1hZ2ljIG51bWJlcgoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgcHJldmlvdXMgbnVtYmVyIG9mIHRpbGUtcGFydCAoJWQpLCBnaXZpbmcgdXAKAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoaGVhZGVyKSAoJWQpLCBnaXZpbmcgdXAKAHRpbGVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJlc29sdXRpb24KAE1hcmtlciBpcyBub3QgY29tcGxpYW50IHdpdGggaXRzIHBvc2l0aW9uCgBQcm9ibGVtIHdpdGggc2VlayBmdW5jdGlvbgoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LCBJbnZhbGlkIGNibGt3L2NibGtoIGNvbWJpbmF0aW9uCgBJbnZhbGlkIG11bHRpcGxlIGNvbXBvbmVudCB0cmFuc2Zvcm1hdGlvbgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIG90aGVyIHRoYW4gYXJyYXkgZGVjb3JyZWxhdGlvbgoAVG9vIGxhcmdlIHZhbHVlIGZvciBOcHBtCgBOb3QgZW5vdWdoIGJ5dGVzIHRvIHJlYWQgTnBwbQoAYmFkIHBsYWNlZCBqcGVnIGNvZGVzdHJlYW0KAAkgTWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb249JWxsaQoJIE1haW4gaGVhZGVyIGVuZCBwb3NpdGlvbj0lbGxpCgBNYXJrZXIgc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBUaWxlIHBhcnQgbGVuZ3RoIHNpemUgaW5jb25zaXN0ZW50IHdpdGggc3RyZWFtIGxlbmd0aAoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGRhdGEgc3Bhbm5pbmcKAFdyb25nIGZsYWcKAEVycm9yIHdpdGggRlRZUCBzaWduYXR1cmUgQm94IHNpemUKAEVycm9yIHdpdGggSlAgc2lnbmF0dXJlIEJveCBzaXplCgBJbnZhbGlkIHByZWNpbmN0IHNpemUKAEluY29uc2lzdGVudCBtYXJrZXIgc2l6ZQoASW52YWxpZCBtYXJrZXIgc2l6ZQoARXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBhIG5ldyB2YWxpZGF0aW9uIHByb2NlZHVyZQoATm90IGVub3VnaCBtZW1vcnkgdG8gZGVjb2RlIHRpbGUKAEZhaWxlZCB0byBkZWNvZGUgdGhlIGNvZGVzdHJlYW0gaW4gdGhlIEpQMiBmaWxlCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgd2l0aCBpbmRpeCBzaHVmZmxlCgBDYW5ub3QgYWxsb2NhdGUgVGllciAxIGhhbmRsZQoATm8gZGVjb2RlZCBhcmVhIHBhcmFtZXRlcnMsIHNldCB0aGUgZGVjb2RlZCBhcmVhIHRvIHRoZSB3aG9sZSBpbWFnZQoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWluaXRpYWxpemUgdGhlIHRhZyB0cmVlCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgdHJhbnNmb3JtYXRpb24gZm91bmQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudC4gVW5zdXBwb3J0ZWQgTWl4ZWQgSFQgY29kZS1ibG9jayBzdHlsZSBmb3VuZAoAVGlsZSBZIGNvb3JkaW5hdGVzIGFyZSBub3Qgc3VwcG9ydGVkCgBUaWxlIFggY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAEltYWdlIGNvb3JkaW5hdGVzIGFib3ZlIElOVF9NQVggYXJlIG5vdCBzdXBwb3J0ZWQKAEpQRUcyMDAwIEhlYWRlciBib3ggbm90IHJlYWQgeWV0LCAnJWMlYyVjJWMnIGJveCB3aWxsIGJlIGlnbm9yZWQKAG9wal9qMmtfbWVyZ2VfcHB0KCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgU09UIG1hcmtlci4gVGlsZSBpbmRleCBhbGxvY2F0aW9uIGZhaWxlZAoASWdub3JpbmcgaWhkciBib3guIEZpcnN0IGloZHIgYm94IGFscmVhZHkgcmVhZAoAWnBwdCAldSBhbHJlYWR5IHJlYWQKAFpwcG0gJXUgYWxyZWFkeSByZWFkCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCBzeW50aGV0aXplZCAweEZGIG1hcmtlcnMgcmVhZAoACQkJIGNibGt3PTJeJWQKAAkJCSBjYmxraD0yXiVkCgAJCQkgcW50c3R5PSVkCgAlcyBkeD0lZCwgZHk9JWQKAAkJCSByb2lzaGlmdD0lZAoACQkJIG51bWdiaXRzPSVkCgAJCSBudW1sYXllcnM9JWQKACVzIG51bWNvbXBzPSVkCgBvcGpfanAyX2FwcGx5X2NkZWY6IGFjbj0lZCwgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogY249JWQsIG51bWNvbXBzPSVkCgAJCQkgbnVtcmVzb2x1dGlvbnM9JWQKAAkJIHR5cGU9JSN4LCBwb3M9JWxsaSwgbGVuPSVkCgAlcyBzZ25kPSVkCgAJCQkgcW1mYmlkPSVkCgAlcyBwcmVjPSVkCgAJCSBuYiBvZiB0aWxlLXBhcnQgaW4gdGlsZSBbJWRdPSVkCgAlcyB4MT0lZCwgeTE9JWQKACVzIHgwPSVkLCB5MD0lZAoARmFpbGVkIHRvIGRlY29kZSB0aWxlICVkLyVkCgBTZXR0aW5nIGRlY29kaW5nIGFyZWEgdG8gJWQsJWQsJWQsJWQKAEZhaWxlZCB0byBkZWNvZGUgY29tcG9uZW50ICVkCgBJbnZhbGlkIHZhbHVlIGZvciBudW1yZXNvbHV0aW9ucyA6ICVkLCBtYXggdmFsdWUgaXMgc2V0IGluIG9wZW5qcGVnLmggYXQgJWQKAEludmFsaWQgY29tcG9uZW50IG51bWJlcjogJWQsIHJlZ2FyZGluZyB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgJWQKAFRvbyBtYW55IFBPQ3MgJWQKAEludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBwYXJ0IGluZGV4IGZvciB0aWxlIG51bWJlciAlZC4gR290ICVkLCBleHBlY3RlZCAlZAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAENhbm5vdCBhbGxvY2F0ZSBjYmxrLT5kZWNvZGVkX2RhdGEKAEZhaWxlZCB0byBtZXJnZSBQUFQgZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQTSBkYXRhCgBJbnZhbGlkIG51bWJlciBvZiBsYXllcnMgaW4gQ09EIG1hcmtlciA6ICVkIG5vdCBpbiByYW5nZSBbMS02NTUzNV0KACVzOiVkOmNvbG9yX2NteWtfdG9fcmdiCglDQU4gTk9UIENPTlZFUlQKACVzOiVkOmNvbG9yX2VzeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgAlczolZDpjb2xvcl9zeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgBTdHJlYW0gdG9vIHNob3J0LCBleHBlY3RlZCBTT1QKAFVuYWJsZSB0byBzZXQgdDEgaGFuZGxlIGFzIFRMUwoAU3RyZWFtIGRvZXMgbm90IGVuZCB3aXRoIEVPQwoAQ2Fubm90IGhhbmRsZSBib3ggc2l6ZXMgaGlnaGVyIHRoYW4gMl4zMgoAb3BqX3BpX25leHRfbHJjcCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcmxjcCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfY3BybCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcGNybCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcnBjbCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3QxX2RlY29kZV9jYmxrKCk6IHVuc3VwcG9ydGVkIGJwbm9fcGx1c19vbmUgPSAlZCA+PSAzMQoARmFpbGVkIHRvIGRlY29kZSB0aWxlIDEvMQoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENNQVAgYm94LgoATmVlZCB0byByZWFkIGEgUENMUiBib3ggYmVmb3JlIHRoZSBDTUFQIGJveC4KAEluc3VmZmljaWVudCBkYXRhIGZvciBDREVGIGJveC4KAE51bWJlciBvZiBjaGFubmVsIGRlc2NyaXB0aW9uIGlzIGVxdWFsIHRvIHplcm8gaW4gQ0RFRiBib3guCgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveDogbm8gJ2loZHInIGJveC4KAE5vbiBjb25mb3JtYW50IGNvZGVzdHJlYW0gVFBzb3Q9PVROc290LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IGJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAQm94IGxlbmd0aCBpcyBpbmNvbnNpc3RlbnQuCgBSZXNvbHV0aW9uIGZhY3RvciBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcmVzb2x1dGlvbiBpbiB0aGUgY29tcG9uZW50LgoAQ29tcG9uZW50IG1hcHBpbmcgc2VlbXMgd3JvbmcuIFRyeWluZyB0byBjb3JyZWN0LgoASW5jb21wbGV0ZSBjaGFubmVsIGRlZmluaXRpb25zLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gSW52YWxpZCBjb2RlYmxvY2sgbGVuZ3RoIHZhbHVlcy4KAFdlIGRvIG5vdCBzdXBwb3J0IG1vcmUgdGhhbiAzIGNvZGluZyBwYXNzZXMgaW4gYW4gSFQgY29kZWJsb2NrOyBUaGlzIGNvZGVibG9ja3MgaGFzICVkIHBhc3Nlcy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFRoZXJlIGFyZSAlZCB6ZXJvIGJpdHBsYW5lcyBpbiAlZCBiaXRwbGFuZXMuCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgdHJhbnNmb3JtYXRpb24gc3RhZ2VzLgoAVW5rbm93biBtYXJrZXIgaGFzIGJlZW4gZGV0ZWN0ZWQgYW5kIGdlbmVyYXRlZCBlcnJvci4KAENvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfc2V0dXBfZGVjb2RlciBmdW5jdGlvbiBpcyBub3QgYSBkZWNvbXByZXNzb3IgaGFuZGxlci4KAENvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfcmVhZF9oZWFkZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBUaWxlcyBkb24ndCBhbGwgaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb24uIFNraXAgdGhlIE1DVCBzdGVwLgoATnVtYmVyIG9mIGNvbXBvbmVudHMgKCVkKSBpcyBpbmNvbnNpc3RlbnQgd2l0aCBhIE1DVC4gU2tpcCB0aGUgTUNUIHN0ZXAuCgBKUDIgYm94IHdoaWNoIGFyZSBhZnRlciB0aGUgY29kZXN0cmVhbSB3aWxsIG5vdCBiZSByZWFkIGJ5IHRoaXMgZnVuY3Rpb24uCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBXaGVuIHRoZSBudW1iZXIgb2YgemVybyBwbGFuZXMgYml0cGxhbmVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgYml0cGxhbmVzLCBvbmx5IHRoZSBjbGVhbnVwIHBhc3MgbWFrZXMgc2Vuc2UsIGJ1dCB3ZSBoYXZlICVkIHBhc3NlcyBpbiB0aGlzIGNvZGVibG9jay4gVGhlcmVmb3JlLCBvbmx5IHRoZSBjbGVhbnVwIHBhc3Mgd2lsbCBiZSBkZWNvZGVkLiBUaGlzIG1lc3NhZ2Ugd2lsbCBub3QgYmUgZGlzcGxheWVkIGFnYWluLgoASW1hZ2UgaGFzIGxlc3MgY29tcG9uZW50cyB0aGFuIGNvZGVzdHJlYW0uCgBOZWVkIHRvIGRlY29kZSB0aGUgbWFpbiBoZWFkZXIgYmVmb3JlIGJlZ2luIHRvIGRlY29kZSB0aGUgcmVtYWluaW5nIGNvZGVzdHJlYW0uCgBQc290IHZhbHVlIG9mIHRoZSBjdXJyZW50IHRpbGUtcGFydCBpcyBlcXVhbCB0byB6ZXJvLCB3ZSBhc3N1bWluZyBpdCBpcyB0aGUgbGFzdCB0aWxlLXBhcnQgb2YgdGhlIGNvZGVzdHJlYW0uCgBBIG1hbGZvcm1lZCBjb2RlYmxvY2sgdGhhdCBoYXMgbW9yZSB0aGFuIG9uZSBjb2RpbmcgcGFzcywgYnV0IHplcm8gbGVuZ3RoIGZvciAybmQgYW5kIHBvdGVudGlhbGx5IHRoZSAzcmQgcGFzcyBpbiBhbiBIVCBjb2RlYmxvY2suCgAJCQkgdGlsZS1wYXJ0WyVkXTogc3Rhcl9wb3M9JWxsaSwgZW5kX2hlYWRlcj0lbGxpLCBlbmRfcG9zPSVsbGkuCgBUaWxlICV1IGhhcyBUUHNvdCA9PSAwIGFuZCBUTnNvdCA9PSAwLCBidXQgbm8gb3RoZXIgdGlsZS1wYXJ0cyB3ZXJlIGZvdW5kLiBFT0MgaXMgYWxzbyBtaXNzaW5nLgoAQ29tcG9uZW50ICVkIGRvZXNuJ3QgaGF2ZSBhIG1hcHBpbmcuCgBBIGNvbmZvcm1pbmcgSlAyIHJlYWRlciBzaGFsbCBpZ25vcmUgYWxsIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveGVzIGFmdGVyIHRoZSBmaXJzdCwgc28gd2UgaWdub3JlIHRoaXMgb25lLgoAVGhlIHNpZ25hdHVyZSBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAVGhlICBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAVGhlIGZ0eXAgYm94IG11c3QgYmUgdGhlIHNlY29uZCBib3ggaW4gdGhlIGZpbGUuCgBGYWlsZWQgdG8gZGVjb2RlLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gSW5jb3JyZWN0IE1FTCBzZWdtZW50IHNlcXVlbmNlLgoAQ29tcG9uZW50ICVkIGlzIG1hcHBlZCB0d2ljZS4KAE9ubHkgb25lIENNQVAgYm94IGlzIGFsbG93ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQg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AAABVAAAAQAAAABQAADAUAAAAUgAAAAAAAAQUAAAsFAAAAFIAAABAAAAIFAAAMBQAAABOAAAAAAAADBQAACwUAAAATgAAAEAAABAUAAAwFAAAAEwAAAAAAAAUFAAABBRAAABMAAAAQAAAGBQAAAgUQAAASQAAAAAAABwUAAAMFEAAAEkAAABAAAAgFAAAEBRAAABHAAAAAAAAJBQAABwUQAAARwAAAEAAACgUAAAgFEAAAEWAAAAAAAAkFIAAJBRAAABFgAAAQAAAKBSAACgUQAAAVYAAAAAAADQUAAAwFAAAAFWAAABAAAA4FAAALBQAAABVAAAAAAAAPBQAACwUAAAAVQAAAEAAAAAUQAAwFAAAAFRAAAAAAAAEFEAANBQAAABUQAAAQAAACBRAADgUAAAAUgAAAAAAAAwUQAA8FAAAAFIAAABAAAAQFEAAABRAAABOAAAAAAAAFBRAAAQUQAAATgAAAEAAABgUQAAIFEAAAE0AAAAAAAAcFEAADBRAAABNAAAAQAAAIBRAABAUQAAATAAAAAAAACQUQAAUFEAAAEwAAABAAAAoFEAAGBRAAABKAAAAAAAALBRAABQUQAAASgAAAEAAADAUQAAYFEAAAEkAAAAAAAA0FEAAHBRAAABJAAAAQAAAOBRAACAUQAAASIAAAAAAADwUQAAkFEAAAEiAAABAAAAAFIAAKBRAAABHAAAAAAAABBSAACwUQAAARwAAAEAAAAgUgAAwFEAAAEYAAAAAAAAMFIAANBRAAABGAAAAQAAAEBSAADgUQAAARYAAAAAAABQUgAA8FEAAAEWAAABAAAAYFIAAABSAAABFAAAAAAAAHBSAAAQUgAAARQAAAEAAACAUgAAIFIAAAESAAAAAAAAkFIAADBSAAABEgAAAQAAAKBSAABAUgAAAREAAAAAAACwUgAAUFIAAAERAAABAAAAwFIAAGBSAADBCgAAAAAAANBSAABwUgAAwQoAAAEAAADgUgAAgFIAAMEJAAAAAAAA8FIAAJBSAADBCQAAAQAAAABTAACgUgAAoQgAAAAAAAAQUwAAsFIAAKEIAAABAAAAIFMAAMBSAAAhBQAAAAAAADBTAADQUgAAIQUAAAEAAABAUwAA4FIAAEEEAAAAAAAAUFMAAPBSAABBBAAAAQAAAGBTAAAAUwAAoQIAAAAAAABwUwAAEFMAAKECAAABAAAAgFMAACBTAAAhAgAAAAAAAJBTAAAwUwAAIQIAAAEAAACgUwAAQFMAAEEBAAAAAAAAsFMAAFBTAABBAQAAAQAAAMBTAABgUwAAEQEAAAAAAADQUwAAcFMAABEBAAABAAAA4FMAAIBTAACFAAAAAAAAAPBTAACQUwAAhQAAAAEAAAAAVAAAoFMAAEkAAAAAAAAAEFQAALBTAABJAAAAAQAAACBUAADAUwAAJQAAAAAAAAAwVAAA0FMAACUAAAABAAAAQFQAAOBTAAAVAAAAAAAAAFBUAADwUwAAFQAAAAEAAABgVAAAAFQAAAkAAAAAAAAAcFQAABBUAAAJAAAAAQAAAIBUAAAgVAAABQAAAAAAAACQVAAAMFQAAAUAAAABAAAAoFQAAEBUAAABAAAAAAAAAJBUAABQVAAAAQAAAAEAAACgVAAAYFQAAAFWAAAAAAAAsFQAALBUAAABVgAAAQAAAMBUAADAVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHZuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQZm8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB2bwBCwcBAAEAAQABAEHpvAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD/AAAMAAAAGAAAAFL/AAAUAAAAGQAAAFP/AAAUAAAAGgAAAF7/AAAUAAAAGwAAAFz/AAAUAAAAHAAAAF3/AAAUAAAAHQAAAF//AAAUAAAAHgAAAFH/AAACAAAAHwAAAFX/AAAEAAAAIAAAAFf/AAAEAAAAIQAAAFj/AAAQAAAAIgAAAGD/AAAEAAAAIwAAAGH/AAAQAAAAJAAAAJH/AEGIvwELZWP/AAAEAAAAJQAAAGT/AAAUAAAAJgAAAHT/AAAUAAAAJwAAAHj/AAAEAAAAKAAAAFD/AAAEAAAAKQAAAFn/AAAEAAAAKgAAAHX/AAAUAAAAKwAAAHf/AAAUAAAALAAAAAAAAAAUAEGAwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHAwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAPhiAEGAwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHRwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBi8IBCwEMAEGXwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABBxcIBCwEQAEHRwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB/8IBCwESAEGLwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBwsMBCw4aAAAAGhoaAAAAAAAACQBB88MBCwEUAEH/wwELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBrcQBCwEWAEG5xAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB4MQBCwmQbAEAAAAAAAUAQfTEAQsBaQBBjMUBCwpqAAAAawAAAHhoAEGkxQELAQIAQbTFAQsI//////////8AQfjFAQsBBQBBhMYBCwFsAEGcxgELDmoAAABtAAAAiGgAAAAEAEG0xgELAQEAQcTGAQsF/////wo=\";\n      return f;\n    }\n    var wasmBinaryFile;\n    function getBinarySync(file) {\n      if (file == wasmBinaryFile && wasmBinary) {\n        return new Uint8Array(wasmBinary);\n      }\n      var binary = tryParseAsDataURI(file);\n      if (binary) {\n        return binary;\n      }\n      if (readBinary) {\n        return readBinary(file);\n      }\n      throw 'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)';\n    }\n    function instantiateSync(file, info) {\n      var module;\n      var binary = getBinarySync(file);\n      module = new WebAssembly.Module(binary);\n      var instance = new WebAssembly.Instance(module, info);\n      return [instance, module];\n    }\n    function getWasmImports() {\n      return {\n        a: wasmImports\n      };\n    }\n    function createWasm() {\n      var info = getWasmImports();\n      function receiveInstance(instance, module) {\n        wasmExports = instance.exports;\n        wasmMemory = wasmExports[\"p\"];\n        updateMemoryViews();\n        addOnInit(wasmExports[\"q\"]);\n        removeRunDependency(\"wasm-instantiate\");\n        return wasmExports;\n      }\n      addRunDependency(\"wasm-instantiate\");\n      if (Module[\"instantiateWasm\"]) {\n        try {\n          return Module[\"instantiateWasm\"](info, receiveInstance);\n        } catch (e) {\n          err(`Module.instantiateWasm callback failed with error: ${e}`);\n          readyPromiseReject(e);\n        }\n      }\n      if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary();\n      var result = instantiateSync(wasmBinaryFile, info);\n      return receiveInstance(result[0]);\n    }\n    var callRuntimeCallbacks = callbacks => {\n      while (callbacks.length > 0) {\n        callbacks.shift()(Module);\n      }\n    };\n    var noExitRuntime = Module[\"noExitRuntime\"] || true;\n    var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);\n    function _copy_pixels_1(compG_ptr, nb_pixels) {\n      compG_ptr >>= 2;\n      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels);\n      const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n      imageData.set(compG);\n    }\n    function _copy_pixels_3(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n      compR_ptr >>= 2;\n      compG_ptr >>= 2;\n      compB_ptr >>= 2;\n      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 3);\n      const compR = Module.HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n      const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n      const compB = Module.HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n      for (let i = 0; i < nb_pixels; i++) {\n        imageData[3 * i] = compR[i];\n        imageData[3 * i + 1] = compG[i];\n        imageData[3 * i + 2] = compB[i];\n      }\n    }\n    function _copy_pixels_4(compR_ptr, compG_ptr, compB_ptr, compA_ptr, nb_pixels) {\n      compR_ptr >>= 2;\n      compG_ptr >>= 2;\n      compB_ptr >>= 2;\n      compA_ptr >>= 2;\n      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n      const compR = Module.HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n      const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n      const compB = Module.HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n      const compA = Module.HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n      for (let i = 0; i < nb_pixels; i++) {\n        imageData[4 * i] = compR[i];\n        imageData[4 * i + 1] = compG[i];\n        imageData[4 * i + 2] = compB[i];\n        imageData[4 * i + 3] = compA[i];\n      }\n    }\n    var getHeapMax = () => 2147483648;\n    var growMemory = size => {\n      var b = wasmMemory.buffer;\n      var pages = (size - b.byteLength + 65535) / 65536;\n      try {\n        wasmMemory.grow(pages);\n        updateMemoryViews();\n        return 1;\n      } catch (e) {}\n    };\n    var _emscripten_resize_heap = requestedSize => {\n      var oldSize = HEAPU8.length;\n      requestedSize >>>= 0;\n      var maxHeapSize = getHeapMax();\n      if (requestedSize > maxHeapSize) {\n        return false;\n      }\n      var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n      for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n        var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n        overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n        var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n        var replacement = growMemory(newSize);\n        if (replacement) {\n          return true;\n        }\n      }\n      return false;\n    };\n    var ENV = {};\n    var getExecutableName = () => thisProgram || \"./this.program\";\n    var getEnvStrings = () => {\n      if (!getEnvStrings.strings) {\n        var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n        var env = {\n          USER: \"web_user\",\n          LOGNAME: \"web_user\",\n          PATH: \"/\",\n          PWD: \"/\",\n          HOME: \"/home/web_user\",\n          LANG: lang,\n          _: getExecutableName()\n        };\n        for (var x in ENV) {\n          if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x];\n        }\n        var strings = [];\n        for (var x in env) {\n          strings.push(`${x}=${env[x]}`);\n        }\n        getEnvStrings.strings = strings;\n      }\n      return getEnvStrings.strings;\n    };\n    var stringToAscii = (str, buffer) => {\n      for (var i = 0; i < str.length; ++i) {\n        HEAP8[buffer++] = str.charCodeAt(i);\n      }\n      HEAP8[buffer] = 0;\n    };\n    var _environ_get = (__environ, environ_buf) => {\n      var bufSize = 0;\n      getEnvStrings().forEach((string, i) => {\n        var ptr = environ_buf + bufSize;\n        HEAPU32[__environ + i * 4 >> 2] = ptr;\n        stringToAscii(string, ptr);\n        bufSize += string.length + 1;\n      });\n      return 0;\n    };\n    var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n      var strings = getEnvStrings();\n      HEAPU32[penviron_count >> 2] = strings.length;\n      var bufSize = 0;\n      strings.forEach(string => bufSize += string.length + 1);\n      HEAPU32[penviron_buf_size >> 2] = bufSize;\n      return 0;\n    };\n    var _fd_close = fd => 52;\n    var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n    function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n      var offset = convertI32PairToI53Checked(offset_low, offset_high);\n      return 70;\n    }\n    var printCharBuffers = [null, [], []];\n    var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n    var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {\n      var endIdx = idx + maxBytesToRead;\n      var endPtr = idx;\n      while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n      if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n        return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n      }\n      var str = \"\";\n      while (idx < endPtr) {\n        var u0 = heapOrArray[idx++];\n        if (!(u0 & 128)) {\n          str += String.fromCharCode(u0);\n          continue;\n        }\n        var u1 = heapOrArray[idx++] & 63;\n        if ((u0 & 224) == 192) {\n          str += String.fromCharCode((u0 & 31) << 6 | u1);\n          continue;\n        }\n        var u2 = heapOrArray[idx++] & 63;\n        if ((u0 & 240) == 224) {\n          u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n        } else {\n          u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n        }\n        if (u0 < 65536) {\n          str += String.fromCharCode(u0);\n        } else {\n          var ch = u0 - 65536;\n          str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n        }\n      }\n      return str;\n    };\n    var printChar = (stream, curr) => {\n      var buffer = printCharBuffers[stream];\n      if (curr === 0 || curr === 10) {\n        (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\n        buffer.length = 0;\n      } else {\n        buffer.push(curr);\n      }\n    };\n    var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n    var _fd_write = (fd, iov, iovcnt, pnum) => {\n      var num = 0;\n      for (var i = 0; i < iovcnt; i++) {\n        var ptr = HEAPU32[iov >> 2];\n        var len = HEAPU32[iov + 4 >> 2];\n        iov += 8;\n        for (var j = 0; j < len; j++) {\n          printChar(fd, HEAPU8[ptr + j]);\n        }\n        num += len;\n      }\n      HEAPU32[pnum >> 2] = num;\n      return 0;\n    };\n    function _gray_to_rgba(compG_ptr, nb_pixels) {\n      compG_ptr >>= 2;\n      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n      const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n      for (let i = 0; i < nb_pixels; i++) {\n        imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n        imageData[4 * i + 3] = 255;\n      }\n    }\n    function _graya_to_rgba(compG_ptr, compA_ptr, nb_pixels) {\n      compG_ptr >>= 2;\n      compA_ptr >>= 2;\n      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n      const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n      const compA = Module.HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n      for (let i = 0; i < nb_pixels; i++) {\n        imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n        imageData[4 * i + 3] = compA[i];\n      }\n    }\n    function _jsPrintWarning(message_ptr) {\n      const message = UTF8ToString(message_ptr);\n      (Module.warn || console.warn)(`OpenJPEG: ${message}`);\n    }\n    function _rgb_to_rgba(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n      compR_ptr >>= 2;\n      compG_ptr >>= 2;\n      compB_ptr >>= 2;\n      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n      const compR = Module.HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n      const compG = Module.HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n      const compB = Module.HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n      for (let i = 0; i < nb_pixels; i++) {\n        imageData[4 * i] = compR[i];\n        imageData[4 * i + 1] = compG[i];\n        imageData[4 * i + 2] = compB[i];\n        imageData[4 * i + 3] = 255;\n      }\n    }\n    function _storeErrorMessage(message_ptr) {\n      const message = UTF8ToString(message_ptr);\n      if (!Module.errorMessages) {\n        Module.errorMessages = message;\n      } else {\n        Module.errorMessages += \"\\n\" + message;\n      }\n    }\n    var wasmImports = {\n      c: __emscripten_memcpy_js,\n      g: _copy_pixels_1,\n      f: _copy_pixels_3,\n      e: _copy_pixels_4,\n      k: _emscripten_resize_heap,\n      l: _environ_get,\n      m: _environ_sizes_get,\n      n: _fd_close,\n      j: _fd_seek,\n      b: _fd_write,\n      o: _gray_to_rgba,\n      i: _graya_to_rgba,\n      d: _jsPrintWarning,\n      h: _rgb_to_rgba,\n      a: _storeErrorMessage\n    };\n    var wasmExports = createWasm();\n    var ___wasm_call_ctors = wasmExports[\"q\"];\n    var _malloc = Module[\"_malloc\"] = wasmExports[\"r\"];\n    var _free = Module[\"_free\"] = wasmExports[\"s\"];\n    var _jp2_decode = Module[\"_jp2_decode\"] = wasmExports[\"u\"];\n    var calledRun;\n    dependenciesFulfilled = function runCaller() {\n      if (!calledRun) run();\n      if (!calledRun) dependenciesFulfilled = runCaller;\n    };\n    function run() {\n      if (runDependencies > 0) {\n        return;\n      }\n      preRun();\n      if (runDependencies > 0) {\n        return;\n      }\n      function doRun() {\n        if (calledRun) return;\n        calledRun = true;\n        Module[\"calledRun\"] = true;\n        if (ABORT) return;\n        initRuntime();\n        readyPromiseResolve(Module);\n        if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n        postRun();\n      }\n      if (Module[\"setStatus\"]) {\n        Module[\"setStatus\"](\"Running...\");\n        setTimeout(function () {\n          setTimeout(function () {\n            Module[\"setStatus\"](\"\");\n          }, 1);\n          doRun();\n        }, 1);\n      } else {\n        doRun();\n      }\n    }\n    if (Module[\"preInit\"]) {\n      if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n      while (Module[\"preInit\"].length > 0) {\n        Module[\"preInit\"].pop()();\n      }\n    }\n    run();\n    moduleRtn = Module;\n    return moduleRtn;\n  };\n})();\n/* harmony default export */ const openjpeg = (OpenJPEG);\n;// ./src/core/jpx.js\n\n\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(msg, \"JpxError\");\n  }\n}\nclass JpxImage {\n  static #module = null;\n  static decode(data, decoderOptions) {\n    decoderOptions ||= {};\n    this.#module ||= openjpeg({\n      warn: warn\n    });\n    const imageData = this.#module.decode(data, decoderOptions);\n    if (typeof imageData === \"string\") {\n      throw new JpxError(imageData);\n    }\n    return imageData;\n  }\n  static cleanup() {\n    this.#module = null;\n  }\n  static 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      if (code === 0xff51) {\n        stream.skip(4);\n        const Xsiz = stream.getInt32() >>> 0;\n        const Ysiz = stream.getInt32() >>> 0;\n        const XOsiz = stream.getInt32() >>> 0;\n        const YOsiz = stream.getInt32() >>> 0;\n        stream.skip(16);\n        const Csiz = stream.getUint16();\n        return {\n          width: Xsiz - XOsiz,\n          height: Ysiz - YOsiz,\n          bitsPerComponent: 8,\n          componentsCount: Csiz\n        };\n      }\n    }\n    throw new JpxError(\"No size marker found in JPX stream\");\n  }\n}\n\n;// ./src/core/jpx_stream.js\n\n\n\nclass JpxStream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n  get bytes() {\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n  ensureBuffer(requested) {}\n  readBlock(decoderOptions) {\n    this.decodeImage(null, decoderOptions);\n  }\n  decodeImage(bytes, decoderOptions) {\n    if (this.eof) {\n      return this.buffer;\n    }\n    bytes ||= this.bytes;\n    this.buffer = JpxImage.decode(bytes, decoderOptions);\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n    return this.buffer;\n  }\n  get canAsyncDecodeImageFromBuffer() {\n    return this.stream.isAsync;\n  }\n}\n\n;// ./src/core/lzw_stream.js\n\nclass LZWStream extends DecodeStream {\n  constructor(str, maybeLength, earlyChange) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n    const maxLzwDictionarySize = 4096;\n    const lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0\n    };\n    for (let i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n  }\n  readBits(n) {\n    let bitsCached = this.bitsCached;\n    let cachedData = this.cachedData;\n    while (bitsCached < n) {\n      const c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = cachedData << 8 | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return cachedData >>> bitsCached & (1 << n) - 1;\n  }\n  readBlock() {\n    const blockSize = 512,\n      decodedSizeDelta = blockSize;\n    let estimatedDecodedSize = blockSize * 2;\n    let i, j, q;\n    const lzwState = this.lzwState;\n    if (!lzwState) {\n      return;\n    }\n    const earlyChange = lzwState.earlyChange;\n    let nextCode = lzwState.nextCode;\n    const dictionaryValues = lzwState.dictionaryValues;\n    const dictionaryLengths = lzwState.dictionaryLengths;\n    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    let codeLength = lzwState.codeLength;\n    let prevCode = lzwState.prevCode;\n    const currentSequence = lzwState.currentSequence;\n    let currentSequenceLength = lzwState.currentSequenceLength;\n    let decodedLength = 0;\n    let currentBufferLength = this.bufferLength;\n    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n    for (i = 0; i < blockSize; i++) {\n      const code = this.readBits(codeLength);\n      const hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n      }\n      prevCode = code;\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n    this.bufferLength = currentBufferLength;\n  }\n}\n\n;// ./src/core/predictor_stream.js\n\n\n\nclass PredictorStream extends DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n    if (!(params instanceof Dict)) {\n      return str;\n    }\n    const predictor = this.predictor = params.get(\"Predictor\") || 1;\n    if (predictor <= 1) {\n      return str;\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng;\n    this.str = str;\n    this.dict = str.dict;\n    const colors = this.colors = params.get(\"Colors\") || 1;\n    const bits = this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8;\n    const columns = this.columns = params.get(\"Columns\") || 1;\n    this.pixBytes = colors * bits + 7 >> 3;\n    this.rowBytes = columns * colors * bits + 7 >> 3;\n    return this;\n  }\n  readBlockTiff() {\n    const rowBytes = this.rowBytes;\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n    const bits = this.bits;\n    const colors = this.colors;\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n    let inbuf = 0,\n      outbuf = 0;\n    let inbits = 0,\n      outbits = 0;\n    let pos = bufferLength;\n    let i;\n    if (bits === 1 && colors === 1) {\n      for (i = 0; i < rowBytes; ++i) {\n        let c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      const bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = sum >> 8 & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      const compArray = new Uint8Array(colors + 1);\n      const bitMask = (1 << bits) - 1;\n      let j = 0,\n        k = bufferLength;\n      const columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (let kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = inbuf << 8 | rawBytes[j++] & 0xff;\n            inbits += 8;\n          }\n          compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n          inbits -= bits;\n          outbuf = outbuf << bits | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = outbuf >> outbits - 8 & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n      }\n    }\n    this.bufferLength += rowBytes;\n  }\n  readBlockPng() {\n    const rowBytes = this.rowBytes;\n    const pixBytes = this.pixBytes;\n    const predictor = this.str.getByte();\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n    let i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          const upLeft = prevRow[i - pixBytes];\n          const left = buffer[j - pixBytes];\n          const p = left + up - upLeft;\n          let pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          let pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          let pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  }\n}\n\n;// ./src/core/run_length_stream.js\n\nclass RunLengthStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n  }\n  readBlock() {\n    const repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n    let buffer;\n    let bufferLength = this.bufferLength;\n    let n = repeatHeader[0];\n    if (n < 128) {\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        const source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      const b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (let i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  }\n}\n\n;// ./src/core/parser.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nfunction getInlineImageCacheKey(bytes) {\n  const strBuf = [],\n    ii = bytes.length;\n  let i = 0;\n  while (i < ii - 1) {\n    strBuf.push(bytes[i++] << 8 | bytes[i++]);\n  }\n  if (i < ii) {\n    strBuf.push(bytes[i]);\n  }\n  return ii + \"_\" + String.fromCharCode.apply(null, strBuf);\n}\nclass Parser {\n  constructor({\n    lexer,\n    xref,\n    allowStreams = false,\n    recoveryMode = false\n  }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n    this.imageCache = Object.create(null);\n    this._imageId = 0;\n    this.refill();\n  }\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      return false;\n    }\n  }\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\":\n          return this.makeInlineImage(cipherTransform);\n        case \"[\":\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (this.buf1 === EOF) {\n            if (this.recoveryMode) {\n              return array;\n            }\n            throw new ParserEOFException(\"End of file inside array.\");\n          }\n          this.shift();\n          return array;\n        case \"<<\":\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n            if (!(this.buf1 instanceof Name)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n            const key = this.buf1.name;\n            this.shift();\n            if (this.buf1 === EOF) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (this.buf1 === EOF) {\n            if (this.recoveryMode) {\n              return dict;\n            }\n            throw new ParserEOFException(\"End of file inside dictionary.\");\n          }\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          return buf1;\n      }\n    }\n    if (Number.isInteger(buf1)) {\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n    return buf1;\n  }\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd,\n      NUL = 0x0;\n    const {\n        knownCommands\n      } = this.lexer,\n      startPos = stream.pos,\n      n = 15;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          const followingBytes = stream.peekBytes(n);\n          const ii = followingBytes.length;\n          if (ii === 0) {\n            break;\n          }\n          for (let i = 0; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              state = 0;\n              break;\n            }\n          }\n          if (state !== 2) {\n            continue;\n          }\n          if (!knownCommands) {\n            warn(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n            continue;\n          }\n          const tmpLexer = new Lexer(new Stream(followingBytes.slice()), knownCommands);\n          tmpLexer._hexStringWarn = () => {};\n          let numArgs = 0;\n          while (true) {\n            const nextObj = tmpLexer.getObj();\n            if (nextObj === EOF) {\n              state = 0;\n              break;\n            }\n            if (nextObj instanceof Cmd) {\n              const knownCommand = knownCommands[nextObj.cmd];\n              if (!knownCommand) {\n                state = 0;\n                break;\n              } else if (knownCommand.variableArgs ? numArgs <= knownCommand.numArgs : numArgs === knownCommand.numArgs) {\n                break;\n              }\n              numArgs = 0;\n              continue;\n            }\n            numArgs++;\n          }\n          if (state === 2) {\n            break;\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n    if (ch === -1) {\n      warn(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos));\n      }\n    }\n    let endOffset = 4;\n    stream.skip(-endOffset);\n    ch = stream.peekByte();\n    stream.skip(endOffset);\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00:\n          break;\n        case 0xff:\n          stream.skip(-1);\n          break;\n        case 0xd9:\n          foundEOI = true;\n          break;\n        case 0xc0:\n        case 0xc1:\n        case 0xc2:\n        case 0xc3:\n        case 0xc5:\n        case 0xc6:\n        case 0xc7:\n        case 0xc9:\n        case 0xca:\n        case 0xcb:\n        case 0xcd:\n        case 0xce:\n        case 0xcf:\n        case 0xc4:\n        case 0xcc:\n        case 0xda:\n        case 0xdb:\n        case 0xdc:\n        case 0xdd:\n        case 0xde:\n        case 0xdf:\n        case 0xe0:\n        case 0xe1:\n        case 0xe2:\n        case 0xe3:\n        case 0xe4:\n        case 0xe5:\n        case 0xe6:\n        case 0xe7:\n        case 0xe8:\n        case 0xe9:\n        case 0xea:\n        case 0xeb:\n        case 0xec:\n        case 0xed:\n        case 0xee:\n        case 0xef:\n        case 0xfe:\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            stream.skip(markerLength - 2);\n          } else {\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n      stream.skip(-length);\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n        ch = stream.peekByte();\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n      stream.skip(-length);\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n      stream.skip(-length);\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n    const dictMap = Object.create(null);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n      if (!(this.buf1 instanceof Name)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (this.buf1 === EOF) {\n        break;\n      }\n      dictMap[key] = this.getObj(cipherTransform);\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n    const filter = this.xref.fetchIfRef(dictMap.F || dictMap.Filter);\n    let filterName;\n    if (filter instanceof Name) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (filterZero instanceof Name) {\n        filterName = filterZero.name;\n      }\n    }\n    const startPos = stream.pos;\n    let length;\n    switch (filterName) {\n      case \"DCT\":\n      case \"DCTDecode\":\n        length = this.findDCTDecodeInlineStreamEnd(stream);\n        break;\n      case \"A85\":\n      case \"ASCII85Decode\":\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\n        break;\n      case \"AHx\":\n      case \"ASCIIHexDecode\":\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n        break;\n      default:\n        length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) {\n      const initialStreamPos = stream.pos;\n      stream.pos = lexer.beginInlineImagePos;\n      cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\n      stream.pos = initialStreamPos;\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n    const dict = new Dict(this.xref);\n    for (const key in dictMap) {\n      dict.set(key, dictMap[key]);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_img_${++this._imageId}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n    return imageStream;\n  }\n  #findStreamLength(startPos) {\n    const {\n      stream\n    } = this.lexer;\n    stream.pos = startPos;\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = \"endstream\".length;\n    const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]);\n    const endLength = END_SIGNATURE.length;\n    const PARTIAL_SIGNATURE = [new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61])];\n    const normalLength = signatureLength - endLength;\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < endLength && scanBytes[pos + j] === END_SIGNATURE[j]) {\n          j++;\n        }\n        if (j >= endLength) {\n          let found = false;\n          for (const part of PARTIAL_SIGNATURE) {\n            const partLen = part.length;\n            let k = 0;\n            while (k < partLen && scanBytes[pos + j + k] === part[k]) {\n              k++;\n            }\n            if (k >= normalLength) {\n              found = true;\n              break;\n            }\n            if (k >= partLen) {\n              const lastByte = scanBytes[pos + j + k];\n              if (isWhiteSpace(lastByte)) {\n                info(`Found \"${bytesToString([...END_SIGNATURE, ...part])}\" when ` + \"searching for endstream command.\");\n                found = true;\n              }\n              break;\n            }\n          }\n          if (found) {\n            stream.pos += pos;\n            return stream.pos - startPos;\n          }\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length && length.toString()}\" in stream.`);\n      length = 0;\n    }\n    stream.pos = startPos + length;\n    lexer.nextChar();\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift();\n    } else {\n      length = this.#findStreamLength(startPos);\n      if (length < 0) {\n        throw new FormatError(\"Missing endstream command.\");\n      }\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift();\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n  filter(stream, dict, length) {\n    let filter = dict.get(\"F\", \"Filter\");\n    let params = dict.get(\"DP\", \"DecodeParms\");\n    if (filter instanceof Name) {\n      if (Array.isArray(params)) {\n        warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!(filter instanceof Name)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n  makeFilter(stream, name, maybeLength, params) {\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n    try {\n      switch (name) {\n        case \"Fl\":\n        case \"FlateDecode\":\n          if (params) {\n            return new PredictorStream(new FlateStream(stream, maybeLength), maybeLength, params);\n          }\n          return new FlateStream(stream, maybeLength);\n        case \"LZW\":\n        case \"LZWDecode\":\n          let earlyChange = 1;\n          if (params) {\n            if (params.has(\"EarlyChange\")) {\n              earlyChange = params.get(\"EarlyChange\");\n            }\n            return new PredictorStream(new LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n          }\n          return new LZWStream(stream, maybeLength, earlyChange);\n        case \"DCT\":\n        case \"DCTDecode\":\n          return new JpegStream(stream, maybeLength, params);\n        case \"JPX\":\n        case \"JPXDecode\":\n          return new JpxStream(stream, maybeLength, params);\n        case \"A85\":\n        case \"ASCII85Decode\":\n          return new Ascii85Stream(stream, maybeLength);\n        case \"AHx\":\n        case \"ASCIIHexDecode\":\n          return new AsciiHexStream(stream, maybeLength);\n        case \"CCF\":\n        case \"CCITTFaxDecode\":\n          return new CCITTFaxStream(stream, maybeLength, params);\n        case \"RL\":\n        case \"RunLengthDecode\":\n          return new RunLengthStream(stream, maybeLength);\n        case \"JBIG2Decode\":\n          return new Jbig2Stream(stream, maybeLength, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\nconst specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\nfunction toHexDigit(ch) {\n  if (ch >= 0x30 && ch <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n    this.strBuf = [];\n    this.knownCommands = knownCommands;\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n  nextChar() {\n    return this.currentChar = this.stream.getByte();\n  }\n  peekChar() {\n    return this.stream.peekByte();\n  }\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0;\n    let sign = 1;\n    if (ch === 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n      if (ch === 0x2d) {\n        ch = this.nextChar();\n      }\n    } else if (ch === 0x2b) {\n      ch = this.nextChar();\n    }\n    if (ch === 0x0a || ch === 0x0d) {\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < 0x30 || ch > 0x39) {\n      const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\n      if (isWhiteSpace(ch) || ch === -1) {\n        info(`Lexer.getNumber - \"${msg}\".`);\n        return 0;\n      }\n      throw new FormatError(msg);\n    }\n    let baseValue = ch - 0x30;\n    let powerValue = 0;\n    let powerValueSign = 1;\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= 0x30 && ch <= 0x39) {\n        const currentDigit = ch - 0x30;\n        if (eNotation) {\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          break;\n        }\n      } else if (ch === 0x2d) {\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === 0x45 || ch === 0x65) {\n        ch = this.peekChar();\n        if (ch === 0x2b || ch === 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar();\n        } else if (ch < 0x30 || ch > 0x39) {\n          break;\n        }\n        eNotation = true;\n      } else {\n        break;\n      }\n    }\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28:\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29:\n          if (--numParen === 0) {\n            this.nextChar();\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c:\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e:\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72:\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74:\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62:\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66:\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c:\n            case 0x28:\n            case 0x29:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30:\n            case 0x31:\n            case 0x32:\n            case 0x33:\n            case 0x34:\n            case 0x35:\n            case 0x36:\n            case 0x37:\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= 0x30 && ch <= 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= 0x30 && ch <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d:\n              if (this.peekChar() === 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a:\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + \"in hexadecimal number.\");\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode(x << 4 | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let firstDigit = -1,\n      digit = -1;\n    this._hexStringNumWarn = 0;\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        digit = toHexDigit(ch);\n        if (digit === -1) {\n          this._hexStringWarn(ch);\n        } else if (firstDigit === -1) {\n          firstDigit = digit;\n        } else {\n          strBuf.push(String.fromCharCode(firstDigit << 4 | digit));\n          firstDigit = -1;\n        }\n        ch = this.nextChar();\n      }\n    }\n    if (firstDigit !== -1) {\n      strBuf.push(String.fromCharCode(firstDigit << 4));\n    }\n    return strBuf.join(\"\");\n  }\n  getObj() {\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30:\n      case 0x31:\n      case 0x32:\n      case 0x33:\n      case 0x34:\n      case 0x35:\n      case 0x36:\n      case 0x37:\n      case 0x38:\n      case 0x39:\n      case 0x2b:\n      case 0x2d:\n      case 0x2e:\n        return this.getNumber();\n      case 0x28:\n        return this.getString();\n      case 0x2f:\n        return this.getName();\n      case 0x5b:\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d:\n        this.nextChar();\n        return Cmd.get(\"]\");\n      case 0x3c:\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      case 0x3e:\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b:\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d:\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29:\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n    let str = String.fromCharCode(ch);\n    if (ch < 0x20 || ch > 0x7f) {\n      const nextCh = this.peekChar();\n      if (nextCh >= 0x20 && nextCh <= 0x7f) {\n        this.nextChar();\n        return Cmd.get(str);\n      }\n    }\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands?.[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands?.[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n    if (str === \"BI\") {\n      this.beginInlineImagePos = this.stream.pos;\n    }\n    return Cmd.get(str);\n  }\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === 0x0d) {\n        ch = this.nextChar();\n        if (ch === 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(`The \"${name}\" parameter in the linearization ` + \"dictionary is invalid.\");\n    }\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n      if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && isCmd(obj3, \"obj\") && linDict instanceof Dict && typeof (obj = linDict.get(\"Linearized\")) === \"number\" && obj > 0)) {\n      return null;\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\") ? getInt(linDict, \"P\", true) : 0\n    };\n  }\n}\n\n;// ./src/core/cmap.js\n\n\n\n\n\n\n\nconst BUILT_IN_CMAPS = [\"Adobe-GB1-UCS2\", \"Adobe-CNS1-UCS2\", \"Adobe-Japan1-UCS2\", \"Adobe-Korea1-UCS2\", \"78-EUC-H\", \"78-EUC-V\", \"78-H\", \"78-RKSJ-H\", \"78-RKSJ-V\", \"78-V\", \"78ms-RKSJ-H\", \"78ms-RKSJ-V\", \"83pv-RKSJ-H\", \"90ms-RKSJ-H\", \"90ms-RKSJ-V\", \"90msp-RKSJ-H\", \"90msp-RKSJ-V\", \"90pv-RKSJ-H\", \"90pv-RKSJ-V\", \"Add-H\", \"Add-RKSJ-H\", \"Add-RKSJ-V\", \"Add-V\", \"Adobe-CNS1-0\", \"Adobe-CNS1-1\", \"Adobe-CNS1-2\", \"Adobe-CNS1-3\", \"Adobe-CNS1-4\", \"Adobe-CNS1-5\", \"Adobe-CNS1-6\", \"Adobe-GB1-0\", \"Adobe-GB1-1\", \"Adobe-GB1-2\", \"Adobe-GB1-3\", \"Adobe-GB1-4\", \"Adobe-GB1-5\", \"Adobe-Japan1-0\", \"Adobe-Japan1-1\", \"Adobe-Japan1-2\", \"Adobe-Japan1-3\", \"Adobe-Japan1-4\", \"Adobe-Japan1-5\", \"Adobe-Japan1-6\", \"Adobe-Korea1-0\", \"Adobe-Korea1-1\", \"Adobe-Korea1-2\", \"B5-H\", \"B5-V\", \"B5pc-H\", \"B5pc-V\", \"CNS-EUC-H\", \"CNS-EUC-V\", \"CNS1-H\", \"CNS1-V\", \"CNS2-H\", \"CNS2-V\", \"ETHK-B5-H\", \"ETHK-B5-V\", \"ETen-B5-H\", \"ETen-B5-V\", \"ETenms-B5-H\", \"ETenms-B5-V\", \"EUC-H\", \"EUC-V\", \"Ext-H\", \"Ext-RKSJ-H\", \"Ext-RKSJ-V\", \"Ext-V\", \"GB-EUC-H\", \"GB-EUC-V\", \"GB-H\", \"GB-V\", \"GBK-EUC-H\", \"GBK-EUC-V\", \"GBK2K-H\", \"GBK2K-V\", \"GBKp-EUC-H\", \"GBKp-EUC-V\", \"GBT-EUC-H\", \"GBT-EUC-V\", \"GBT-H\", \"GBT-V\", \"GBTpc-EUC-H\", \"GBTpc-EUC-V\", \"GBpc-EUC-H\", \"GBpc-EUC-V\", \"H\", \"HKdla-B5-H\", \"HKdla-B5-V\", \"HKdlb-B5-H\", \"HKdlb-B5-V\", \"HKgccs-B5-H\", \"HKgccs-B5-V\", \"HKm314-B5-H\", \"HKm314-B5-V\", \"HKm471-B5-H\", \"HKm471-B5-V\", \"HKscs-B5-H\", \"HKscs-B5-V\", \"Hankaku\", \"Hiragana\", \"KSC-EUC-H\", \"KSC-EUC-V\", \"KSC-H\", \"KSC-Johab-H\", \"KSC-Johab-V\", \"KSC-V\", \"KSCms-UHC-H\", \"KSCms-UHC-HW-H\", \"KSCms-UHC-HW-V\", \"KSCms-UHC-V\", \"KSCpc-EUC-H\", \"KSCpc-EUC-V\", \"Katakana\", \"NWP-H\", \"NWP-V\", \"RKSJ-H\", \"RKSJ-V\", \"Roman\", \"UniCNS-UCS2-H\", \"UniCNS-UCS2-V\", \"UniCNS-UTF16-H\", \"UniCNS-UTF16-V\", \"UniCNS-UTF32-H\", \"UniCNS-UTF32-V\", \"UniCNS-UTF8-H\", \"UniCNS-UTF8-V\", \"UniGB-UCS2-H\", \"UniGB-UCS2-V\", \"UniGB-UTF16-H\", \"UniGB-UTF16-V\", \"UniGB-UTF32-H\", \"UniGB-UTF32-V\", \"UniGB-UTF8-H\", \"UniGB-UTF8-V\", \"UniJIS-UCS2-H\", \"UniJIS-UCS2-HW-H\", \"UniJIS-UCS2-HW-V\", \"UniJIS-UCS2-V\", \"UniJIS-UTF16-H\", \"UniJIS-UTF16-V\", \"UniJIS-UTF32-H\", \"UniJIS-UTF32-V\", \"UniJIS-UTF8-H\", \"UniJIS-UTF8-V\", \"UniJIS2004-UTF16-H\", \"UniJIS2004-UTF16-V\", \"UniJIS2004-UTF32-H\", \"UniJIS2004-UTF32-V\", \"UniJIS2004-UTF8-H\", \"UniJIS2004-UTF8-V\", \"UniJISPro-UCS2-HW-V\", \"UniJISPro-UCS2-V\", \"UniJISPro-UTF8-V\", \"UniJISX0213-UTF32-H\", \"UniJISX0213-UTF32-V\", \"UniJISX02132004-UTF32-H\", \"UniJISX02132004-UTF32-V\", \"UniKS-UCS2-H\", \"UniKS-UCS2-V\", \"UniKS-UTF16-H\", \"UniKS-UTF16-V\", \"UniKS-UTF32-H\", \"UniKS-UTF32-V\", \"UniKS-UTF8-H\", \"UniKS-UTF8-V\", \"V\", \"WP-Symbol\"];\nconst MAX_MAP_RANGE = 2 ** 24 - 1;\nclass CMap {\n  constructor(builtInCMap = false) {\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n      if (nextCharCode > 0xff) {\n        dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + \"\\x00\";\n        continue;\n      }\n      dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n    }\n  }\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n  lookup(code) {\n    return this._map[code];\n  }\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n  forEach(callback) {\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n  charCodeOf(value) {\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n  getMap() {\n    return this._map;\n  }\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk;) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n  getCharCodeLength(charCode) {\n    const codespaceRanges = this.codespaceRanges;\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk;) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (charCode >= low && charCode <= high) {\n          return n + 1;\n        }\n      }\n    }\n    return 1;\n  }\n  get length() {\n    return this._map.length;\n  }\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n  getMap() {\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n  get length() {\n    return 0x10000;\n  }\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\nfunction strToInt(str) {\n  let a = 0;\n  for (let i = 0; i < str.length; i++) {\n    a = a << 8 | str.charCodeAt(i);\n  }\n  return a >>> 0;\n}\nfunction expectString(obj) {\n  if (typeof obj !== \"string\") {\n    throw new FormatError(\"Malformed CMap: expected string.\");\n  }\n}\nfunction expectInt(obj) {\n  if (!Number.isInteger(obj)) {\n    throw new FormatError(\"Malformed CMap: expected int.\");\n  }\n}\nfunction parseBfChar(cMap, lexer) {\n  while (true) {\n    let obj = lexer.getObj();\n    if (obj === EOF) {\n      break;\n    }\n    if (isCmd(obj, \"endbfchar\")) {\n      return;\n    }\n    expectString(obj);\n    const src = strToInt(obj);\n    obj = lexer.getObj();\n    expectString(obj);\n    const dst = obj;\n    cMap.mapOne(src, dst);\n  }\n}\nfunction parseBfRange(cMap, lexer) {\n  while (true) {\n    let obj = lexer.getObj();\n    if (obj === EOF) {\n      break;\n    }\n    if (isCmd(obj, \"endbfrange\")) {\n      return;\n    }\n    expectString(obj);\n    const low = strToInt(obj);\n    obj = lexer.getObj();\n    expectString(obj);\n    const high = strToInt(obj);\n    obj = lexer.getObj();\n    if (Number.isInteger(obj) || typeof obj === \"string\") {\n      const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n      cMap.mapBfRange(low, high, dstLow);\n    } else if (isCmd(obj, \"[\")) {\n      obj = lexer.getObj();\n      const array = [];\n      while (!isCmd(obj, \"]\") && obj !== EOF) {\n        array.push(obj);\n        obj = lexer.getObj();\n      }\n      cMap.mapBfRangeToArray(low, high, array);\n    } else {\n      break;\n    }\n  }\n  throw new FormatError(\"Invalid bf range.\");\n}\nfunction parseCidChar(cMap, lexer) {\n  while (true) {\n    let obj = lexer.getObj();\n    if (obj === EOF) {\n      break;\n    }\n    if (isCmd(obj, \"endcidchar\")) {\n      return;\n    }\n    expectString(obj);\n    const src = strToInt(obj);\n    obj = lexer.getObj();\n    expectInt(obj);\n    const dst = obj;\n    cMap.mapOne(src, dst);\n  }\n}\nfunction parseCidRange(cMap, lexer) {\n  while (true) {\n    let obj = lexer.getObj();\n    if (obj === EOF) {\n      break;\n    }\n    if (isCmd(obj, \"endcidrange\")) {\n      return;\n    }\n    expectString(obj);\n    const low = strToInt(obj);\n    obj = lexer.getObj();\n    expectString(obj);\n    const high = strToInt(obj);\n    obj = lexer.getObj();\n    expectInt(obj);\n    const dstLow = obj;\n    cMap.mapCidRange(low, high, dstLow);\n  }\n}\nfunction parseCodespaceRange(cMap, lexer) {\n  while (true) {\n    let obj = lexer.getObj();\n    if (obj === EOF) {\n      break;\n    }\n    if (isCmd(obj, \"endcodespacerange\")) {\n      return;\n    }\n    if (typeof obj !== \"string\") {\n      break;\n    }\n    const low = strToInt(obj);\n    obj = lexer.getObj();\n    if (typeof obj !== \"string\") {\n      break;\n    }\n    const high = strToInt(obj);\n    cMap.addCodespaceRange(obj.length, low, high);\n  }\n  throw new FormatError(\"Invalid codespace range.\");\n}\nfunction parseWMode(cMap, lexer) {\n  const obj = lexer.getObj();\n  if (Number.isInteger(obj)) {\n    cMap.vertical = !!obj;\n  }\n}\nfunction parseCMapName(cMap, lexer) {\n  const obj = lexer.getObj();\n  if (obj instanceof Name) {\n    cMap.name = obj.name;\n  }\n}\nasync function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n  let previous, embeddedUseCMap;\n  objLoop: while (true) {\n    try {\n      const obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      } else if (obj instanceof Name) {\n        if (obj.name === \"WMode\") {\n          parseWMode(cMap, lexer);\n        } else if (obj.name === \"CMapName\") {\n          parseCMapName(cMap, lexer);\n        }\n        previous = obj;\n      } else if (obj instanceof Cmd) {\n        switch (obj.cmd) {\n          case \"endcmap\":\n            break objLoop;\n          case \"usecmap\":\n            if (previous instanceof Name) {\n              embeddedUseCMap = previous.name;\n            }\n            break;\n          case \"begincodespacerange\":\n            parseCodespaceRange(cMap, lexer);\n            break;\n          case \"beginbfchar\":\n            parseBfChar(cMap, lexer);\n            break;\n          case \"begincidchar\":\n            parseCidChar(cMap, lexer);\n            break;\n          case \"beginbfrange\":\n            parseBfRange(cMap, lexer);\n            break;\n          case \"begincidrange\":\n            parseCidRange(cMap, lexer);\n            break;\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Invalid cMap data: \" + ex);\n      continue;\n    }\n  }\n  if (!useCMap && embeddedUseCMap) {\n    useCMap = embeddedUseCMap;\n  }\n  if (useCMap) {\n    return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n  }\n  return cMap;\n}\nasync function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n  cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n  if (cMap.numCodespaceRanges === 0) {\n    const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n    for (let i = 0; i < useCodespaceRanges.length; i++) {\n      cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n    }\n    cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n  }\n  cMap.useCMap.forEach(function (key, value) {\n    if (!cMap.contains(key)) {\n      cMap.mapOne(key, value);\n    }\n  });\n  return cMap;\n}\nasync function createBuiltInCMap(name, fetchBuiltInCMap) {\n  if (name === \"Identity-H\") {\n    return new IdentityCMap(false, 2);\n  } else if (name === \"Identity-V\") {\n    return new IdentityCMap(true, 2);\n  }\n  if (!BUILT_IN_CMAPS.includes(name)) {\n    throw new Error(\"Unknown CMap name: \" + name);\n  }\n  if (!fetchBuiltInCMap) {\n    throw new Error(\"Built-in CMap parameters are not provided.\");\n  }\n  const {\n    cMapData,\n    isCompressed\n  } = await fetchBuiltInCMap(name);\n  const cMap = new CMap(true);\n  if (isCompressed) {\n    return new BinaryCMapReader().process(cMapData, cMap, useCMap => extendCMap(cMap, fetchBuiltInCMap, useCMap));\n  }\n  const lexer = new Lexer(new Stream(cMapData));\n  return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n}\nclass CMapFactory {\n  static async create({\n    encoding,\n    fetchBuiltInCMap,\n    useCMap\n  }) {\n    if (encoding instanceof Name) {\n      return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n    } else if (encoding instanceof BaseStream) {\n      const parsedCMap = await parseCMap(new CMap(), new Lexer(encoding), fetchBuiltInCMap, useCMap);\n      if (parsedCMap.isIdentityCMap) {\n        return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n      }\n      return parsedCMap;\n    }\n    throw new Error(\"Encoding required.\");\n  }\n}\n\n;// ./src/core/charsets.js\nconst ISOAdobeCharset = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\nconst ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nconst ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\n\n;// ./src/core/encodings.js\nconst ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\", \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nconst MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\", \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\", \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\", \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\", \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\", \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\", \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\", \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\", \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\", \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\", \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\", \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\", \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\", \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\", \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\", \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\", \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\", \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\nconst MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\"];\nconst StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\", \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\", \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\", \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\", \"\", \"\", \"\"];\nconst WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\", \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\", \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\", \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\", \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\", \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\", \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\", \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\", \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\", \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\", \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\", \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\", \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\", \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\", \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\", \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\", \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\", \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\", \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\", \"ydieresis\"];\nconst SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\", \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\", \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\", \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\", \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\", \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\", \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\", \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\", \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\", \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\", \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\", \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\", \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\", \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\", \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\", \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\", \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\", \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\", \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\", \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\", \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\", \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\", \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\", \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\", \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\", \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\", \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\", \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\", \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\", \"bracerightbt\", \"\"];\nconst ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\", \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\", \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\", \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\", \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\", \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\", \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\", \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\", \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\", \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\", \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\", \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\", \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\", \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\", \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\", \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\", \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\", \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\", \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\", \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\", \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\n;// ./src/core/cff_parser.js\n\n\n\nconst MAX_SUBR_NESTING = 10;\nconst CFFStandardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nconst NUM_STANDARD_CFF_STRINGS = 391;\nconst CharstringValidationData = [null, {\n  id: \"hstem\",\n  min: 2,\n  stackClearing: true,\n  stem: true\n}, null, {\n  id: \"vstem\",\n  min: 2,\n  stackClearing: true,\n  stem: true\n}, {\n  id: \"vmoveto\",\n  min: 1,\n  stackClearing: true\n}, {\n  id: \"rlineto\",\n  min: 2,\n  resetStack: true\n}, {\n  id: \"hlineto\",\n  min: 1,\n  resetStack: true\n}, {\n  id: \"vlineto\",\n  min: 1,\n  resetStack: true\n}, {\n  id: \"rrcurveto\",\n  min: 6,\n  resetStack: true\n}, null, {\n  id: \"callsubr\",\n  min: 1,\n  undefStack: true\n}, {\n  id: \"return\",\n  min: 0,\n  undefStack: true\n}, null, null, {\n  id: \"endchar\",\n  min: 0,\n  stackClearing: true\n}, null, null, null, {\n  id: \"hstemhm\",\n  min: 2,\n  stackClearing: true,\n  stem: true\n}, {\n  id: \"hintmask\",\n  min: 0,\n  stackClearing: true\n}, {\n  id: \"cntrmask\",\n  min: 0,\n  stackClearing: true\n}, {\n  id: \"rmoveto\",\n  min: 2,\n  stackClearing: true\n}, {\n  id: \"hmoveto\",\n  min: 1,\n  stackClearing: true\n}, {\n  id: \"vstemhm\",\n  min: 2,\n  stackClearing: true,\n  stem: true\n}, {\n  id: \"rcurveline\",\n  min: 8,\n  resetStack: true\n}, {\n  id: \"rlinecurve\",\n  min: 8,\n  resetStack: true\n}, {\n  id: \"vvcurveto\",\n  min: 4,\n  resetStack: true\n}, {\n  id: \"hhcurveto\",\n  min: 4,\n  resetStack: true\n}, null, {\n  id: \"callgsubr\",\n  min: 1,\n  undefStack: true\n}, {\n  id: \"vhcurveto\",\n  min: 4,\n  resetStack: true\n}, {\n  id: \"hvcurveto\",\n  min: 4,\n  resetStack: true\n}];\nconst CharstringValidationData12 = [null, null, null, {\n  id: \"and\",\n  min: 2,\n  stackDelta: -1\n}, {\n  id: \"or\",\n  min: 2,\n  stackDelta: -1\n}, {\n  id: \"not\",\n  min: 1,\n  stackDelta: 0\n}, null, null, null, {\n  id: \"abs\",\n  min: 1,\n  stackDelta: 0\n}, {\n  id: \"add\",\n  min: 2,\n  stackDelta: -1,\n  stackFn(stack, index) {\n    stack[index - 2] = stack[index - 2] + stack[index - 1];\n  }\n}, {\n  id: \"sub\",\n  min: 2,\n  stackDelta: -1,\n  stackFn(stack, index) {\n    stack[index - 2] = stack[index - 2] - stack[index - 1];\n  }\n}, {\n  id: \"div\",\n  min: 2,\n  stackDelta: -1,\n  stackFn(stack, index) {\n    stack[index - 2] = stack[index - 2] / stack[index - 1];\n  }\n}, null, {\n  id: \"neg\",\n  min: 1,\n  stackDelta: 0,\n  stackFn(stack, index) {\n    stack[index - 1] = -stack[index - 1];\n  }\n}, {\n  id: \"eq\",\n  min: 2,\n  stackDelta: -1\n}, null, null, {\n  id: \"drop\",\n  min: 1,\n  stackDelta: -1\n}, null, {\n  id: \"put\",\n  min: 2,\n  stackDelta: -2\n}, {\n  id: \"get\",\n  min: 1,\n  stackDelta: 0\n}, {\n  id: \"ifelse\",\n  min: 4,\n  stackDelta: -3\n}, {\n  id: \"random\",\n  min: 0,\n  stackDelta: 1\n}, {\n  id: \"mul\",\n  min: 2,\n  stackDelta: -1,\n  stackFn(stack, index) {\n    stack[index - 2] = stack[index - 2] * stack[index - 1];\n  }\n}, null, {\n  id: \"sqrt\",\n  min: 1,\n  stackDelta: 0\n}, {\n  id: \"dup\",\n  min: 1,\n  stackDelta: 1\n}, {\n  id: \"exch\",\n  min: 2,\n  stackDelta: 0\n}, {\n  id: \"index\",\n  min: 2,\n  stackDelta: 0\n}, {\n  id: \"roll\",\n  min: 3,\n  stackDelta: -2\n}, null, null, null, {\n  id: \"hflex\",\n  min: 7,\n  resetStack: true\n}, {\n  id: \"flex\",\n  min: 13,\n  resetStack: true\n}, {\n  id: \"hflex1\",\n  min: 9,\n  resetStack: true\n}, {\n  id: \"flex1\",\n  min: 11,\n  resetStack: true\n}];\nclass CFFParser {\n  constructor(file, properties, seacAnalysisEnabled) {\n    this.bytes = file.getBytes();\n    this.properties = properties;\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n  }\n  parse() {\n    const properties = this.properties;\n    const cff = new CFF();\n    this.cff = cff;\n    const header = this.parseHeader();\n    const nameIndex = this.parseIndex(header.endPos);\n    const topDictIndex = this.parseIndex(nameIndex.endPos);\n    const stringIndex = this.parseIndex(topDictIndex.endPos);\n    const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n    const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n    const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n    cff.header = header.obj;\n    cff.names = this.parseNameIndex(nameIndex.obj);\n    cff.strings = this.parseStringIndex(stringIndex.obj);\n    cff.topDict = topDict;\n    cff.globalSubrIndex = globalSubrIndex.obj;\n    this.parsePrivateDict(cff.topDict);\n    cff.isCIDFont = topDict.hasName(\"ROS\");\n    const charStringOffset = topDict.getByName(\"CharStrings\");\n    const charStringIndex = this.parseIndex(charStringOffset).obj;\n    const fontMatrix = topDict.getByName(\"FontMatrix\");\n    if (fontMatrix) {\n      properties.fontMatrix = fontMatrix;\n    }\n    const fontBBox = topDict.getByName(\"FontBBox\");\n    if (fontBBox) {\n      properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n      properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n      properties.ascentScaled = true;\n    }\n    let charset, encoding;\n    if (cff.isCIDFont) {\n      const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n      for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n        const dictRaw = fdArrayIndex.get(i);\n        const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n        this.parsePrivateDict(fontDict);\n        cff.fdArray.push(fontDict);\n      }\n      encoding = null;\n      charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n      cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n    } else {\n      charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n      encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n    }\n    cff.charset = charset;\n    cff.encoding = encoding;\n    const charStringsAndSeacs = this.parseCharStrings({\n      charStrings: charStringIndex,\n      localSubrIndex: topDict.privateDict.subrsIndex,\n      globalSubrIndex: globalSubrIndex.obj,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray,\n      privateDict: topDict.privateDict\n    });\n    cff.charStrings = charStringsAndSeacs.charStrings;\n    cff.seacs = charStringsAndSeacs.seacs;\n    cff.widths = charStringsAndSeacs.widths;\n    return cff;\n  }\n  parseHeader() {\n    let bytes = this.bytes;\n    const bytesLength = bytes.length;\n    let offset = 0;\n    while (offset < bytesLength && bytes[offset] !== 1) {\n      ++offset;\n    }\n    if (offset >= bytesLength) {\n      throw new FormatError(\"Invalid CFF header\");\n    }\n    if (offset !== 0) {\n      info(\"cff data is shifted\");\n      bytes = bytes.subarray(offset);\n      this.bytes = bytes;\n    }\n    const major = bytes[0];\n    const minor = bytes[1];\n    const hdrSize = bytes[2];\n    const offSize = bytes[3];\n    const header = new CFFHeader(major, minor, hdrSize, offSize);\n    return {\n      obj: header,\n      endPos: hdrSize\n    };\n  }\n  parseDict(dict) {\n    let pos = 0;\n    function parseOperand() {\n      let value = dict[pos++];\n      if (value === 30) {\n        return parseFloatOperand();\n      } else if (value === 28) {\n        value = dict[pos++];\n        value = (value << 24 | dict[pos++] << 16) >> 16;\n        return value;\n      } else if (value === 29) {\n        value = dict[pos++];\n        value = value << 8 | dict[pos++];\n        value = value << 8 | dict[pos++];\n        value = value << 8 | dict[pos++];\n        return value;\n      } else if (value >= 32 && value <= 246) {\n        return value - 139;\n      } else if (value >= 247 && value <= 250) {\n        return (value - 247) * 256 + dict[pos++] + 108;\n      } else if (value >= 251 && value <= 254) {\n        return -((value - 251) * 256) - dict[pos++] - 108;\n      }\n      warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n      return NaN;\n    }\n    function parseFloatOperand() {\n      let str = \"\";\n      const eof = 15;\n      const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n      const length = dict.length;\n      while (pos < length) {\n        const b = dict[pos++];\n        const b1 = b >> 4;\n        const b2 = b & 15;\n        if (b1 === eof) {\n          break;\n        }\n        str += lookup[b1];\n        if (b2 === eof) {\n          break;\n        }\n        str += lookup[b2];\n      }\n      return parseFloat(str);\n    }\n    let operands = [];\n    const entries = [];\n    pos = 0;\n    const end = dict.length;\n    while (pos < end) {\n      let b = dict[pos];\n      if (b <= 21) {\n        if (b === 12) {\n          b = b << 8 | dict[++pos];\n        }\n        entries.push([b, operands]);\n        operands = [];\n        ++pos;\n      } else {\n        operands.push(parseOperand());\n      }\n    }\n    return entries;\n  }\n  parseIndex(pos) {\n    const cffIndex = new CFFIndex();\n    const bytes = this.bytes;\n    const count = bytes[pos++] << 8 | bytes[pos++];\n    const offsets = [];\n    let end = pos;\n    let i, ii;\n    if (count !== 0) {\n      const offsetSize = bytes[pos++];\n      const startPos = pos + (count + 1) * offsetSize - 1;\n      for (i = 0, ii = count + 1; i < ii; ++i) {\n        let offset = 0;\n        for (let j = 0; j < offsetSize; ++j) {\n          offset <<= 8;\n          offset += bytes[pos++];\n        }\n        offsets.push(startPos + offset);\n      }\n      end = offsets[count];\n    }\n    for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n      const offsetStart = offsets[i];\n      const offsetEnd = offsets[i + 1];\n      cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n    }\n    return {\n      obj: cffIndex,\n      endPos: end\n    };\n  }\n  parseNameIndex(index) {\n    const names = [];\n    for (let i = 0, ii = index.count; i < ii; ++i) {\n      const name = index.get(i);\n      names.push(bytesToString(name));\n    }\n    return names;\n  }\n  parseStringIndex(index) {\n    const strings = new CFFStrings();\n    for (let i = 0, ii = index.count; i < ii; ++i) {\n      const data = index.get(i);\n      strings.add(bytesToString(data));\n    }\n    return strings;\n  }\n  createDict(Type, dict, strings) {\n    const cffDict = new Type(strings);\n    for (const [key, value] of dict) {\n      cffDict.setByKey(key, value);\n    }\n    return cffDict;\n  }\n  parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n    if (!data || state.callDepth > MAX_SUBR_NESTING) {\n      return false;\n    }\n    let stackSize = state.stackSize;\n    const stack = state.stack;\n    let length = data.length;\n    for (let j = 0; j < length;) {\n      const value = data[j++];\n      let validationCommand = null;\n      if (value === 12) {\n        const q = data[j++];\n        if (q === 0) {\n          data[j - 2] = 139;\n          data[j - 1] = 22;\n          stackSize = 0;\n        } else {\n          validationCommand = CharstringValidationData12[q];\n        }\n      } else if (value === 28) {\n        stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;\n        j += 2;\n        stackSize++;\n      } else if (value === 14) {\n        if (stackSize >= 4) {\n          stackSize -= 4;\n          if (this.seacAnalysisEnabled) {\n            state.seac = stack.slice(stackSize, stackSize + 4);\n            return false;\n          }\n        }\n        validationCommand = CharstringValidationData[value];\n      } else if (value >= 32 && value <= 246) {\n        stack[stackSize] = value - 139;\n        stackSize++;\n      } else if (value >= 247 && value <= 254) {\n        stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n        j++;\n        stackSize++;\n      } else if (value === 255) {\n        stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;\n        j += 4;\n        stackSize++;\n      } else if (value === 19 || value === 20) {\n        state.hints += stackSize >> 1;\n        if (state.hints === 0) {\n          data.copyWithin(j - 1, j, -1);\n          j -= 1;\n          length -= 1;\n          continue;\n        }\n        j += state.hints + 7 >> 3;\n        stackSize %= 2;\n        validationCommand = CharstringValidationData[value];\n      } else if (value === 10 || value === 29) {\n        const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\n        if (!subrsIndex) {\n          validationCommand = CharstringValidationData[value];\n          warn(\"Missing subrsIndex for \" + validationCommand.id);\n          return false;\n        }\n        let bias = 32768;\n        if (subrsIndex.count < 1240) {\n          bias = 107;\n        } else if (subrsIndex.count < 33900) {\n          bias = 1131;\n        }\n        const subrNumber = stack[--stackSize] + bias;\n        if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n          validationCommand = CharstringValidationData[value];\n          warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n          return false;\n        }\n        state.stackSize = stackSize;\n        state.callDepth++;\n        const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n        if (!valid) {\n          return false;\n        }\n        state.callDepth--;\n        stackSize = state.stackSize;\n        continue;\n      } else if (value === 11) {\n        state.stackSize = stackSize;\n        return true;\n      } else if (value === 0 && j === data.length) {\n        data[j - 1] = 14;\n        validationCommand = CharstringValidationData[14];\n      } else if (value === 9) {\n        data.copyWithin(j - 1, j, -1);\n        j -= 1;\n        length -= 1;\n        continue;\n      } else {\n        validationCommand = CharstringValidationData[value];\n      }\n      if (validationCommand) {\n        if (validationCommand.stem) {\n          state.hints += stackSize >> 1;\n          if (value === 3 || value === 23) {\n            state.hasVStems = true;\n          } else if (state.hasVStems && (value === 1 || value === 18)) {\n            warn(\"CFF stem hints are in wrong order\");\n            data[j - 1] = value === 1 ? 3 : 23;\n          }\n        }\n        if (\"min\" in validationCommand) {\n          if (!state.undefStack && stackSize < validationCommand.min) {\n            warn(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n            if (stackSize === 0) {\n              data[j - 1] = 14;\n              return true;\n            }\n            return false;\n          }\n        }\n        if (state.firstStackClearing && validationCommand.stackClearing) {\n          state.firstStackClearing = false;\n          stackSize -= validationCommand.min;\n          if (stackSize >= 2 && validationCommand.stem) {\n            stackSize %= 2;\n          } else if (stackSize > 1) {\n            warn(\"Found too many parameters for stack-clearing command\");\n          }\n          if (stackSize > 0) {\n            state.width = stack[stackSize - 1];\n          }\n        }\n        if (\"stackDelta\" in validationCommand) {\n          if (\"stackFn\" in validationCommand) {\n            validationCommand.stackFn(stack, stackSize);\n          }\n          stackSize += validationCommand.stackDelta;\n        } else if (validationCommand.stackClearing) {\n          stackSize = 0;\n        } else if (validationCommand.resetStack) {\n          stackSize = 0;\n          state.undefStack = false;\n        } else if (validationCommand.undefStack) {\n          stackSize = 0;\n          state.undefStack = true;\n          state.firstStackClearing = false;\n        }\n      }\n    }\n    if (length < data.length) {\n      data.fill(14, length);\n    }\n    state.stackSize = stackSize;\n    return true;\n  }\n  parseCharStrings({\n    charStrings,\n    localSubrIndex,\n    globalSubrIndex,\n    fdSelect,\n    fdArray,\n    privateDict\n  }) {\n    const seacs = [];\n    const widths = [];\n    const count = charStrings.count;\n    for (let i = 0; i < count; i++) {\n      const charstring = charStrings.get(i);\n      const state = {\n        callDepth: 0,\n        stackSize: 0,\n        stack: [],\n        undefStack: true,\n        hints: 0,\n        firstStackClearing: true,\n        seac: null,\n        width: null,\n        hasVStems: false\n      };\n      let valid = true;\n      let localSubrToUse = null;\n      let privateDictToUse = privateDict;\n      if (fdSelect && fdArray.length) {\n        const fdIndex = fdSelect.getFDIndex(i);\n        if (fdIndex === -1) {\n          warn(\"Glyph index is not in fd select.\");\n          valid = false;\n        }\n        if (fdIndex >= fdArray.length) {\n          warn(\"Invalid fd index for glyph index.\");\n          valid = false;\n        }\n        if (valid) {\n          privateDictToUse = fdArray[fdIndex].privateDict;\n          localSubrToUse = privateDictToUse.subrsIndex;\n        }\n      } else if (localSubrIndex) {\n        localSubrToUse = localSubrIndex;\n      }\n      if (valid) {\n        valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n      }\n      if (state.width !== null) {\n        const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n        widths[i] = nominalWidth + state.width;\n      } else {\n        const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n        widths[i] = defaultWidth;\n      }\n      if (state.seac !== null) {\n        seacs[i] = state.seac;\n      }\n      if (!valid) {\n        charStrings.set(i, new Uint8Array([14]));\n      }\n    }\n    return {\n      charStrings,\n      seacs,\n      widths\n    };\n  }\n  emptyPrivateDictionary(parentDict) {\n    const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n    parentDict.setByKey(18, [0, 0]);\n    parentDict.privateDict = privateDict;\n  }\n  parsePrivateDict(parentDict) {\n    if (!parentDict.hasName(\"Private\")) {\n      this.emptyPrivateDictionary(parentDict);\n      return;\n    }\n    const privateOffset = parentDict.getByName(\"Private\");\n    if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n      parentDict.removeByName(\"Private\");\n      return;\n    }\n    const size = privateOffset[0];\n    const offset = privateOffset[1];\n    if (size === 0 || offset >= this.bytes.length) {\n      this.emptyPrivateDictionary(parentDict);\n      return;\n    }\n    const privateDictEnd = offset + size;\n    const dictData = this.bytes.subarray(offset, privateDictEnd);\n    const dict = this.parseDict(dictData);\n    const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n    parentDict.privateDict = privateDict;\n    if (privateDict.getByName(\"ExpansionFactor\") === 0) {\n      privateDict.setByName(\"ExpansionFactor\", 0.06);\n    }\n    if (!privateDict.getByName(\"Subrs\")) {\n      return;\n    }\n    const subrsOffset = privateDict.getByName(\"Subrs\");\n    const relativeOffset = offset + subrsOffset;\n    if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n      this.emptyPrivateDictionary(parentDict);\n      return;\n    }\n    const subrsIndex = this.parseIndex(relativeOffset);\n    privateDict.subrsIndex = subrsIndex.obj;\n  }\n  parseCharsets(pos, length, strings, cid) {\n    if (pos === 0) {\n      return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset);\n    } else if (pos === 1) {\n      return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset);\n    } else if (pos === 2) {\n      return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset);\n    }\n    const bytes = this.bytes;\n    const start = pos;\n    const format = bytes[pos++];\n    const charset = [cid ? 0 : \".notdef\"];\n    let id, count, i;\n    length -= 1;\n    switch (format) {\n      case 0:\n        for (i = 0; i < length; i++) {\n          id = bytes[pos++] << 8 | bytes[pos++];\n          charset.push(cid ? id : strings.get(id));\n        }\n        break;\n      case 1:\n        while (charset.length <= length) {\n          id = bytes[pos++] << 8 | bytes[pos++];\n          count = bytes[pos++];\n          for (i = 0; i <= count; i++) {\n            charset.push(cid ? id++ : strings.get(id++));\n          }\n        }\n        break;\n      case 2:\n        while (charset.length <= length) {\n          id = bytes[pos++] << 8 | bytes[pos++];\n          count = bytes[pos++] << 8 | bytes[pos++];\n          for (i = 0; i <= count; i++) {\n            charset.push(cid ? id++ : strings.get(id++));\n          }\n        }\n        break;\n      default:\n        throw new FormatError(\"Unknown charset format\");\n    }\n    const end = pos;\n    const raw = bytes.subarray(start, end);\n    return new CFFCharset(false, format, charset, raw);\n  }\n  parseEncoding(pos, properties, strings, charset) {\n    const encoding = Object.create(null);\n    const bytes = this.bytes;\n    let predefined = false;\n    let format, i, ii;\n    let raw = null;\n    function readSupplement() {\n      const supplementsCount = bytes[pos++];\n      for (i = 0; i < supplementsCount; i++) {\n        const code = bytes[pos++];\n        const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n        encoding[code] = charset.indexOf(strings.get(sid));\n      }\n    }\n    if (pos === 0 || pos === 1) {\n      predefined = true;\n      format = pos;\n      const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n      for (i = 0, ii = charset.length; i < ii; i++) {\n        const index = baseEncoding.indexOf(charset[i]);\n        if (index !== -1) {\n          encoding[index] = i;\n        }\n      }\n    } else {\n      const dataStart = pos;\n      format = bytes[pos++];\n      switch (format & 0x7f) {\n        case 0:\n          const glyphsCount = bytes[pos++];\n          for (i = 1; i <= glyphsCount; i++) {\n            encoding[bytes[pos++]] = i;\n          }\n          break;\n        case 1:\n          const rangesCount = bytes[pos++];\n          let gid = 1;\n          for (i = 0; i < rangesCount; i++) {\n            const start = bytes[pos++];\n            const left = bytes[pos++];\n            for (let j = start; j <= start + left; j++) {\n              encoding[j] = gid++;\n            }\n          }\n          break;\n        default:\n          throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n      }\n      const dataEnd = pos;\n      if (format & 0x80) {\n        bytes[dataStart] &= 0x7f;\n        readSupplement();\n      }\n      raw = bytes.subarray(dataStart, dataEnd);\n    }\n    format &= 0x7f;\n    return new CFFEncoding(predefined, format, encoding, raw);\n  }\n  parseFDSelect(pos, length) {\n    const bytes = this.bytes;\n    const format = bytes[pos++];\n    const fdSelect = [];\n    let i;\n    switch (format) {\n      case 0:\n        for (i = 0; i < length; ++i) {\n          const id = bytes[pos++];\n          fdSelect.push(id);\n        }\n        break;\n      case 3:\n        const rangesCount = bytes[pos++] << 8 | bytes[pos++];\n        for (i = 0; i < rangesCount; ++i) {\n          let first = bytes[pos++] << 8 | bytes[pos++];\n          if (i === 0 && first !== 0) {\n            warn(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n            first = 0;\n          }\n          const fdIndex = bytes[pos++];\n          const next = bytes[pos] << 8 | bytes[pos + 1];\n          for (let j = first; j < next; ++j) {\n            fdSelect.push(fdIndex);\n          }\n        }\n        pos += 2;\n        break;\n      default:\n        throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n    }\n    if (fdSelect.length !== length) {\n      throw new FormatError(\"parseFDSelect: Invalid font data.\");\n    }\n    return new CFFFDSelect(format, fdSelect);\n  }\n}\nclass CFF {\n  constructor() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n    this.isCIDFont = false;\n  }\n  duplicateFirstGlyph() {\n    if (this.charStrings.count >= 65535) {\n      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n      return;\n    }\n    const glyphZero = this.charStrings.get(0);\n    this.charStrings.add(glyphZero);\n    if (this.isCIDFont) {\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n    }\n  }\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.charStrings.count) {\n      return false;\n    }\n    const glyph = this.charStrings.get(id);\n    return glyph.length > 0;\n  }\n}\nclass CFFHeader {\n  constructor(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n}\nclass CFFStrings {\n  constructor() {\n    this.strings = [];\n  }\n  get(index) {\n    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n      return CFFStandardStrings[index];\n    }\n    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n    }\n    return CFFStandardStrings[0];\n  }\n  getSID(str) {\n    let index = CFFStandardStrings.indexOf(str);\n    if (index !== -1) {\n      return index;\n    }\n    index = this.strings.indexOf(str);\n    if (index !== -1) {\n      return index + NUM_STANDARD_CFF_STRINGS;\n    }\n    return -1;\n  }\n  add(value) {\n    this.strings.push(value);\n  }\n  get count() {\n    return this.strings.length;\n  }\n}\nclass CFFIndex {\n  constructor() {\n    this.objects = [];\n    this.length = 0;\n  }\n  add(data) {\n    this.length += data.length;\n    this.objects.push(data);\n  }\n  set(index, data) {\n    this.length += data.length - this.objects[index].length;\n    this.objects[index] = data;\n  }\n  get(index) {\n    return this.objects[index];\n  }\n  get count() {\n    return this.objects.length;\n  }\n}\nclass CFFDict {\n  constructor(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n  setByKey(key, value) {\n    if (!(key in this.keyToNameMap)) {\n      return false;\n    }\n    if (value.length === 0) {\n      return true;\n    }\n    for (const val of value) {\n      if (isNaN(val)) {\n        warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n        return true;\n      }\n    }\n    const type = this.types[key];\n    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n      value = value[0];\n    }\n    this.values[key] = value;\n    return true;\n  }\n  setByName(name, value) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n    }\n    this.values[this.nameToKeyMap[name]] = value;\n  }\n  hasName(name) {\n    return this.nameToKeyMap[name] in this.values;\n  }\n  getByName(name) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name ${name}\"`);\n    }\n    const key = this.nameToKeyMap[name];\n    if (!(key in this.values)) {\n      return this.defaults[key];\n    }\n    return this.values[key];\n  }\n  removeByName(name) {\n    delete this.values[this.nameToKeyMap[name]];\n  }\n  static createTables(layout) {\n    const tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: []\n    };\n    for (const entry of layout) {\n      const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  }\n}\nconst CFFTopDictLayout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\nclass CFFTopDict extends CFFDict {\n  static get tables() {\n    return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n  }\n  constructor(strings) {\n    super(CFFTopDict.tables, strings);\n    this.privateDict = null;\n  }\n}\nconst CFFPrivateDictLayout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\nclass CFFPrivateDict extends CFFDict {\n  static get tables() {\n    return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n  }\n  constructor(strings) {\n    super(CFFPrivateDict.tables, strings);\n    this.subrsIndex = null;\n  }\n}\nconst CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2\n};\nclass CFFCharset {\n  constructor(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n}\nclass CFFEncoding {\n  constructor(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n}\nclass CFFFDSelect {\n  constructor(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n  getFDIndex(glyphIndex) {\n    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n      return -1;\n    }\n    return this.fdSelect[glyphIndex];\n  }\n}\nclass CFFOffsetTracker {\n  constructor() {\n    this.offsets = Object.create(null);\n  }\n  isTracking(key) {\n    return key in this.offsets;\n  }\n  track(key, location) {\n    if (key in this.offsets) {\n      throw new FormatError(`Already tracking location of ${key}`);\n    }\n    this.offsets[key] = location;\n  }\n  offset(value) {\n    for (const key in this.offsets) {\n      this.offsets[key] += value;\n    }\n  }\n  setEntryLocation(key, values, output) {\n    if (!(key in this.offsets)) {\n      throw new FormatError(`Not tracking location of ${key}`);\n    }\n    const data = output.data;\n    const dataOffset = this.offsets[key];\n    const size = 5;\n    for (let i = 0, ii = values.length; i < ii; ++i) {\n      const offset0 = i * size + dataOffset;\n      const offset1 = offset0 + 1;\n      const offset2 = offset0 + 2;\n      const offset3 = offset0 + 3;\n      const offset4 = offset0 + 4;\n      if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n        throw new FormatError(\"writing to an offset that is not empty\");\n      }\n      const value = values[i];\n      data[offset0] = 0x1d;\n      data[offset1] = value >> 24 & 0xff;\n      data[offset2] = value >> 16 & 0xff;\n      data[offset3] = value >> 8 & 0xff;\n      data[offset4] = value & 0xff;\n    }\n  }\n}\nclass CFFCompiler {\n  constructor(cff) {\n    this.cff = cff;\n  }\n  compile() {\n    const cff = this.cff;\n    const output = {\n      data: [],\n      length: 0,\n      add(data) {\n        try {\n          this.data.push(...data);\n        } catch {\n          this.data = this.data.concat(data);\n        }\n        this.length = this.data.length;\n      }\n    };\n    const header = this.compileHeader(cff.header);\n    output.add(header);\n    const nameIndex = this.compileNameIndex(cff.names);\n    output.add(nameIndex);\n    if (cff.isCIDFont) {\n      if (cff.topDict.hasName(\"FontMatrix\")) {\n        const base = cff.topDict.getByName(\"FontMatrix\");\n        cff.topDict.removeByName(\"FontMatrix\");\n        for (const subDict of cff.fdArray) {\n          let matrix = base.slice(0);\n          if (subDict.hasName(\"FontMatrix\")) {\n            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n          }\n          subDict.setByName(\"FontMatrix\", matrix);\n        }\n      }\n    }\n    const xuid = cff.topDict.getByName(\"XUID\");\n    if (xuid?.length > 16) {\n      cff.topDict.removeByName(\"XUID\");\n    }\n    cff.topDict.setByName(\"charset\", 0);\n    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n    output.add(compiled.output);\n    const topDictTracker = compiled.trackers[0];\n    const stringIndex = this.compileStringIndex(cff.strings.strings);\n    output.add(stringIndex);\n    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n    output.add(globalSubrIndex);\n    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n      if (cff.encoding.predefined) {\n        topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n      } else {\n        const encoding = this.compileEncoding(cff.encoding);\n        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n        output.add(encoding);\n      }\n    }\n    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n    output.add(charset);\n    const charStrings = this.compileCharStrings(cff.charStrings);\n    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n    output.add(charStrings);\n    if (cff.isCIDFont) {\n      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n      const fdSelect = this.compileFDSelect(cff.fdSelect);\n      output.add(fdSelect);\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n      output.add(compiled.output);\n      const fontDictTrackers = compiled.trackers;\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n    }\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n    output.add([0]);\n    return output.data;\n  }\n  encodeNumber(value) {\n    if (Number.isInteger(value)) {\n      return this.encodeInteger(value);\n    }\n    return this.encodeFloat(value);\n  }\n  static get EncodeFloatRegExp() {\n    return shadow(this, \"EncodeFloatRegExp\", /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/);\n  }\n  encodeFloat(num) {\n    let value = num.toString();\n    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n    if (m) {\n      const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n      value = (Math.round(num * epsilon) / epsilon).toString();\n    }\n    let nibbles = \"\";\n    let i, ii;\n    for (i = 0, ii = value.length; i < ii; ++i) {\n      const a = value[i];\n      if (a === \"e\") {\n        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n      } else if (a === \".\") {\n        nibbles += \"a\";\n      } else if (a === \"-\") {\n        nibbles += \"e\";\n      } else {\n        nibbles += a;\n      }\n    }\n    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n    const out = [30];\n    for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n    }\n    return out;\n  }\n  encodeInteger(value) {\n    let code;\n    if (value >= -107 && value <= 107) {\n      code = [value + 139];\n    } else if (value >= 108 && value <= 1131) {\n      value -= 108;\n      code = [(value >> 8) + 247, value & 0xff];\n    } else if (value >= -1131 && value <= -108) {\n      value = -value - 108;\n      code = [(value >> 8) + 251, value & 0xff];\n    } else if (value >= -32768 && value <= 32767) {\n      code = [0x1c, value >> 8 & 0xff, value & 0xff];\n    } else {\n      code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n    }\n    return code;\n  }\n  compileHeader(header) {\n    return [header.major, header.minor, 4, header.offSize];\n  }\n  compileNameIndex(names) {\n    const nameIndex = new CFFIndex();\n    for (const name of names) {\n      const length = Math.min(name.length, 127);\n      let sanitizedName = new Array(length);\n      for (let j = 0; j < length; j++) {\n        let char = name[j];\n        if (char < \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"<\" || char === \">\" || char === \"/\" || char === \"%\") {\n          char = \"_\";\n        }\n        sanitizedName[j] = char;\n      }\n      sanitizedName = sanitizedName.join(\"\");\n      if (sanitizedName === \"\") {\n        sanitizedName = \"Bad_Font_Name\";\n      }\n      nameIndex.add(stringToBytes(sanitizedName));\n    }\n    return this.compileIndex(nameIndex);\n  }\n  compileTopDicts(dicts, length, removeCidKeys) {\n    const fontDictTrackers = [];\n    let fdArrayIndex = new CFFIndex();\n    for (const fontDict of dicts) {\n      if (removeCidKeys) {\n        fontDict.removeByName(\"CIDFontVersion\");\n        fontDict.removeByName(\"CIDFontRevision\");\n        fontDict.removeByName(\"CIDFontType\");\n        fontDict.removeByName(\"CIDCount\");\n        fontDict.removeByName(\"UIDBase\");\n      }\n      const fontDictTracker = new CFFOffsetTracker();\n      const fontDictData = this.compileDict(fontDict, fontDictTracker);\n      fontDictTrackers.push(fontDictTracker);\n      fdArrayIndex.add(fontDictData);\n      fontDictTracker.offset(length);\n    }\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n    return {\n      trackers: fontDictTrackers,\n      output: fdArrayIndex\n    };\n  }\n  compilePrivateDicts(dicts, trackers, output) {\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n      const privateDict = fontDict.privateDict;\n      if (!privateDict || !fontDict.hasName(\"Private\")) {\n        throw new FormatError(\"There must be a private dictionary.\");\n      }\n      const privateDictTracker = new CFFOffsetTracker();\n      const privateDictData = this.compileDict(privateDict, privateDictTracker);\n      let outputLength = output.length;\n      privateDictTracker.offset(outputLength);\n      if (!privateDictData.length) {\n        outputLength = 0;\n      }\n      trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n      output.add(privateDictData);\n      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n        const subrs = this.compileIndex(privateDict.subrsIndex);\n        privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n        output.add(subrs);\n      }\n    }\n  }\n  compileDict(dict, offsetTracker) {\n    const out = [];\n    for (const key of dict.order) {\n      if (!(key in dict.values)) {\n        continue;\n      }\n      let values = dict.values[key];\n      let types = dict.types[key];\n      if (!Array.isArray(types)) {\n        types = [types];\n      }\n      if (!Array.isArray(values)) {\n        values = [values];\n      }\n      if (values.length === 0) {\n        continue;\n      }\n      for (let j = 0, jj = types.length; j < jj; ++j) {\n        const type = types[j];\n        const value = values[j];\n        switch (type) {\n          case \"num\":\n          case \"sid\":\n            out.push(...this.encodeNumber(value));\n            break;\n          case \"offset\":\n            const name = dict.keyToNameMap[key];\n            if (!offsetTracker.isTracking(name)) {\n              offsetTracker.track(name, out.length);\n            }\n            out.push(0x1d, 0, 0, 0, 0);\n            break;\n          case \"array\":\n          case \"delta\":\n            out.push(...this.encodeNumber(value));\n            for (let k = 1, kk = values.length; k < kk; ++k) {\n              out.push(...this.encodeNumber(values[k]));\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown data type of ${type}`);\n        }\n      }\n      out.push(...dict.opcodes[key]);\n    }\n    return out;\n  }\n  compileStringIndex(strings) {\n    const stringIndex = new CFFIndex();\n    for (const string of strings) {\n      stringIndex.add(stringToBytes(string));\n    }\n    return this.compileIndex(stringIndex);\n  }\n  compileCharStrings(charStrings) {\n    const charStringsIndex = new CFFIndex();\n    for (let i = 0; i < charStrings.count; i++) {\n      const glyph = charStrings.get(i);\n      if (glyph.length === 0) {\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n        continue;\n      }\n      charStringsIndex.add(glyph);\n    }\n    return this.compileIndex(charStringsIndex);\n  }\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n    let out;\n    const numGlyphsLessNotDef = numGlyphs - 1;\n    if (isCIDFont) {\n      out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);\n    } else {\n      const length = 1 + numGlyphsLessNotDef * 2;\n      out = new Uint8Array(length);\n      out[0] = 0;\n      let charsetIndex = 0;\n      const numCharsets = charset.charset.length;\n      let warned = false;\n      for (let i = 1; i < out.length; i += 2) {\n        let sid = 0;\n        if (charsetIndex < numCharsets) {\n          const name = charset.charset[charsetIndex++];\n          sid = strings.getSID(name);\n          if (sid === -1) {\n            sid = 0;\n            if (!warned) {\n              warned = true;\n              warn(`Couldn't find ${name} in CFF strings`);\n            }\n          }\n        }\n        out[i] = sid >> 8 & 0xff;\n        out[i + 1] = sid & 0xff;\n      }\n    }\n    return this.compileTypedArray(out);\n  }\n  compileEncoding(encoding) {\n    return this.compileTypedArray(encoding.raw);\n  }\n  compileFDSelect(fdSelect) {\n    const format = fdSelect.format;\n    let out, i;\n    switch (format) {\n      case 0:\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n        out[0] = format;\n        for (i = 0; i < fdSelect.fdSelect.length; i++) {\n          out[i + 1] = fdSelect.fdSelect[i];\n        }\n        break;\n      case 3:\n        const start = 0;\n        let lastFD = fdSelect.fdSelect[0];\n        const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n        for (i = 1; i < fdSelect.fdSelect.length; i++) {\n          const currentFD = fdSelect.fdSelect[i];\n          if (currentFD !== lastFD) {\n            ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n            lastFD = currentFD;\n          }\n        }\n        const numRanges = (ranges.length - 3) / 3;\n        ranges[1] = numRanges >> 8 & 0xff;\n        ranges[2] = numRanges & 0xff;\n        ranges.push(i >> 8 & 0xff, i & 0xff);\n        out = new Uint8Array(ranges);\n        break;\n    }\n    return this.compileTypedArray(out);\n  }\n  compileTypedArray(data) {\n    return Array.from(data);\n  }\n  compileIndex(index, trackers = []) {\n    const objects = index.objects;\n    const count = objects.length;\n    if (count === 0) {\n      return [0, 0];\n    }\n    const data = [count >> 8 & 0xff, count & 0xff];\n    let lastOffset = 1,\n      i;\n    for (i = 0; i < count; ++i) {\n      lastOffset += objects[i].length;\n    }\n    let offsetSize;\n    if (lastOffset < 0x100) {\n      offsetSize = 1;\n    } else if (lastOffset < 0x10000) {\n      offsetSize = 2;\n    } else if (lastOffset < 0x1000000) {\n      offsetSize = 3;\n    } else {\n      offsetSize = 4;\n    }\n    data.push(offsetSize);\n    let relativeOffset = 1;\n    for (i = 0; i < count + 1; i++) {\n      if (offsetSize === 1) {\n        data.push(relativeOffset & 0xff);\n      } else if (offsetSize === 2) {\n        data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n      } else if (offsetSize === 3) {\n        data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n      } else {\n        data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n      }\n      if (objects[i]) {\n        relativeOffset += objects[i].length;\n      }\n    }\n    for (i = 0; i < count; i++) {\n      if (trackers[i]) {\n        trackers[i].offset(data.length);\n      }\n      data.push(...objects[i]);\n    }\n    return data;\n  }\n}\n\n;// ./src/core/glyphlist.js\n\nconst getGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.A = 0x0041;\n  t.AE = 0x00c6;\n  t.AEacute = 0x01fc;\n  t.AEmacron = 0x01e2;\n  t.AEsmall = 0xf7e6;\n  t.Aacute = 0x00c1;\n  t.Aacutesmall = 0xf7e1;\n  t.Abreve = 0x0102;\n  t.Abreveacute = 0x1eae;\n  t.Abrevecyrillic = 0x04d0;\n  t.Abrevedotbelow = 0x1eb6;\n  t.Abrevegrave = 0x1eb0;\n  t.Abrevehookabove = 0x1eb2;\n  t.Abrevetilde = 0x1eb4;\n  t.Acaron = 0x01cd;\n  t.Acircle = 0x24b6;\n  t.Acircumflex = 0x00c2;\n  t.Acircumflexacute = 0x1ea4;\n  t.Acircumflexdotbelow = 0x1eac;\n  t.Acircumflexgrave = 0x1ea6;\n  t.Acircumflexhookabove = 0x1ea8;\n  t.Acircumflexsmall = 0xf7e2;\n  t.Acircumflextilde = 0x1eaa;\n  t.Acute = 0xf6c9;\n  t.Acutesmall = 0xf7b4;\n  t.Acyrillic = 0x0410;\n  t.Adblgrave = 0x0200;\n  t.Adieresis = 0x00c4;\n  t.Adieresiscyrillic = 0x04d2;\n  t.Adieresismacron = 0x01de;\n  t.Adieresissmall = 0xf7e4;\n  t.Adotbelow = 0x1ea0;\n  t.Adotmacron = 0x01e0;\n  t.Agrave = 0x00c0;\n  t.Agravesmall = 0xf7e0;\n  t.Ahookabove = 0x1ea2;\n  t.Aiecyrillic = 0x04d4;\n  t.Ainvertedbreve = 0x0202;\n  t.Alpha = 0x0391;\n  t.Alphatonos = 0x0386;\n  t.Amacron = 0x0100;\n  t.Amonospace = 0xff21;\n  t.Aogonek = 0x0104;\n  t.Aring = 0x00c5;\n  t.Aringacute = 0x01fa;\n  t.Aringbelow = 0x1e00;\n  t.Aringsmall = 0xf7e5;\n  t.Asmall = 0xf761;\n  t.Atilde = 0x00c3;\n  t.Atildesmall = 0xf7e3;\n  t.Aybarmenian = 0x0531;\n  t.B = 0x0042;\n  t.Bcircle = 0x24b7;\n  t.Bdotaccent = 0x1e02;\n  t.Bdotbelow = 0x1e04;\n  t.Becyrillic = 0x0411;\n  t.Benarmenian = 0x0532;\n  t.Beta = 0x0392;\n  t.Bhook = 0x0181;\n  t.Blinebelow = 0x1e06;\n  t.Bmonospace = 0xff22;\n  t.Brevesmall = 0xf6f4;\n  t.Bsmall = 0xf762;\n  t.Btopbar = 0x0182;\n  t.C = 0x0043;\n  t.Caarmenian = 0x053e;\n  t.Cacute = 0x0106;\n  t.Caron = 0xf6ca;\n  t.Caronsmall = 0xf6f5;\n  t.Ccaron = 0x010c;\n  t.Ccedilla = 0x00c7;\n  t.Ccedillaacute = 0x1e08;\n  t.Ccedillasmall = 0xf7e7;\n  t.Ccircle = 0x24b8;\n  t.Ccircumflex = 0x0108;\n  t.Cdot = 0x010a;\n  t.Cdotaccent = 0x010a;\n  t.Cedillasmall = 0xf7b8;\n  t.Chaarmenian = 0x0549;\n  t.Cheabkhasiancyrillic = 0x04bc;\n  t.Checyrillic = 0x0427;\n  t.Chedescenderabkhasiancyrillic = 0x04be;\n  t.Chedescendercyrillic = 0x04b6;\n  t.Chedieresiscyrillic = 0x04f4;\n  t.Cheharmenian = 0x0543;\n  t.Chekhakassiancyrillic = 0x04cb;\n  t.Cheverticalstrokecyrillic = 0x04b8;\n  t.Chi = 0x03a7;\n  t.Chook = 0x0187;\n  t.Circumflexsmall = 0xf6f6;\n  t.Cmonospace = 0xff23;\n  t.Coarmenian = 0x0551;\n  t.Csmall = 0xf763;\n  t.D = 0x0044;\n  t.DZ = 0x01f1;\n  t.DZcaron = 0x01c4;\n  t.Daarmenian = 0x0534;\n  t.Dafrican = 0x0189;\n  t.Dcaron = 0x010e;\n  t.Dcedilla = 0x1e10;\n  t.Dcircle = 0x24b9;\n  t.Dcircumflexbelow = 0x1e12;\n  t.Dcroat = 0x0110;\n  t.Ddotaccent = 0x1e0a;\n  t.Ddotbelow = 0x1e0c;\n  t.Decyrillic = 0x0414;\n  t.Deicoptic = 0x03ee;\n  t.Delta = 0x2206;\n  t.Deltagreek = 0x0394;\n  t.Dhook = 0x018a;\n  t.Dieresis = 0xf6cb;\n  t.DieresisAcute = 0xf6cc;\n  t.DieresisGrave = 0xf6cd;\n  t.Dieresissmall = 0xf7a8;\n  t.Digammagreek = 0x03dc;\n  t.Djecyrillic = 0x0402;\n  t.Dlinebelow = 0x1e0e;\n  t.Dmonospace = 0xff24;\n  t.Dotaccentsmall = 0xf6f7;\n  t.Dslash = 0x0110;\n  t.Dsmall = 0xf764;\n  t.Dtopbar = 0x018b;\n  t.Dz = 0x01f2;\n  t.Dzcaron = 0x01c5;\n  t.Dzeabkhasiancyrillic = 0x04e0;\n  t.Dzecyrillic = 0x0405;\n  t.Dzhecyrillic = 0x040f;\n  t.E = 0x0045;\n  t.Eacute = 0x00c9;\n  t.Eacutesmall = 0xf7e9;\n  t.Ebreve = 0x0114;\n  t.Ecaron = 0x011a;\n  t.Ecedillabreve = 0x1e1c;\n  t.Echarmenian = 0x0535;\n  t.Ecircle = 0x24ba;\n  t.Ecircumflex = 0x00ca;\n  t.Ecircumflexacute = 0x1ebe;\n  t.Ecircumflexbelow = 0x1e18;\n  t.Ecircumflexdotbelow = 0x1ec6;\n  t.Ecircumflexgrave = 0x1ec0;\n  t.Ecircumflexhookabove = 0x1ec2;\n  t.Ecircumflexsmall = 0xf7ea;\n  t.Ecircumflextilde = 0x1ec4;\n  t.Ecyrillic = 0x0404;\n  t.Edblgrave = 0x0204;\n  t.Edieresis = 0x00cb;\n  t.Edieresissmall = 0xf7eb;\n  t.Edot = 0x0116;\n  t.Edotaccent = 0x0116;\n  t.Edotbelow = 0x1eb8;\n  t.Efcyrillic = 0x0424;\n  t.Egrave = 0x00c8;\n  t.Egravesmall = 0xf7e8;\n  t.Eharmenian = 0x0537;\n  t.Ehookabove = 0x1eba;\n  t.Eightroman = 0x2167;\n  t.Einvertedbreve = 0x0206;\n  t.Eiotifiedcyrillic = 0x0464;\n  t.Elcyrillic = 0x041b;\n  t.Elevenroman = 0x216a;\n  t.Emacron = 0x0112;\n  t.Emacronacute = 0x1e16;\n  t.Emacrongrave = 0x1e14;\n  t.Emcyrillic = 0x041c;\n  t.Emonospace = 0xff25;\n  t.Encyrillic = 0x041d;\n  t.Endescendercyrillic = 0x04a2;\n  t.Eng = 0x014a;\n  t.Enghecyrillic = 0x04a4;\n  t.Enhookcyrillic = 0x04c7;\n  t.Eogonek = 0x0118;\n  t.Eopen = 0x0190;\n  t.Epsilon = 0x0395;\n  t.Epsilontonos = 0x0388;\n  t.Ercyrillic = 0x0420;\n  t.Ereversed = 0x018e;\n  t.Ereversedcyrillic = 0x042d;\n  t.Escyrillic = 0x0421;\n  t.Esdescendercyrillic = 0x04aa;\n  t.Esh = 0x01a9;\n  t.Esmall = 0xf765;\n  t.Eta = 0x0397;\n  t.Etarmenian = 0x0538;\n  t.Etatonos = 0x0389;\n  t.Eth = 0x00d0;\n  t.Ethsmall = 0xf7f0;\n  t.Etilde = 0x1ebc;\n  t.Etildebelow = 0x1e1a;\n  t.Euro = 0x20ac;\n  t.Ezh = 0x01b7;\n  t.Ezhcaron = 0x01ee;\n  t.Ezhreversed = 0x01b8;\n  t.F = 0x0046;\n  t.Fcircle = 0x24bb;\n  t.Fdotaccent = 0x1e1e;\n  t.Feharmenian = 0x0556;\n  t.Feicoptic = 0x03e4;\n  t.Fhook = 0x0191;\n  t.Fitacyrillic = 0x0472;\n  t.Fiveroman = 0x2164;\n  t.Fmonospace = 0xff26;\n  t.Fourroman = 0x2163;\n  t.Fsmall = 0xf766;\n  t.G = 0x0047;\n  t.GBsquare = 0x3387;\n  t.Gacute = 0x01f4;\n  t.Gamma = 0x0393;\n  t.Gammaafrican = 0x0194;\n  t.Gangiacoptic = 0x03ea;\n  t.Gbreve = 0x011e;\n  t.Gcaron = 0x01e6;\n  t.Gcedilla = 0x0122;\n  t.Gcircle = 0x24bc;\n  t.Gcircumflex = 0x011c;\n  t.Gcommaaccent = 0x0122;\n  t.Gdot = 0x0120;\n  t.Gdotaccent = 0x0120;\n  t.Gecyrillic = 0x0413;\n  t.Ghadarmenian = 0x0542;\n  t.Ghemiddlehookcyrillic = 0x0494;\n  t.Ghestrokecyrillic = 0x0492;\n  t.Gheupturncyrillic = 0x0490;\n  t.Ghook = 0x0193;\n  t.Gimarmenian = 0x0533;\n  t.Gjecyrillic = 0x0403;\n  t.Gmacron = 0x1e20;\n  t.Gmonospace = 0xff27;\n  t.Grave = 0xf6ce;\n  t.Gravesmall = 0xf760;\n  t.Gsmall = 0xf767;\n  t.Gsmallhook = 0x029b;\n  t.Gstroke = 0x01e4;\n  t.H = 0x0048;\n  t.H18533 = 0x25cf;\n  t.H18543 = 0x25aa;\n  t.H18551 = 0x25ab;\n  t.H22073 = 0x25a1;\n  t.HPsquare = 0x33cb;\n  t.Haabkhasiancyrillic = 0x04a8;\n  t.Hadescendercyrillic = 0x04b2;\n  t.Hardsigncyrillic = 0x042a;\n  t.Hbar = 0x0126;\n  t.Hbrevebelow = 0x1e2a;\n  t.Hcedilla = 0x1e28;\n  t.Hcircle = 0x24bd;\n  t.Hcircumflex = 0x0124;\n  t.Hdieresis = 0x1e26;\n  t.Hdotaccent = 0x1e22;\n  t.Hdotbelow = 0x1e24;\n  t.Hmonospace = 0xff28;\n  t.Hoarmenian = 0x0540;\n  t.Horicoptic = 0x03e8;\n  t.Hsmall = 0xf768;\n  t.Hungarumlaut = 0xf6cf;\n  t.Hungarumlautsmall = 0xf6f8;\n  t.Hzsquare = 0x3390;\n  t.I = 0x0049;\n  t.IAcyrillic = 0x042f;\n  t.IJ = 0x0132;\n  t.IUcyrillic = 0x042e;\n  t.Iacute = 0x00cd;\n  t.Iacutesmall = 0xf7ed;\n  t.Ibreve = 0x012c;\n  t.Icaron = 0x01cf;\n  t.Icircle = 0x24be;\n  t.Icircumflex = 0x00ce;\n  t.Icircumflexsmall = 0xf7ee;\n  t.Icyrillic = 0x0406;\n  t.Idblgrave = 0x0208;\n  t.Idieresis = 0x00cf;\n  t.Idieresisacute = 0x1e2e;\n  t.Idieresiscyrillic = 0x04e4;\n  t.Idieresissmall = 0xf7ef;\n  t.Idot = 0x0130;\n  t.Idotaccent = 0x0130;\n  t.Idotbelow = 0x1eca;\n  t.Iebrevecyrillic = 0x04d6;\n  t.Iecyrillic = 0x0415;\n  t.Ifraktur = 0x2111;\n  t.Igrave = 0x00cc;\n  t.Igravesmall = 0xf7ec;\n  t.Ihookabove = 0x1ec8;\n  t.Iicyrillic = 0x0418;\n  t.Iinvertedbreve = 0x020a;\n  t.Iishortcyrillic = 0x0419;\n  t.Imacron = 0x012a;\n  t.Imacroncyrillic = 0x04e2;\n  t.Imonospace = 0xff29;\n  t.Iniarmenian = 0x053b;\n  t.Iocyrillic = 0x0401;\n  t.Iogonek = 0x012e;\n  t.Iota = 0x0399;\n  t.Iotaafrican = 0x0196;\n  t.Iotadieresis = 0x03aa;\n  t.Iotatonos = 0x038a;\n  t.Ismall = 0xf769;\n  t.Istroke = 0x0197;\n  t.Itilde = 0x0128;\n  t.Itildebelow = 0x1e2c;\n  t.Izhitsacyrillic = 0x0474;\n  t.Izhitsadblgravecyrillic = 0x0476;\n  t.J = 0x004a;\n  t.Jaarmenian = 0x0541;\n  t.Jcircle = 0x24bf;\n  t.Jcircumflex = 0x0134;\n  t.Jecyrillic = 0x0408;\n  t.Jheharmenian = 0x054b;\n  t.Jmonospace = 0xff2a;\n  t.Jsmall = 0xf76a;\n  t.K = 0x004b;\n  t.KBsquare = 0x3385;\n  t.KKsquare = 0x33cd;\n  t.Kabashkircyrillic = 0x04a0;\n  t.Kacute = 0x1e30;\n  t.Kacyrillic = 0x041a;\n  t.Kadescendercyrillic = 0x049a;\n  t.Kahookcyrillic = 0x04c3;\n  t.Kappa = 0x039a;\n  t.Kastrokecyrillic = 0x049e;\n  t.Kaverticalstrokecyrillic = 0x049c;\n  t.Kcaron = 0x01e8;\n  t.Kcedilla = 0x0136;\n  t.Kcircle = 0x24c0;\n  t.Kcommaaccent = 0x0136;\n  t.Kdotbelow = 0x1e32;\n  t.Keharmenian = 0x0554;\n  t.Kenarmenian = 0x053f;\n  t.Khacyrillic = 0x0425;\n  t.Kheicoptic = 0x03e6;\n  t.Khook = 0x0198;\n  t.Kjecyrillic = 0x040c;\n  t.Klinebelow = 0x1e34;\n  t.Kmonospace = 0xff2b;\n  t.Koppacyrillic = 0x0480;\n  t.Koppagreek = 0x03de;\n  t.Ksicyrillic = 0x046e;\n  t.Ksmall = 0xf76b;\n  t.L = 0x004c;\n  t.LJ = 0x01c7;\n  t.LL = 0xf6bf;\n  t.Lacute = 0x0139;\n  t.Lambda = 0x039b;\n  t.Lcaron = 0x013d;\n  t.Lcedilla = 0x013b;\n  t.Lcircle = 0x24c1;\n  t.Lcircumflexbelow = 0x1e3c;\n  t.Lcommaaccent = 0x013b;\n  t.Ldot = 0x013f;\n  t.Ldotaccent = 0x013f;\n  t.Ldotbelow = 0x1e36;\n  t.Ldotbelowmacron = 0x1e38;\n  t.Liwnarmenian = 0x053c;\n  t.Lj = 0x01c8;\n  t.Ljecyrillic = 0x0409;\n  t.Llinebelow = 0x1e3a;\n  t.Lmonospace = 0xff2c;\n  t.Lslash = 0x0141;\n  t.Lslashsmall = 0xf6f9;\n  t.Lsmall = 0xf76c;\n  t.M = 0x004d;\n  t.MBsquare = 0x3386;\n  t.Macron = 0xf6d0;\n  t.Macronsmall = 0xf7af;\n  t.Macute = 0x1e3e;\n  t.Mcircle = 0x24c2;\n  t.Mdotaccent = 0x1e40;\n  t.Mdotbelow = 0x1e42;\n  t.Menarmenian = 0x0544;\n  t.Mmonospace = 0xff2d;\n  t.Msmall = 0xf76d;\n  t.Mturned = 0x019c;\n  t.Mu = 0x039c;\n  t.N = 0x004e;\n  t.NJ = 0x01ca;\n  t.Nacute = 0x0143;\n  t.Ncaron = 0x0147;\n  t.Ncedilla = 0x0145;\n  t.Ncircle = 0x24c3;\n  t.Ncircumflexbelow = 0x1e4a;\n  t.Ncommaaccent = 0x0145;\n  t.Ndotaccent = 0x1e44;\n  t.Ndotbelow = 0x1e46;\n  t.Nhookleft = 0x019d;\n  t.Nineroman = 0x2168;\n  t.Nj = 0x01cb;\n  t.Njecyrillic = 0x040a;\n  t.Nlinebelow = 0x1e48;\n  t.Nmonospace = 0xff2e;\n  t.Nowarmenian = 0x0546;\n  t.Nsmall = 0xf76e;\n  t.Ntilde = 0x00d1;\n  t.Ntildesmall = 0xf7f1;\n  t.Nu = 0x039d;\n  t.O = 0x004f;\n  t.OE = 0x0152;\n  t.OEsmall = 0xf6fa;\n  t.Oacute = 0x00d3;\n  t.Oacutesmall = 0xf7f3;\n  t.Obarredcyrillic = 0x04e8;\n  t.Obarreddieresiscyrillic = 0x04ea;\n  t.Obreve = 0x014e;\n  t.Ocaron = 0x01d1;\n  t.Ocenteredtilde = 0x019f;\n  t.Ocircle = 0x24c4;\n  t.Ocircumflex = 0x00d4;\n  t.Ocircumflexacute = 0x1ed0;\n  t.Ocircumflexdotbelow = 0x1ed8;\n  t.Ocircumflexgrave = 0x1ed2;\n  t.Ocircumflexhookabove = 0x1ed4;\n  t.Ocircumflexsmall = 0xf7f4;\n  t.Ocircumflextilde = 0x1ed6;\n  t.Ocyrillic = 0x041e;\n  t.Odblacute = 0x0150;\n  t.Odblgrave = 0x020c;\n  t.Odieresis = 0x00d6;\n  t.Odieresiscyrillic = 0x04e6;\n  t.Odieresissmall = 0xf7f6;\n  t.Odotbelow = 0x1ecc;\n  t.Ogoneksmall = 0xf6fb;\n  t.Ograve = 0x00d2;\n  t.Ogravesmall = 0xf7f2;\n  t.Oharmenian = 0x0555;\n  t.Ohm = 0x2126;\n  t.Ohookabove = 0x1ece;\n  t.Ohorn = 0x01a0;\n  t.Ohornacute = 0x1eda;\n  t.Ohorndotbelow = 0x1ee2;\n  t.Ohorngrave = 0x1edc;\n  t.Ohornhookabove = 0x1ede;\n  t.Ohorntilde = 0x1ee0;\n  t.Ohungarumlaut = 0x0150;\n  t.Oi = 0x01a2;\n  t.Oinvertedbreve = 0x020e;\n  t.Omacron = 0x014c;\n  t.Omacronacute = 0x1e52;\n  t.Omacrongrave = 0x1e50;\n  t.Omega = 0x2126;\n  t.Omegacyrillic = 0x0460;\n  t.Omegagreek = 0x03a9;\n  t.Omegaroundcyrillic = 0x047a;\n  t.Omegatitlocyrillic = 0x047c;\n  t.Omegatonos = 0x038f;\n  t.Omicron = 0x039f;\n  t.Omicrontonos = 0x038c;\n  t.Omonospace = 0xff2f;\n  t.Oneroman = 0x2160;\n  t.Oogonek = 0x01ea;\n  t.Oogonekmacron = 0x01ec;\n  t.Oopen = 0x0186;\n  t.Oslash = 0x00d8;\n  t.Oslashacute = 0x01fe;\n  t.Oslashsmall = 0xf7f8;\n  t.Osmall = 0xf76f;\n  t.Ostrokeacute = 0x01fe;\n  t.Otcyrillic = 0x047e;\n  t.Otilde = 0x00d5;\n  t.Otildeacute = 0x1e4c;\n  t.Otildedieresis = 0x1e4e;\n  t.Otildesmall = 0xf7f5;\n  t.P = 0x0050;\n  t.Pacute = 0x1e54;\n  t.Pcircle = 0x24c5;\n  t.Pdotaccent = 0x1e56;\n  t.Pecyrillic = 0x041f;\n  t.Peharmenian = 0x054a;\n  t.Pemiddlehookcyrillic = 0x04a6;\n  t.Phi = 0x03a6;\n  t.Phook = 0x01a4;\n  t.Pi = 0x03a0;\n  t.Piwrarmenian = 0x0553;\n  t.Pmonospace = 0xff30;\n  t.Psi = 0x03a8;\n  t.Psicyrillic = 0x0470;\n  t.Psmall = 0xf770;\n  t.Q = 0x0051;\n  t.Qcircle = 0x24c6;\n  t.Qmonospace = 0xff31;\n  t.Qsmall = 0xf771;\n  t.R = 0x0052;\n  t.Raarmenian = 0x054c;\n  t.Racute = 0x0154;\n  t.Rcaron = 0x0158;\n  t.Rcedilla = 0x0156;\n  t.Rcircle = 0x24c7;\n  t.Rcommaaccent = 0x0156;\n  t.Rdblgrave = 0x0210;\n  t.Rdotaccent = 0x1e58;\n  t.Rdotbelow = 0x1e5a;\n  t.Rdotbelowmacron = 0x1e5c;\n  t.Reharmenian = 0x0550;\n  t.Rfraktur = 0x211c;\n  t.Rho = 0x03a1;\n  t.Ringsmall = 0xf6fc;\n  t.Rinvertedbreve = 0x0212;\n  t.Rlinebelow = 0x1e5e;\n  t.Rmonospace = 0xff32;\n  t.Rsmall = 0xf772;\n  t.Rsmallinverted = 0x0281;\n  t.Rsmallinvertedsuperior = 0x02b6;\n  t.S = 0x0053;\n  t.SF010000 = 0x250c;\n  t.SF020000 = 0x2514;\n  t.SF030000 = 0x2510;\n  t.SF040000 = 0x2518;\n  t.SF050000 = 0x253c;\n  t.SF060000 = 0x252c;\n  t.SF070000 = 0x2534;\n  t.SF080000 = 0x251c;\n  t.SF090000 = 0x2524;\n  t.SF100000 = 0x2500;\n  t.SF110000 = 0x2502;\n  t.SF190000 = 0x2561;\n  t.SF200000 = 0x2562;\n  t.SF210000 = 0x2556;\n  t.SF220000 = 0x2555;\n  t.SF230000 = 0x2563;\n  t.SF240000 = 0x2551;\n  t.SF250000 = 0x2557;\n  t.SF260000 = 0x255d;\n  t.SF270000 = 0x255c;\n  t.SF280000 = 0x255b;\n  t.SF360000 = 0x255e;\n  t.SF370000 = 0x255f;\n  t.SF380000 = 0x255a;\n  t.SF390000 = 0x2554;\n  t.SF400000 = 0x2569;\n  t.SF410000 = 0x2566;\n  t.SF420000 = 0x2560;\n  t.SF430000 = 0x2550;\n  t.SF440000 = 0x256c;\n  t.SF450000 = 0x2567;\n  t.SF460000 = 0x2568;\n  t.SF470000 = 0x2564;\n  t.SF480000 = 0x2565;\n  t.SF490000 = 0x2559;\n  t.SF500000 = 0x2558;\n  t.SF510000 = 0x2552;\n  t.SF520000 = 0x2553;\n  t.SF530000 = 0x256b;\n  t.SF540000 = 0x256a;\n  t.Sacute = 0x015a;\n  t.Sacutedotaccent = 0x1e64;\n  t.Sampigreek = 0x03e0;\n  t.Scaron = 0x0160;\n  t.Scarondotaccent = 0x1e66;\n  t.Scaronsmall = 0xf6fd;\n  t.Scedilla = 0x015e;\n  t.Schwa = 0x018f;\n  t.Schwacyrillic = 0x04d8;\n  t.Schwadieresiscyrillic = 0x04da;\n  t.Scircle = 0x24c8;\n  t.Scircumflex = 0x015c;\n  t.Scommaaccent = 0x0218;\n  t.Sdotaccent = 0x1e60;\n  t.Sdotbelow = 0x1e62;\n  t.Sdotbelowdotaccent = 0x1e68;\n  t.Seharmenian = 0x054d;\n  t.Sevenroman = 0x2166;\n  t.Shaarmenian = 0x0547;\n  t.Shacyrillic = 0x0428;\n  t.Shchacyrillic = 0x0429;\n  t.Sheicoptic = 0x03e2;\n  t.Shhacyrillic = 0x04ba;\n  t.Shimacoptic = 0x03ec;\n  t.Sigma = 0x03a3;\n  t.Sixroman = 0x2165;\n  t.Smonospace = 0xff33;\n  t.Softsigncyrillic = 0x042c;\n  t.Ssmall = 0xf773;\n  t.Stigmagreek = 0x03da;\n  t.T = 0x0054;\n  t.Tau = 0x03a4;\n  t.Tbar = 0x0166;\n  t.Tcaron = 0x0164;\n  t.Tcedilla = 0x0162;\n  t.Tcircle = 0x24c9;\n  t.Tcircumflexbelow = 0x1e70;\n  t.Tcommaaccent = 0x0162;\n  t.Tdotaccent = 0x1e6a;\n  t.Tdotbelow = 0x1e6c;\n  t.Tecyrillic = 0x0422;\n  t.Tedescendercyrillic = 0x04ac;\n  t.Tenroman = 0x2169;\n  t.Tetsecyrillic = 0x04b4;\n  t.Theta = 0x0398;\n  t.Thook = 0x01ac;\n  t.Thorn = 0x00de;\n  t.Thornsmall = 0xf7fe;\n  t.Threeroman = 0x2162;\n  t.Tildesmall = 0xf6fe;\n  t.Tiwnarmenian = 0x054f;\n  t.Tlinebelow = 0x1e6e;\n  t.Tmonospace = 0xff34;\n  t.Toarmenian = 0x0539;\n  t.Tonefive = 0x01bc;\n  t.Tonesix = 0x0184;\n  t.Tonetwo = 0x01a7;\n  t.Tretroflexhook = 0x01ae;\n  t.Tsecyrillic = 0x0426;\n  t.Tshecyrillic = 0x040b;\n  t.Tsmall = 0xf774;\n  t.Twelveroman = 0x216b;\n  t.Tworoman = 0x2161;\n  t.U = 0x0055;\n  t.Uacute = 0x00da;\n  t.Uacutesmall = 0xf7fa;\n  t.Ubreve = 0x016c;\n  t.Ucaron = 0x01d3;\n  t.Ucircle = 0x24ca;\n  t.Ucircumflex = 0x00db;\n  t.Ucircumflexbelow = 0x1e76;\n  t.Ucircumflexsmall = 0xf7fb;\n  t.Ucyrillic = 0x0423;\n  t.Udblacute = 0x0170;\n  t.Udblgrave = 0x0214;\n  t.Udieresis = 0x00dc;\n  t.Udieresisacute = 0x01d7;\n  t.Udieresisbelow = 0x1e72;\n  t.Udieresiscaron = 0x01d9;\n  t.Udieresiscyrillic = 0x04f0;\n  t.Udieresisgrave = 0x01db;\n  t.Udieresismacron = 0x01d5;\n  t.Udieresissmall = 0xf7fc;\n  t.Udotbelow = 0x1ee4;\n  t.Ugrave = 0x00d9;\n  t.Ugravesmall = 0xf7f9;\n  t.Uhookabove = 0x1ee6;\n  t.Uhorn = 0x01af;\n  t.Uhornacute = 0x1ee8;\n  t.Uhorndotbelow = 0x1ef0;\n  t.Uhorngrave = 0x1eea;\n  t.Uhornhookabove = 0x1eec;\n  t.Uhorntilde = 0x1eee;\n  t.Uhungarumlaut = 0x0170;\n  t.Uhungarumlautcyrillic = 0x04f2;\n  t.Uinvertedbreve = 0x0216;\n  t.Ukcyrillic = 0x0478;\n  t.Umacron = 0x016a;\n  t.Umacroncyrillic = 0x04ee;\n  t.Umacrondieresis = 0x1e7a;\n  t.Umonospace = 0xff35;\n  t.Uogonek = 0x0172;\n  t.Upsilon = 0x03a5;\n  t.Upsilon1 = 0x03d2;\n  t.Upsilonacutehooksymbolgreek = 0x03d3;\n  t.Upsilonafrican = 0x01b1;\n  t.Upsilondieresis = 0x03ab;\n  t.Upsilondieresishooksymbolgreek = 0x03d4;\n  t.Upsilonhooksymbol = 0x03d2;\n  t.Upsilontonos = 0x038e;\n  t.Uring = 0x016e;\n  t.Ushortcyrillic = 0x040e;\n  t.Usmall = 0xf775;\n  t.Ustraightcyrillic = 0x04ae;\n  t.Ustraightstrokecyrillic = 0x04b0;\n  t.Utilde = 0x0168;\n  t.Utildeacute = 0x1e78;\n  t.Utildebelow = 0x1e74;\n  t.V = 0x0056;\n  t.Vcircle = 0x24cb;\n  t.Vdotbelow = 0x1e7e;\n  t.Vecyrillic = 0x0412;\n  t.Vewarmenian = 0x054e;\n  t.Vhook = 0x01b2;\n  t.Vmonospace = 0xff36;\n  t.Voarmenian = 0x0548;\n  t.Vsmall = 0xf776;\n  t.Vtilde = 0x1e7c;\n  t.W = 0x0057;\n  t.Wacute = 0x1e82;\n  t.Wcircle = 0x24cc;\n  t.Wcircumflex = 0x0174;\n  t.Wdieresis = 0x1e84;\n  t.Wdotaccent = 0x1e86;\n  t.Wdotbelow = 0x1e88;\n  t.Wgrave = 0x1e80;\n  t.Wmonospace = 0xff37;\n  t.Wsmall = 0xf777;\n  t.X = 0x0058;\n  t.Xcircle = 0x24cd;\n  t.Xdieresis = 0x1e8c;\n  t.Xdotaccent = 0x1e8a;\n  t.Xeharmenian = 0x053d;\n  t.Xi = 0x039e;\n  t.Xmonospace = 0xff38;\n  t.Xsmall = 0xf778;\n  t.Y = 0x0059;\n  t.Yacute = 0x00dd;\n  t.Yacutesmall = 0xf7fd;\n  t.Yatcyrillic = 0x0462;\n  t.Ycircle = 0x24ce;\n  t.Ycircumflex = 0x0176;\n  t.Ydieresis = 0x0178;\n  t.Ydieresissmall = 0xf7ff;\n  t.Ydotaccent = 0x1e8e;\n  t.Ydotbelow = 0x1ef4;\n  t.Yericyrillic = 0x042b;\n  t.Yerudieresiscyrillic = 0x04f8;\n  t.Ygrave = 0x1ef2;\n  t.Yhook = 0x01b3;\n  t.Yhookabove = 0x1ef6;\n  t.Yiarmenian = 0x0545;\n  t.Yicyrillic = 0x0407;\n  t.Yiwnarmenian = 0x0552;\n  t.Ymonospace = 0xff39;\n  t.Ysmall = 0xf779;\n  t.Ytilde = 0x1ef8;\n  t.Yusbigcyrillic = 0x046a;\n  t.Yusbigiotifiedcyrillic = 0x046c;\n  t.Yuslittlecyrillic = 0x0466;\n  t.Yuslittleiotifiedcyrillic = 0x0468;\n  t.Z = 0x005a;\n  t.Zaarmenian = 0x0536;\n  t.Zacute = 0x0179;\n  t.Zcaron = 0x017d;\n  t.Zcaronsmall = 0xf6ff;\n  t.Zcircle = 0x24cf;\n  t.Zcircumflex = 0x1e90;\n  t.Zdot = 0x017b;\n  t.Zdotaccent = 0x017b;\n  t.Zdotbelow = 0x1e92;\n  t.Zecyrillic = 0x0417;\n  t.Zedescendercyrillic = 0x0498;\n  t.Zedieresiscyrillic = 0x04de;\n  t.Zeta = 0x0396;\n  t.Zhearmenian = 0x053a;\n  t.Zhebrevecyrillic = 0x04c1;\n  t.Zhecyrillic = 0x0416;\n  t.Zhedescendercyrillic = 0x0496;\n  t.Zhedieresiscyrillic = 0x04dc;\n  t.Zlinebelow = 0x1e94;\n  t.Zmonospace = 0xff3a;\n  t.Zsmall = 0xf77a;\n  t.Zstroke = 0x01b5;\n  t.a = 0x0061;\n  t.aabengali = 0x0986;\n  t.aacute = 0x00e1;\n  t.aadeva = 0x0906;\n  t.aagujarati = 0x0a86;\n  t.aagurmukhi = 0x0a06;\n  t.aamatragurmukhi = 0x0a3e;\n  t.aarusquare = 0x3303;\n  t.aavowelsignbengali = 0x09be;\n  t.aavowelsigndeva = 0x093e;\n  t.aavowelsigngujarati = 0x0abe;\n  t.abbreviationmarkarmenian = 0x055f;\n  t.abbreviationsigndeva = 0x0970;\n  t.abengali = 0x0985;\n  t.abopomofo = 0x311a;\n  t.abreve = 0x0103;\n  t.abreveacute = 0x1eaf;\n  t.abrevecyrillic = 0x04d1;\n  t.abrevedotbelow = 0x1eb7;\n  t.abrevegrave = 0x1eb1;\n  t.abrevehookabove = 0x1eb3;\n  t.abrevetilde = 0x1eb5;\n  t.acaron = 0x01ce;\n  t.acircle = 0x24d0;\n  t.acircumflex = 0x00e2;\n  t.acircumflexacute = 0x1ea5;\n  t.acircumflexdotbelow = 0x1ead;\n  t.acircumflexgrave = 0x1ea7;\n  t.acircumflexhookabove = 0x1ea9;\n  t.acircumflextilde = 0x1eab;\n  t.acute = 0x00b4;\n  t.acutebelowcmb = 0x0317;\n  t.acutecmb = 0x0301;\n  t.acutecomb = 0x0301;\n  t.acutedeva = 0x0954;\n  t.acutelowmod = 0x02cf;\n  t.acutetonecmb = 0x0341;\n  t.acyrillic = 0x0430;\n  t.adblgrave = 0x0201;\n  t.addakgurmukhi = 0x0a71;\n  t.adeva = 0x0905;\n  t.adieresis = 0x00e4;\n  t.adieresiscyrillic = 0x04d3;\n  t.adieresismacron = 0x01df;\n  t.adotbelow = 0x1ea1;\n  t.adotmacron = 0x01e1;\n  t.ae = 0x00e6;\n  t.aeacute = 0x01fd;\n  t.aekorean = 0x3150;\n  t.aemacron = 0x01e3;\n  t.afii00208 = 0x2015;\n  t.afii08941 = 0x20a4;\n  t.afii10017 = 0x0410;\n  t.afii10018 = 0x0411;\n  t.afii10019 = 0x0412;\n  t.afii10020 = 0x0413;\n  t.afii10021 = 0x0414;\n  t.afii10022 = 0x0415;\n  t.afii10023 = 0x0401;\n  t.afii10024 = 0x0416;\n  t.afii10025 = 0x0417;\n  t.afii10026 = 0x0418;\n  t.afii10027 = 0x0419;\n  t.afii10028 = 0x041a;\n  t.afii10029 = 0x041b;\n  t.afii10030 = 0x041c;\n  t.afii10031 = 0x041d;\n  t.afii10032 = 0x041e;\n  t.afii10033 = 0x041f;\n  t.afii10034 = 0x0420;\n  t.afii10035 = 0x0421;\n  t.afii10036 = 0x0422;\n  t.afii10037 = 0x0423;\n  t.afii10038 = 0x0424;\n  t.afii10039 = 0x0425;\n  t.afii10040 = 0x0426;\n  t.afii10041 = 0x0427;\n  t.afii10042 = 0x0428;\n  t.afii10043 = 0x0429;\n  t.afii10044 = 0x042a;\n  t.afii10045 = 0x042b;\n  t.afii10046 = 0x042c;\n  t.afii10047 = 0x042d;\n  t.afii10048 = 0x042e;\n  t.afii10049 = 0x042f;\n  t.afii10050 = 0x0490;\n  t.afii10051 = 0x0402;\n  t.afii10052 = 0x0403;\n  t.afii10053 = 0x0404;\n  t.afii10054 = 0x0405;\n  t.afii10055 = 0x0406;\n  t.afii10056 = 0x0407;\n  t.afii10057 = 0x0408;\n  t.afii10058 = 0x0409;\n  t.afii10059 = 0x040a;\n  t.afii10060 = 0x040b;\n  t.afii10061 = 0x040c;\n  t.afii10062 = 0x040e;\n  t.afii10063 = 0xf6c4;\n  t.afii10064 = 0xf6c5;\n  t.afii10065 = 0x0430;\n  t.afii10066 = 0x0431;\n  t.afii10067 = 0x0432;\n  t.afii10068 = 0x0433;\n  t.afii10069 = 0x0434;\n  t.afii10070 = 0x0435;\n  t.afii10071 = 0x0451;\n  t.afii10072 = 0x0436;\n  t.afii10073 = 0x0437;\n  t.afii10074 = 0x0438;\n  t.afii10075 = 0x0439;\n  t.afii10076 = 0x043a;\n  t.afii10077 = 0x043b;\n  t.afii10078 = 0x043c;\n  t.afii10079 = 0x043d;\n  t.afii10080 = 0x043e;\n  t.afii10081 = 0x043f;\n  t.afii10082 = 0x0440;\n  t.afii10083 = 0x0441;\n  t.afii10084 = 0x0442;\n  t.afii10085 = 0x0443;\n  t.afii10086 = 0x0444;\n  t.afii10087 = 0x0445;\n  t.afii10088 = 0x0446;\n  t.afii10089 = 0x0447;\n  t.afii10090 = 0x0448;\n  t.afii10091 = 0x0449;\n  t.afii10092 = 0x044a;\n  t.afii10093 = 0x044b;\n  t.afii10094 = 0x044c;\n  t.afii10095 = 0x044d;\n  t.afii10096 = 0x044e;\n  t.afii10097 = 0x044f;\n  t.afii10098 = 0x0491;\n  t.afii10099 = 0x0452;\n  t.afii10100 = 0x0453;\n  t.afii10101 = 0x0454;\n  t.afii10102 = 0x0455;\n  t.afii10103 = 0x0456;\n  t.afii10104 = 0x0457;\n  t.afii10105 = 0x0458;\n  t.afii10106 = 0x0459;\n  t.afii10107 = 0x045a;\n  t.afii10108 = 0x045b;\n  t.afii10109 = 0x045c;\n  t.afii10110 = 0x045e;\n  t.afii10145 = 0x040f;\n  t.afii10146 = 0x0462;\n  t.afii10147 = 0x0472;\n  t.afii10148 = 0x0474;\n  t.afii10192 = 0xf6c6;\n  t.afii10193 = 0x045f;\n  t.afii10194 = 0x0463;\n  t.afii10195 = 0x0473;\n  t.afii10196 = 0x0475;\n  t.afii10831 = 0xf6c7;\n  t.afii10832 = 0xf6c8;\n  t.afii10846 = 0x04d9;\n  t.afii299 = 0x200e;\n  t.afii300 = 0x200f;\n  t.afii301 = 0x200d;\n  t.afii57381 = 0x066a;\n  t.afii57388 = 0x060c;\n  t.afii57392 = 0x0660;\n  t.afii57393 = 0x0661;\n  t.afii57394 = 0x0662;\n  t.afii57395 = 0x0663;\n  t.afii57396 = 0x0664;\n  t.afii57397 = 0x0665;\n  t.afii57398 = 0x0666;\n  t.afii57399 = 0x0667;\n  t.afii57400 = 0x0668;\n  t.afii57401 = 0x0669;\n  t.afii57403 = 0x061b;\n  t.afii57407 = 0x061f;\n  t.afii57409 = 0x0621;\n  t.afii57410 = 0x0622;\n  t.afii57411 = 0x0623;\n  t.afii57412 = 0x0624;\n  t.afii57413 = 0x0625;\n  t.afii57414 = 0x0626;\n  t.afii57415 = 0x0627;\n  t.afii57416 = 0x0628;\n  t.afii57417 = 0x0629;\n  t.afii57418 = 0x062a;\n  t.afii57419 = 0x062b;\n  t.afii57420 = 0x062c;\n  t.afii57421 = 0x062d;\n  t.afii57422 = 0x062e;\n  t.afii57423 = 0x062f;\n  t.afii57424 = 0x0630;\n  t.afii57425 = 0x0631;\n  t.afii57426 = 0x0632;\n  t.afii57427 = 0x0633;\n  t.afii57428 = 0x0634;\n  t.afii57429 = 0x0635;\n  t.afii57430 = 0x0636;\n  t.afii57431 = 0x0637;\n  t.afii57432 = 0x0638;\n  t.afii57433 = 0x0639;\n  t.afii57434 = 0x063a;\n  t.afii57440 = 0x0640;\n  t.afii57441 = 0x0641;\n  t.afii57442 = 0x0642;\n  t.afii57443 = 0x0643;\n  t.afii57444 = 0x0644;\n  t.afii57445 = 0x0645;\n  t.afii57446 = 0x0646;\n  t.afii57448 = 0x0648;\n  t.afii57449 = 0x0649;\n  t.afii57450 = 0x064a;\n  t.afii57451 = 0x064b;\n  t.afii57452 = 0x064c;\n  t.afii57453 = 0x064d;\n  t.afii57454 = 0x064e;\n  t.afii57455 = 0x064f;\n  t.afii57456 = 0x0650;\n  t.afii57457 = 0x0651;\n  t.afii57458 = 0x0652;\n  t.afii57470 = 0x0647;\n  t.afii57505 = 0x06a4;\n  t.afii57506 = 0x067e;\n  t.afii57507 = 0x0686;\n  t.afii57508 = 0x0698;\n  t.afii57509 = 0x06af;\n  t.afii57511 = 0x0679;\n  t.afii57512 = 0x0688;\n  t.afii57513 = 0x0691;\n  t.afii57514 = 0x06ba;\n  t.afii57519 = 0x06d2;\n  t.afii57534 = 0x06d5;\n  t.afii57636 = 0x20aa;\n  t.afii57645 = 0x05be;\n  t.afii57658 = 0x05c3;\n  t.afii57664 = 0x05d0;\n  t.afii57665 = 0x05d1;\n  t.afii57666 = 0x05d2;\n  t.afii57667 = 0x05d3;\n  t.afii57668 = 0x05d4;\n  t.afii57669 = 0x05d5;\n  t.afii57670 = 0x05d6;\n  t.afii57671 = 0x05d7;\n  t.afii57672 = 0x05d8;\n  t.afii57673 = 0x05d9;\n  t.afii57674 = 0x05da;\n  t.afii57675 = 0x05db;\n  t.afii57676 = 0x05dc;\n  t.afii57677 = 0x05dd;\n  t.afii57678 = 0x05de;\n  t.afii57679 = 0x05df;\n  t.afii57680 = 0x05e0;\n  t.afii57681 = 0x05e1;\n  t.afii57682 = 0x05e2;\n  t.afii57683 = 0x05e3;\n  t.afii57684 = 0x05e4;\n  t.afii57685 = 0x05e5;\n  t.afii57686 = 0x05e6;\n  t.afii57687 = 0x05e7;\n  t.afii57688 = 0x05e8;\n  t.afii57689 = 0x05e9;\n  t.afii57690 = 0x05ea;\n  t.afii57694 = 0xfb2a;\n  t.afii57695 = 0xfb2b;\n  t.afii57700 = 0xfb4b;\n  t.afii57705 = 0xfb1f;\n  t.afii57716 = 0x05f0;\n  t.afii57717 = 0x05f1;\n  t.afii57718 = 0x05f2;\n  t.afii57723 = 0xfb35;\n  t.afii57793 = 0x05b4;\n  t.afii57794 = 0x05b5;\n  t.afii57795 = 0x05b6;\n  t.afii57796 = 0x05bb;\n  t.afii57797 = 0x05b8;\n  t.afii57798 = 0x05b7;\n  t.afii57799 = 0x05b0;\n  t.afii57800 = 0x05b2;\n  t.afii57801 = 0x05b1;\n  t.afii57802 = 0x05b3;\n  t.afii57803 = 0x05c2;\n  t.afii57804 = 0x05c1;\n  t.afii57806 = 0x05b9;\n  t.afii57807 = 0x05bc;\n  t.afii57839 = 0x05bd;\n  t.afii57841 = 0x05bf;\n  t.afii57842 = 0x05c0;\n  t.afii57929 = 0x02bc;\n  t.afii61248 = 0x2105;\n  t.afii61289 = 0x2113;\n  t.afii61352 = 0x2116;\n  t.afii61573 = 0x202c;\n  t.afii61574 = 0x202d;\n  t.afii61575 = 0x202e;\n  t.afii61664 = 0x200c;\n  t.afii63167 = 0x066d;\n  t.afii64937 = 0x02bd;\n  t.agrave = 0x00e0;\n  t.agujarati = 0x0a85;\n  t.agurmukhi = 0x0a05;\n  t.ahiragana = 0x3042;\n  t.ahookabove = 0x1ea3;\n  t.aibengali = 0x0990;\n  t.aibopomofo = 0x311e;\n  t.aideva = 0x0910;\n  t.aiecyrillic = 0x04d5;\n  t.aigujarati = 0x0a90;\n  t.aigurmukhi = 0x0a10;\n  t.aimatragurmukhi = 0x0a48;\n  t.ainarabic = 0x0639;\n  t.ainfinalarabic = 0xfeca;\n  t.aininitialarabic = 0xfecb;\n  t.ainmedialarabic = 0xfecc;\n  t.ainvertedbreve = 0x0203;\n  t.aivowelsignbengali = 0x09c8;\n  t.aivowelsigndeva = 0x0948;\n  t.aivowelsigngujarati = 0x0ac8;\n  t.akatakana = 0x30a2;\n  t.akatakanahalfwidth = 0xff71;\n  t.akorean = 0x314f;\n  t.alef = 0x05d0;\n  t.alefarabic = 0x0627;\n  t.alefdageshhebrew = 0xfb30;\n  t.aleffinalarabic = 0xfe8e;\n  t.alefhamzaabovearabic = 0x0623;\n  t.alefhamzaabovefinalarabic = 0xfe84;\n  t.alefhamzabelowarabic = 0x0625;\n  t.alefhamzabelowfinalarabic = 0xfe88;\n  t.alefhebrew = 0x05d0;\n  t.aleflamedhebrew = 0xfb4f;\n  t.alefmaddaabovearabic = 0x0622;\n  t.alefmaddaabovefinalarabic = 0xfe82;\n  t.alefmaksuraarabic = 0x0649;\n  t.alefmaksurafinalarabic = 0xfef0;\n  t.alefmaksurainitialarabic = 0xfef3;\n  t.alefmaksuramedialarabic = 0xfef4;\n  t.alefpatahhebrew = 0xfb2e;\n  t.alefqamatshebrew = 0xfb2f;\n  t.aleph = 0x2135;\n  t.allequal = 0x224c;\n  t.alpha = 0x03b1;\n  t.alphatonos = 0x03ac;\n  t.amacron = 0x0101;\n  t.amonospace = 0xff41;\n  t.ampersand = 0x0026;\n  t.ampersandmonospace = 0xff06;\n  t.ampersandsmall = 0xf726;\n  t.amsquare = 0x33c2;\n  t.anbopomofo = 0x3122;\n  t.angbopomofo = 0x3124;\n  t.angbracketleft = 0x3008;\n  t.angbracketright = 0x3009;\n  t.angkhankhuthai = 0x0e5a;\n  t.angle = 0x2220;\n  t.anglebracketleft = 0x3008;\n  t.anglebracketleftvertical = 0xfe3f;\n  t.anglebracketright = 0x3009;\n  t.anglebracketrightvertical = 0xfe40;\n  t.angleleft = 0x2329;\n  t.angleright = 0x232a;\n  t.angstrom = 0x212b;\n  t.anoteleia = 0x0387;\n  t.anudattadeva = 0x0952;\n  t.anusvarabengali = 0x0982;\n  t.anusvaradeva = 0x0902;\n  t.anusvaragujarati = 0x0a82;\n  t.aogonek = 0x0105;\n  t.apaatosquare = 0x3300;\n  t.aparen = 0x249c;\n  t.apostrophearmenian = 0x055a;\n  t.apostrophemod = 0x02bc;\n  t.apple = 0xf8ff;\n  t.approaches = 0x2250;\n  t.approxequal = 0x2248;\n  t.approxequalorimage = 0x2252;\n  t.approximatelyequal = 0x2245;\n  t.araeaekorean = 0x318e;\n  t.araeakorean = 0x318d;\n  t.arc = 0x2312;\n  t.arighthalfring = 0x1e9a;\n  t.aring = 0x00e5;\n  t.aringacute = 0x01fb;\n  t.aringbelow = 0x1e01;\n  t.arrowboth = 0x2194;\n  t.arrowdashdown = 0x21e3;\n  t.arrowdashleft = 0x21e0;\n  t.arrowdashright = 0x21e2;\n  t.arrowdashup = 0x21e1;\n  t.arrowdblboth = 0x21d4;\n  t.arrowdbldown = 0x21d3;\n  t.arrowdblleft = 0x21d0;\n  t.arrowdblright = 0x21d2;\n  t.arrowdblup = 0x21d1;\n  t.arrowdown = 0x2193;\n  t.arrowdownleft = 0x2199;\n  t.arrowdownright = 0x2198;\n  t.arrowdownwhite = 0x21e9;\n  t.arrowheaddownmod = 0x02c5;\n  t.arrowheadleftmod = 0x02c2;\n  t.arrowheadrightmod = 0x02c3;\n  t.arrowheadupmod = 0x02c4;\n  t.arrowhorizex = 0xf8e7;\n  t.arrowleft = 0x2190;\n  t.arrowleftdbl = 0x21d0;\n  t.arrowleftdblstroke = 0x21cd;\n  t.arrowleftoverright = 0x21c6;\n  t.arrowleftwhite = 0x21e6;\n  t.arrowright = 0x2192;\n  t.arrowrightdblstroke = 0x21cf;\n  t.arrowrightheavy = 0x279e;\n  t.arrowrightoverleft = 0x21c4;\n  t.arrowrightwhite = 0x21e8;\n  t.arrowtableft = 0x21e4;\n  t.arrowtabright = 0x21e5;\n  t.arrowup = 0x2191;\n  t.arrowupdn = 0x2195;\n  t.arrowupdnbse = 0x21a8;\n  t.arrowupdownbase = 0x21a8;\n  t.arrowupleft = 0x2196;\n  t.arrowupleftofdown = 0x21c5;\n  t.arrowupright = 0x2197;\n  t.arrowupwhite = 0x21e7;\n  t.arrowvertex = 0xf8e6;\n  t.asciicircum = 0x005e;\n  t.asciicircummonospace = 0xff3e;\n  t.asciitilde = 0x007e;\n  t.asciitildemonospace = 0xff5e;\n  t.ascript = 0x0251;\n  t.ascriptturned = 0x0252;\n  t.asmallhiragana = 0x3041;\n  t.asmallkatakana = 0x30a1;\n  t.asmallkatakanahalfwidth = 0xff67;\n  t.asterisk = 0x002a;\n  t.asteriskaltonearabic = 0x066d;\n  t.asteriskarabic = 0x066d;\n  t.asteriskmath = 0x2217;\n  t.asteriskmonospace = 0xff0a;\n  t.asterisksmall = 0xfe61;\n  t.asterism = 0x2042;\n  t.asuperior = 0xf6e9;\n  t.asymptoticallyequal = 0x2243;\n  t.at = 0x0040;\n  t.atilde = 0x00e3;\n  t.atmonospace = 0xff20;\n  t.atsmall = 0xfe6b;\n  t.aturned = 0x0250;\n  t.aubengali = 0x0994;\n  t.aubopomofo = 0x3120;\n  t.audeva = 0x0914;\n  t.augujarati = 0x0a94;\n  t.augurmukhi = 0x0a14;\n  t.aulengthmarkbengali = 0x09d7;\n  t.aumatragurmukhi = 0x0a4c;\n  t.auvowelsignbengali = 0x09cc;\n  t.auvowelsigndeva = 0x094c;\n  t.auvowelsigngujarati = 0x0acc;\n  t.avagrahadeva = 0x093d;\n  t.aybarmenian = 0x0561;\n  t.ayin = 0x05e2;\n  t.ayinaltonehebrew = 0xfb20;\n  t.ayinhebrew = 0x05e2;\n  t.b = 0x0062;\n  t.babengali = 0x09ac;\n  t.backslash = 0x005c;\n  t.backslashmonospace = 0xff3c;\n  t.badeva = 0x092c;\n  t.bagujarati = 0x0aac;\n  t.bagurmukhi = 0x0a2c;\n  t.bahiragana = 0x3070;\n  t.bahtthai = 0x0e3f;\n  t.bakatakana = 0x30d0;\n  t.bar = 0x007c;\n  t.barmonospace = 0xff5c;\n  t.bbopomofo = 0x3105;\n  t.bcircle = 0x24d1;\n  t.bdotaccent = 0x1e03;\n  t.bdotbelow = 0x1e05;\n  t.beamedsixteenthnotes = 0x266c;\n  t.because = 0x2235;\n  t.becyrillic = 0x0431;\n  t.beharabic = 0x0628;\n  t.behfinalarabic = 0xfe90;\n  t.behinitialarabic = 0xfe91;\n  t.behiragana = 0x3079;\n  t.behmedialarabic = 0xfe92;\n  t.behmeeminitialarabic = 0xfc9f;\n  t.behmeemisolatedarabic = 0xfc08;\n  t.behnoonfinalarabic = 0xfc6d;\n  t.bekatakana = 0x30d9;\n  t.benarmenian = 0x0562;\n  t.bet = 0x05d1;\n  t.beta = 0x03b2;\n  t.betasymbolgreek = 0x03d0;\n  t.betdagesh = 0xfb31;\n  t.betdageshhebrew = 0xfb31;\n  t.bethebrew = 0x05d1;\n  t.betrafehebrew = 0xfb4c;\n  t.bhabengali = 0x09ad;\n  t.bhadeva = 0x092d;\n  t.bhagujarati = 0x0aad;\n  t.bhagurmukhi = 0x0a2d;\n  t.bhook = 0x0253;\n  t.bihiragana = 0x3073;\n  t.bikatakana = 0x30d3;\n  t.bilabialclick = 0x0298;\n  t.bindigurmukhi = 0x0a02;\n  t.birusquare = 0x3331;\n  t.blackcircle = 0x25cf;\n  t.blackdiamond = 0x25c6;\n  t.blackdownpointingtriangle = 0x25bc;\n  t.blackleftpointingpointer = 0x25c4;\n  t.blackleftpointingtriangle = 0x25c0;\n  t.blacklenticularbracketleft = 0x3010;\n  t.blacklenticularbracketleftvertical = 0xfe3b;\n  t.blacklenticularbracketright = 0x3011;\n  t.blacklenticularbracketrightvertical = 0xfe3c;\n  t.blacklowerlefttriangle = 0x25e3;\n  t.blacklowerrighttriangle = 0x25e2;\n  t.blackrectangle = 0x25ac;\n  t.blackrightpointingpointer = 0x25ba;\n  t.blackrightpointingtriangle = 0x25b6;\n  t.blacksmallsquare = 0x25aa;\n  t.blacksmilingface = 0x263b;\n  t.blacksquare = 0x25a0;\n  t.blackstar = 0x2605;\n  t.blackupperlefttriangle = 0x25e4;\n  t.blackupperrighttriangle = 0x25e5;\n  t.blackuppointingsmalltriangle = 0x25b4;\n  t.blackuppointingtriangle = 0x25b2;\n  t.blank = 0x2423;\n  t.blinebelow = 0x1e07;\n  t.block = 0x2588;\n  t.bmonospace = 0xff42;\n  t.bobaimaithai = 0x0e1a;\n  t.bohiragana = 0x307c;\n  t.bokatakana = 0x30dc;\n  t.bparen = 0x249d;\n  t.bqsquare = 0x33c3;\n  t.braceex = 0xf8f4;\n  t.braceleft = 0x007b;\n  t.braceleftbt = 0xf8f3;\n  t.braceleftmid = 0xf8f2;\n  t.braceleftmonospace = 0xff5b;\n  t.braceleftsmall = 0xfe5b;\n  t.bracelefttp = 0xf8f1;\n  t.braceleftvertical = 0xfe37;\n  t.braceright = 0x007d;\n  t.bracerightbt = 0xf8fe;\n  t.bracerightmid = 0xf8fd;\n  t.bracerightmonospace = 0xff5d;\n  t.bracerightsmall = 0xfe5c;\n  t.bracerighttp = 0xf8fc;\n  t.bracerightvertical = 0xfe38;\n  t.bracketleft = 0x005b;\n  t.bracketleftbt = 0xf8f0;\n  t.bracketleftex = 0xf8ef;\n  t.bracketleftmonospace = 0xff3b;\n  t.bracketlefttp = 0xf8ee;\n  t.bracketright = 0x005d;\n  t.bracketrightbt = 0xf8fb;\n  t.bracketrightex = 0xf8fa;\n  t.bracketrightmonospace = 0xff3d;\n  t.bracketrighttp = 0xf8f9;\n  t.breve = 0x02d8;\n  t.brevebelowcmb = 0x032e;\n  t.brevecmb = 0x0306;\n  t.breveinvertedbelowcmb = 0x032f;\n  t.breveinvertedcmb = 0x0311;\n  t.breveinverteddoublecmb = 0x0361;\n  t.bridgebelowcmb = 0x032a;\n  t.bridgeinvertedbelowcmb = 0x033a;\n  t.brokenbar = 0x00a6;\n  t.bstroke = 0x0180;\n  t.bsuperior = 0xf6ea;\n  t.btopbar = 0x0183;\n  t.buhiragana = 0x3076;\n  t.bukatakana = 0x30d6;\n  t.bullet = 0x2022;\n  t.bulletinverse = 0x25d8;\n  t.bulletoperator = 0x2219;\n  t.bullseye = 0x25ce;\n  t.c = 0x0063;\n  t.caarmenian = 0x056e;\n  t.cabengali = 0x099a;\n  t.cacute = 0x0107;\n  t.cadeva = 0x091a;\n  t.cagujarati = 0x0a9a;\n  t.cagurmukhi = 0x0a1a;\n  t.calsquare = 0x3388;\n  t.candrabindubengali = 0x0981;\n  t.candrabinducmb = 0x0310;\n  t.candrabindudeva = 0x0901;\n  t.candrabindugujarati = 0x0a81;\n  t.capslock = 0x21ea;\n  t.careof = 0x2105;\n  t.caron = 0x02c7;\n  t.caronbelowcmb = 0x032c;\n  t.caroncmb = 0x030c;\n  t.carriagereturn = 0x21b5;\n  t.cbopomofo = 0x3118;\n  t.ccaron = 0x010d;\n  t.ccedilla = 0x00e7;\n  t.ccedillaacute = 0x1e09;\n  t.ccircle = 0x24d2;\n  t.ccircumflex = 0x0109;\n  t.ccurl = 0x0255;\n  t.cdot = 0x010b;\n  t.cdotaccent = 0x010b;\n  t.cdsquare = 0x33c5;\n  t.cedilla = 0x00b8;\n  t.cedillacmb = 0x0327;\n  t.cent = 0x00a2;\n  t.centigrade = 0x2103;\n  t.centinferior = 0xf6df;\n  t.centmonospace = 0xffe0;\n  t.centoldstyle = 0xf7a2;\n  t.centsuperior = 0xf6e0;\n  t.chaarmenian = 0x0579;\n  t.chabengali = 0x099b;\n  t.chadeva = 0x091b;\n  t.chagujarati = 0x0a9b;\n  t.chagurmukhi = 0x0a1b;\n  t.chbopomofo = 0x3114;\n  t.cheabkhasiancyrillic = 0x04bd;\n  t.checkmark = 0x2713;\n  t.checyrillic = 0x0447;\n  t.chedescenderabkhasiancyrillic = 0x04bf;\n  t.chedescendercyrillic = 0x04b7;\n  t.chedieresiscyrillic = 0x04f5;\n  t.cheharmenian = 0x0573;\n  t.chekhakassiancyrillic = 0x04cc;\n  t.cheverticalstrokecyrillic = 0x04b9;\n  t.chi = 0x03c7;\n  t.chieuchacirclekorean = 0x3277;\n  t.chieuchaparenkorean = 0x3217;\n  t.chieuchcirclekorean = 0x3269;\n  t.chieuchkorean = 0x314a;\n  t.chieuchparenkorean = 0x3209;\n  t.chochangthai = 0x0e0a;\n  t.chochanthai = 0x0e08;\n  t.chochingthai = 0x0e09;\n  t.chochoethai = 0x0e0c;\n  t.chook = 0x0188;\n  t.cieucacirclekorean = 0x3276;\n  t.cieucaparenkorean = 0x3216;\n  t.cieuccirclekorean = 0x3268;\n  t.cieuckorean = 0x3148;\n  t.cieucparenkorean = 0x3208;\n  t.cieucuparenkorean = 0x321c;\n  t.circle = 0x25cb;\n  t.circlecopyrt = 0x00a9;\n  t.circlemultiply = 0x2297;\n  t.circleot = 0x2299;\n  t.circleplus = 0x2295;\n  t.circlepostalmark = 0x3036;\n  t.circlewithlefthalfblack = 0x25d0;\n  t.circlewithrighthalfblack = 0x25d1;\n  t.circumflex = 0x02c6;\n  t.circumflexbelowcmb = 0x032d;\n  t.circumflexcmb = 0x0302;\n  t.clear = 0x2327;\n  t.clickalveolar = 0x01c2;\n  t.clickdental = 0x01c0;\n  t.clicklateral = 0x01c1;\n  t.clickretroflex = 0x01c3;\n  t.club = 0x2663;\n  t.clubsuitblack = 0x2663;\n  t.clubsuitwhite = 0x2667;\n  t.cmcubedsquare = 0x33a4;\n  t.cmonospace = 0xff43;\n  t.cmsquaredsquare = 0x33a0;\n  t.coarmenian = 0x0581;\n  t.colon = 0x003a;\n  t.colonmonetary = 0x20a1;\n  t.colonmonospace = 0xff1a;\n  t.colonsign = 0x20a1;\n  t.colonsmall = 0xfe55;\n  t.colontriangularhalfmod = 0x02d1;\n  t.colontriangularmod = 0x02d0;\n  t.comma = 0x002c;\n  t.commaabovecmb = 0x0313;\n  t.commaaboverightcmb = 0x0315;\n  t.commaaccent = 0xf6c3;\n  t.commaarabic = 0x060c;\n  t.commaarmenian = 0x055d;\n  t.commainferior = 0xf6e1;\n  t.commamonospace = 0xff0c;\n  t.commareversedabovecmb = 0x0314;\n  t.commareversedmod = 0x02bd;\n  t.commasmall = 0xfe50;\n  t.commasuperior = 0xf6e2;\n  t.commaturnedabovecmb = 0x0312;\n  t.commaturnedmod = 0x02bb;\n  t.compass = 0x263c;\n  t.congruent = 0x2245;\n  t.contourintegral = 0x222e;\n  t.control = 0x2303;\n  t.controlACK = 0x0006;\n  t.controlBEL = 0x0007;\n  t.controlBS = 0x0008;\n  t.controlCAN = 0x0018;\n  t.controlCR = 0x000d;\n  t.controlDC1 = 0x0011;\n  t.controlDC2 = 0x0012;\n  t.controlDC3 = 0x0013;\n  t.controlDC4 = 0x0014;\n  t.controlDEL = 0x007f;\n  t.controlDLE = 0x0010;\n  t.controlEM = 0x0019;\n  t.controlENQ = 0x0005;\n  t.controlEOT = 0x0004;\n  t.controlESC = 0x001b;\n  t.controlETB = 0x0017;\n  t.controlETX = 0x0003;\n  t.controlFF = 0x000c;\n  t.controlFS = 0x001c;\n  t.controlGS = 0x001d;\n  t.controlHT = 0x0009;\n  t.controlLF = 0x000a;\n  t.controlNAK = 0x0015;\n  t.controlNULL = 0x0000;\n  t.controlRS = 0x001e;\n  t.controlSI = 0x000f;\n  t.controlSO = 0x000e;\n  t.controlSOT = 0x0002;\n  t.controlSTX = 0x0001;\n  t.controlSUB = 0x001a;\n  t.controlSYN = 0x0016;\n  t.controlUS = 0x001f;\n  t.controlVT = 0x000b;\n  t.copyright = 0x00a9;\n  t.copyrightsans = 0xf8e9;\n  t.copyrightserif = 0xf6d9;\n  t.cornerbracketleft = 0x300c;\n  t.cornerbracketlefthalfwidth = 0xff62;\n  t.cornerbracketleftvertical = 0xfe41;\n  t.cornerbracketright = 0x300d;\n  t.cornerbracketrighthalfwidth = 0xff63;\n  t.cornerbracketrightvertical = 0xfe42;\n  t.corporationsquare = 0x337f;\n  t.cosquare = 0x33c7;\n  t.coverkgsquare = 0x33c6;\n  t.cparen = 0x249e;\n  t.cruzeiro = 0x20a2;\n  t.cstretched = 0x0297;\n  t.curlyand = 0x22cf;\n  t.curlyor = 0x22ce;\n  t.currency = 0x00a4;\n  t.cyrBreve = 0xf6d1;\n  t.cyrFlex = 0xf6d2;\n  t.cyrbreve = 0xf6d4;\n  t.cyrflex = 0xf6d5;\n  t.d = 0x0064;\n  t.daarmenian = 0x0564;\n  t.dabengali = 0x09a6;\n  t.dadarabic = 0x0636;\n  t.dadeva = 0x0926;\n  t.dadfinalarabic = 0xfebe;\n  t.dadinitialarabic = 0xfebf;\n  t.dadmedialarabic = 0xfec0;\n  t.dagesh = 0x05bc;\n  t.dageshhebrew = 0x05bc;\n  t.dagger = 0x2020;\n  t.daggerdbl = 0x2021;\n  t.dagujarati = 0x0aa6;\n  t.dagurmukhi = 0x0a26;\n  t.dahiragana = 0x3060;\n  t.dakatakana = 0x30c0;\n  t.dalarabic = 0x062f;\n  t.dalet = 0x05d3;\n  t.daletdagesh = 0xfb33;\n  t.daletdageshhebrew = 0xfb33;\n  t.dalethebrew = 0x05d3;\n  t.dalfinalarabic = 0xfeaa;\n  t.dammaarabic = 0x064f;\n  t.dammalowarabic = 0x064f;\n  t.dammatanaltonearabic = 0x064c;\n  t.dammatanarabic = 0x064c;\n  t.danda = 0x0964;\n  t.dargahebrew = 0x05a7;\n  t.dargalefthebrew = 0x05a7;\n  t.dasiapneumatacyrilliccmb = 0x0485;\n  t.dblGrave = 0xf6d3;\n  t.dblanglebracketleft = 0x300a;\n  t.dblanglebracketleftvertical = 0xfe3d;\n  t.dblanglebracketright = 0x300b;\n  t.dblanglebracketrightvertical = 0xfe3e;\n  t.dblarchinvertedbelowcmb = 0x032b;\n  t.dblarrowleft = 0x21d4;\n  t.dblarrowright = 0x21d2;\n  t.dbldanda = 0x0965;\n  t.dblgrave = 0xf6d6;\n  t.dblgravecmb = 0x030f;\n  t.dblintegral = 0x222c;\n  t.dbllowline = 0x2017;\n  t.dbllowlinecmb = 0x0333;\n  t.dbloverlinecmb = 0x033f;\n  t.dblprimemod = 0x02ba;\n  t.dblverticalbar = 0x2016;\n  t.dblverticallineabovecmb = 0x030e;\n  t.dbopomofo = 0x3109;\n  t.dbsquare = 0x33c8;\n  t.dcaron = 0x010f;\n  t.dcedilla = 0x1e11;\n  t.dcircle = 0x24d3;\n  t.dcircumflexbelow = 0x1e13;\n  t.dcroat = 0x0111;\n  t.ddabengali = 0x09a1;\n  t.ddadeva = 0x0921;\n  t.ddagujarati = 0x0aa1;\n  t.ddagurmukhi = 0x0a21;\n  t.ddalarabic = 0x0688;\n  t.ddalfinalarabic = 0xfb89;\n  t.dddhadeva = 0x095c;\n  t.ddhabengali = 0x09a2;\n  t.ddhadeva = 0x0922;\n  t.ddhagujarati = 0x0aa2;\n  t.ddhagurmukhi = 0x0a22;\n  t.ddotaccent = 0x1e0b;\n  t.ddotbelow = 0x1e0d;\n  t.decimalseparatorarabic = 0x066b;\n  t.decimalseparatorpersian = 0x066b;\n  t.decyrillic = 0x0434;\n  t.degree = 0x00b0;\n  t.dehihebrew = 0x05ad;\n  t.dehiragana = 0x3067;\n  t.deicoptic = 0x03ef;\n  t.dekatakana = 0x30c7;\n  t.deleteleft = 0x232b;\n  t.deleteright = 0x2326;\n  t.delta = 0x03b4;\n  t.deltaturned = 0x018d;\n  t.denominatorminusonenumeratorbengali = 0x09f8;\n  t.dezh = 0x02a4;\n  t.dhabengali = 0x09a7;\n  t.dhadeva = 0x0927;\n  t.dhagujarati = 0x0aa7;\n  t.dhagurmukhi = 0x0a27;\n  t.dhook = 0x0257;\n  t.dialytikatonos = 0x0385;\n  t.dialytikatonoscmb = 0x0344;\n  t.diamond = 0x2666;\n  t.diamondsuitwhite = 0x2662;\n  t.dieresis = 0x00a8;\n  t.dieresisacute = 0xf6d7;\n  t.dieresisbelowcmb = 0x0324;\n  t.dieresiscmb = 0x0308;\n  t.dieresisgrave = 0xf6d8;\n  t.dieresistonos = 0x0385;\n  t.dihiragana = 0x3062;\n  t.dikatakana = 0x30c2;\n  t.dittomark = 0x3003;\n  t.divide = 0x00f7;\n  t.divides = 0x2223;\n  t.divisionslash = 0x2215;\n  t.djecyrillic = 0x0452;\n  t.dkshade = 0x2593;\n  t.dlinebelow = 0x1e0f;\n  t.dlsquare = 0x3397;\n  t.dmacron = 0x0111;\n  t.dmonospace = 0xff44;\n  t.dnblock = 0x2584;\n  t.dochadathai = 0x0e0e;\n  t.dodekthai = 0x0e14;\n  t.dohiragana = 0x3069;\n  t.dokatakana = 0x30c9;\n  t.dollar = 0x0024;\n  t.dollarinferior = 0xf6e3;\n  t.dollarmonospace = 0xff04;\n  t.dollaroldstyle = 0xf724;\n  t.dollarsmall = 0xfe69;\n  t.dollarsuperior = 0xf6e4;\n  t.dong = 0x20ab;\n  t.dorusquare = 0x3326;\n  t.dotaccent = 0x02d9;\n  t.dotaccentcmb = 0x0307;\n  t.dotbelowcmb = 0x0323;\n  t.dotbelowcomb = 0x0323;\n  t.dotkatakana = 0x30fb;\n  t.dotlessi = 0x0131;\n  t.dotlessj = 0xf6be;\n  t.dotlessjstrokehook = 0x0284;\n  t.dotmath = 0x22c5;\n  t.dottedcircle = 0x25cc;\n  t.doubleyodpatah = 0xfb1f;\n  t.doubleyodpatahhebrew = 0xfb1f;\n  t.downtackbelowcmb = 0x031e;\n  t.downtackmod = 0x02d5;\n  t.dparen = 0x249f;\n  t.dsuperior = 0xf6eb;\n  t.dtail = 0x0256;\n  t.dtopbar = 0x018c;\n  t.duhiragana = 0x3065;\n  t.dukatakana = 0x30c5;\n  t.dz = 0x01f3;\n  t.dzaltone = 0x02a3;\n  t.dzcaron = 0x01c6;\n  t.dzcurl = 0x02a5;\n  t.dzeabkhasiancyrillic = 0x04e1;\n  t.dzecyrillic = 0x0455;\n  t.dzhecyrillic = 0x045f;\n  t.e = 0x0065;\n  t.eacute = 0x00e9;\n  t.earth = 0x2641;\n  t.ebengali = 0x098f;\n  t.ebopomofo = 0x311c;\n  t.ebreve = 0x0115;\n  t.ecandradeva = 0x090d;\n  t.ecandragujarati = 0x0a8d;\n  t.ecandravowelsigndeva = 0x0945;\n  t.ecandravowelsigngujarati = 0x0ac5;\n  t.ecaron = 0x011b;\n  t.ecedillabreve = 0x1e1d;\n  t.echarmenian = 0x0565;\n  t.echyiwnarmenian = 0x0587;\n  t.ecircle = 0x24d4;\n  t.ecircumflex = 0x00ea;\n  t.ecircumflexacute = 0x1ebf;\n  t.ecircumflexbelow = 0x1e19;\n  t.ecircumflexdotbelow = 0x1ec7;\n  t.ecircumflexgrave = 0x1ec1;\n  t.ecircumflexhookabove = 0x1ec3;\n  t.ecircumflextilde = 0x1ec5;\n  t.ecyrillic = 0x0454;\n  t.edblgrave = 0x0205;\n  t.edeva = 0x090f;\n  t.edieresis = 0x00eb;\n  t.edot = 0x0117;\n  t.edotaccent = 0x0117;\n  t.edotbelow = 0x1eb9;\n  t.eegurmukhi = 0x0a0f;\n  t.eematragurmukhi = 0x0a47;\n  t.efcyrillic = 0x0444;\n  t.egrave = 0x00e8;\n  t.egujarati = 0x0a8f;\n  t.eharmenian = 0x0567;\n  t.ehbopomofo = 0x311d;\n  t.ehiragana = 0x3048;\n  t.ehookabove = 0x1ebb;\n  t.eibopomofo = 0x311f;\n  t.eight = 0x0038;\n  t.eightarabic = 0x0668;\n  t.eightbengali = 0x09ee;\n  t.eightcircle = 0x2467;\n  t.eightcircleinversesansserif = 0x2791;\n  t.eightdeva = 0x096e;\n  t.eighteencircle = 0x2471;\n  t.eighteenparen = 0x2485;\n  t.eighteenperiod = 0x2499;\n  t.eightgujarati = 0x0aee;\n  t.eightgurmukhi = 0x0a6e;\n  t.eighthackarabic = 0x0668;\n  t.eighthangzhou = 0x3028;\n  t.eighthnotebeamed = 0x266b;\n  t.eightideographicparen = 0x3227;\n  t.eightinferior = 0x2088;\n  t.eightmonospace = 0xff18;\n  t.eightoldstyle = 0xf738;\n  t.eightparen = 0x247b;\n  t.eightperiod = 0x248f;\n  t.eightpersian = 0x06f8;\n  t.eightroman = 0x2177;\n  t.eightsuperior = 0x2078;\n  t.eightthai = 0x0e58;\n  t.einvertedbreve = 0x0207;\n  t.eiotifiedcyrillic = 0x0465;\n  t.ekatakana = 0x30a8;\n  t.ekatakanahalfwidth = 0xff74;\n  t.ekonkargurmukhi = 0x0a74;\n  t.ekorean = 0x3154;\n  t.elcyrillic = 0x043b;\n  t.element = 0x2208;\n  t.elevencircle = 0x246a;\n  t.elevenparen = 0x247e;\n  t.elevenperiod = 0x2492;\n  t.elevenroman = 0x217a;\n  t.ellipsis = 0x2026;\n  t.ellipsisvertical = 0x22ee;\n  t.emacron = 0x0113;\n  t.emacronacute = 0x1e17;\n  t.emacrongrave = 0x1e15;\n  t.emcyrillic = 0x043c;\n  t.emdash = 0x2014;\n  t.emdashvertical = 0xfe31;\n  t.emonospace = 0xff45;\n  t.emphasismarkarmenian = 0x055b;\n  t.emptyset = 0x2205;\n  t.enbopomofo = 0x3123;\n  t.encyrillic = 0x043d;\n  t.endash = 0x2013;\n  t.endashvertical = 0xfe32;\n  t.endescendercyrillic = 0x04a3;\n  t.eng = 0x014b;\n  t.engbopomofo = 0x3125;\n  t.enghecyrillic = 0x04a5;\n  t.enhookcyrillic = 0x04c8;\n  t.enspace = 0x2002;\n  t.eogonek = 0x0119;\n  t.eokorean = 0x3153;\n  t.eopen = 0x025b;\n  t.eopenclosed = 0x029a;\n  t.eopenreversed = 0x025c;\n  t.eopenreversedclosed = 0x025e;\n  t.eopenreversedhook = 0x025d;\n  t.eparen = 0x24a0;\n  t.epsilon = 0x03b5;\n  t.epsilontonos = 0x03ad;\n  t.equal = 0x003d;\n  t.equalmonospace = 0xff1d;\n  t.equalsmall = 0xfe66;\n  t.equalsuperior = 0x207c;\n  t.equivalence = 0x2261;\n  t.erbopomofo = 0x3126;\n  t.ercyrillic = 0x0440;\n  t.ereversed = 0x0258;\n  t.ereversedcyrillic = 0x044d;\n  t.escyrillic = 0x0441;\n  t.esdescendercyrillic = 0x04ab;\n  t.esh = 0x0283;\n  t.eshcurl = 0x0286;\n  t.eshortdeva = 0x090e;\n  t.eshortvowelsigndeva = 0x0946;\n  t.eshreversedloop = 0x01aa;\n  t.eshsquatreversed = 0x0285;\n  t.esmallhiragana = 0x3047;\n  t.esmallkatakana = 0x30a7;\n  t.esmallkatakanahalfwidth = 0xff6a;\n  t.estimated = 0x212e;\n  t.esuperior = 0xf6ec;\n  t.eta = 0x03b7;\n  t.etarmenian = 0x0568;\n  t.etatonos = 0x03ae;\n  t.eth = 0x00f0;\n  t.etilde = 0x1ebd;\n  t.etildebelow = 0x1e1b;\n  t.etnahtafoukhhebrew = 0x0591;\n  t.etnahtafoukhlefthebrew = 0x0591;\n  t.etnahtahebrew = 0x0591;\n  t.etnahtalefthebrew = 0x0591;\n  t.eturned = 0x01dd;\n  t.eukorean = 0x3161;\n  t.euro = 0x20ac;\n  t.evowelsignbengali = 0x09c7;\n  t.evowelsigndeva = 0x0947;\n  t.evowelsigngujarati = 0x0ac7;\n  t.exclam = 0x0021;\n  t.exclamarmenian = 0x055c;\n  t.exclamdbl = 0x203c;\n  t.exclamdown = 0x00a1;\n  t.exclamdownsmall = 0xf7a1;\n  t.exclammonospace = 0xff01;\n  t.exclamsmall = 0xf721;\n  t.existential = 0x2203;\n  t.ezh = 0x0292;\n  t.ezhcaron = 0x01ef;\n  t.ezhcurl = 0x0293;\n  t.ezhreversed = 0x01b9;\n  t.ezhtail = 0x01ba;\n  t.f = 0x0066;\n  t.fadeva = 0x095e;\n  t.fagurmukhi = 0x0a5e;\n  t.fahrenheit = 0x2109;\n  t.fathaarabic = 0x064e;\n  t.fathalowarabic = 0x064e;\n  t.fathatanarabic = 0x064b;\n  t.fbopomofo = 0x3108;\n  t.fcircle = 0x24d5;\n  t.fdotaccent = 0x1e1f;\n  t.feharabic = 0x0641;\n  t.feharmenian = 0x0586;\n  t.fehfinalarabic = 0xfed2;\n  t.fehinitialarabic = 0xfed3;\n  t.fehmedialarabic = 0xfed4;\n  t.feicoptic = 0x03e5;\n  t.female = 0x2640;\n  t.ff = 0xfb00;\n  t.f_f = 0xfb00;\n  t.ffi = 0xfb03;\n  t.f_f_i = 0xfb03;\n  t.ffl = 0xfb04;\n  t.f_f_l = 0xfb04;\n  t.fi = 0xfb01;\n  t.f_i = 0xfb01;\n  t.fifteencircle = 0x246e;\n  t.fifteenparen = 0x2482;\n  t.fifteenperiod = 0x2496;\n  t.figuredash = 0x2012;\n  t.filledbox = 0x25a0;\n  t.filledrect = 0x25ac;\n  t.finalkaf = 0x05da;\n  t.finalkafdagesh = 0xfb3a;\n  t.finalkafdageshhebrew = 0xfb3a;\n  t.finalkafhebrew = 0x05da;\n  t.finalmem = 0x05dd;\n  t.finalmemhebrew = 0x05dd;\n  t.finalnun = 0x05df;\n  t.finalnunhebrew = 0x05df;\n  t.finalpe = 0x05e3;\n  t.finalpehebrew = 0x05e3;\n  t.finaltsadi = 0x05e5;\n  t.finaltsadihebrew = 0x05e5;\n  t.firsttonechinese = 0x02c9;\n  t.fisheye = 0x25c9;\n  t.fitacyrillic = 0x0473;\n  t.five = 0x0035;\n  t.fivearabic = 0x0665;\n  t.fivebengali = 0x09eb;\n  t.fivecircle = 0x2464;\n  t.fivecircleinversesansserif = 0x278e;\n  t.fivedeva = 0x096b;\n  t.fiveeighths = 0x215d;\n  t.fivegujarati = 0x0aeb;\n  t.fivegurmukhi = 0x0a6b;\n  t.fivehackarabic = 0x0665;\n  t.fivehangzhou = 0x3025;\n  t.fiveideographicparen = 0x3224;\n  t.fiveinferior = 0x2085;\n  t.fivemonospace = 0xff15;\n  t.fiveoldstyle = 0xf735;\n  t.fiveparen = 0x2478;\n  t.fiveperiod = 0x248c;\n  t.fivepersian = 0x06f5;\n  t.fiveroman = 0x2174;\n  t.fivesuperior = 0x2075;\n  t.fivethai = 0x0e55;\n  t.fl = 0xfb02;\n  t.f_l = 0xfb02;\n  t.florin = 0x0192;\n  t.fmonospace = 0xff46;\n  t.fmsquare = 0x3399;\n  t.fofanthai = 0x0e1f;\n  t.fofathai = 0x0e1d;\n  t.fongmanthai = 0x0e4f;\n  t.forall = 0x2200;\n  t.four = 0x0034;\n  t.fourarabic = 0x0664;\n  t.fourbengali = 0x09ea;\n  t.fourcircle = 0x2463;\n  t.fourcircleinversesansserif = 0x278d;\n  t.fourdeva = 0x096a;\n  t.fourgujarati = 0x0aea;\n  t.fourgurmukhi = 0x0a6a;\n  t.fourhackarabic = 0x0664;\n  t.fourhangzhou = 0x3024;\n  t.fourideographicparen = 0x3223;\n  t.fourinferior = 0x2084;\n  t.fourmonospace = 0xff14;\n  t.fournumeratorbengali = 0x09f7;\n  t.fouroldstyle = 0xf734;\n  t.fourparen = 0x2477;\n  t.fourperiod = 0x248b;\n  t.fourpersian = 0x06f4;\n  t.fourroman = 0x2173;\n  t.foursuperior = 0x2074;\n  t.fourteencircle = 0x246d;\n  t.fourteenparen = 0x2481;\n  t.fourteenperiod = 0x2495;\n  t.fourthai = 0x0e54;\n  t.fourthtonechinese = 0x02cb;\n  t.fparen = 0x24a1;\n  t.fraction = 0x2044;\n  t.franc = 0x20a3;\n  t.g = 0x0067;\n  t.gabengali = 0x0997;\n  t.gacute = 0x01f5;\n  t.gadeva = 0x0917;\n  t.gafarabic = 0x06af;\n  t.gaffinalarabic = 0xfb93;\n  t.gafinitialarabic = 0xfb94;\n  t.gafmedialarabic = 0xfb95;\n  t.gagujarati = 0x0a97;\n  t.gagurmukhi = 0x0a17;\n  t.gahiragana = 0x304c;\n  t.gakatakana = 0x30ac;\n  t.gamma = 0x03b3;\n  t.gammalatinsmall = 0x0263;\n  t.gammasuperior = 0x02e0;\n  t.gangiacoptic = 0x03eb;\n  t.gbopomofo = 0x310d;\n  t.gbreve = 0x011f;\n  t.gcaron = 0x01e7;\n  t.gcedilla = 0x0123;\n  t.gcircle = 0x24d6;\n  t.gcircumflex = 0x011d;\n  t.gcommaaccent = 0x0123;\n  t.gdot = 0x0121;\n  t.gdotaccent = 0x0121;\n  t.gecyrillic = 0x0433;\n  t.gehiragana = 0x3052;\n  t.gekatakana = 0x30b2;\n  t.geometricallyequal = 0x2251;\n  t.gereshaccenthebrew = 0x059c;\n  t.gereshhebrew = 0x05f3;\n  t.gereshmuqdamhebrew = 0x059d;\n  t.germandbls = 0x00df;\n  t.gershayimaccenthebrew = 0x059e;\n  t.gershayimhebrew = 0x05f4;\n  t.getamark = 0x3013;\n  t.ghabengali = 0x0998;\n  t.ghadarmenian = 0x0572;\n  t.ghadeva = 0x0918;\n  t.ghagujarati = 0x0a98;\n  t.ghagurmukhi = 0x0a18;\n  t.ghainarabic = 0x063a;\n  t.ghainfinalarabic = 0xfece;\n  t.ghaininitialarabic = 0xfecf;\n  t.ghainmedialarabic = 0xfed0;\n  t.ghemiddlehookcyrillic = 0x0495;\n  t.ghestrokecyrillic = 0x0493;\n  t.gheupturncyrillic = 0x0491;\n  t.ghhadeva = 0x095a;\n  t.ghhagurmukhi = 0x0a5a;\n  t.ghook = 0x0260;\n  t.ghzsquare = 0x3393;\n  t.gihiragana = 0x304e;\n  t.gikatakana = 0x30ae;\n  t.gimarmenian = 0x0563;\n  t.gimel = 0x05d2;\n  t.gimeldagesh = 0xfb32;\n  t.gimeldageshhebrew = 0xfb32;\n  t.gimelhebrew = 0x05d2;\n  t.gjecyrillic = 0x0453;\n  t.glottalinvertedstroke = 0x01be;\n  t.glottalstop = 0x0294;\n  t.glottalstopinverted = 0x0296;\n  t.glottalstopmod = 0x02c0;\n  t.glottalstopreversed = 0x0295;\n  t.glottalstopreversedmod = 0x02c1;\n  t.glottalstopreversedsuperior = 0x02e4;\n  t.glottalstopstroke = 0x02a1;\n  t.glottalstopstrokereversed = 0x02a2;\n  t.gmacron = 0x1e21;\n  t.gmonospace = 0xff47;\n  t.gohiragana = 0x3054;\n  t.gokatakana = 0x30b4;\n  t.gparen = 0x24a2;\n  t.gpasquare = 0x33ac;\n  t.gradient = 0x2207;\n  t.grave = 0x0060;\n  t.gravebelowcmb = 0x0316;\n  t.gravecmb = 0x0300;\n  t.gravecomb = 0x0300;\n  t.gravedeva = 0x0953;\n  t.gravelowmod = 0x02ce;\n  t.gravemonospace = 0xff40;\n  t.gravetonecmb = 0x0340;\n  t.greater = 0x003e;\n  t.greaterequal = 0x2265;\n  t.greaterequalorless = 0x22db;\n  t.greatermonospace = 0xff1e;\n  t.greaterorequivalent = 0x2273;\n  t.greaterorless = 0x2277;\n  t.greateroverequal = 0x2267;\n  t.greatersmall = 0xfe65;\n  t.gscript = 0x0261;\n  t.gstroke = 0x01e5;\n  t.guhiragana = 0x3050;\n  t.guillemotleft = 0x00ab;\n  t.guillemotright = 0x00bb;\n  t.guilsinglleft = 0x2039;\n  t.guilsinglright = 0x203a;\n  t.gukatakana = 0x30b0;\n  t.guramusquare = 0x3318;\n  t.gysquare = 0x33c9;\n  t.h = 0x0068;\n  t.haabkhasiancyrillic = 0x04a9;\n  t.haaltonearabic = 0x06c1;\n  t.habengali = 0x09b9;\n  t.hadescendercyrillic = 0x04b3;\n  t.hadeva = 0x0939;\n  t.hagujarati = 0x0ab9;\n  t.hagurmukhi = 0x0a39;\n  t.haharabic = 0x062d;\n  t.hahfinalarabic = 0xfea2;\n  t.hahinitialarabic = 0xfea3;\n  t.hahiragana = 0x306f;\n  t.hahmedialarabic = 0xfea4;\n  t.haitusquare = 0x332a;\n  t.hakatakana = 0x30cf;\n  t.hakatakanahalfwidth = 0xff8a;\n  t.halantgurmukhi = 0x0a4d;\n  t.hamzaarabic = 0x0621;\n  t.hamzalowarabic = 0x0621;\n  t.hangulfiller = 0x3164;\n  t.hardsigncyrillic = 0x044a;\n  t.harpoonleftbarbup = 0x21bc;\n  t.harpoonrightbarbup = 0x21c0;\n  t.hasquare = 0x33ca;\n  t.hatafpatah = 0x05b2;\n  t.hatafpatah16 = 0x05b2;\n  t.hatafpatah23 = 0x05b2;\n  t.hatafpatah2f = 0x05b2;\n  t.hatafpatahhebrew = 0x05b2;\n  t.hatafpatahnarrowhebrew = 0x05b2;\n  t.hatafpatahquarterhebrew = 0x05b2;\n  t.hatafpatahwidehebrew = 0x05b2;\n  t.hatafqamats = 0x05b3;\n  t.hatafqamats1b = 0x05b3;\n  t.hatafqamats28 = 0x05b3;\n  t.hatafqamats34 = 0x05b3;\n  t.hatafqamatshebrew = 0x05b3;\n  t.hatafqamatsnarrowhebrew = 0x05b3;\n  t.hatafqamatsquarterhebrew = 0x05b3;\n  t.hatafqamatswidehebrew = 0x05b3;\n  t.hatafsegol = 0x05b1;\n  t.hatafsegol17 = 0x05b1;\n  t.hatafsegol24 = 0x05b1;\n  t.hatafsegol30 = 0x05b1;\n  t.hatafsegolhebrew = 0x05b1;\n  t.hatafsegolnarrowhebrew = 0x05b1;\n  t.hatafsegolquarterhebrew = 0x05b1;\n  t.hatafsegolwidehebrew = 0x05b1;\n  t.hbar = 0x0127;\n  t.hbopomofo = 0x310f;\n  t.hbrevebelow = 0x1e2b;\n  t.hcedilla = 0x1e29;\n  t.hcircle = 0x24d7;\n  t.hcircumflex = 0x0125;\n  t.hdieresis = 0x1e27;\n  t.hdotaccent = 0x1e23;\n  t.hdotbelow = 0x1e25;\n  t.he = 0x05d4;\n  t.heart = 0x2665;\n  t.heartsuitblack = 0x2665;\n  t.heartsuitwhite = 0x2661;\n  t.hedagesh = 0xfb34;\n  t.hedageshhebrew = 0xfb34;\n  t.hehaltonearabic = 0x06c1;\n  t.heharabic = 0x0647;\n  t.hehebrew = 0x05d4;\n  t.hehfinalaltonearabic = 0xfba7;\n  t.hehfinalalttwoarabic = 0xfeea;\n  t.hehfinalarabic = 0xfeea;\n  t.hehhamzaabovefinalarabic = 0xfba5;\n  t.hehhamzaaboveisolatedarabic = 0xfba4;\n  t.hehinitialaltonearabic = 0xfba8;\n  t.hehinitialarabic = 0xfeeb;\n  t.hehiragana = 0x3078;\n  t.hehmedialaltonearabic = 0xfba9;\n  t.hehmedialarabic = 0xfeec;\n  t.heiseierasquare = 0x337b;\n  t.hekatakana = 0x30d8;\n  t.hekatakanahalfwidth = 0xff8d;\n  t.hekutaarusquare = 0x3336;\n  t.henghook = 0x0267;\n  t.herutusquare = 0x3339;\n  t.het = 0x05d7;\n  t.hethebrew = 0x05d7;\n  t.hhook = 0x0266;\n  t.hhooksuperior = 0x02b1;\n  t.hieuhacirclekorean = 0x327b;\n  t.hieuhaparenkorean = 0x321b;\n  t.hieuhcirclekorean = 0x326d;\n  t.hieuhkorean = 0x314e;\n  t.hieuhparenkorean = 0x320d;\n  t.hihiragana = 0x3072;\n  t.hikatakana = 0x30d2;\n  t.hikatakanahalfwidth = 0xff8b;\n  t.hiriq = 0x05b4;\n  t.hiriq14 = 0x05b4;\n  t.hiriq21 = 0x05b4;\n  t.hiriq2d = 0x05b4;\n  t.hiriqhebrew = 0x05b4;\n  t.hiriqnarrowhebrew = 0x05b4;\n  t.hiriqquarterhebrew = 0x05b4;\n  t.hiriqwidehebrew = 0x05b4;\n  t.hlinebelow = 0x1e96;\n  t.hmonospace = 0xff48;\n  t.hoarmenian = 0x0570;\n  t.hohipthai = 0x0e2b;\n  t.hohiragana = 0x307b;\n  t.hokatakana = 0x30db;\n  t.hokatakanahalfwidth = 0xff8e;\n  t.holam = 0x05b9;\n  t.holam19 = 0x05b9;\n  t.holam26 = 0x05b9;\n  t.holam32 = 0x05b9;\n  t.holamhebrew = 0x05b9;\n  t.holamnarrowhebrew = 0x05b9;\n  t.holamquarterhebrew = 0x05b9;\n  t.holamwidehebrew = 0x05b9;\n  t.honokhukthai = 0x0e2e;\n  t.hookabovecomb = 0x0309;\n  t.hookcmb = 0x0309;\n  t.hookpalatalizedbelowcmb = 0x0321;\n  t.hookretroflexbelowcmb = 0x0322;\n  t.hoonsquare = 0x3342;\n  t.horicoptic = 0x03e9;\n  t.horizontalbar = 0x2015;\n  t.horncmb = 0x031b;\n  t.hotsprings = 0x2668;\n  t.house = 0x2302;\n  t.hparen = 0x24a3;\n  t.hsuperior = 0x02b0;\n  t.hturned = 0x0265;\n  t.huhiragana = 0x3075;\n  t.huiitosquare = 0x3333;\n  t.hukatakana = 0x30d5;\n  t.hukatakanahalfwidth = 0xff8c;\n  t.hungarumlaut = 0x02dd;\n  t.hungarumlautcmb = 0x030b;\n  t.hv = 0x0195;\n  t.hyphen = 0x002d;\n  t.hypheninferior = 0xf6e5;\n  t.hyphenmonospace = 0xff0d;\n  t.hyphensmall = 0xfe63;\n  t.hyphensuperior = 0xf6e6;\n  t.hyphentwo = 0x2010;\n  t.i = 0x0069;\n  t.iacute = 0x00ed;\n  t.iacyrillic = 0x044f;\n  t.ibengali = 0x0987;\n  t.ibopomofo = 0x3127;\n  t.ibreve = 0x012d;\n  t.icaron = 0x01d0;\n  t.icircle = 0x24d8;\n  t.icircumflex = 0x00ee;\n  t.icyrillic = 0x0456;\n  t.idblgrave = 0x0209;\n  t.ideographearthcircle = 0x328f;\n  t.ideographfirecircle = 0x328b;\n  t.ideographicallianceparen = 0x323f;\n  t.ideographiccallparen = 0x323a;\n  t.ideographiccentrecircle = 0x32a5;\n  t.ideographicclose = 0x3006;\n  t.ideographiccomma = 0x3001;\n  t.ideographiccommaleft = 0xff64;\n  t.ideographiccongratulationparen = 0x3237;\n  t.ideographiccorrectcircle = 0x32a3;\n  t.ideographicearthparen = 0x322f;\n  t.ideographicenterpriseparen = 0x323d;\n  t.ideographicexcellentcircle = 0x329d;\n  t.ideographicfestivalparen = 0x3240;\n  t.ideographicfinancialcircle = 0x3296;\n  t.ideographicfinancialparen = 0x3236;\n  t.ideographicfireparen = 0x322b;\n  t.ideographichaveparen = 0x3232;\n  t.ideographichighcircle = 0x32a4;\n  t.ideographiciterationmark = 0x3005;\n  t.ideographiclaborcircle = 0x3298;\n  t.ideographiclaborparen = 0x3238;\n  t.ideographicleftcircle = 0x32a7;\n  t.ideographiclowcircle = 0x32a6;\n  t.ideographicmedicinecircle = 0x32a9;\n  t.ideographicmetalparen = 0x322e;\n  t.ideographicmoonparen = 0x322a;\n  t.ideographicnameparen = 0x3234;\n  t.ideographicperiod = 0x3002;\n  t.ideographicprintcircle = 0x329e;\n  t.ideographicreachparen = 0x3243;\n  t.ideographicrepresentparen = 0x3239;\n  t.ideographicresourceparen = 0x323e;\n  t.ideographicrightcircle = 0x32a8;\n  t.ideographicsecretcircle = 0x3299;\n  t.ideographicselfparen = 0x3242;\n  t.ideographicsocietyparen = 0x3233;\n  t.ideographicspace = 0x3000;\n  t.ideographicspecialparen = 0x3235;\n  t.ideographicstockparen = 0x3231;\n  t.ideographicstudyparen = 0x323b;\n  t.ideographicsunparen = 0x3230;\n  t.ideographicsuperviseparen = 0x323c;\n  t.ideographicwaterparen = 0x322c;\n  t.ideographicwoodparen = 0x322d;\n  t.ideographiczero = 0x3007;\n  t.ideographmetalcircle = 0x328e;\n  t.ideographmooncircle = 0x328a;\n  t.ideographnamecircle = 0x3294;\n  t.ideographsuncircle = 0x3290;\n  t.ideographwatercircle = 0x328c;\n  t.ideographwoodcircle = 0x328d;\n  t.ideva = 0x0907;\n  t.idieresis = 0x00ef;\n  t.idieresisacute = 0x1e2f;\n  t.idieresiscyrillic = 0x04e5;\n  t.idotbelow = 0x1ecb;\n  t.iebrevecyrillic = 0x04d7;\n  t.iecyrillic = 0x0435;\n  t.ieungacirclekorean = 0x3275;\n  t.ieungaparenkorean = 0x3215;\n  t.ieungcirclekorean = 0x3267;\n  t.ieungkorean = 0x3147;\n  t.ieungparenkorean = 0x3207;\n  t.igrave = 0x00ec;\n  t.igujarati = 0x0a87;\n  t.igurmukhi = 0x0a07;\n  t.ihiragana = 0x3044;\n  t.ihookabove = 0x1ec9;\n  t.iibengali = 0x0988;\n  t.iicyrillic = 0x0438;\n  t.iideva = 0x0908;\n  t.iigujarati = 0x0a88;\n  t.iigurmukhi = 0x0a08;\n  t.iimatragurmukhi = 0x0a40;\n  t.iinvertedbreve = 0x020b;\n  t.iishortcyrillic = 0x0439;\n  t.iivowelsignbengali = 0x09c0;\n  t.iivowelsigndeva = 0x0940;\n  t.iivowelsigngujarati = 0x0ac0;\n  t.ij = 0x0133;\n  t.ikatakana = 0x30a4;\n  t.ikatakanahalfwidth = 0xff72;\n  t.ikorean = 0x3163;\n  t.ilde = 0x02dc;\n  t.iluyhebrew = 0x05ac;\n  t.imacron = 0x012b;\n  t.imacroncyrillic = 0x04e3;\n  t.imageorapproximatelyequal = 0x2253;\n  t.imatragurmukhi = 0x0a3f;\n  t.imonospace = 0xff49;\n  t.increment = 0x2206;\n  t.infinity = 0x221e;\n  t.iniarmenian = 0x056b;\n  t.integral = 0x222b;\n  t.integralbottom = 0x2321;\n  t.integralbt = 0x2321;\n  t.integralex = 0xf8f5;\n  t.integraltop = 0x2320;\n  t.integraltp = 0x2320;\n  t.intersection = 0x2229;\n  t.intisquare = 0x3305;\n  t.invbullet = 0x25d8;\n  t.invcircle = 0x25d9;\n  t.invsmileface = 0x263b;\n  t.iocyrillic = 0x0451;\n  t.iogonek = 0x012f;\n  t.iota = 0x03b9;\n  t.iotadieresis = 0x03ca;\n  t.iotadieresistonos = 0x0390;\n  t.iotalatin = 0x0269;\n  t.iotatonos = 0x03af;\n  t.iparen = 0x24a4;\n  t.irigurmukhi = 0x0a72;\n  t.ismallhiragana = 0x3043;\n  t.ismallkatakana = 0x30a3;\n  t.ismallkatakanahalfwidth = 0xff68;\n  t.issharbengali = 0x09fa;\n  t.istroke = 0x0268;\n  t.isuperior = 0xf6ed;\n  t.iterationhiragana = 0x309d;\n  t.iterationkatakana = 0x30fd;\n  t.itilde = 0x0129;\n  t.itildebelow = 0x1e2d;\n  t.iubopomofo = 0x3129;\n  t.iucyrillic = 0x044e;\n  t.ivowelsignbengali = 0x09bf;\n  t.ivowelsigndeva = 0x093f;\n  t.ivowelsigngujarati = 0x0abf;\n  t.izhitsacyrillic = 0x0475;\n  t.izhitsadblgravecyrillic = 0x0477;\n  t.j = 0x006a;\n  t.jaarmenian = 0x0571;\n  t.jabengali = 0x099c;\n  t.jadeva = 0x091c;\n  t.jagujarati = 0x0a9c;\n  t.jagurmukhi = 0x0a1c;\n  t.jbopomofo = 0x3110;\n  t.jcaron = 0x01f0;\n  t.jcircle = 0x24d9;\n  t.jcircumflex = 0x0135;\n  t.jcrossedtail = 0x029d;\n  t.jdotlessstroke = 0x025f;\n  t.jecyrillic = 0x0458;\n  t.jeemarabic = 0x062c;\n  t.jeemfinalarabic = 0xfe9e;\n  t.jeeminitialarabic = 0xfe9f;\n  t.jeemmedialarabic = 0xfea0;\n  t.jeharabic = 0x0698;\n  t.jehfinalarabic = 0xfb8b;\n  t.jhabengali = 0x099d;\n  t.jhadeva = 0x091d;\n  t.jhagujarati = 0x0a9d;\n  t.jhagurmukhi = 0x0a1d;\n  t.jheharmenian = 0x057b;\n  t.jis = 0x3004;\n  t.jmonospace = 0xff4a;\n  t.jparen = 0x24a5;\n  t.jsuperior = 0x02b2;\n  t.k = 0x006b;\n  t.kabashkircyrillic = 0x04a1;\n  t.kabengali = 0x0995;\n  t.kacute = 0x1e31;\n  t.kacyrillic = 0x043a;\n  t.kadescendercyrillic = 0x049b;\n  t.kadeva = 0x0915;\n  t.kaf = 0x05db;\n  t.kafarabic = 0x0643;\n  t.kafdagesh = 0xfb3b;\n  t.kafdageshhebrew = 0xfb3b;\n  t.kaffinalarabic = 0xfeda;\n  t.kafhebrew = 0x05db;\n  t.kafinitialarabic = 0xfedb;\n  t.kafmedialarabic = 0xfedc;\n  t.kafrafehebrew = 0xfb4d;\n  t.kagujarati = 0x0a95;\n  t.kagurmukhi = 0x0a15;\n  t.kahiragana = 0x304b;\n  t.kahookcyrillic = 0x04c4;\n  t.kakatakana = 0x30ab;\n  t.kakatakanahalfwidth = 0xff76;\n  t.kappa = 0x03ba;\n  t.kappasymbolgreek = 0x03f0;\n  t.kapyeounmieumkorean = 0x3171;\n  t.kapyeounphieuphkorean = 0x3184;\n  t.kapyeounpieupkorean = 0x3178;\n  t.kapyeounssangpieupkorean = 0x3179;\n  t.karoriisquare = 0x330d;\n  t.kashidaautoarabic = 0x0640;\n  t.kashidaautonosidebearingarabic = 0x0640;\n  t.kasmallkatakana = 0x30f5;\n  t.kasquare = 0x3384;\n  t.kasraarabic = 0x0650;\n  t.kasratanarabic = 0x064d;\n  t.kastrokecyrillic = 0x049f;\n  t.katahiraprolongmarkhalfwidth = 0xff70;\n  t.kaverticalstrokecyrillic = 0x049d;\n  t.kbopomofo = 0x310e;\n  t.kcalsquare = 0x3389;\n  t.kcaron = 0x01e9;\n  t.kcedilla = 0x0137;\n  t.kcircle = 0x24da;\n  t.kcommaaccent = 0x0137;\n  t.kdotbelow = 0x1e33;\n  t.keharmenian = 0x0584;\n  t.kehiragana = 0x3051;\n  t.kekatakana = 0x30b1;\n  t.kekatakanahalfwidth = 0xff79;\n  t.kenarmenian = 0x056f;\n  t.kesmallkatakana = 0x30f6;\n  t.kgreenlandic = 0x0138;\n  t.khabengali = 0x0996;\n  t.khacyrillic = 0x0445;\n  t.khadeva = 0x0916;\n  t.khagujarati = 0x0a96;\n  t.khagurmukhi = 0x0a16;\n  t.khaharabic = 0x062e;\n  t.khahfinalarabic = 0xfea6;\n  t.khahinitialarabic = 0xfea7;\n  t.khahmedialarabic = 0xfea8;\n  t.kheicoptic = 0x03e7;\n  t.khhadeva = 0x0959;\n  t.khhagurmukhi = 0x0a59;\n  t.khieukhacirclekorean = 0x3278;\n  t.khieukhaparenkorean = 0x3218;\n  t.khieukhcirclekorean = 0x326a;\n  t.khieukhkorean = 0x314b;\n  t.khieukhparenkorean = 0x320a;\n  t.khokhaithai = 0x0e02;\n  t.khokhonthai = 0x0e05;\n  t.khokhuatthai = 0x0e03;\n  t.khokhwaithai = 0x0e04;\n  t.khomutthai = 0x0e5b;\n  t.khook = 0x0199;\n  t.khorakhangthai = 0x0e06;\n  t.khzsquare = 0x3391;\n  t.kihiragana = 0x304d;\n  t.kikatakana = 0x30ad;\n  t.kikatakanahalfwidth = 0xff77;\n  t.kiroguramusquare = 0x3315;\n  t.kiromeetorusquare = 0x3316;\n  t.kirosquare = 0x3314;\n  t.kiyeokacirclekorean = 0x326e;\n  t.kiyeokaparenkorean = 0x320e;\n  t.kiyeokcirclekorean = 0x3260;\n  t.kiyeokkorean = 0x3131;\n  t.kiyeokparenkorean = 0x3200;\n  t.kiyeoksioskorean = 0x3133;\n  t.kjecyrillic = 0x045c;\n  t.klinebelow = 0x1e35;\n  t.klsquare = 0x3398;\n  t.kmcubedsquare = 0x33a6;\n  t.kmonospace = 0xff4b;\n  t.kmsquaredsquare = 0x33a2;\n  t.kohiragana = 0x3053;\n  t.kohmsquare = 0x33c0;\n  t.kokaithai = 0x0e01;\n  t.kokatakana = 0x30b3;\n  t.kokatakanahalfwidth = 0xff7a;\n  t.kooposquare = 0x331e;\n  t.koppacyrillic = 0x0481;\n  t.koreanstandardsymbol = 0x327f;\n  t.koroniscmb = 0x0343;\n  t.kparen = 0x24a6;\n  t.kpasquare = 0x33aa;\n  t.ksicyrillic = 0x046f;\n  t.ktsquare = 0x33cf;\n  t.kturned = 0x029e;\n  t.kuhiragana = 0x304f;\n  t.kukatakana = 0x30af;\n  t.kukatakanahalfwidth = 0xff78;\n  t.kvsquare = 0x33b8;\n  t.kwsquare = 0x33be;\n  t.l = 0x006c;\n  t.labengali = 0x09b2;\n  t.lacute = 0x013a;\n  t.ladeva = 0x0932;\n  t.lagujarati = 0x0ab2;\n  t.lagurmukhi = 0x0a32;\n  t.lakkhangyaothai = 0x0e45;\n  t.lamaleffinalarabic = 0xfefc;\n  t.lamalefhamzaabovefinalarabic = 0xfef8;\n  t.lamalefhamzaaboveisolatedarabic = 0xfef7;\n  t.lamalefhamzabelowfinalarabic = 0xfefa;\n  t.lamalefhamzabelowisolatedarabic = 0xfef9;\n  t.lamalefisolatedarabic = 0xfefb;\n  t.lamalefmaddaabovefinalarabic = 0xfef6;\n  t.lamalefmaddaaboveisolatedarabic = 0xfef5;\n  t.lamarabic = 0x0644;\n  t.lambda = 0x03bb;\n  t.lambdastroke = 0x019b;\n  t.lamed = 0x05dc;\n  t.lameddagesh = 0xfb3c;\n  t.lameddageshhebrew = 0xfb3c;\n  t.lamedhebrew = 0x05dc;\n  t.lamfinalarabic = 0xfede;\n  t.lamhahinitialarabic = 0xfcca;\n  t.laminitialarabic = 0xfedf;\n  t.lamjeeminitialarabic = 0xfcc9;\n  t.lamkhahinitialarabic = 0xfccb;\n  t.lamlamhehisolatedarabic = 0xfdf2;\n  t.lammedialarabic = 0xfee0;\n  t.lammeemhahinitialarabic = 0xfd88;\n  t.lammeeminitialarabic = 0xfccc;\n  t.largecircle = 0x25ef;\n  t.lbar = 0x019a;\n  t.lbelt = 0x026c;\n  t.lbopomofo = 0x310c;\n  t.lcaron = 0x013e;\n  t.lcedilla = 0x013c;\n  t.lcircle = 0x24db;\n  t.lcircumflexbelow = 0x1e3d;\n  t.lcommaaccent = 0x013c;\n  t.ldot = 0x0140;\n  t.ldotaccent = 0x0140;\n  t.ldotbelow = 0x1e37;\n  t.ldotbelowmacron = 0x1e39;\n  t.leftangleabovecmb = 0x031a;\n  t.lefttackbelowcmb = 0x0318;\n  t.less = 0x003c;\n  t.lessequal = 0x2264;\n  t.lessequalorgreater = 0x22da;\n  t.lessmonospace = 0xff1c;\n  t.lessorequivalent = 0x2272;\n  t.lessorgreater = 0x2276;\n  t.lessoverequal = 0x2266;\n  t.lesssmall = 0xfe64;\n  t.lezh = 0x026e;\n  t.lfblock = 0x258c;\n  t.lhookretroflex = 0x026d;\n  t.lira = 0x20a4;\n  t.liwnarmenian = 0x056c;\n  t.lj = 0x01c9;\n  t.ljecyrillic = 0x0459;\n  t.ll = 0xf6c0;\n  t.lladeva = 0x0933;\n  t.llagujarati = 0x0ab3;\n  t.llinebelow = 0x1e3b;\n  t.llladeva = 0x0934;\n  t.llvocalicbengali = 0x09e1;\n  t.llvocalicdeva = 0x0961;\n  t.llvocalicvowelsignbengali = 0x09e3;\n  t.llvocalicvowelsigndeva = 0x0963;\n  t.lmiddletilde = 0x026b;\n  t.lmonospace = 0xff4c;\n  t.lmsquare = 0x33d0;\n  t.lochulathai = 0x0e2c;\n  t.logicaland = 0x2227;\n  t.logicalnot = 0x00ac;\n  t.logicalnotreversed = 0x2310;\n  t.logicalor = 0x2228;\n  t.lolingthai = 0x0e25;\n  t.longs = 0x017f;\n  t.lowlinecenterline = 0xfe4e;\n  t.lowlinecmb = 0x0332;\n  t.lowlinedashed = 0xfe4d;\n  t.lozenge = 0x25ca;\n  t.lparen = 0x24a7;\n  t.lslash = 0x0142;\n  t.lsquare = 0x2113;\n  t.lsuperior = 0xf6ee;\n  t.ltshade = 0x2591;\n  t.luthai = 0x0e26;\n  t.lvocalicbengali = 0x098c;\n  t.lvocalicdeva = 0x090c;\n  t.lvocalicvowelsignbengali = 0x09e2;\n  t.lvocalicvowelsigndeva = 0x0962;\n  t.lxsquare = 0x33d3;\n  t.m = 0x006d;\n  t.mabengali = 0x09ae;\n  t.macron = 0x00af;\n  t.macronbelowcmb = 0x0331;\n  t.macroncmb = 0x0304;\n  t.macronlowmod = 0x02cd;\n  t.macronmonospace = 0xffe3;\n  t.macute = 0x1e3f;\n  t.madeva = 0x092e;\n  t.magujarati = 0x0aae;\n  t.magurmukhi = 0x0a2e;\n  t.mahapakhhebrew = 0x05a4;\n  t.mahapakhlefthebrew = 0x05a4;\n  t.mahiragana = 0x307e;\n  t.maichattawalowleftthai = 0xf895;\n  t.maichattawalowrightthai = 0xf894;\n  t.maichattawathai = 0x0e4b;\n  t.maichattawaupperleftthai = 0xf893;\n  t.maieklowleftthai = 0xf88c;\n  t.maieklowrightthai = 0xf88b;\n  t.maiekthai = 0x0e48;\n  t.maiekupperleftthai = 0xf88a;\n  t.maihanakatleftthai = 0xf884;\n  t.maihanakatthai = 0x0e31;\n  t.maitaikhuleftthai = 0xf889;\n  t.maitaikhuthai = 0x0e47;\n  t.maitholowleftthai = 0xf88f;\n  t.maitholowrightthai = 0xf88e;\n  t.maithothai = 0x0e49;\n  t.maithoupperleftthai = 0xf88d;\n  t.maitrilowleftthai = 0xf892;\n  t.maitrilowrightthai = 0xf891;\n  t.maitrithai = 0x0e4a;\n  t.maitriupperleftthai = 0xf890;\n  t.maiyamokthai = 0x0e46;\n  t.makatakana = 0x30de;\n  t.makatakanahalfwidth = 0xff8f;\n  t.male = 0x2642;\n  t.mansyonsquare = 0x3347;\n  t.maqafhebrew = 0x05be;\n  t.mars = 0x2642;\n  t.masoracirclehebrew = 0x05af;\n  t.masquare = 0x3383;\n  t.mbopomofo = 0x3107;\n  t.mbsquare = 0x33d4;\n  t.mcircle = 0x24dc;\n  t.mcubedsquare = 0x33a5;\n  t.mdotaccent = 0x1e41;\n  t.mdotbelow = 0x1e43;\n  t.meemarabic = 0x0645;\n  t.meemfinalarabic = 0xfee2;\n  t.meeminitialarabic = 0xfee3;\n  t.meemmedialarabic = 0xfee4;\n  t.meemmeeminitialarabic = 0xfcd1;\n  t.meemmeemisolatedarabic = 0xfc48;\n  t.meetorusquare = 0x334d;\n  t.mehiragana = 0x3081;\n  t.meizierasquare = 0x337e;\n  t.mekatakana = 0x30e1;\n  t.mekatakanahalfwidth = 0xff92;\n  t.mem = 0x05de;\n  t.memdagesh = 0xfb3e;\n  t.memdageshhebrew = 0xfb3e;\n  t.memhebrew = 0x05de;\n  t.menarmenian = 0x0574;\n  t.merkhahebrew = 0x05a5;\n  t.merkhakefulahebrew = 0x05a6;\n  t.merkhakefulalefthebrew = 0x05a6;\n  t.merkhalefthebrew = 0x05a5;\n  t.mhook = 0x0271;\n  t.mhzsquare = 0x3392;\n  t.middledotkatakanahalfwidth = 0xff65;\n  t.middot = 0x00b7;\n  t.mieumacirclekorean = 0x3272;\n  t.mieumaparenkorean = 0x3212;\n  t.mieumcirclekorean = 0x3264;\n  t.mieumkorean = 0x3141;\n  t.mieumpansioskorean = 0x3170;\n  t.mieumparenkorean = 0x3204;\n  t.mieumpieupkorean = 0x316e;\n  t.mieumsioskorean = 0x316f;\n  t.mihiragana = 0x307f;\n  t.mikatakana = 0x30df;\n  t.mikatakanahalfwidth = 0xff90;\n  t.minus = 0x2212;\n  t.minusbelowcmb = 0x0320;\n  t.minuscircle = 0x2296;\n  t.minusmod = 0x02d7;\n  t.minusplus = 0x2213;\n  t.minute = 0x2032;\n  t.miribaarusquare = 0x334a;\n  t.mirisquare = 0x3349;\n  t.mlonglegturned = 0x0270;\n  t.mlsquare = 0x3396;\n  t.mmcubedsquare = 0x33a3;\n  t.mmonospace = 0xff4d;\n  t.mmsquaredsquare = 0x339f;\n  t.mohiragana = 0x3082;\n  t.mohmsquare = 0x33c1;\n  t.mokatakana = 0x30e2;\n  t.mokatakanahalfwidth = 0xff93;\n  t.molsquare = 0x33d6;\n  t.momathai = 0x0e21;\n  t.moverssquare = 0x33a7;\n  t.moverssquaredsquare = 0x33a8;\n  t.mparen = 0x24a8;\n  t.mpasquare = 0x33ab;\n  t.mssquare = 0x33b3;\n  t.msuperior = 0xf6ef;\n  t.mturned = 0x026f;\n  t.mu = 0x00b5;\n  t.mu1 = 0x00b5;\n  t.muasquare = 0x3382;\n  t.muchgreater = 0x226b;\n  t.muchless = 0x226a;\n  t.mufsquare = 0x338c;\n  t.mugreek = 0x03bc;\n  t.mugsquare = 0x338d;\n  t.muhiragana = 0x3080;\n  t.mukatakana = 0x30e0;\n  t.mukatakanahalfwidth = 0xff91;\n  t.mulsquare = 0x3395;\n  t.multiply = 0x00d7;\n  t.mumsquare = 0x339b;\n  t.munahhebrew = 0x05a3;\n  t.munahlefthebrew = 0x05a3;\n  t.musicalnote = 0x266a;\n  t.musicalnotedbl = 0x266b;\n  t.musicflatsign = 0x266d;\n  t.musicsharpsign = 0x266f;\n  t.mussquare = 0x33b2;\n  t.muvsquare = 0x33b6;\n  t.muwsquare = 0x33bc;\n  t.mvmegasquare = 0x33b9;\n  t.mvsquare = 0x33b7;\n  t.mwmegasquare = 0x33bf;\n  t.mwsquare = 0x33bd;\n  t.n = 0x006e;\n  t.nabengali = 0x09a8;\n  t.nabla = 0x2207;\n  t.nacute = 0x0144;\n  t.nadeva = 0x0928;\n  t.nagujarati = 0x0aa8;\n  t.nagurmukhi = 0x0a28;\n  t.nahiragana = 0x306a;\n  t.nakatakana = 0x30ca;\n  t.nakatakanahalfwidth = 0xff85;\n  t.napostrophe = 0x0149;\n  t.nasquare = 0x3381;\n  t.nbopomofo = 0x310b;\n  t.nbspace = 0x00a0;\n  t.ncaron = 0x0148;\n  t.ncedilla = 0x0146;\n  t.ncircle = 0x24dd;\n  t.ncircumflexbelow = 0x1e4b;\n  t.ncommaaccent = 0x0146;\n  t.ndotaccent = 0x1e45;\n  t.ndotbelow = 0x1e47;\n  t.nehiragana = 0x306d;\n  t.nekatakana = 0x30cd;\n  t.nekatakanahalfwidth = 0xff88;\n  t.newsheqelsign = 0x20aa;\n  t.nfsquare = 0x338b;\n  t.ngabengali = 0x0999;\n  t.ngadeva = 0x0919;\n  t.ngagujarati = 0x0a99;\n  t.ngagurmukhi = 0x0a19;\n  t.ngonguthai = 0x0e07;\n  t.nhiragana = 0x3093;\n  t.nhookleft = 0x0272;\n  t.nhookretroflex = 0x0273;\n  t.nieunacirclekorean = 0x326f;\n  t.nieunaparenkorean = 0x320f;\n  t.nieuncieuckorean = 0x3135;\n  t.nieuncirclekorean = 0x3261;\n  t.nieunhieuhkorean = 0x3136;\n  t.nieunkorean = 0x3134;\n  t.nieunpansioskorean = 0x3168;\n  t.nieunparenkorean = 0x3201;\n  t.nieunsioskorean = 0x3167;\n  t.nieuntikeutkorean = 0x3166;\n  t.nihiragana = 0x306b;\n  t.nikatakana = 0x30cb;\n  t.nikatakanahalfwidth = 0xff86;\n  t.nikhahitleftthai = 0xf899;\n  t.nikhahitthai = 0x0e4d;\n  t.nine = 0x0039;\n  t.ninearabic = 0x0669;\n  t.ninebengali = 0x09ef;\n  t.ninecircle = 0x2468;\n  t.ninecircleinversesansserif = 0x2792;\n  t.ninedeva = 0x096f;\n  t.ninegujarati = 0x0aef;\n  t.ninegurmukhi = 0x0a6f;\n  t.ninehackarabic = 0x0669;\n  t.ninehangzhou = 0x3029;\n  t.nineideographicparen = 0x3228;\n  t.nineinferior = 0x2089;\n  t.ninemonospace = 0xff19;\n  t.nineoldstyle = 0xf739;\n  t.nineparen = 0x247c;\n  t.nineperiod = 0x2490;\n  t.ninepersian = 0x06f9;\n  t.nineroman = 0x2178;\n  t.ninesuperior = 0x2079;\n  t.nineteencircle = 0x2472;\n  t.nineteenparen = 0x2486;\n  t.nineteenperiod = 0x249a;\n  t.ninethai = 0x0e59;\n  t.nj = 0x01cc;\n  t.njecyrillic = 0x045a;\n  t.nkatakana = 0x30f3;\n  t.nkatakanahalfwidth = 0xff9d;\n  t.nlegrightlong = 0x019e;\n  t.nlinebelow = 0x1e49;\n  t.nmonospace = 0xff4e;\n  t.nmsquare = 0x339a;\n  t.nnabengali = 0x09a3;\n  t.nnadeva = 0x0923;\n  t.nnagujarati = 0x0aa3;\n  t.nnagurmukhi = 0x0a23;\n  t.nnnadeva = 0x0929;\n  t.nohiragana = 0x306e;\n  t.nokatakana = 0x30ce;\n  t.nokatakanahalfwidth = 0xff89;\n  t.nonbreakingspace = 0x00a0;\n  t.nonenthai = 0x0e13;\n  t.nonuthai = 0x0e19;\n  t.noonarabic = 0x0646;\n  t.noonfinalarabic = 0xfee6;\n  t.noonghunnaarabic = 0x06ba;\n  t.noonghunnafinalarabic = 0xfb9f;\n  t.nooninitialarabic = 0xfee7;\n  t.noonjeeminitialarabic = 0xfcd2;\n  t.noonjeemisolatedarabic = 0xfc4b;\n  t.noonmedialarabic = 0xfee8;\n  t.noonmeeminitialarabic = 0xfcd5;\n  t.noonmeemisolatedarabic = 0xfc4e;\n  t.noonnoonfinalarabic = 0xfc8d;\n  t.notcontains = 0x220c;\n  t.notelement = 0x2209;\n  t.notelementof = 0x2209;\n  t.notequal = 0x2260;\n  t.notgreater = 0x226f;\n  t.notgreaternorequal = 0x2271;\n  t.notgreaternorless = 0x2279;\n  t.notidentical = 0x2262;\n  t.notless = 0x226e;\n  t.notlessnorequal = 0x2270;\n  t.notparallel = 0x2226;\n  t.notprecedes = 0x2280;\n  t.notsubset = 0x2284;\n  t.notsucceeds = 0x2281;\n  t.notsuperset = 0x2285;\n  t.nowarmenian = 0x0576;\n  t.nparen = 0x24a9;\n  t.nssquare = 0x33b1;\n  t.nsuperior = 0x207f;\n  t.ntilde = 0x00f1;\n  t.nu = 0x03bd;\n  t.nuhiragana = 0x306c;\n  t.nukatakana = 0x30cc;\n  t.nukatakanahalfwidth = 0xff87;\n  t.nuktabengali = 0x09bc;\n  t.nuktadeva = 0x093c;\n  t.nuktagujarati = 0x0abc;\n  t.nuktagurmukhi = 0x0a3c;\n  t.numbersign = 0x0023;\n  t.numbersignmonospace = 0xff03;\n  t.numbersignsmall = 0xfe5f;\n  t.numeralsigngreek = 0x0374;\n  t.numeralsignlowergreek = 0x0375;\n  t.numero = 0x2116;\n  t.nun = 0x05e0;\n  t.nundagesh = 0xfb40;\n  t.nundageshhebrew = 0xfb40;\n  t.nunhebrew = 0x05e0;\n  t.nvsquare = 0x33b5;\n  t.nwsquare = 0x33bb;\n  t.nyabengali = 0x099e;\n  t.nyadeva = 0x091e;\n  t.nyagujarati = 0x0a9e;\n  t.nyagurmukhi = 0x0a1e;\n  t.o = 0x006f;\n  t.oacute = 0x00f3;\n  t.oangthai = 0x0e2d;\n  t.obarred = 0x0275;\n  t.obarredcyrillic = 0x04e9;\n  t.obarreddieresiscyrillic = 0x04eb;\n  t.obengali = 0x0993;\n  t.obopomofo = 0x311b;\n  t.obreve = 0x014f;\n  t.ocandradeva = 0x0911;\n  t.ocandragujarati = 0x0a91;\n  t.ocandravowelsigndeva = 0x0949;\n  t.ocandravowelsigngujarati = 0x0ac9;\n  t.ocaron = 0x01d2;\n  t.ocircle = 0x24de;\n  t.ocircumflex = 0x00f4;\n  t.ocircumflexacute = 0x1ed1;\n  t.ocircumflexdotbelow = 0x1ed9;\n  t.ocircumflexgrave = 0x1ed3;\n  t.ocircumflexhookabove = 0x1ed5;\n  t.ocircumflextilde = 0x1ed7;\n  t.ocyrillic = 0x043e;\n  t.odblacute = 0x0151;\n  t.odblgrave = 0x020d;\n  t.odeva = 0x0913;\n  t.odieresis = 0x00f6;\n  t.odieresiscyrillic = 0x04e7;\n  t.odotbelow = 0x1ecd;\n  t.oe = 0x0153;\n  t.oekorean = 0x315a;\n  t.ogonek = 0x02db;\n  t.ogonekcmb = 0x0328;\n  t.ograve = 0x00f2;\n  t.ogujarati = 0x0a93;\n  t.oharmenian = 0x0585;\n  t.ohiragana = 0x304a;\n  t.ohookabove = 0x1ecf;\n  t.ohorn = 0x01a1;\n  t.ohornacute = 0x1edb;\n  t.ohorndotbelow = 0x1ee3;\n  t.ohorngrave = 0x1edd;\n  t.ohornhookabove = 0x1edf;\n  t.ohorntilde = 0x1ee1;\n  t.ohungarumlaut = 0x0151;\n  t.oi = 0x01a3;\n  t.oinvertedbreve = 0x020f;\n  t.okatakana = 0x30aa;\n  t.okatakanahalfwidth = 0xff75;\n  t.okorean = 0x3157;\n  t.olehebrew = 0x05ab;\n  t.omacron = 0x014d;\n  t.omacronacute = 0x1e53;\n  t.omacrongrave = 0x1e51;\n  t.omdeva = 0x0950;\n  t.omega = 0x03c9;\n  t.omega1 = 0x03d6;\n  t.omegacyrillic = 0x0461;\n  t.omegalatinclosed = 0x0277;\n  t.omegaroundcyrillic = 0x047b;\n  t.omegatitlocyrillic = 0x047d;\n  t.omegatonos = 0x03ce;\n  t.omgujarati = 0x0ad0;\n  t.omicron = 0x03bf;\n  t.omicrontonos = 0x03cc;\n  t.omonospace = 0xff4f;\n  t.one = 0x0031;\n  t.onearabic = 0x0661;\n  t.onebengali = 0x09e7;\n  t.onecircle = 0x2460;\n  t.onecircleinversesansserif = 0x278a;\n  t.onedeva = 0x0967;\n  t.onedotenleader = 0x2024;\n  t.oneeighth = 0x215b;\n  t.onefitted = 0xf6dc;\n  t.onegujarati = 0x0ae7;\n  t.onegurmukhi = 0x0a67;\n  t.onehackarabic = 0x0661;\n  t.onehalf = 0x00bd;\n  t.onehangzhou = 0x3021;\n  t.oneideographicparen = 0x3220;\n  t.oneinferior = 0x2081;\n  t.onemonospace = 0xff11;\n  t.onenumeratorbengali = 0x09f4;\n  t.oneoldstyle = 0xf731;\n  t.oneparen = 0x2474;\n  t.oneperiod = 0x2488;\n  t.onepersian = 0x06f1;\n  t.onequarter = 0x00bc;\n  t.oneroman = 0x2170;\n  t.onesuperior = 0x00b9;\n  t.onethai = 0x0e51;\n  t.onethird = 0x2153;\n  t.oogonek = 0x01eb;\n  t.oogonekmacron = 0x01ed;\n  t.oogurmukhi = 0x0a13;\n  t.oomatragurmukhi = 0x0a4b;\n  t.oopen = 0x0254;\n  t.oparen = 0x24aa;\n  t.openbullet = 0x25e6;\n  t.option = 0x2325;\n  t.ordfeminine = 0x00aa;\n  t.ordmasculine = 0x00ba;\n  t.orthogonal = 0x221f;\n  t.oshortdeva = 0x0912;\n  t.oshortvowelsigndeva = 0x094a;\n  t.oslash = 0x00f8;\n  t.oslashacute = 0x01ff;\n  t.osmallhiragana = 0x3049;\n  t.osmallkatakana = 0x30a9;\n  t.osmallkatakanahalfwidth = 0xff6b;\n  t.ostrokeacute = 0x01ff;\n  t.osuperior = 0xf6f0;\n  t.otcyrillic = 0x047f;\n  t.otilde = 0x00f5;\n  t.otildeacute = 0x1e4d;\n  t.otildedieresis = 0x1e4f;\n  t.oubopomofo = 0x3121;\n  t.overline = 0x203e;\n  t.overlinecenterline = 0xfe4a;\n  t.overlinecmb = 0x0305;\n  t.overlinedashed = 0xfe49;\n  t.overlinedblwavy = 0xfe4c;\n  t.overlinewavy = 0xfe4b;\n  t.overscore = 0x00af;\n  t.ovowelsignbengali = 0x09cb;\n  t.ovowelsigndeva = 0x094b;\n  t.ovowelsigngujarati = 0x0acb;\n  t.p = 0x0070;\n  t.paampssquare = 0x3380;\n  t.paasentosquare = 0x332b;\n  t.pabengali = 0x09aa;\n  t.pacute = 0x1e55;\n  t.padeva = 0x092a;\n  t.pagedown = 0x21df;\n  t.pageup = 0x21de;\n  t.pagujarati = 0x0aaa;\n  t.pagurmukhi = 0x0a2a;\n  t.pahiragana = 0x3071;\n  t.paiyannoithai = 0x0e2f;\n  t.pakatakana = 0x30d1;\n  t.palatalizationcyrilliccmb = 0x0484;\n  t.palochkacyrillic = 0x04c0;\n  t.pansioskorean = 0x317f;\n  t.paragraph = 0x00b6;\n  t.parallel = 0x2225;\n  t.parenleft = 0x0028;\n  t.parenleftaltonearabic = 0xfd3e;\n  t.parenleftbt = 0xf8ed;\n  t.parenleftex = 0xf8ec;\n  t.parenleftinferior = 0x208d;\n  t.parenleftmonospace = 0xff08;\n  t.parenleftsmall = 0xfe59;\n  t.parenleftsuperior = 0x207d;\n  t.parenlefttp = 0xf8eb;\n  t.parenleftvertical = 0xfe35;\n  t.parenright = 0x0029;\n  t.parenrightaltonearabic = 0xfd3f;\n  t.parenrightbt = 0xf8f8;\n  t.parenrightex = 0xf8f7;\n  t.parenrightinferior = 0x208e;\n  t.parenrightmonospace = 0xff09;\n  t.parenrightsmall = 0xfe5a;\n  t.parenrightsuperior = 0x207e;\n  t.parenrighttp = 0xf8f6;\n  t.parenrightvertical = 0xfe36;\n  t.partialdiff = 0x2202;\n  t.paseqhebrew = 0x05c0;\n  t.pashtahebrew = 0x0599;\n  t.pasquare = 0x33a9;\n  t.patah = 0x05b7;\n  t.patah11 = 0x05b7;\n  t.patah1d = 0x05b7;\n  t.patah2a = 0x05b7;\n  t.patahhebrew = 0x05b7;\n  t.patahnarrowhebrew = 0x05b7;\n  t.patahquarterhebrew = 0x05b7;\n  t.patahwidehebrew = 0x05b7;\n  t.pazerhebrew = 0x05a1;\n  t.pbopomofo = 0x3106;\n  t.pcircle = 0x24df;\n  t.pdotaccent = 0x1e57;\n  t.pe = 0x05e4;\n  t.pecyrillic = 0x043f;\n  t.pedagesh = 0xfb44;\n  t.pedageshhebrew = 0xfb44;\n  t.peezisquare = 0x333b;\n  t.pefinaldageshhebrew = 0xfb43;\n  t.peharabic = 0x067e;\n  t.peharmenian = 0x057a;\n  t.pehebrew = 0x05e4;\n  t.pehfinalarabic = 0xfb57;\n  t.pehinitialarabic = 0xfb58;\n  t.pehiragana = 0x307a;\n  t.pehmedialarabic = 0xfb59;\n  t.pekatakana = 0x30da;\n  t.pemiddlehookcyrillic = 0x04a7;\n  t.perafehebrew = 0xfb4e;\n  t.percent = 0x0025;\n  t.percentarabic = 0x066a;\n  t.percentmonospace = 0xff05;\n  t.percentsmall = 0xfe6a;\n  t.period = 0x002e;\n  t.periodarmenian = 0x0589;\n  t.periodcentered = 0x00b7;\n  t.periodhalfwidth = 0xff61;\n  t.periodinferior = 0xf6e7;\n  t.periodmonospace = 0xff0e;\n  t.periodsmall = 0xfe52;\n  t.periodsuperior = 0xf6e8;\n  t.perispomenigreekcmb = 0x0342;\n  t.perpendicular = 0x22a5;\n  t.perthousand = 0x2030;\n  t.peseta = 0x20a7;\n  t.pfsquare = 0x338a;\n  t.phabengali = 0x09ab;\n  t.phadeva = 0x092b;\n  t.phagujarati = 0x0aab;\n  t.phagurmukhi = 0x0a2b;\n  t.phi = 0x03c6;\n  t.phi1 = 0x03d5;\n  t.phieuphacirclekorean = 0x327a;\n  t.phieuphaparenkorean = 0x321a;\n  t.phieuphcirclekorean = 0x326c;\n  t.phieuphkorean = 0x314d;\n  t.phieuphparenkorean = 0x320c;\n  t.philatin = 0x0278;\n  t.phinthuthai = 0x0e3a;\n  t.phisymbolgreek = 0x03d5;\n  t.phook = 0x01a5;\n  t.phophanthai = 0x0e1e;\n  t.phophungthai = 0x0e1c;\n  t.phosamphaothai = 0x0e20;\n  t.pi = 0x03c0;\n  t.pieupacirclekorean = 0x3273;\n  t.pieupaparenkorean = 0x3213;\n  t.pieupcieuckorean = 0x3176;\n  t.pieupcirclekorean = 0x3265;\n  t.pieupkiyeokkorean = 0x3172;\n  t.pieupkorean = 0x3142;\n  t.pieupparenkorean = 0x3205;\n  t.pieupsioskiyeokkorean = 0x3174;\n  t.pieupsioskorean = 0x3144;\n  t.pieupsiostikeutkorean = 0x3175;\n  t.pieupthieuthkorean = 0x3177;\n  t.pieuptikeutkorean = 0x3173;\n  t.pihiragana = 0x3074;\n  t.pikatakana = 0x30d4;\n  t.pisymbolgreek = 0x03d6;\n  t.piwrarmenian = 0x0583;\n  t.planckover2pi = 0x210f;\n  t.planckover2pi1 = 0x210f;\n  t.plus = 0x002b;\n  t.plusbelowcmb = 0x031f;\n  t.pluscircle = 0x2295;\n  t.plusminus = 0x00b1;\n  t.plusmod = 0x02d6;\n  t.plusmonospace = 0xff0b;\n  t.plussmall = 0xfe62;\n  t.plussuperior = 0x207a;\n  t.pmonospace = 0xff50;\n  t.pmsquare = 0x33d8;\n  t.pohiragana = 0x307d;\n  t.pointingindexdownwhite = 0x261f;\n  t.pointingindexleftwhite = 0x261c;\n  t.pointingindexrightwhite = 0x261e;\n  t.pointingindexupwhite = 0x261d;\n  t.pokatakana = 0x30dd;\n  t.poplathai = 0x0e1b;\n  t.postalmark = 0x3012;\n  t.postalmarkface = 0x3020;\n  t.pparen = 0x24ab;\n  t.precedes = 0x227a;\n  t.prescription = 0x211e;\n  t.primemod = 0x02b9;\n  t.primereversed = 0x2035;\n  t.product = 0x220f;\n  t.projective = 0x2305;\n  t.prolongedkana = 0x30fc;\n  t.propellor = 0x2318;\n  t.propersubset = 0x2282;\n  t.propersuperset = 0x2283;\n  t.proportion = 0x2237;\n  t.proportional = 0x221d;\n  t.psi = 0x03c8;\n  t.psicyrillic = 0x0471;\n  t.psilipneumatacyrilliccmb = 0x0486;\n  t.pssquare = 0x33b0;\n  t.puhiragana = 0x3077;\n  t.pukatakana = 0x30d7;\n  t.pvsquare = 0x33b4;\n  t.pwsquare = 0x33ba;\n  t.q = 0x0071;\n  t.qadeva = 0x0958;\n  t.qadmahebrew = 0x05a8;\n  t.qafarabic = 0x0642;\n  t.qaffinalarabic = 0xfed6;\n  t.qafinitialarabic = 0xfed7;\n  t.qafmedialarabic = 0xfed8;\n  t.qamats = 0x05b8;\n  t.qamats10 = 0x05b8;\n  t.qamats1a = 0x05b8;\n  t.qamats1c = 0x05b8;\n  t.qamats27 = 0x05b8;\n  t.qamats29 = 0x05b8;\n  t.qamats33 = 0x05b8;\n  t.qamatsde = 0x05b8;\n  t.qamatshebrew = 0x05b8;\n  t.qamatsnarrowhebrew = 0x05b8;\n  t.qamatsqatanhebrew = 0x05b8;\n  t.qamatsqatannarrowhebrew = 0x05b8;\n  t.qamatsqatanquarterhebrew = 0x05b8;\n  t.qamatsqatanwidehebrew = 0x05b8;\n  t.qamatsquarterhebrew = 0x05b8;\n  t.qamatswidehebrew = 0x05b8;\n  t.qarneyparahebrew = 0x059f;\n  t.qbopomofo = 0x3111;\n  t.qcircle = 0x24e0;\n  t.qhook = 0x02a0;\n  t.qmonospace = 0xff51;\n  t.qof = 0x05e7;\n  t.qofdagesh = 0xfb47;\n  t.qofdageshhebrew = 0xfb47;\n  t.qofhebrew = 0x05e7;\n  t.qparen = 0x24ac;\n  t.quarternote = 0x2669;\n  t.qubuts = 0x05bb;\n  t.qubuts18 = 0x05bb;\n  t.qubuts25 = 0x05bb;\n  t.qubuts31 = 0x05bb;\n  t.qubutshebrew = 0x05bb;\n  t.qubutsnarrowhebrew = 0x05bb;\n  t.qubutsquarterhebrew = 0x05bb;\n  t.qubutswidehebrew = 0x05bb;\n  t.question = 0x003f;\n  t.questionarabic = 0x061f;\n  t.questionarmenian = 0x055e;\n  t.questiondown = 0x00bf;\n  t.questiondownsmall = 0xf7bf;\n  t.questiongreek = 0x037e;\n  t.questionmonospace = 0xff1f;\n  t.questionsmall = 0xf73f;\n  t.quotedbl = 0x0022;\n  t.quotedblbase = 0x201e;\n  t.quotedblleft = 0x201c;\n  t.quotedblmonospace = 0xff02;\n  t.quotedblprime = 0x301e;\n  t.quotedblprimereversed = 0x301d;\n  t.quotedblright = 0x201d;\n  t.quoteleft = 0x2018;\n  t.quoteleftreversed = 0x201b;\n  t.quotereversed = 0x201b;\n  t.quoteright = 0x2019;\n  t.quoterightn = 0x0149;\n  t.quotesinglbase = 0x201a;\n  t.quotesingle = 0x0027;\n  t.quotesinglemonospace = 0xff07;\n  t.r = 0x0072;\n  t.raarmenian = 0x057c;\n  t.rabengali = 0x09b0;\n  t.racute = 0x0155;\n  t.radeva = 0x0930;\n  t.radical = 0x221a;\n  t.radicalex = 0xf8e5;\n  t.radoverssquare = 0x33ae;\n  t.radoverssquaredsquare = 0x33af;\n  t.radsquare = 0x33ad;\n  t.rafe = 0x05bf;\n  t.rafehebrew = 0x05bf;\n  t.ragujarati = 0x0ab0;\n  t.ragurmukhi = 0x0a30;\n  t.rahiragana = 0x3089;\n  t.rakatakana = 0x30e9;\n  t.rakatakanahalfwidth = 0xff97;\n  t.ralowerdiagonalbengali = 0x09f1;\n  t.ramiddlediagonalbengali = 0x09f0;\n  t.ramshorn = 0x0264;\n  t.ratio = 0x2236;\n  t.rbopomofo = 0x3116;\n  t.rcaron = 0x0159;\n  t.rcedilla = 0x0157;\n  t.rcircle = 0x24e1;\n  t.rcommaaccent = 0x0157;\n  t.rdblgrave = 0x0211;\n  t.rdotaccent = 0x1e59;\n  t.rdotbelow = 0x1e5b;\n  t.rdotbelowmacron = 0x1e5d;\n  t.referencemark = 0x203b;\n  t.reflexsubset = 0x2286;\n  t.reflexsuperset = 0x2287;\n  t.registered = 0x00ae;\n  t.registersans = 0xf8e8;\n  t.registerserif = 0xf6da;\n  t.reharabic = 0x0631;\n  t.reharmenian = 0x0580;\n  t.rehfinalarabic = 0xfeae;\n  t.rehiragana = 0x308c;\n  t.rekatakana = 0x30ec;\n  t.rekatakanahalfwidth = 0xff9a;\n  t.resh = 0x05e8;\n  t.reshdageshhebrew = 0xfb48;\n  t.reshhebrew = 0x05e8;\n  t.reversedtilde = 0x223d;\n  t.reviahebrew = 0x0597;\n  t.reviamugrashhebrew = 0x0597;\n  t.revlogicalnot = 0x2310;\n  t.rfishhook = 0x027e;\n  t.rfishhookreversed = 0x027f;\n  t.rhabengali = 0x09dd;\n  t.rhadeva = 0x095d;\n  t.rho = 0x03c1;\n  t.rhook = 0x027d;\n  t.rhookturned = 0x027b;\n  t.rhookturnedsuperior = 0x02b5;\n  t.rhosymbolgreek = 0x03f1;\n  t.rhotichookmod = 0x02de;\n  t.rieulacirclekorean = 0x3271;\n  t.rieulaparenkorean = 0x3211;\n  t.rieulcirclekorean = 0x3263;\n  t.rieulhieuhkorean = 0x3140;\n  t.rieulkiyeokkorean = 0x313a;\n  t.rieulkiyeoksioskorean = 0x3169;\n  t.rieulkorean = 0x3139;\n  t.rieulmieumkorean = 0x313b;\n  t.rieulpansioskorean = 0x316c;\n  t.rieulparenkorean = 0x3203;\n  t.rieulphieuphkorean = 0x313f;\n  t.rieulpieupkorean = 0x313c;\n  t.rieulpieupsioskorean = 0x316b;\n  t.rieulsioskorean = 0x313d;\n  t.rieulthieuthkorean = 0x313e;\n  t.rieultikeutkorean = 0x316a;\n  t.rieulyeorinhieuhkorean = 0x316d;\n  t.rightangle = 0x221f;\n  t.righttackbelowcmb = 0x0319;\n  t.righttriangle = 0x22bf;\n  t.rihiragana = 0x308a;\n  t.rikatakana = 0x30ea;\n  t.rikatakanahalfwidth = 0xff98;\n  t.ring = 0x02da;\n  t.ringbelowcmb = 0x0325;\n  t.ringcmb = 0x030a;\n  t.ringhalfleft = 0x02bf;\n  t.ringhalfleftarmenian = 0x0559;\n  t.ringhalfleftbelowcmb = 0x031c;\n  t.ringhalfleftcentered = 0x02d3;\n  t.ringhalfright = 0x02be;\n  t.ringhalfrightbelowcmb = 0x0339;\n  t.ringhalfrightcentered = 0x02d2;\n  t.rinvertedbreve = 0x0213;\n  t.rittorusquare = 0x3351;\n  t.rlinebelow = 0x1e5f;\n  t.rlongleg = 0x027c;\n  t.rlonglegturned = 0x027a;\n  t.rmonospace = 0xff52;\n  t.rohiragana = 0x308d;\n  t.rokatakana = 0x30ed;\n  t.rokatakanahalfwidth = 0xff9b;\n  t.roruathai = 0x0e23;\n  t.rparen = 0x24ad;\n  t.rrabengali = 0x09dc;\n  t.rradeva = 0x0931;\n  t.rragurmukhi = 0x0a5c;\n  t.rreharabic = 0x0691;\n  t.rrehfinalarabic = 0xfb8d;\n  t.rrvocalicbengali = 0x09e0;\n  t.rrvocalicdeva = 0x0960;\n  t.rrvocalicgujarati = 0x0ae0;\n  t.rrvocalicvowelsignbengali = 0x09c4;\n  t.rrvocalicvowelsigndeva = 0x0944;\n  t.rrvocalicvowelsigngujarati = 0x0ac4;\n  t.rsuperior = 0xf6f1;\n  t.rtblock = 0x2590;\n  t.rturned = 0x0279;\n  t.rturnedsuperior = 0x02b4;\n  t.ruhiragana = 0x308b;\n  t.rukatakana = 0x30eb;\n  t.rukatakanahalfwidth = 0xff99;\n  t.rupeemarkbengali = 0x09f2;\n  t.rupeesignbengali = 0x09f3;\n  t.rupiah = 0xf6dd;\n  t.ruthai = 0x0e24;\n  t.rvocalicbengali = 0x098b;\n  t.rvocalicdeva = 0x090b;\n  t.rvocalicgujarati = 0x0a8b;\n  t.rvocalicvowelsignbengali = 0x09c3;\n  t.rvocalicvowelsigndeva = 0x0943;\n  t.rvocalicvowelsigngujarati = 0x0ac3;\n  t.s = 0x0073;\n  t.sabengali = 0x09b8;\n  t.sacute = 0x015b;\n  t.sacutedotaccent = 0x1e65;\n  t.sadarabic = 0x0635;\n  t.sadeva = 0x0938;\n  t.sadfinalarabic = 0xfeba;\n  t.sadinitialarabic = 0xfebb;\n  t.sadmedialarabic = 0xfebc;\n  t.sagujarati = 0x0ab8;\n  t.sagurmukhi = 0x0a38;\n  t.sahiragana = 0x3055;\n  t.sakatakana = 0x30b5;\n  t.sakatakanahalfwidth = 0xff7b;\n  t.sallallahoualayhewasallamarabic = 0xfdfa;\n  t.samekh = 0x05e1;\n  t.samekhdagesh = 0xfb41;\n  t.samekhdageshhebrew = 0xfb41;\n  t.samekhhebrew = 0x05e1;\n  t.saraaathai = 0x0e32;\n  t.saraaethai = 0x0e41;\n  t.saraaimaimalaithai = 0x0e44;\n  t.saraaimaimuanthai = 0x0e43;\n  t.saraamthai = 0x0e33;\n  t.saraathai = 0x0e30;\n  t.saraethai = 0x0e40;\n  t.saraiileftthai = 0xf886;\n  t.saraiithai = 0x0e35;\n  t.saraileftthai = 0xf885;\n  t.saraithai = 0x0e34;\n  t.saraothai = 0x0e42;\n  t.saraueeleftthai = 0xf888;\n  t.saraueethai = 0x0e37;\n  t.saraueleftthai = 0xf887;\n  t.sarauethai = 0x0e36;\n  t.sarauthai = 0x0e38;\n  t.sarauuthai = 0x0e39;\n  t.sbopomofo = 0x3119;\n  t.scaron = 0x0161;\n  t.scarondotaccent = 0x1e67;\n  t.scedilla = 0x015f;\n  t.schwa = 0x0259;\n  t.schwacyrillic = 0x04d9;\n  t.schwadieresiscyrillic = 0x04db;\n  t.schwahook = 0x025a;\n  t.scircle = 0x24e2;\n  t.scircumflex = 0x015d;\n  t.scommaaccent = 0x0219;\n  t.sdotaccent = 0x1e61;\n  t.sdotbelow = 0x1e63;\n  t.sdotbelowdotaccent = 0x1e69;\n  t.seagullbelowcmb = 0x033c;\n  t.second = 0x2033;\n  t.secondtonechinese = 0x02ca;\n  t.section = 0x00a7;\n  t.seenarabic = 0x0633;\n  t.seenfinalarabic = 0xfeb2;\n  t.seeninitialarabic = 0xfeb3;\n  t.seenmedialarabic = 0xfeb4;\n  t.segol = 0x05b6;\n  t.segol13 = 0x05b6;\n  t.segol1f = 0x05b6;\n  t.segol2c = 0x05b6;\n  t.segolhebrew = 0x05b6;\n  t.segolnarrowhebrew = 0x05b6;\n  t.segolquarterhebrew = 0x05b6;\n  t.segoltahebrew = 0x0592;\n  t.segolwidehebrew = 0x05b6;\n  t.seharmenian = 0x057d;\n  t.sehiragana = 0x305b;\n  t.sekatakana = 0x30bb;\n  t.sekatakanahalfwidth = 0xff7e;\n  t.semicolon = 0x003b;\n  t.semicolonarabic = 0x061b;\n  t.semicolonmonospace = 0xff1b;\n  t.semicolonsmall = 0xfe54;\n  t.semivoicedmarkkana = 0x309c;\n  t.semivoicedmarkkanahalfwidth = 0xff9f;\n  t.sentisquare = 0x3322;\n  t.sentosquare = 0x3323;\n  t.seven = 0x0037;\n  t.sevenarabic = 0x0667;\n  t.sevenbengali = 0x09ed;\n  t.sevencircle = 0x2466;\n  t.sevencircleinversesansserif = 0x2790;\n  t.sevendeva = 0x096d;\n  t.seveneighths = 0x215e;\n  t.sevengujarati = 0x0aed;\n  t.sevengurmukhi = 0x0a6d;\n  t.sevenhackarabic = 0x0667;\n  t.sevenhangzhou = 0x3027;\n  t.sevenideographicparen = 0x3226;\n  t.seveninferior = 0x2087;\n  t.sevenmonospace = 0xff17;\n  t.sevenoldstyle = 0xf737;\n  t.sevenparen = 0x247a;\n  t.sevenperiod = 0x248e;\n  t.sevenpersian = 0x06f7;\n  t.sevenroman = 0x2176;\n  t.sevensuperior = 0x2077;\n  t.seventeencircle = 0x2470;\n  t.seventeenparen = 0x2484;\n  t.seventeenperiod = 0x2498;\n  t.seventhai = 0x0e57;\n  t.sfthyphen = 0x00ad;\n  t.shaarmenian = 0x0577;\n  t.shabengali = 0x09b6;\n  t.shacyrillic = 0x0448;\n  t.shaddaarabic = 0x0651;\n  t.shaddadammaarabic = 0xfc61;\n  t.shaddadammatanarabic = 0xfc5e;\n  t.shaddafathaarabic = 0xfc60;\n  t.shaddakasraarabic = 0xfc62;\n  t.shaddakasratanarabic = 0xfc5f;\n  t.shade = 0x2592;\n  t.shadedark = 0x2593;\n  t.shadelight = 0x2591;\n  t.shademedium = 0x2592;\n  t.shadeva = 0x0936;\n  t.shagujarati = 0x0ab6;\n  t.shagurmukhi = 0x0a36;\n  t.shalshelethebrew = 0x0593;\n  t.shbopomofo = 0x3115;\n  t.shchacyrillic = 0x0449;\n  t.sheenarabic = 0x0634;\n  t.sheenfinalarabic = 0xfeb6;\n  t.sheeninitialarabic = 0xfeb7;\n  t.sheenmedialarabic = 0xfeb8;\n  t.sheicoptic = 0x03e3;\n  t.sheqel = 0x20aa;\n  t.sheqelhebrew = 0x20aa;\n  t.sheva = 0x05b0;\n  t.sheva115 = 0x05b0;\n  t.sheva15 = 0x05b0;\n  t.sheva22 = 0x05b0;\n  t.sheva2e = 0x05b0;\n  t.shevahebrew = 0x05b0;\n  t.shevanarrowhebrew = 0x05b0;\n  t.shevaquarterhebrew = 0x05b0;\n  t.shevawidehebrew = 0x05b0;\n  t.shhacyrillic = 0x04bb;\n  t.shimacoptic = 0x03ed;\n  t.shin = 0x05e9;\n  t.shindagesh = 0xfb49;\n  t.shindageshhebrew = 0xfb49;\n  t.shindageshshindot = 0xfb2c;\n  t.shindageshshindothebrew = 0xfb2c;\n  t.shindageshsindot = 0xfb2d;\n  t.shindageshsindothebrew = 0xfb2d;\n  t.shindothebrew = 0x05c1;\n  t.shinhebrew = 0x05e9;\n  t.shinshindot = 0xfb2a;\n  t.shinshindothebrew = 0xfb2a;\n  t.shinsindot = 0xfb2b;\n  t.shinsindothebrew = 0xfb2b;\n  t.shook = 0x0282;\n  t.sigma = 0x03c3;\n  t.sigma1 = 0x03c2;\n  t.sigmafinal = 0x03c2;\n  t.sigmalunatesymbolgreek = 0x03f2;\n  t.sihiragana = 0x3057;\n  t.sikatakana = 0x30b7;\n  t.sikatakanahalfwidth = 0xff7c;\n  t.siluqhebrew = 0x05bd;\n  t.siluqlefthebrew = 0x05bd;\n  t.similar = 0x223c;\n  t.sindothebrew = 0x05c2;\n  t.siosacirclekorean = 0x3274;\n  t.siosaparenkorean = 0x3214;\n  t.sioscieuckorean = 0x317e;\n  t.sioscirclekorean = 0x3266;\n  t.sioskiyeokkorean = 0x317a;\n  t.sioskorean = 0x3145;\n  t.siosnieunkorean = 0x317b;\n  t.siosparenkorean = 0x3206;\n  t.siospieupkorean = 0x317d;\n  t.siostikeutkorean = 0x317c;\n  t.six = 0x0036;\n  t.sixarabic = 0x0666;\n  t.sixbengali = 0x09ec;\n  t.sixcircle = 0x2465;\n  t.sixcircleinversesansserif = 0x278f;\n  t.sixdeva = 0x096c;\n  t.sixgujarati = 0x0aec;\n  t.sixgurmukhi = 0x0a6c;\n  t.sixhackarabic = 0x0666;\n  t.sixhangzhou = 0x3026;\n  t.sixideographicparen = 0x3225;\n  t.sixinferior = 0x2086;\n  t.sixmonospace = 0xff16;\n  t.sixoldstyle = 0xf736;\n  t.sixparen = 0x2479;\n  t.sixperiod = 0x248d;\n  t.sixpersian = 0x06f6;\n  t.sixroman = 0x2175;\n  t.sixsuperior = 0x2076;\n  t.sixteencircle = 0x246f;\n  t.sixteencurrencydenominatorbengali = 0x09f9;\n  t.sixteenparen = 0x2483;\n  t.sixteenperiod = 0x2497;\n  t.sixthai = 0x0e56;\n  t.slash = 0x002f;\n  t.slashmonospace = 0xff0f;\n  t.slong = 0x017f;\n  t.slongdotaccent = 0x1e9b;\n  t.smileface = 0x263a;\n  t.smonospace = 0xff53;\n  t.sofpasuqhebrew = 0x05c3;\n  t.softhyphen = 0x00ad;\n  t.softsigncyrillic = 0x044c;\n  t.sohiragana = 0x305d;\n  t.sokatakana = 0x30bd;\n  t.sokatakanahalfwidth = 0xff7f;\n  t.soliduslongoverlaycmb = 0x0338;\n  t.solidusshortoverlaycmb = 0x0337;\n  t.sorusithai = 0x0e29;\n  t.sosalathai = 0x0e28;\n  t.sosothai = 0x0e0b;\n  t.sosuathai = 0x0e2a;\n  t.space = 0x0020;\n  t.spacehackarabic = 0x0020;\n  t.spade = 0x2660;\n  t.spadesuitblack = 0x2660;\n  t.spadesuitwhite = 0x2664;\n  t.sparen = 0x24ae;\n  t.squarebelowcmb = 0x033b;\n  t.squarecc = 0x33c4;\n  t.squarecm = 0x339d;\n  t.squarediagonalcrosshatchfill = 0x25a9;\n  t.squarehorizontalfill = 0x25a4;\n  t.squarekg = 0x338f;\n  t.squarekm = 0x339e;\n  t.squarekmcapital = 0x33ce;\n  t.squareln = 0x33d1;\n  t.squarelog = 0x33d2;\n  t.squaremg = 0x338e;\n  t.squaremil = 0x33d5;\n  t.squaremm = 0x339c;\n  t.squaremsquared = 0x33a1;\n  t.squareorthogonalcrosshatchfill = 0x25a6;\n  t.squareupperlefttolowerrightfill = 0x25a7;\n  t.squareupperrighttolowerleftfill = 0x25a8;\n  t.squareverticalfill = 0x25a5;\n  t.squarewhitewithsmallblack = 0x25a3;\n  t.srsquare = 0x33db;\n  t.ssabengali = 0x09b7;\n  t.ssadeva = 0x0937;\n  t.ssagujarati = 0x0ab7;\n  t.ssangcieuckorean = 0x3149;\n  t.ssanghieuhkorean = 0x3185;\n  t.ssangieungkorean = 0x3180;\n  t.ssangkiyeokkorean = 0x3132;\n  t.ssangnieunkorean = 0x3165;\n  t.ssangpieupkorean = 0x3143;\n  t.ssangsioskorean = 0x3146;\n  t.ssangtikeutkorean = 0x3138;\n  t.ssuperior = 0xf6f2;\n  t.sterling = 0x00a3;\n  t.sterlingmonospace = 0xffe1;\n  t.strokelongoverlaycmb = 0x0336;\n  t.strokeshortoverlaycmb = 0x0335;\n  t.subset = 0x2282;\n  t.subsetnotequal = 0x228a;\n  t.subsetorequal = 0x2286;\n  t.succeeds = 0x227b;\n  t.suchthat = 0x220b;\n  t.suhiragana = 0x3059;\n  t.sukatakana = 0x30b9;\n  t.sukatakanahalfwidth = 0xff7d;\n  t.sukunarabic = 0x0652;\n  t.summation = 0x2211;\n  t.sun = 0x263c;\n  t.superset = 0x2283;\n  t.supersetnotequal = 0x228b;\n  t.supersetorequal = 0x2287;\n  t.svsquare = 0x33dc;\n  t.syouwaerasquare = 0x337c;\n  t.t = 0x0074;\n  t.tabengali = 0x09a4;\n  t.tackdown = 0x22a4;\n  t.tackleft = 0x22a3;\n  t.tadeva = 0x0924;\n  t.tagujarati = 0x0aa4;\n  t.tagurmukhi = 0x0a24;\n  t.taharabic = 0x0637;\n  t.tahfinalarabic = 0xfec2;\n  t.tahinitialarabic = 0xfec3;\n  t.tahiragana = 0x305f;\n  t.tahmedialarabic = 0xfec4;\n  t.taisyouerasquare = 0x337d;\n  t.takatakana = 0x30bf;\n  t.takatakanahalfwidth = 0xff80;\n  t.tatweelarabic = 0x0640;\n  t.tau = 0x03c4;\n  t.tav = 0x05ea;\n  t.tavdages = 0xfb4a;\n  t.tavdagesh = 0xfb4a;\n  t.tavdageshhebrew = 0xfb4a;\n  t.tavhebrew = 0x05ea;\n  t.tbar = 0x0167;\n  t.tbopomofo = 0x310a;\n  t.tcaron = 0x0165;\n  t.tccurl = 0x02a8;\n  t.tcedilla = 0x0163;\n  t.tcheharabic = 0x0686;\n  t.tchehfinalarabic = 0xfb7b;\n  t.tchehinitialarabic = 0xfb7c;\n  t.tchehmedialarabic = 0xfb7d;\n  t.tcircle = 0x24e3;\n  t.tcircumflexbelow = 0x1e71;\n  t.tcommaaccent = 0x0163;\n  t.tdieresis = 0x1e97;\n  t.tdotaccent = 0x1e6b;\n  t.tdotbelow = 0x1e6d;\n  t.tecyrillic = 0x0442;\n  t.tedescendercyrillic = 0x04ad;\n  t.teharabic = 0x062a;\n  t.tehfinalarabic = 0xfe96;\n  t.tehhahinitialarabic = 0xfca2;\n  t.tehhahisolatedarabic = 0xfc0c;\n  t.tehinitialarabic = 0xfe97;\n  t.tehiragana = 0x3066;\n  t.tehjeeminitialarabic = 0xfca1;\n  t.tehjeemisolatedarabic = 0xfc0b;\n  t.tehmarbutaarabic = 0x0629;\n  t.tehmarbutafinalarabic = 0xfe94;\n  t.tehmedialarabic = 0xfe98;\n  t.tehmeeminitialarabic = 0xfca4;\n  t.tehmeemisolatedarabic = 0xfc0e;\n  t.tehnoonfinalarabic = 0xfc73;\n  t.tekatakana = 0x30c6;\n  t.tekatakanahalfwidth = 0xff83;\n  t.telephone = 0x2121;\n  t.telephoneblack = 0x260e;\n  t.telishagedolahebrew = 0x05a0;\n  t.telishaqetanahebrew = 0x05a9;\n  t.tencircle = 0x2469;\n  t.tenideographicparen = 0x3229;\n  t.tenparen = 0x247d;\n  t.tenperiod = 0x2491;\n  t.tenroman = 0x2179;\n  t.tesh = 0x02a7;\n  t.tet = 0x05d8;\n  t.tetdagesh = 0xfb38;\n  t.tetdageshhebrew = 0xfb38;\n  t.tethebrew = 0x05d8;\n  t.tetsecyrillic = 0x04b5;\n  t.tevirhebrew = 0x059b;\n  t.tevirlefthebrew = 0x059b;\n  t.thabengali = 0x09a5;\n  t.thadeva = 0x0925;\n  t.thagujarati = 0x0aa5;\n  t.thagurmukhi = 0x0a25;\n  t.thalarabic = 0x0630;\n  t.thalfinalarabic = 0xfeac;\n  t.thanthakhatlowleftthai = 0xf898;\n  t.thanthakhatlowrightthai = 0xf897;\n  t.thanthakhatthai = 0x0e4c;\n  t.thanthakhatupperleftthai = 0xf896;\n  t.theharabic = 0x062b;\n  t.thehfinalarabic = 0xfe9a;\n  t.thehinitialarabic = 0xfe9b;\n  t.thehmedialarabic = 0xfe9c;\n  t.thereexists = 0x2203;\n  t.therefore = 0x2234;\n  t.theta = 0x03b8;\n  t.theta1 = 0x03d1;\n  t.thetasymbolgreek = 0x03d1;\n  t.thieuthacirclekorean = 0x3279;\n  t.thieuthaparenkorean = 0x3219;\n  t.thieuthcirclekorean = 0x326b;\n  t.thieuthkorean = 0x314c;\n  t.thieuthparenkorean = 0x320b;\n  t.thirteencircle = 0x246c;\n  t.thirteenparen = 0x2480;\n  t.thirteenperiod = 0x2494;\n  t.thonangmonthothai = 0x0e11;\n  t.thook = 0x01ad;\n  t.thophuthaothai = 0x0e12;\n  t.thorn = 0x00fe;\n  t.thothahanthai = 0x0e17;\n  t.thothanthai = 0x0e10;\n  t.thothongthai = 0x0e18;\n  t.thothungthai = 0x0e16;\n  t.thousandcyrillic = 0x0482;\n  t.thousandsseparatorarabic = 0x066c;\n  t.thousandsseparatorpersian = 0x066c;\n  t.three = 0x0033;\n  t.threearabic = 0x0663;\n  t.threebengali = 0x09e9;\n  t.threecircle = 0x2462;\n  t.threecircleinversesansserif = 0x278c;\n  t.threedeva = 0x0969;\n  t.threeeighths = 0x215c;\n  t.threegujarati = 0x0ae9;\n  t.threegurmukhi = 0x0a69;\n  t.threehackarabic = 0x0663;\n  t.threehangzhou = 0x3023;\n  t.threeideographicparen = 0x3222;\n  t.threeinferior = 0x2083;\n  t.threemonospace = 0xff13;\n  t.threenumeratorbengali = 0x09f6;\n  t.threeoldstyle = 0xf733;\n  t.threeparen = 0x2476;\n  t.threeperiod = 0x248a;\n  t.threepersian = 0x06f3;\n  t.threequarters = 0x00be;\n  t.threequartersemdash = 0xf6de;\n  t.threeroman = 0x2172;\n  t.threesuperior = 0x00b3;\n  t.threethai = 0x0e53;\n  t.thzsquare = 0x3394;\n  t.tihiragana = 0x3061;\n  t.tikatakana = 0x30c1;\n  t.tikatakanahalfwidth = 0xff81;\n  t.tikeutacirclekorean = 0x3270;\n  t.tikeutaparenkorean = 0x3210;\n  t.tikeutcirclekorean = 0x3262;\n  t.tikeutkorean = 0x3137;\n  t.tikeutparenkorean = 0x3202;\n  t.tilde = 0x02dc;\n  t.tildebelowcmb = 0x0330;\n  t.tildecmb = 0x0303;\n  t.tildecomb = 0x0303;\n  t.tildedoublecmb = 0x0360;\n  t.tildeoperator = 0x223c;\n  t.tildeoverlaycmb = 0x0334;\n  t.tildeverticalcmb = 0x033e;\n  t.timescircle = 0x2297;\n  t.tipehahebrew = 0x0596;\n  t.tipehalefthebrew = 0x0596;\n  t.tippigurmukhi = 0x0a70;\n  t.titlocyrilliccmb = 0x0483;\n  t.tiwnarmenian = 0x057f;\n  t.tlinebelow = 0x1e6f;\n  t.tmonospace = 0xff54;\n  t.toarmenian = 0x0569;\n  t.tohiragana = 0x3068;\n  t.tokatakana = 0x30c8;\n  t.tokatakanahalfwidth = 0xff84;\n  t.tonebarextrahighmod = 0x02e5;\n  t.tonebarextralowmod = 0x02e9;\n  t.tonebarhighmod = 0x02e6;\n  t.tonebarlowmod = 0x02e8;\n  t.tonebarmidmod = 0x02e7;\n  t.tonefive = 0x01bd;\n  t.tonesix = 0x0185;\n  t.tonetwo = 0x01a8;\n  t.tonos = 0x0384;\n  t.tonsquare = 0x3327;\n  t.topatakthai = 0x0e0f;\n  t.tortoiseshellbracketleft = 0x3014;\n  t.tortoiseshellbracketleftsmall = 0xfe5d;\n  t.tortoiseshellbracketleftvertical = 0xfe39;\n  t.tortoiseshellbracketright = 0x3015;\n  t.tortoiseshellbracketrightsmall = 0xfe5e;\n  t.tortoiseshellbracketrightvertical = 0xfe3a;\n  t.totaothai = 0x0e15;\n  t.tpalatalhook = 0x01ab;\n  t.tparen = 0x24af;\n  t.trademark = 0x2122;\n  t.trademarksans = 0xf8ea;\n  t.trademarkserif = 0xf6db;\n  t.tretroflexhook = 0x0288;\n  t.triagdn = 0x25bc;\n  t.triaglf = 0x25c4;\n  t.triagrt = 0x25ba;\n  t.triagup = 0x25b2;\n  t.ts = 0x02a6;\n  t.tsadi = 0x05e6;\n  t.tsadidagesh = 0xfb46;\n  t.tsadidageshhebrew = 0xfb46;\n  t.tsadihebrew = 0x05e6;\n  t.tsecyrillic = 0x0446;\n  t.tsere = 0x05b5;\n  t.tsere12 = 0x05b5;\n  t.tsere1e = 0x05b5;\n  t.tsere2b = 0x05b5;\n  t.tserehebrew = 0x05b5;\n  t.tserenarrowhebrew = 0x05b5;\n  t.tserequarterhebrew = 0x05b5;\n  t.tserewidehebrew = 0x05b5;\n  t.tshecyrillic = 0x045b;\n  t.tsuperior = 0xf6f3;\n  t.ttabengali = 0x099f;\n  t.ttadeva = 0x091f;\n  t.ttagujarati = 0x0a9f;\n  t.ttagurmukhi = 0x0a1f;\n  t.tteharabic = 0x0679;\n  t.ttehfinalarabic = 0xfb67;\n  t.ttehinitialarabic = 0xfb68;\n  t.ttehmedialarabic = 0xfb69;\n  t.tthabengali = 0x09a0;\n  t.tthadeva = 0x0920;\n  t.tthagujarati = 0x0aa0;\n  t.tthagurmukhi = 0x0a20;\n  t.tturned = 0x0287;\n  t.tuhiragana = 0x3064;\n  t.tukatakana = 0x30c4;\n  t.tukatakanahalfwidth = 0xff82;\n  t.tusmallhiragana = 0x3063;\n  t.tusmallkatakana = 0x30c3;\n  t.tusmallkatakanahalfwidth = 0xff6f;\n  t.twelvecircle = 0x246b;\n  t.twelveparen = 0x247f;\n  t.twelveperiod = 0x2493;\n  t.twelveroman = 0x217b;\n  t.twentycircle = 0x2473;\n  t.twentyhangzhou = 0x5344;\n  t.twentyparen = 0x2487;\n  t.twentyperiod = 0x249b;\n  t.two = 0x0032;\n  t.twoarabic = 0x0662;\n  t.twobengali = 0x09e8;\n  t.twocircle = 0x2461;\n  t.twocircleinversesansserif = 0x278b;\n  t.twodeva = 0x0968;\n  t.twodotenleader = 0x2025;\n  t.twodotleader = 0x2025;\n  t.twodotleadervertical = 0xfe30;\n  t.twogujarati = 0x0ae8;\n  t.twogurmukhi = 0x0a68;\n  t.twohackarabic = 0x0662;\n  t.twohangzhou = 0x3022;\n  t.twoideographicparen = 0x3221;\n  t.twoinferior = 0x2082;\n  t.twomonospace = 0xff12;\n  t.twonumeratorbengali = 0x09f5;\n  t.twooldstyle = 0xf732;\n  t.twoparen = 0x2475;\n  t.twoperiod = 0x2489;\n  t.twopersian = 0x06f2;\n  t.tworoman = 0x2171;\n  t.twostroke = 0x01bb;\n  t.twosuperior = 0x00b2;\n  t.twothai = 0x0e52;\n  t.twothirds = 0x2154;\n  t.u = 0x0075;\n  t.uacute = 0x00fa;\n  t.ubar = 0x0289;\n  t.ubengali = 0x0989;\n  t.ubopomofo = 0x3128;\n  t.ubreve = 0x016d;\n  t.ucaron = 0x01d4;\n  t.ucircle = 0x24e4;\n  t.ucircumflex = 0x00fb;\n  t.ucircumflexbelow = 0x1e77;\n  t.ucyrillic = 0x0443;\n  t.udattadeva = 0x0951;\n  t.udblacute = 0x0171;\n  t.udblgrave = 0x0215;\n  t.udeva = 0x0909;\n  t.udieresis = 0x00fc;\n  t.udieresisacute = 0x01d8;\n  t.udieresisbelow = 0x1e73;\n  t.udieresiscaron = 0x01da;\n  t.udieresiscyrillic = 0x04f1;\n  t.udieresisgrave = 0x01dc;\n  t.udieresismacron = 0x01d6;\n  t.udotbelow = 0x1ee5;\n  t.ugrave = 0x00f9;\n  t.ugujarati = 0x0a89;\n  t.ugurmukhi = 0x0a09;\n  t.uhiragana = 0x3046;\n  t.uhookabove = 0x1ee7;\n  t.uhorn = 0x01b0;\n  t.uhornacute = 0x1ee9;\n  t.uhorndotbelow = 0x1ef1;\n  t.uhorngrave = 0x1eeb;\n  t.uhornhookabove = 0x1eed;\n  t.uhorntilde = 0x1eef;\n  t.uhungarumlaut = 0x0171;\n  t.uhungarumlautcyrillic = 0x04f3;\n  t.uinvertedbreve = 0x0217;\n  t.ukatakana = 0x30a6;\n  t.ukatakanahalfwidth = 0xff73;\n  t.ukcyrillic = 0x0479;\n  t.ukorean = 0x315c;\n  t.umacron = 0x016b;\n  t.umacroncyrillic = 0x04ef;\n  t.umacrondieresis = 0x1e7b;\n  t.umatragurmukhi = 0x0a41;\n  t.umonospace = 0xff55;\n  t.underscore = 0x005f;\n  t.underscoredbl = 0x2017;\n  t.underscoremonospace = 0xff3f;\n  t.underscorevertical = 0xfe33;\n  t.underscorewavy = 0xfe4f;\n  t.union = 0x222a;\n  t.universal = 0x2200;\n  t.uogonek = 0x0173;\n  t.uparen = 0x24b0;\n  t.upblock = 0x2580;\n  t.upperdothebrew = 0x05c4;\n  t.upsilon = 0x03c5;\n  t.upsilondieresis = 0x03cb;\n  t.upsilondieresistonos = 0x03b0;\n  t.upsilonlatin = 0x028a;\n  t.upsilontonos = 0x03cd;\n  t.uptackbelowcmb = 0x031d;\n  t.uptackmod = 0x02d4;\n  t.uragurmukhi = 0x0a73;\n  t.uring = 0x016f;\n  t.ushortcyrillic = 0x045e;\n  t.usmallhiragana = 0x3045;\n  t.usmallkatakana = 0x30a5;\n  t.usmallkatakanahalfwidth = 0xff69;\n  t.ustraightcyrillic = 0x04af;\n  t.ustraightstrokecyrillic = 0x04b1;\n  t.utilde = 0x0169;\n  t.utildeacute = 0x1e79;\n  t.utildebelow = 0x1e75;\n  t.uubengali = 0x098a;\n  t.uudeva = 0x090a;\n  t.uugujarati = 0x0a8a;\n  t.uugurmukhi = 0x0a0a;\n  t.uumatragurmukhi = 0x0a42;\n  t.uuvowelsignbengali = 0x09c2;\n  t.uuvowelsigndeva = 0x0942;\n  t.uuvowelsigngujarati = 0x0ac2;\n  t.uvowelsignbengali = 0x09c1;\n  t.uvowelsigndeva = 0x0941;\n  t.uvowelsigngujarati = 0x0ac1;\n  t.v = 0x0076;\n  t.vadeva = 0x0935;\n  t.vagujarati = 0x0ab5;\n  t.vagurmukhi = 0x0a35;\n  t.vakatakana = 0x30f7;\n  t.vav = 0x05d5;\n  t.vavdagesh = 0xfb35;\n  t.vavdagesh65 = 0xfb35;\n  t.vavdageshhebrew = 0xfb35;\n  t.vavhebrew = 0x05d5;\n  t.vavholam = 0xfb4b;\n  t.vavholamhebrew = 0xfb4b;\n  t.vavvavhebrew = 0x05f0;\n  t.vavyodhebrew = 0x05f1;\n  t.vcircle = 0x24e5;\n  t.vdotbelow = 0x1e7f;\n  t.vecyrillic = 0x0432;\n  t.veharabic = 0x06a4;\n  t.vehfinalarabic = 0xfb6b;\n  t.vehinitialarabic = 0xfb6c;\n  t.vehmedialarabic = 0xfb6d;\n  t.vekatakana = 0x30f9;\n  t.venus = 0x2640;\n  t.verticalbar = 0x007c;\n  t.verticallineabovecmb = 0x030d;\n  t.verticallinebelowcmb = 0x0329;\n  t.verticallinelowmod = 0x02cc;\n  t.verticallinemod = 0x02c8;\n  t.vewarmenian = 0x057e;\n  t.vhook = 0x028b;\n  t.vikatakana = 0x30f8;\n  t.viramabengali = 0x09cd;\n  t.viramadeva = 0x094d;\n  t.viramagujarati = 0x0acd;\n  t.visargabengali = 0x0983;\n  t.visargadeva = 0x0903;\n  t.visargagujarati = 0x0a83;\n  t.vmonospace = 0xff56;\n  t.voarmenian = 0x0578;\n  t.voicediterationhiragana = 0x309e;\n  t.voicediterationkatakana = 0x30fe;\n  t.voicedmarkkana = 0x309b;\n  t.voicedmarkkanahalfwidth = 0xff9e;\n  t.vokatakana = 0x30fa;\n  t.vparen = 0x24b1;\n  t.vtilde = 0x1e7d;\n  t.vturned = 0x028c;\n  t.vuhiragana = 0x3094;\n  t.vukatakana = 0x30f4;\n  t.w = 0x0077;\n  t.wacute = 0x1e83;\n  t.waekorean = 0x3159;\n  t.wahiragana = 0x308f;\n  t.wakatakana = 0x30ef;\n  t.wakatakanahalfwidth = 0xff9c;\n  t.wakorean = 0x3158;\n  t.wasmallhiragana = 0x308e;\n  t.wasmallkatakana = 0x30ee;\n  t.wattosquare = 0x3357;\n  t.wavedash = 0x301c;\n  t.wavyunderscorevertical = 0xfe34;\n  t.wawarabic = 0x0648;\n  t.wawfinalarabic = 0xfeee;\n  t.wawhamzaabovearabic = 0x0624;\n  t.wawhamzaabovefinalarabic = 0xfe86;\n  t.wbsquare = 0x33dd;\n  t.wcircle = 0x24e6;\n  t.wcircumflex = 0x0175;\n  t.wdieresis = 0x1e85;\n  t.wdotaccent = 0x1e87;\n  t.wdotbelow = 0x1e89;\n  t.wehiragana = 0x3091;\n  t.weierstrass = 0x2118;\n  t.wekatakana = 0x30f1;\n  t.wekorean = 0x315e;\n  t.weokorean = 0x315d;\n  t.wgrave = 0x1e81;\n  t.whitebullet = 0x25e6;\n  t.whitecircle = 0x25cb;\n  t.whitecircleinverse = 0x25d9;\n  t.whitecornerbracketleft = 0x300e;\n  t.whitecornerbracketleftvertical = 0xfe43;\n  t.whitecornerbracketright = 0x300f;\n  t.whitecornerbracketrightvertical = 0xfe44;\n  t.whitediamond = 0x25c7;\n  t.whitediamondcontainingblacksmalldiamond = 0x25c8;\n  t.whitedownpointingsmalltriangle = 0x25bf;\n  t.whitedownpointingtriangle = 0x25bd;\n  t.whiteleftpointingsmalltriangle = 0x25c3;\n  t.whiteleftpointingtriangle = 0x25c1;\n  t.whitelenticularbracketleft = 0x3016;\n  t.whitelenticularbracketright = 0x3017;\n  t.whiterightpointingsmalltriangle = 0x25b9;\n  t.whiterightpointingtriangle = 0x25b7;\n  t.whitesmallsquare = 0x25ab;\n  t.whitesmilingface = 0x263a;\n  t.whitesquare = 0x25a1;\n  t.whitestar = 0x2606;\n  t.whitetelephone = 0x260f;\n  t.whitetortoiseshellbracketleft = 0x3018;\n  t.whitetortoiseshellbracketright = 0x3019;\n  t.whiteuppointingsmalltriangle = 0x25b5;\n  t.whiteuppointingtriangle = 0x25b3;\n  t.wihiragana = 0x3090;\n  t.wikatakana = 0x30f0;\n  t.wikorean = 0x315f;\n  t.wmonospace = 0xff57;\n  t.wohiragana = 0x3092;\n  t.wokatakana = 0x30f2;\n  t.wokatakanahalfwidth = 0xff66;\n  t.won = 0x20a9;\n  t.wonmonospace = 0xffe6;\n  t.wowaenthai = 0x0e27;\n  t.wparen = 0x24b2;\n  t.wring = 0x1e98;\n  t.wsuperior = 0x02b7;\n  t.wturned = 0x028d;\n  t.wynn = 0x01bf;\n  t.x = 0x0078;\n  t.xabovecmb = 0x033d;\n  t.xbopomofo = 0x3112;\n  t.xcircle = 0x24e7;\n  t.xdieresis = 0x1e8d;\n  t.xdotaccent = 0x1e8b;\n  t.xeharmenian = 0x056d;\n  t.xi = 0x03be;\n  t.xmonospace = 0xff58;\n  t.xparen = 0x24b3;\n  t.xsuperior = 0x02e3;\n  t.y = 0x0079;\n  t.yaadosquare = 0x334e;\n  t.yabengali = 0x09af;\n  t.yacute = 0x00fd;\n  t.yadeva = 0x092f;\n  t.yaekorean = 0x3152;\n  t.yagujarati = 0x0aaf;\n  t.yagurmukhi = 0x0a2f;\n  t.yahiragana = 0x3084;\n  t.yakatakana = 0x30e4;\n  t.yakatakanahalfwidth = 0xff94;\n  t.yakorean = 0x3151;\n  t.yamakkanthai = 0x0e4e;\n  t.yasmallhiragana = 0x3083;\n  t.yasmallkatakana = 0x30e3;\n  t.yasmallkatakanahalfwidth = 0xff6c;\n  t.yatcyrillic = 0x0463;\n  t.ycircle = 0x24e8;\n  t.ycircumflex = 0x0177;\n  t.ydieresis = 0x00ff;\n  t.ydotaccent = 0x1e8f;\n  t.ydotbelow = 0x1ef5;\n  t.yeharabic = 0x064a;\n  t.yehbarreearabic = 0x06d2;\n  t.yehbarreefinalarabic = 0xfbaf;\n  t.yehfinalarabic = 0xfef2;\n  t.yehhamzaabovearabic = 0x0626;\n  t.yehhamzaabovefinalarabic = 0xfe8a;\n  t.yehhamzaaboveinitialarabic = 0xfe8b;\n  t.yehhamzaabovemedialarabic = 0xfe8c;\n  t.yehinitialarabic = 0xfef3;\n  t.yehmedialarabic = 0xfef4;\n  t.yehmeeminitialarabic = 0xfcdd;\n  t.yehmeemisolatedarabic = 0xfc58;\n  t.yehnoonfinalarabic = 0xfc94;\n  t.yehthreedotsbelowarabic = 0x06d1;\n  t.yekorean = 0x3156;\n  t.yen = 0x00a5;\n  t.yenmonospace = 0xffe5;\n  t.yeokorean = 0x3155;\n  t.yeorinhieuhkorean = 0x3186;\n  t.yerahbenyomohebrew = 0x05aa;\n  t.yerahbenyomolefthebrew = 0x05aa;\n  t.yericyrillic = 0x044b;\n  t.yerudieresiscyrillic = 0x04f9;\n  t.yesieungkorean = 0x3181;\n  t.yesieungpansioskorean = 0x3183;\n  t.yesieungsioskorean = 0x3182;\n  t.yetivhebrew = 0x059a;\n  t.ygrave = 0x1ef3;\n  t.yhook = 0x01b4;\n  t.yhookabove = 0x1ef7;\n  t.yiarmenian = 0x0575;\n  t.yicyrillic = 0x0457;\n  t.yikorean = 0x3162;\n  t.yinyang = 0x262f;\n  t.yiwnarmenian = 0x0582;\n  t.ymonospace = 0xff59;\n  t.yod = 0x05d9;\n  t.yoddagesh = 0xfb39;\n  t.yoddageshhebrew = 0xfb39;\n  t.yodhebrew = 0x05d9;\n  t.yodyodhebrew = 0x05f2;\n  t.yodyodpatahhebrew = 0xfb1f;\n  t.yohiragana = 0x3088;\n  t.yoikorean = 0x3189;\n  t.yokatakana = 0x30e8;\n  t.yokatakanahalfwidth = 0xff96;\n  t.yokorean = 0x315b;\n  t.yosmallhiragana = 0x3087;\n  t.yosmallkatakana = 0x30e7;\n  t.yosmallkatakanahalfwidth = 0xff6e;\n  t.yotgreek = 0x03f3;\n  t.yoyaekorean = 0x3188;\n  t.yoyakorean = 0x3187;\n  t.yoyakthai = 0x0e22;\n  t.yoyingthai = 0x0e0d;\n  t.yparen = 0x24b4;\n  t.ypogegrammeni = 0x037a;\n  t.ypogegrammenigreekcmb = 0x0345;\n  t.yr = 0x01a6;\n  t.yring = 0x1e99;\n  t.ysuperior = 0x02b8;\n  t.ytilde = 0x1ef9;\n  t.yturned = 0x028e;\n  t.yuhiragana = 0x3086;\n  t.yuikorean = 0x318c;\n  t.yukatakana = 0x30e6;\n  t.yukatakanahalfwidth = 0xff95;\n  t.yukorean = 0x3160;\n  t.yusbigcyrillic = 0x046b;\n  t.yusbigiotifiedcyrillic = 0x046d;\n  t.yuslittlecyrillic = 0x0467;\n  t.yuslittleiotifiedcyrillic = 0x0469;\n  t.yusmallhiragana = 0x3085;\n  t.yusmallkatakana = 0x30e5;\n  t.yusmallkatakanahalfwidth = 0xff6d;\n  t.yuyekorean = 0x318b;\n  t.yuyeokorean = 0x318a;\n  t.yyabengali = 0x09df;\n  t.yyadeva = 0x095f;\n  t.z = 0x007a;\n  t.zaarmenian = 0x0566;\n  t.zacute = 0x017a;\n  t.zadeva = 0x095b;\n  t.zagurmukhi = 0x0a5b;\n  t.zaharabic = 0x0638;\n  t.zahfinalarabic = 0xfec6;\n  t.zahinitialarabic = 0xfec7;\n  t.zahiragana = 0x3056;\n  t.zahmedialarabic = 0xfec8;\n  t.zainarabic = 0x0632;\n  t.zainfinalarabic = 0xfeb0;\n  t.zakatakana = 0x30b6;\n  t.zaqefgadolhebrew = 0x0595;\n  t.zaqefqatanhebrew = 0x0594;\n  t.zarqahebrew = 0x0598;\n  t.zayin = 0x05d6;\n  t.zayindagesh = 0xfb36;\n  t.zayindageshhebrew = 0xfb36;\n  t.zayinhebrew = 0x05d6;\n  t.zbopomofo = 0x3117;\n  t.zcaron = 0x017e;\n  t.zcircle = 0x24e9;\n  t.zcircumflex = 0x1e91;\n  t.zcurl = 0x0291;\n  t.zdot = 0x017c;\n  t.zdotaccent = 0x017c;\n  t.zdotbelow = 0x1e93;\n  t.zecyrillic = 0x0437;\n  t.zedescendercyrillic = 0x0499;\n  t.zedieresiscyrillic = 0x04df;\n  t.zehiragana = 0x305c;\n  t.zekatakana = 0x30bc;\n  t.zero = 0x0030;\n  t.zeroarabic = 0x0660;\n  t.zerobengali = 0x09e6;\n  t.zerodeva = 0x0966;\n  t.zerogujarati = 0x0ae6;\n  t.zerogurmukhi = 0x0a66;\n  t.zerohackarabic = 0x0660;\n  t.zeroinferior = 0x2080;\n  t.zeromonospace = 0xff10;\n  t.zerooldstyle = 0xf730;\n  t.zeropersian = 0x06f0;\n  t.zerosuperior = 0x2070;\n  t.zerothai = 0x0e50;\n  t.zerowidthjoiner = 0xfeff;\n  t.zerowidthnonjoiner = 0x200c;\n  t.zerowidthspace = 0x200b;\n  t.zeta = 0x03b6;\n  t.zhbopomofo = 0x3113;\n  t.zhearmenian = 0x056a;\n  t.zhebrevecyrillic = 0x04c2;\n  t.zhecyrillic = 0x0436;\n  t.zhedescendercyrillic = 0x0497;\n  t.zhedieresiscyrillic = 0x04dd;\n  t.zihiragana = 0x3058;\n  t.zikatakana = 0x30b8;\n  t.zinorhebrew = 0x05ae;\n  t.zlinebelow = 0x1e95;\n  t.zmonospace = 0xff5a;\n  t.zohiragana = 0x305e;\n  t.zokatakana = 0x30be;\n  t.zparen = 0x24b5;\n  t.zretroflexhook = 0x0290;\n  t.zstroke = 0x01b6;\n  t.zuhiragana = 0x305a;\n  t.zukatakana = 0x30ba;\n  t[\".notdef\"] = 0x0000;\n  t.angbracketleftbig = 0x2329;\n  t.angbracketleftBig = 0x2329;\n  t.angbracketleftbigg = 0x2329;\n  t.angbracketleftBigg = 0x2329;\n  t.angbracketrightBig = 0x232a;\n  t.angbracketrightbig = 0x232a;\n  t.angbracketrightBigg = 0x232a;\n  t.angbracketrightbigg = 0x232a;\n  t.arrowhookleft = 0x21aa;\n  t.arrowhookright = 0x21a9;\n  t.arrowlefttophalf = 0x21bc;\n  t.arrowleftbothalf = 0x21bd;\n  t.arrownortheast = 0x2197;\n  t.arrownorthwest = 0x2196;\n  t.arrowrighttophalf = 0x21c0;\n  t.arrowrightbothalf = 0x21c1;\n  t.arrowsoutheast = 0x2198;\n  t.arrowsouthwest = 0x2199;\n  t.backslashbig = 0x2216;\n  t.backslashBig = 0x2216;\n  t.backslashBigg = 0x2216;\n  t.backslashbigg = 0x2216;\n  t.bardbl = 0x2016;\n  t.bracehtipdownleft = 0xfe37;\n  t.bracehtipdownright = 0xfe37;\n  t.bracehtipupleft = 0xfe38;\n  t.bracehtipupright = 0xfe38;\n  t.braceleftBig = 0x007b;\n  t.braceleftbig = 0x007b;\n  t.braceleftbigg = 0x007b;\n  t.braceleftBigg = 0x007b;\n  t.bracerightBig = 0x007d;\n  t.bracerightbig = 0x007d;\n  t.bracerightbigg = 0x007d;\n  t.bracerightBigg = 0x007d;\n  t.bracketleftbig = 0x005b;\n  t.bracketleftBig = 0x005b;\n  t.bracketleftbigg = 0x005b;\n  t.bracketleftBigg = 0x005b;\n  t.bracketrightBig = 0x005d;\n  t.bracketrightbig = 0x005d;\n  t.bracketrightbigg = 0x005d;\n  t.bracketrightBigg = 0x005d;\n  t.ceilingleftbig = 0x2308;\n  t.ceilingleftBig = 0x2308;\n  t.ceilingleftBigg = 0x2308;\n  t.ceilingleftbigg = 0x2308;\n  t.ceilingrightbig = 0x2309;\n  t.ceilingrightBig = 0x2309;\n  t.ceilingrightbigg = 0x2309;\n  t.ceilingrightBigg = 0x2309;\n  t.circledotdisplay = 0x2299;\n  t.circledottext = 0x2299;\n  t.circlemultiplydisplay = 0x2297;\n  t.circlemultiplytext = 0x2297;\n  t.circleplusdisplay = 0x2295;\n  t.circleplustext = 0x2295;\n  t.contintegraldisplay = 0x222e;\n  t.contintegraltext = 0x222e;\n  t.coproductdisplay = 0x2210;\n  t.coproducttext = 0x2210;\n  t.floorleftBig = 0x230a;\n  t.floorleftbig = 0x230a;\n  t.floorleftbigg = 0x230a;\n  t.floorleftBigg = 0x230a;\n  t.floorrightbig = 0x230b;\n  t.floorrightBig = 0x230b;\n  t.floorrightBigg = 0x230b;\n  t.floorrightbigg = 0x230b;\n  t.hatwide = 0x0302;\n  t.hatwider = 0x0302;\n  t.hatwidest = 0x0302;\n  t.intercal = 0x1d40;\n  t.integraldisplay = 0x222b;\n  t.integraltext = 0x222b;\n  t.intersectiondisplay = 0x22c2;\n  t.intersectiontext = 0x22c2;\n  t.logicalanddisplay = 0x2227;\n  t.logicalandtext = 0x2227;\n  t.logicalordisplay = 0x2228;\n  t.logicalortext = 0x2228;\n  t.parenleftBig = 0x0028;\n  t.parenleftbig = 0x0028;\n  t.parenleftBigg = 0x0028;\n  t.parenleftbigg = 0x0028;\n  t.parenrightBig = 0x0029;\n  t.parenrightbig = 0x0029;\n  t.parenrightBigg = 0x0029;\n  t.parenrightbigg = 0x0029;\n  t.prime = 0x2032;\n  t.productdisplay = 0x220f;\n  t.producttext = 0x220f;\n  t.radicalbig = 0x221a;\n  t.radicalBig = 0x221a;\n  t.radicalBigg = 0x221a;\n  t.radicalbigg = 0x221a;\n  t.radicalbt = 0x221a;\n  t.radicaltp = 0x221a;\n  t.radicalvertex = 0x221a;\n  t.slashbig = 0x002f;\n  t.slashBig = 0x002f;\n  t.slashBigg = 0x002f;\n  t.slashbigg = 0x002f;\n  t.summationdisplay = 0x2211;\n  t.summationtext = 0x2211;\n  t.tildewide = 0x02dc;\n  t.tildewider = 0x02dc;\n  t.tildewidest = 0x02dc;\n  t.uniondisplay = 0x22c3;\n  t.unionmultidisplay = 0x228e;\n  t.unionmultitext = 0x228e;\n  t.unionsqdisplay = 0x2294;\n  t.unionsqtext = 0x2294;\n  t.uniontext = 0x22c3;\n  t.vextenddouble = 0x2225;\n  t.vextendsingle = 0x2223;\n});\nconst getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n  t.space = 0x0020;\n  t.a1 = 0x2701;\n  t.a2 = 0x2702;\n  t.a202 = 0x2703;\n  t.a3 = 0x2704;\n  t.a4 = 0x260e;\n  t.a5 = 0x2706;\n  t.a119 = 0x2707;\n  t.a118 = 0x2708;\n  t.a117 = 0x2709;\n  t.a11 = 0x261b;\n  t.a12 = 0x261e;\n  t.a13 = 0x270c;\n  t.a14 = 0x270d;\n  t.a15 = 0x270e;\n  t.a16 = 0x270f;\n  t.a105 = 0x2710;\n  t.a17 = 0x2711;\n  t.a18 = 0x2712;\n  t.a19 = 0x2713;\n  t.a20 = 0x2714;\n  t.a21 = 0x2715;\n  t.a22 = 0x2716;\n  t.a23 = 0x2717;\n  t.a24 = 0x2718;\n  t.a25 = 0x2719;\n  t.a26 = 0x271a;\n  t.a27 = 0x271b;\n  t.a28 = 0x271c;\n  t.a6 = 0x271d;\n  t.a7 = 0x271e;\n  t.a8 = 0x271f;\n  t.a9 = 0x2720;\n  t.a10 = 0x2721;\n  t.a29 = 0x2722;\n  t.a30 = 0x2723;\n  t.a31 = 0x2724;\n  t.a32 = 0x2725;\n  t.a33 = 0x2726;\n  t.a34 = 0x2727;\n  t.a35 = 0x2605;\n  t.a36 = 0x2729;\n  t.a37 = 0x272a;\n  t.a38 = 0x272b;\n  t.a39 = 0x272c;\n  t.a40 = 0x272d;\n  t.a41 = 0x272e;\n  t.a42 = 0x272f;\n  t.a43 = 0x2730;\n  t.a44 = 0x2731;\n  t.a45 = 0x2732;\n  t.a46 = 0x2733;\n  t.a47 = 0x2734;\n  t.a48 = 0x2735;\n  t.a49 = 0x2736;\n  t.a50 = 0x2737;\n  t.a51 = 0x2738;\n  t.a52 = 0x2739;\n  t.a53 = 0x273a;\n  t.a54 = 0x273b;\n  t.a55 = 0x273c;\n  t.a56 = 0x273d;\n  t.a57 = 0x273e;\n  t.a58 = 0x273f;\n  t.a59 = 0x2740;\n  t.a60 = 0x2741;\n  t.a61 = 0x2742;\n  t.a62 = 0x2743;\n  t.a63 = 0x2744;\n  t.a64 = 0x2745;\n  t.a65 = 0x2746;\n  t.a66 = 0x2747;\n  t.a67 = 0x2748;\n  t.a68 = 0x2749;\n  t.a69 = 0x274a;\n  t.a70 = 0x274b;\n  t.a71 = 0x25cf;\n  t.a72 = 0x274d;\n  t.a73 = 0x25a0;\n  t.a74 = 0x274f;\n  t.a203 = 0x2750;\n  t.a75 = 0x2751;\n  t.a204 = 0x2752;\n  t.a76 = 0x25b2;\n  t.a77 = 0x25bc;\n  t.a78 = 0x25c6;\n  t.a79 = 0x2756;\n  t.a81 = 0x25d7;\n  t.a82 = 0x2758;\n  t.a83 = 0x2759;\n  t.a84 = 0x275a;\n  t.a97 = 0x275b;\n  t.a98 = 0x275c;\n  t.a99 = 0x275d;\n  t.a100 = 0x275e;\n  t.a101 = 0x2761;\n  t.a102 = 0x2762;\n  t.a103 = 0x2763;\n  t.a104 = 0x2764;\n  t.a106 = 0x2765;\n  t.a107 = 0x2766;\n  t.a108 = 0x2767;\n  t.a112 = 0x2663;\n  t.a111 = 0x2666;\n  t.a110 = 0x2665;\n  t.a109 = 0x2660;\n  t.a120 = 0x2460;\n  t.a121 = 0x2461;\n  t.a122 = 0x2462;\n  t.a123 = 0x2463;\n  t.a124 = 0x2464;\n  t.a125 = 0x2465;\n  t.a126 = 0x2466;\n  t.a127 = 0x2467;\n  t.a128 = 0x2468;\n  t.a129 = 0x2469;\n  t.a130 = 0x2776;\n  t.a131 = 0x2777;\n  t.a132 = 0x2778;\n  t.a133 = 0x2779;\n  t.a134 = 0x277a;\n  t.a135 = 0x277b;\n  t.a136 = 0x277c;\n  t.a137 = 0x277d;\n  t.a138 = 0x277e;\n  t.a139 = 0x277f;\n  t.a140 = 0x2780;\n  t.a141 = 0x2781;\n  t.a142 = 0x2782;\n  t.a143 = 0x2783;\n  t.a144 = 0x2784;\n  t.a145 = 0x2785;\n  t.a146 = 0x2786;\n  t.a147 = 0x2787;\n  t.a148 = 0x2788;\n  t.a149 = 0x2789;\n  t.a150 = 0x278a;\n  t.a151 = 0x278b;\n  t.a152 = 0x278c;\n  t.a153 = 0x278d;\n  t.a154 = 0x278e;\n  t.a155 = 0x278f;\n  t.a156 = 0x2790;\n  t.a157 = 0x2791;\n  t.a158 = 0x2792;\n  t.a159 = 0x2793;\n  t.a160 = 0x2794;\n  t.a161 = 0x2192;\n  t.a163 = 0x2194;\n  t.a164 = 0x2195;\n  t.a196 = 0x2798;\n  t.a165 = 0x2799;\n  t.a192 = 0x279a;\n  t.a166 = 0x279b;\n  t.a167 = 0x279c;\n  t.a168 = 0x279d;\n  t.a169 = 0x279e;\n  t.a170 = 0x279f;\n  t.a171 = 0x27a0;\n  t.a172 = 0x27a1;\n  t.a173 = 0x27a2;\n  t.a162 = 0x27a3;\n  t.a174 = 0x27a4;\n  t.a175 = 0x27a5;\n  t.a176 = 0x27a6;\n  t.a177 = 0x27a7;\n  t.a178 = 0x27a8;\n  t.a179 = 0x27a9;\n  t.a193 = 0x27aa;\n  t.a180 = 0x27ab;\n  t.a199 = 0x27ac;\n  t.a181 = 0x27ad;\n  t.a200 = 0x27ae;\n  t.a182 = 0x27af;\n  t.a201 = 0x27b1;\n  t.a183 = 0x27b2;\n  t.a184 = 0x27b3;\n  t.a197 = 0x27b4;\n  t.a185 = 0x27b5;\n  t.a194 = 0x27b6;\n  t.a198 = 0x27b7;\n  t.a186 = 0x27b8;\n  t.a195 = 0x27b9;\n  t.a187 = 0x27ba;\n  t.a188 = 0x27bb;\n  t.a189 = 0x27bc;\n  t.a190 = 0x27bd;\n  t.a191 = 0x27be;\n  t.a89 = 0x2768;\n  t.a90 = 0x2769;\n  t.a93 = 0x276a;\n  t.a94 = 0x276b;\n  t.a91 = 0x276c;\n  t.a92 = 0x276d;\n  t.a205 = 0x276e;\n  t.a85 = 0x276f;\n  t.a206 = 0x2770;\n  t.a86 = 0x2771;\n  t.a87 = 0x2772;\n  t.a88 = 0x2773;\n  t.a95 = 0x2774;\n  t.a96 = 0x2775;\n  t[\".notdef\"] = 0x0000;\n});\n\n;// ./src/core/unicode.js\n\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00a9;\n  t[63193] = 0x00a9;\n  t[63720] = 0x00ae;\n  t[63194] = 0x00ae;\n  t[63722] = 0x2122;\n  t[63195] = 0x2122;\n  t[63729] = 0x23a7;\n  t[63730] = 0x23a8;\n  t[63731] = 0x23a9;\n  t[63740] = 0x23ab;\n  t[63741] = 0x23ac;\n  t[63742] = 0x23ad;\n  t[63726] = 0x23a1;\n  t[63727] = 0x23a2;\n  t[63728] = 0x23a3;\n  t[63737] = 0x23a4;\n  t[63738] = 0x23a5;\n  t[63739] = 0x23a6;\n  t[63723] = 0x239b;\n  t[63724] = 0x239c;\n  t[63725] = 0x239d;\n  t[63734] = 0x239e;\n  t[63735] = 0x239f;\n  t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === 0x00ad) {\n    return 0x002d;\n  }\n  return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  let unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  if (name[0] === \"u\") {\n    const nameLen = name.length;\n    let hexStr;\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\nconst UnicodeRanges = [[0x0000, 0x007f], [0x0080, 0x00ff], [0x0100, 0x017f], [0x0180, 0x024f], [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], [0x02b0, 0x02ff, 0xa700, 0xa71f], [0x0300, 0x036f, 0x1dc0, 0x1dff], [0x0370, 0x03ff], [0x2c80, 0x2cff], [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], [0x0530, 0x058f], [0x0590, 0x05ff], [0xa500, 0xa63f], [0x0600, 0x06ff, 0x0750, 0x077f], [0x07c0, 0x07ff], [0x0900, 0x097f], [0x0980, 0x09ff], [0x0a00, 0x0a7f], [0x0a80, 0x0aff], [0x0b00, 0x0b7f], [0x0b80, 0x0bff], [0x0c00, 0x0c7f], [0x0c80, 0x0cff], [0x0d00, 0x0d7f], [0x0e00, 0x0e7f], [0x0e80, 0x0eff], [0x10a0, 0x10ff, 0x2d00, 0x2d2f], [0x1b00, 0x1b7f], [0x1100, 0x11ff], [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], [0x1f00, 0x1fff], [0x2000, 0x206f, 0x2e00, 0x2e7f], [0x2070, 0x209f], [0x20a0, 0x20cf], [0x20d0, 0x20ff], [0x2100, 0x214f], [0x2150, 0x218f], [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], [0x2300, 0x23ff], [0x2400, 0x243f], [0x2440, 0x245f], [0x2460, 0x24ff], [0x2500, 0x257f], [0x2580, 0x259f], [0x25a0, 0x25ff], [0x2600, 0x26ff], [0x2700, 0x27bf], [0x3000, 0x303f], [0x3040, 0x309f], [0x30a0, 0x30ff, 0x31f0, 0x31ff], [0x3100, 0x312f, 0x31a0, 0x31bf], [0x3130, 0x318f], [0xa840, 0xa87f], [0x3200, 0x32ff], [0x3300, 0x33ff], [0xac00, 0xd7af], [0xd800, 0xdfff], [0x10900, 0x1091f], [0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400, 0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f], [0xe000, 0xf8ff], [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], [0xfb00, 0xfb4f], [0xfb50, 0xfdff], [0xfe20, 0xfe2f], [0xfe10, 0xfe1f], [0xfe50, 0xfe6f], [0xfe70, 0xfeff], [0xff00, 0xffef], [0xfff0, 0xffff], [0x0f00, 0x0fff], [0x0700, 0x074f], [0x0780, 0x07bf], [0x0d80, 0x0dff], [0x1000, 0x109f], [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], [0x13a0, 0x13ff], [0x1400, 0x167f], [0x1680, 0x169f], [0x16a0, 0x16ff], [0x1780, 0x17ff], [0x1800, 0x18af], [0x2800, 0x28ff], [0xa000, 0xa48f], [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], [0x10300, 0x1032f], [0x10330, 0x1034f], [0x10400, 0x1044f], [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], [0x1d400, 0x1d7ff], [0xff000, 0xffffd], [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], [0xe0000, 0xe007f], [0x1900, 0x194f], [0x1950, 0x197f], [0x1980, 0x19df], [0x1a00, 0x1a1f], [0x2c00, 0x2c5f], [0x2d30, 0x2d7f], [0x4dc0, 0x4dff], [0xa800, 0xa82f], [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], [0x10140, 0x1018f], [0x10380, 0x1039f], [0x103a0, 0x103df], [0x10450, 0x1047f], [0x10480, 0x104af], [0x10800, 0x1083f], [0x10a00, 0x10a5f], [0x1d300, 0x1d35f], [0x12000, 0x123ff, 0x12400, 0x1247f], [0x1d360, 0x1d37f], [0x1b80, 0x1bbf], [0x1c00, 0x1c4f], [0x1c50, 0x1c7f], [0xa880, 0xa8df], [0xa900, 0xa92f], [0xa930, 0xa95f], [0xaa00, 0xaa5f], [0x10190, 0x101cf], [0x101d0, 0x101ff], [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], [0x1f030, 0x1f09f, 0x1f000, 0x1f02f]];\nfunction getUnicodeRangeFor(value, lastPosition = -1) {\n  if (lastPosition !== -1) {\n    const range = UnicodeRanges[lastPosition];\n    for (let i = 0, ii = range.length; i < ii; i += 2) {\n      if (value >= range[i] && value <= range[i + 1]) {\n        return lastPosition;\n      }\n    }\n  }\n  for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    const range = UnicodeRanges[i];\n    for (let j = 0, jj = range.length; j < jj; j += 2) {\n      if (value >= range[j] && value <= range[j + 1]) {\n        return i;\n      }\n    }\n  }\n  return -1;\n}\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\nfunction getCharUnicodeCategory(char) {\n  const cachedCategory = CategoryCache.get(char);\n  if (cachedCategory) {\n    return cachedCategory;\n  }\n  const groups = char.match(SpecialCharRegExp);\n  const category = {\n    isWhitespace: !!groups?.[1],\n    isZeroWidthDiacritic: !!groups?.[2],\n    isInvisibleFormatMark: !!groups?.[3]\n  };\n  CategoryCache.set(char, category);\n  return category;\n}\nfunction clearUnicodeCaches() {\n  CategoryCache.clear();\n}\n\n;// ./src/core/fonts_utils.js\n\n\n\n\n\nconst SEAC_ANALYSIS_ENABLED = true;\nconst FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144\n};\nconst MacStandardGlyphOrdering = [\".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\", \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\", \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\", \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (const key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  const charCodeToGlyphId = Object.create(null);\n  let glyphId, charCode, baseEncoding;\n  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n  if (properties.isInternalFont) {\n    baseEncoding = builtInEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n    }\n  } else if (properties.baseEncodingName) {\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n    }\n  } else if (isSymbolicFont) {\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n    }\n  }\n  const differences = properties.differences;\n  let glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      const glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : 0;\n    }\n  }\n  return charCodeToGlyphId;\n}\nfunction normalizeFontName(name) {\n  return name.replaceAll(/[,_]/g, \"-\").replaceAll(/\\s/g, \"\");\n}\nconst getVerticalPresentationForm = getLookupTableFactory(t => {\n  t[0x2013] = 0xfe32;\n  t[0x2014] = 0xfe31;\n  t[0x2025] = 0xfe30;\n  t[0x2026] = 0xfe19;\n  t[0x3001] = 0xfe11;\n  t[0x3002] = 0xfe12;\n  t[0x3008] = 0xfe3f;\n  t[0x3009] = 0xfe40;\n  t[0x300a] = 0xfe3d;\n  t[0x300b] = 0xfe3e;\n  t[0x300c] = 0xfe41;\n  t[0x300d] = 0xfe42;\n  t[0x300e] = 0xfe43;\n  t[0x300f] = 0xfe44;\n  t[0x3010] = 0xfe3b;\n  t[0x3011] = 0xfe3c;\n  t[0x3014] = 0xfe39;\n  t[0x3015] = 0xfe3a;\n  t[0x3016] = 0xfe17;\n  t[0x3017] = 0xfe18;\n  t[0xfe4f] = 0xfe34;\n  t[0xff01] = 0xfe15;\n  t[0xff08] = 0xfe35;\n  t[0xff09] = 0xfe36;\n  t[0xff0c] = 0xfe10;\n  t[0xff1a] = 0xfe13;\n  t[0xff1b] = 0xfe14;\n  t[0xff1f] = 0xfe16;\n  t[0xff3b] = 0xfe47;\n  t[0xff3d] = 0xfe48;\n  t[0xff3f] = 0xfe33;\n  t[0xff5b] = 0xfe37;\n  t[0xff5d] = 0xfe38;\n});\n\n;// ./src/core/standard_fonts.js\n\n\nconst getStdFontMap = getLookupTableFactory(function (t) {\n  t[\"Times-Roman\"] = \"Times-Roman\";\n  t.Helvetica = \"Helvetica\";\n  t.Courier = \"Courier\";\n  t.Symbol = \"Symbol\";\n  t[\"Times-Bold\"] = \"Times-Bold\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t.ZapfDingbats = \"ZapfDingbats\";\n  t[\"Times-Italic\"] = \"Times-Italic\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n  t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialUnicodeMS = \"Helvetica\";\n  t[\"ArialUnicodeMS-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialUnicodeMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialUnicodeMS-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n  t.Courier = \"FoxitFixed.pfb\";\n  t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n  t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n  t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n  t.Helvetica = \"LiberationSans-Regular.ttf\";\n  t[\"Helvetica-Bold\"] = \"LiberationSans-Bold.ttf\";\n  t[\"Helvetica-BoldOblique\"] = \"LiberationSans-BoldItalic.ttf\";\n  t[\"Helvetica-Oblique\"] = \"LiberationSans-Italic.ttf\";\n  t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n  t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n  t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n  t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n  t.Symbol = \"FoxitSymbol.pfb\";\n  t.ZapfDingbats = \"FoxitDingbats.pfb\";\n  t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n  t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n  t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n  t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t.GillSansMT = \"Helvetica\";\n  t[\"GillSansMT-Bold\"] = \"Helvetica-Bold\";\n  t[\"GillSansMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"GillSansMT-Italic\"] = \"Helvetica-Oblique\";\n  t.Impact = \"Helvetica\";\n  t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n  t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ItcSymbol-Book\"] = \"Helvetica\";\n  t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n  t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n  t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n});\nconst getSerifFonts = getLookupTableFactory(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t.LiberationSerif = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n  t.Wingdings = true;\n  t[\"Wingdings-Bold\"] = true;\n  t[\"Wingdings-Regular\"] = true;\n});\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[179] = 8220;\n  t[180] = 8221;\n  t[181] = 8216;\n  t[182] = 8217;\n  t[200] = 193;\n  t[203] = 205;\n  t[207] = 211;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[226] = 352;\n  t[227] = 353;\n  t[228] = 381;\n  t[229] = 382;\n  t[233] = 221;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[267] = 282;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[283] = 344;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[672] = 1488;\n  t[673] = 1489;\n  t[674] = 1490;\n  t[675] = 1491;\n  t[676] = 1492;\n  t[677] = 1493;\n  t[678] = 1494;\n  t[679] = 1495;\n  t[680] = 1496;\n  t[681] = 1497;\n  t[682] = 1498;\n  t[683] = 1499;\n  t[684] = 1500;\n  t[685] = 1501;\n  t[686] = 1502;\n  t[687] = 1503;\n  t[688] = 1504;\n  t[689] = 1505;\n  t[690] = 1506;\n  t[691] = 1507;\n  t[692] = 1508;\n  t[693] = 1509;\n  t[694] = 1510;\n  t[695] = 1511;\n  t[696] = 1512;\n  t[697] = 1513;\n  t[698] = 1514;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (t) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[5] = 192;\n  t[6] = 193;\n  t[9] = 196;\n  t[17] = 66;\n  t[18] = 67;\n  t[21] = 268;\n  t[24] = 68;\n  t[28] = 69;\n  t[29] = 200;\n  t[30] = 201;\n  t[32] = 282;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[48] = 204;\n  t[49] = 205;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[76] = 210;\n  t[80] = 214;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[92] = 344;\n  t[94] = 83;\n  t[97] = 352;\n  t[100] = 84;\n  t[104] = 85;\n  t[109] = 220;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[124] = 221;\n  t[127] = 90;\n  t[129] = 381;\n  t[258] = 97;\n  t[259] = 224;\n  t[260] = 225;\n  t[263] = 228;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[275] = 269;\n  t[282] = 100;\n  t[286] = 101;\n  t[287] = 232;\n  t[288] = 233;\n  t[290] = 283;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[350] = 236;\n  t[351] = 237;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[382] = 242;\n  t[383] = 243;\n  t[386] = 246;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[398] = 345;\n  t[400] = 115;\n  t[401] = 347;\n  t[403] = 353;\n  t[410] = 116;\n  t[437] = 117;\n  t[442] = 252;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[457] = 253;\n  t[460] = 122;\n  t[462] = 382;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\nfunction getStandardFontName(name) {\n  const fontName = normalizeFontName(name);\n  const stdFontMap = getStdFontMap();\n  return stdFontMap[fontName];\n}\nfunction isKnownFontName(name) {\n  const fontName = normalizeFontName(name);\n  return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]);\n}\n\n;// ./src/core/to_unicode_map.js\n\nclass ToUnicodeMap {\n  constructor(cmap = []) {\n    this._map = cmap;\n  }\n  get length() {\n    return this._map.length;\n  }\n  forEach(callback) {\n    for (const charCode in this._map) {\n      callback(charCode, this._map[charCode].charCodeAt(0));\n    }\n  }\n  has(i) {\n    return this._map[i] !== undefined;\n  }\n  get(i) {\n    return this._map[i];\n  }\n  charCodeOf(value) {\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n  amend(map) {\n    for (const charCode in map) {\n      this._map[charCode] = map[charCode];\n    }\n  }\n}\nclass IdentityToUnicodeMap {\n  constructor(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n  get length() {\n    return this.lastChar + 1 - this.firstChar;\n  }\n  forEach(callback) {\n    for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n      callback(i, i);\n    }\n  }\n  has(i) {\n    return this.firstChar <= i && i <= this.lastChar;\n  }\n  get(i) {\n    if (this.firstChar <= i && i <= this.lastChar) {\n      return String.fromCharCode(i);\n    }\n    return undefined;\n  }\n  charCodeOf(v) {\n    return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n  }\n  amend(map) {\n    unreachable(\"Should not call amend()\");\n  }\n}\n\n;// ./src/core/cff_font.js\n\n\n\nclass CFFFont {\n  constructor(file, properties) {\n    this.properties = properties;\n    const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    const compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      this.data = file;\n    }\n    this._createBuiltInEncoding();\n  }\n  get numGlyphs() {\n    return this.cff.charStrings.count;\n  }\n  getCharset() {\n    return this.cff.charset.charset;\n  }\n  getGlyphMapping() {\n    const cff = this.cff;\n    const properties = this.properties;\n    const {\n      cidToGidMap,\n      cMap\n    } = properties;\n    const charsets = cff.charset.charset;\n    let charCodeToGlyphId;\n    let glyphId;\n    if (properties.composite) {\n      let invCidToGidMap;\n      if (cidToGidMap?.length > 0) {\n        invCidToGidMap = Object.create(null);\n        for (let i = 0, ii = cidToGidMap.length; i < ii; i++) {\n          const gid = cidToGidMap[i];\n          if (gid !== undefined) {\n            invCidToGidMap[gid] = i;\n          }\n        }\n      }\n      charCodeToGlyphId = Object.create(null);\n      let charCode;\n      if (cff.isCIDFont) {\n        for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n          const cid = charsets[glyphId];\n          charCode = cMap.charCodeOf(cid);\n          if (invCidToGidMap?.[charCode] !== undefined) {\n            charCode = invCidToGidMap[charCode];\n          }\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      } else {\n        for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n          charCode = cMap.charCodeOf(glyphId);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      }\n      return charCodeToGlyphId;\n    }\n    let encoding = cff.encoding ? cff.encoding.encoding : null;\n    if (properties.isInternalFont) {\n      encoding = properties.defaultEncoding;\n    }\n    charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n    return charCodeToGlyphId;\n  }\n  hasGlyphId(id) {\n    return this.cff.hasGlyphId(id);\n  }\n  _createBuiltInEncoding() {\n    const {\n      charset,\n      encoding\n    } = this.cff;\n    if (!charset || !encoding) {\n      return;\n    }\n    const charsets = charset.charset,\n      encodings = encoding.encoding;\n    const map = [];\n    for (const charCode in encodings) {\n      const glyphId = encodings[charCode];\n      if (glyphId >= 0) {\n        const glyphName = charsets[glyphId];\n        if (glyphName) {\n          map[charCode] = glyphName;\n        }\n      }\n    }\n    if (map.length > 0) {\n      this.properties.builtInEncoding = map;\n    }\n  }\n}\n\n;// ./src/core/font_renderer.js\n\n\n\n\n\n\nfunction getUint32(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\nfunction getUint16(data, offset) {\n  return data[offset] << 8 | data[offset + 1];\n}\nfunction getInt16(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16) >> 16;\n}\nfunction getInt8(data, offset) {\n  return data[offset] << 24 >> 24;\n}\nfunction getFloat214(data, offset) {\n  return getInt16(data, offset) / 16384;\n}\nfunction getSubroutineBias(subrs) {\n  const numSubrs = subrs.length;\n  let bias = 32768;\n  if (numSubrs < 1240) {\n    bias = 107;\n  } else if (numSubrs < 33900) {\n    bias = 1131;\n  }\n  return bias;\n}\nfunction parseCmap(data, start, end) {\n  const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16);\n  const format = getUint16(data, start + offset);\n  let ranges, p, i;\n  if (format === 4) {\n    getUint16(data, start + offset + 2);\n    const segCount = getUint16(data, start + offset + 6) >> 1;\n    p = start + offset + 14;\n    ranges = [];\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i] = {\n        end: getUint16(data, p)\n      };\n    }\n    p += 2;\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].start = getUint16(data, p);\n    }\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].idDelta = getUint16(data, p);\n    }\n    for (i = 0; i < segCount; i++, p += 2) {\n      let idOffset = getUint16(data, p);\n      if (idOffset === 0) {\n        continue;\n      }\n      ranges[i].ids = [];\n      for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n        ranges[i].ids[j] = getUint16(data, p + idOffset);\n        idOffset += 2;\n      }\n    }\n    return ranges;\n  } else if (format === 12) {\n    const groups = getUint32(data, start + offset + 12);\n    p = start + offset + 16;\n    ranges = [];\n    for (i = 0; i < groups; i++) {\n      start = getUint32(data, p);\n      ranges.push({\n        start,\n        end: getUint32(data, p + 4),\n        idDelta: getUint32(data, p + 8) - start\n      });\n      p += 12;\n    }\n    return ranges;\n  }\n  throw new FormatError(`unsupported cmap: ${format}`);\n}\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n  const properties = {};\n  const parser = new CFFParser(new Stream(data, start, end - start), properties, seacAnalysisEnabled);\n  const cff = parser.parse();\n  return {\n    glyphs: cff.charStrings.objects,\n    subrs: cff.topDict.privateDict?.subrsIndex?.objects,\n    gsubrs: cff.globalSubrIndex?.objects,\n    isCFFCIDFont: cff.isCIDFont,\n    fdSelect: cff.fdSelect,\n    fdArray: cff.fdArray\n  };\n}\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n  let itemSize, itemDecode;\n  if (isGlyphLocationsLong) {\n    itemSize = 4;\n    itemDecode = getUint32;\n  } else {\n    itemSize = 2;\n    itemDecode = (data, offset) => 2 * getUint16(data, offset);\n  }\n  const glyphs = [];\n  let startOffset = itemDecode(loca, 0);\n  for (let j = itemSize; j < loca.length; j += itemSize) {\n    const endOffset = itemDecode(loca, j);\n    glyphs.push(glyf.subarray(startOffset, endOffset));\n    startOffset = endOffset;\n  }\n  return glyphs;\n}\nfunction lookupCmap(ranges, unicode) {\n  const code = unicode.codePointAt(0);\n  let gid = 0,\n    l = 0,\n    r = ranges.length - 1;\n  while (l < r) {\n    const c = l + r + 1 >> 1;\n    if (code < ranges[c].start) {\n      r = c - 1;\n    } else {\n      l = c;\n    }\n  }\n  if (ranges[l].start <= code && code <= ranges[l].end) {\n    gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n  }\n  return {\n    charCode: code,\n    glyphId: gid\n  };\n}\nfunction compileGlyf(code, cmds, font) {\n  function moveTo(x, y) {\n    cmds.add(FontRenderOps.MOVE_TO, [x, y]);\n  }\n  function lineTo(x, y) {\n    cmds.add(FontRenderOps.LINE_TO, [x, y]);\n  }\n  function quadraticCurveTo(xa, ya, x, y) {\n    cmds.add(FontRenderOps.QUADRATIC_CURVE_TO, [xa, ya, x, y]);\n  }\n  let i = 0;\n  const numberOfContours = getInt16(code, i);\n  let flags;\n  let x = 0,\n    y = 0;\n  i += 10;\n  if (numberOfContours < 0) {\n    do {\n      flags = getUint16(code, i);\n      const glyphIndex = getUint16(code, i + 2);\n      i += 4;\n      let arg1, arg2;\n      if (flags & 0x01) {\n        if (flags & 0x02) {\n          arg1 = getInt16(code, i);\n          arg2 = getInt16(code, i + 2);\n        } else {\n          arg1 = getUint16(code, i);\n          arg2 = getUint16(code, i + 2);\n        }\n        i += 4;\n      } else if (flags & 0x02) {\n        arg1 = getInt8(code, i++);\n        arg2 = getInt8(code, i++);\n      } else {\n        arg1 = code[i++];\n        arg2 = code[i++];\n      }\n      if (flags & 0x02) {\n        x = arg1;\n        y = arg2;\n      } else {\n        x = 0;\n        y = 0;\n      }\n      let scaleX = 1,\n        scaleY = 1,\n        scale01 = 0,\n        scale10 = 0;\n      if (flags & 0x08) {\n        scaleX = scaleY = getFloat214(code, i);\n        i += 2;\n      } else if (flags & 0x40) {\n        scaleX = getFloat214(code, i);\n        scaleY = getFloat214(code, i + 2);\n        i += 4;\n      } else if (flags & 0x80) {\n        scaleX = getFloat214(code, i);\n        scale01 = getFloat214(code, i + 2);\n        scale10 = getFloat214(code, i + 4);\n        scaleY = getFloat214(code, i + 6);\n        i += 8;\n      }\n      const subglyph = font.glyphs[glyphIndex];\n      if (subglyph) {\n        cmds.add(FontRenderOps.SAVE);\n        cmds.add(FontRenderOps.TRANSFORM, [scaleX, scale01, scale10, scaleY, x, y]);\n        if (!(flags & 0x02)) {}\n        compileGlyf(subglyph, cmds, font);\n        cmds.add(FontRenderOps.RESTORE);\n      }\n    } while (flags & 0x20);\n  } else {\n    const endPtsOfContours = [];\n    let j, jj;\n    for (j = 0; j < numberOfContours; j++) {\n      endPtsOfContours.push(getUint16(code, i));\n      i += 2;\n    }\n    const instructionLength = getUint16(code, i);\n    i += 2 + instructionLength;\n    const numberOfPoints = endPtsOfContours.at(-1) + 1;\n    const points = [];\n    while (points.length < numberOfPoints) {\n      flags = code[i++];\n      let repeat = 1;\n      if (flags & 0x08) {\n        repeat += code[i++];\n      }\n      while (repeat-- > 0) {\n        points.push({\n          flags\n        });\n      }\n    }\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x12) {\n        case 0x00:\n          x += getInt16(code, i);\n          i += 2;\n          break;\n        case 0x02:\n          x -= code[i++];\n          break;\n        case 0x12:\n          x += code[i++];\n          break;\n      }\n      points[j].x = x;\n    }\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x24) {\n        case 0x00:\n          y += getInt16(code, i);\n          i += 2;\n          break;\n        case 0x04:\n          y -= code[i++];\n          break;\n        case 0x24:\n          y += code[i++];\n          break;\n      }\n      points[j].y = y;\n    }\n    let startPoint = 0;\n    for (i = 0; i < numberOfContours; i++) {\n      const endPoint = endPtsOfContours[i];\n      const contour = points.slice(startPoint, endPoint + 1);\n      if (contour[0].flags & 1) {\n        contour.push(contour[0]);\n      } else if (contour.at(-1).flags & 1) {\n        contour.unshift(contour.at(-1));\n      } else {\n        const p = {\n          flags: 1,\n          x: (contour[0].x + contour.at(-1).x) / 2,\n          y: (contour[0].y + contour.at(-1).y) / 2\n        };\n        contour.unshift(p);\n        contour.push(p);\n      }\n      moveTo(contour[0].x, contour[0].y);\n      for (j = 1, jj = contour.length; j < jj; j++) {\n        if (contour[j].flags & 1) {\n          lineTo(contour[j].x, contour[j].y);\n        } else if (contour[j + 1].flags & 1) {\n          quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n          j++;\n        } else {\n          quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n        }\n      }\n      startPoint = endPoint + 1;\n    }\n  }\n}\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n  function moveTo(x, y) {\n    cmds.add(FontRenderOps.MOVE_TO, [x, y]);\n  }\n  function lineTo(x, y) {\n    cmds.add(FontRenderOps.LINE_TO, [x, y]);\n  }\n  function bezierCurveTo(x1, y1, x2, y2, x, y) {\n    cmds.add(FontRenderOps.BEZIER_CURVE_TO, [x1, y1, x2, y2, x, y]);\n  }\n  const stack = [];\n  let x = 0,\n    y = 0;\n  let stems = 0;\n  function parse(code) {\n    let i = 0;\n    while (i < code.length) {\n      let stackClean = false;\n      let v = code[i++];\n      let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n      switch (v) {\n        case 1:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 3:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 4:\n          y += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 5:\n          while (stack.length > 0) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 6:\n          while (stack.length > 0) {\n            x += stack.shift();\n            lineTo(x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 7:\n          while (stack.length > 0) {\n            y += stack.shift();\n            lineTo(x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            x += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 8:\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 10:\n          n = stack.pop();\n          subrCode = null;\n          if (font.isCFFCIDFont) {\n            const fdIndex = font.fdSelect.getFDIndex(glyphId);\n            if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n              const fontDict = font.fdArray[fdIndex];\n              let subrs;\n              if (fontDict.privateDict?.subrsIndex) {\n                subrs = fontDict.privateDict.subrsIndex.objects;\n              }\n              if (subrs) {\n                n += getSubroutineBias(subrs);\n                subrCode = subrs[n];\n              }\n            } else {\n              warn(\"Invalid fd index for glyph index.\");\n            }\n          } else {\n            subrCode = font.subrs[n + font.subrsBias];\n          }\n          if (subrCode) {\n            parse(subrCode);\n          }\n          break;\n        case 11:\n          return;\n        case 12:\n          v = code[i++];\n          switch (v) {\n            case 34:\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y1 = y + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y, xb, y1, x, y1);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y, x, y);\n              break;\n            case 35:\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              stack.pop();\n              break;\n            case 36:\n              xa = x + stack.shift();\n              y1 = y + stack.shift();\n              xb = xa + stack.shift();\n              y2 = y1 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y2, x, y2);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y3 = y2 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y2, xb, y3, x, y);\n              break;\n            case 37:\n              const x0 = x,\n                y0 = y;\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb;\n              if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                x += stack.shift();\n              } else {\n                y += stack.shift();\n              }\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              break;\n            default:\n              throw new FormatError(`unknown operator: 12 ${v}`);\n          }\n          break;\n        case 14:\n          if (stack.length >= 4) {\n            const achar = stack.pop();\n            const bchar = stack.pop();\n            y = stack.pop();\n            x = stack.pop();\n            cmds.add(FontRenderOps.SAVE);\n            cmds.add(FontRenderOps.TRANSLATE, [x, y]);\n            let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]]));\n            compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n            cmds.add(FontRenderOps.RESTORE);\n            cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]]));\n            compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n          }\n          return;\n        case 18:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 19:\n          stems += stack.length >> 1;\n          i += stems + 7 >> 3;\n          stackClean = true;\n          break;\n        case 20:\n          stems += stack.length >> 1;\n          i += stems + 7 >> 3;\n          stackClean = true;\n          break;\n        case 21:\n          y += stack.pop();\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 22:\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 23:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 24:\n          while (stack.length > 2) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          x += stack.shift();\n          y += stack.shift();\n          lineTo(x, y);\n          break;\n        case 25:\n          while (stack.length > 6) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          xa = x + stack.shift();\n          ya = y + stack.shift();\n          xb = xa + stack.shift();\n          yb = ya + stack.shift();\n          x = xb + stack.shift();\n          y = yb + stack.shift();\n          bezierCurveTo(xa, ya, xb, yb, x, y);\n          break;\n        case 26:\n          if (stack.length % 2) {\n            x += stack.shift();\n          }\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb;\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 27:\n          if (stack.length % 2) {\n            y += stack.shift();\n          }\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb;\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 28:\n          stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);\n          i += 2;\n          break;\n        case 29:\n          n = stack.pop() + font.gsubrsBias;\n          subrCode = font.gsubrs[n];\n          if (subrCode) {\n            parse(subrCode);\n          }\n          break;\n        case 30:\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 31:\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        default:\n          if (v < 32) {\n            throw new FormatError(`unknown operator: ${v}`);\n          }\n          if (v < 247) {\n            stack.push(v - 139);\n          } else if (v < 251) {\n            stack.push((v - 247) * 256 + code[i++] + 108);\n          } else if (v < 255) {\n            stack.push(-(v - 251) * 256 - code[i++] - 108);\n          } else {\n            stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);\n            i += 4;\n          }\n          break;\n      }\n      if (stackClean) {\n        stack.length = 0;\n      }\n    }\n  }\n  parse(charStringCode);\n}\nconst NOOP = [];\nclass Commands {\n  cmds = [];\n  add(cmd, args) {\n    if (args) {\n      if (!isNumberArray(args, null)) {\n        warn(`Commands.add - \"${cmd}\" has at least one non-number arg: \"${args}\".`);\n        const newArgs = args.map(arg => typeof arg === \"number\" ? arg : 0);\n        this.cmds.push(cmd, ...newArgs);\n      } else {\n        this.cmds.push(cmd, ...args);\n      }\n    } else {\n      this.cmds.push(cmd);\n    }\n  }\n}\nclass CompiledFont {\n  constructor(fontMatrix) {\n    this.fontMatrix = fontMatrix;\n    this.compiledGlyphs = Object.create(null);\n    this.compiledCharCodeToGlyphId = Object.create(null);\n  }\n  getPathJs(unicode) {\n    const {\n      charCode,\n      glyphId\n    } = lookupCmap(this.cmap, unicode);\n    let fn = this.compiledGlyphs[glyphId],\n      compileEx;\n    if (!fn) {\n      try {\n        fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n      } catch (ex) {\n        fn = NOOP;\n        compileEx = ex;\n      }\n      this.compiledGlyphs[glyphId] = fn;\n    }\n    this.compiledCharCodeToGlyphId[charCode] ??= glyphId;\n    if (compileEx) {\n      throw compileEx;\n    }\n    return fn;\n  }\n  compileGlyph(code, glyphId) {\n    if (!code || code.length === 0 || code[0] === 14) {\n      return NOOP;\n    }\n    let fontMatrix = this.fontMatrix;\n    if (this.isCFFCIDFont) {\n      const fdIndex = this.fdSelect.getFDIndex(glyphId);\n      if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n        const fontDict = this.fdArray[fdIndex];\n        fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n      } else {\n        warn(\"Invalid fd index for glyph index.\");\n      }\n    }\n    const cmds = new Commands();\n    cmds.add(FontRenderOps.SAVE);\n    cmds.add(FontRenderOps.TRANSFORM, fontMatrix.slice());\n    cmds.add(FontRenderOps.SCALE);\n    this.compileGlyphImpl(code, cmds, glyphId);\n    cmds.add(FontRenderOps.RESTORE);\n    return cmds.cmds;\n  }\n  compileGlyphImpl() {\n    unreachable(\"Children classes should implement this.\");\n  }\n  hasBuiltPath(unicode) {\n    const {\n      charCode,\n      glyphId\n    } = lookupCmap(this.cmap, unicode);\n    return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined;\n  }\n}\nclass TrueTypeCompiled extends CompiledFont {\n  constructor(glyphs, cmap, fontMatrix) {\n    super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n    this.glyphs = glyphs;\n    this.cmap = cmap;\n  }\n  compileGlyphImpl(code, cmds) {\n    compileGlyf(code, cmds, this);\n  }\n}\nclass Type2Compiled extends CompiledFont {\n  constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n    super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n    this.glyphs = cffInfo.glyphs;\n    this.gsubrs = cffInfo.gsubrs || [];\n    this.subrs = cffInfo.subrs || [];\n    this.cmap = cmap;\n    this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n    this.gsubrsBias = getSubroutineBias(this.gsubrs);\n    this.subrsBias = getSubroutineBias(this.subrs);\n    this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n    this.fdSelect = cffInfo.fdSelect;\n    this.fdArray = cffInfo.fdArray;\n  }\n  compileGlyphImpl(code, cmds, glyphId) {\n    compileCharString(code, cmds, this, glyphId);\n  }\n}\nclass FontRendererFactory {\n  static create(font, seacAnalysisEnabled) {\n    const data = new Uint8Array(font.data);\n    let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n    const numTables = getUint16(data, 4);\n    for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n      const tag = bytesToString(data.subarray(p, p + 4));\n      const offset = getUint32(data, p + 8);\n      const length = getUint32(data, p + 12);\n      switch (tag) {\n        case \"cmap\":\n          cmap = parseCmap(data, offset, offset + length);\n          break;\n        case \"glyf\":\n          glyf = data.subarray(offset, offset + length);\n          break;\n        case \"loca\":\n          loca = data.subarray(offset, offset + length);\n          break;\n        case \"head\":\n          unitsPerEm = getUint16(data, offset + 18);\n          indexToLocFormat = getUint16(data, offset + 50);\n          break;\n        case \"CFF \":\n          cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n          break;\n      }\n    }\n    if (glyf) {\n      const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n      return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n    }\n    return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n  }\n}\n\n;// ./src/core/metrics.js\n\nconst getMetrics = getLookupTableFactory(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  t.Helvetica = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t.Symbol = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n  t.Courier = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: -426\n  };\n  t[\"Courier-Bold\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 439\n  };\n  t[\"Courier-Oblique\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 426\n  };\n  t[\"Courier-BoldOblique\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 426\n  };\n  t.Helvetica = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 523\n  };\n  t[\"Helvetica-Bold\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 532\n  };\n  t[\"Helvetica-Oblique\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 523\n  };\n  t[\"Helvetica-BoldOblique\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 532\n  };\n  t[\"Times-Roman\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 662,\n    xHeight: 450\n  };\n  t[\"Times-Bold\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 676,\n    xHeight: 461\n  };\n  t[\"Times-Italic\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 653,\n    xHeight: 441\n  };\n  t[\"Times-BoldItalic\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 669,\n    xHeight: 462\n  };\n  t.Symbol = {\n    ascent: Math.NaN,\n    descent: Math.NaN,\n    capHeight: Math.NaN,\n    xHeight: Math.NaN\n  };\n  t.ZapfDingbats = {\n    ascent: Math.NaN,\n    descent: Math.NaN,\n    capHeight: Math.NaN,\n    xHeight: Math.NaN\n  };\n});\n\n;// ./src/core/glyf.js\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\nclass GlyfTable {\n  constructor({\n    glyfTable,\n    isGlyphLocationsLong,\n    locaTable,\n    numGlyphs\n  }) {\n    this.glyphs = [];\n    const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength);\n    const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\n    const offsetSize = isGlyphLocationsLong ? 4 : 2;\n    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n    let pos = 0;\n    for (let i = 0; i < numGlyphs; i++) {\n      pos += offsetSize;\n      const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos);\n      if (next === prev) {\n        this.glyphs.push(new Glyph({}));\n        continue;\n      }\n      const glyph = Glyph.parse(prev, glyf);\n      this.glyphs.push(glyph);\n      prev = next;\n    }\n  }\n  getSize() {\n    return this.glyphs.reduce((a, g) => {\n      const size = g.getSize();\n      return a + (size + 3 & ~3);\n    }, 0);\n  }\n  write() {\n    const totalSize = this.getSize();\n    const glyfTable = new DataView(new ArrayBuffer(totalSize));\n    const isLocationLong = totalSize > 0x1fffe;\n    const offsetSize = isLocationLong ? 4 : 2;\n    const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize));\n    if (isLocationLong) {\n      locaTable.setUint32(0, 0);\n    } else {\n      locaTable.setUint16(0, 0);\n    }\n    let pos = 0;\n    let locaIndex = 0;\n    for (const glyph of this.glyphs) {\n      pos += glyph.write(pos, glyfTable);\n      pos = pos + 3 & ~3;\n      locaIndex += offsetSize;\n      if (isLocationLong) {\n        locaTable.setUint32(locaIndex, pos);\n      } else {\n        locaTable.setUint16(locaIndex, pos >> 1);\n      }\n    }\n    return {\n      isLocationLong,\n      loca: new Uint8Array(locaTable.buffer),\n      glyf: new Uint8Array(glyfTable.buffer)\n    };\n  }\n  scale(factors) {\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      this.glyphs[i].scale(factors[i]);\n    }\n  }\n}\nclass Glyph {\n  constructor({\n    header = null,\n    simple = null,\n    composites = null\n  }) {\n    this.header = header;\n    this.simple = simple;\n    this.composites = composites;\n  }\n  static parse(pos, glyf) {\n    const [read, header] = GlyphHeader.parse(pos, glyf);\n    pos += read;\n    if (header.numberOfContours < 0) {\n      const composites = [];\n      while (true) {\n        const [n, composite] = CompositeGlyph.parse(pos, glyf);\n        pos += n;\n        composites.push(composite);\n        if (!(composite.flags & MORE_COMPONENTS)) {\n          break;\n        }\n      }\n      return new Glyph({\n        header,\n        composites\n      });\n    }\n    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n    return new Glyph({\n      header,\n      simple\n    });\n  }\n  getSize() {\n    if (!this.header) {\n      return 0;\n    }\n    const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0);\n    return this.header.getSize() + size;\n  }\n  write(pos, buf) {\n    if (!this.header) {\n      return 0;\n    }\n    const spos = pos;\n    pos += this.header.write(pos, buf);\n    if (this.simple) {\n      pos += this.simple.write(pos, buf);\n    } else {\n      for (const composite of this.composites) {\n        pos += composite.write(pos, buf);\n      }\n    }\n    return pos - spos;\n  }\n  scale(factor) {\n    if (!this.header) {\n      return;\n    }\n    const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n    this.header.scale(xMiddle, factor);\n    if (this.simple) {\n      this.simple.scale(xMiddle, factor);\n    } else {\n      for (const composite of this.composites) {\n        composite.scale(xMiddle, factor);\n      }\n    }\n  }\n}\nclass GlyphHeader {\n  constructor({\n    numberOfContours,\n    xMin,\n    yMin,\n    xMax,\n    yMax\n  }) {\n    this.numberOfContours = numberOfContours;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n  }\n  static parse(pos, glyf) {\n    return [10, new GlyphHeader({\n      numberOfContours: glyf.getInt16(pos),\n      xMin: glyf.getInt16(pos + 2),\n      yMin: glyf.getInt16(pos + 4),\n      xMax: glyf.getInt16(pos + 6),\n      yMax: glyf.getInt16(pos + 8)\n    })];\n  }\n  getSize() {\n    return 10;\n  }\n  write(pos, buf) {\n    buf.setInt16(pos, this.numberOfContours);\n    buf.setInt16(pos + 2, this.xMin);\n    buf.setInt16(pos + 4, this.yMin);\n    buf.setInt16(pos + 6, this.xMax);\n    buf.setInt16(pos + 8, this.yMax);\n    return 10;\n  }\n  scale(x, factor) {\n    this.xMin = Math.round(x + (this.xMin - x) * factor);\n    this.xMax = Math.round(x + (this.xMax - x) * factor);\n  }\n}\nclass Contour {\n  constructor({\n    flags,\n    xCoordinates,\n    yCoordinates\n  }) {\n    this.xCoordinates = xCoordinates;\n    this.yCoordinates = yCoordinates;\n    this.flags = flags;\n  }\n}\nclass SimpleGlyph {\n  constructor({\n    contours,\n    instructions\n  }) {\n    this.contours = contours;\n    this.instructions = instructions;\n  }\n  static parse(pos, glyf, numberOfContours) {\n    const endPtsOfContours = [];\n    for (let i = 0; i < numberOfContours; i++) {\n      const endPt = glyf.getUint16(pos);\n      pos += 2;\n      endPtsOfContours.push(endPt);\n    }\n    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n    const instructionLength = glyf.getUint16(pos);\n    pos += 2;\n    const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n    pos += instructionLength;\n    const flags = [];\n    for (let i = 0; i < numberOfPt; pos++, i++) {\n      let flag = glyf.getUint8(pos);\n      flags.push(flag);\n      if (flag & REPEAT_FLAG) {\n        const count = glyf.getUint8(++pos);\n        flag ^= REPEAT_FLAG;\n        for (let m = 0; m < count; m++) {\n          flags.push(flag);\n        }\n        i += count;\n      }\n    }\n    const allXCoordinates = [];\n    let xCoordinates = [];\n    let yCoordinates = [];\n    let pointFlags = [];\n    const contours = [];\n    let endPtsOfContoursIndex = 0;\n    let lastCoordinate = 0;\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n      if (flag & X_SHORT_VECTOR) {\n        const x = glyf.getUint8(pos++);\n        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n        xCoordinates.push(lastCoordinate);\n      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n        xCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        xCoordinates.push(lastCoordinate);\n      }\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        endPtsOfContoursIndex++;\n        allXCoordinates.push(xCoordinates);\n        xCoordinates = [];\n      }\n    }\n    lastCoordinate = 0;\n    endPtsOfContoursIndex = 0;\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n      if (flag & Y_SHORT_VECTOR) {\n        const y = glyf.getUint8(pos++);\n        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n        yCoordinates.push(lastCoordinate);\n      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n        yCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        yCoordinates.push(lastCoordinate);\n      }\n      pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE);\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n        endPtsOfContoursIndex++;\n        contours.push(new Contour({\n          flags: pointFlags,\n          xCoordinates,\n          yCoordinates\n        }));\n        yCoordinates = [];\n        pointFlags = [];\n      }\n    }\n    return new SimpleGlyph({\n      contours,\n      instructions\n    });\n  }\n  getSize() {\n    let size = this.contours.length * 2 + 2 + this.instructions.length;\n    let lastX = 0;\n    let lastY = 0;\n    for (const contour of this.contours) {\n      size += contour.flags.length;\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        const x = contour.xCoordinates[i];\n        const y = contour.yCoordinates[i];\n        let abs = Math.abs(x - lastX);\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n        lastX = x;\n        abs = Math.abs(y - lastY);\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n        lastY = y;\n      }\n    }\n    return size;\n  }\n  write(pos, buf) {\n    const spos = pos;\n    const xCoordinates = [];\n    const yCoordinates = [];\n    const flags = [];\n    let lastX = 0;\n    let lastY = 0;\n    for (const contour of this.contours) {\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        let flag = contour.flags[i];\n        const x = contour.xCoordinates[i];\n        let delta = x - lastX;\n        if (delta === 0) {\n          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n          xCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n          if (abs <= 255) {\n            flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR;\n            xCoordinates.push(abs);\n          } else {\n            xCoordinates.push(delta);\n          }\n        }\n        lastX = x;\n        const y = contour.yCoordinates[i];\n        delta = y - lastY;\n        if (delta === 0) {\n          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n          yCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n          if (abs <= 255) {\n            flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR;\n            yCoordinates.push(abs);\n          } else {\n            yCoordinates.push(delta);\n          }\n        }\n        lastY = y;\n        flags.push(flag);\n      }\n      buf.setUint16(pos, xCoordinates.length - 1);\n      pos += 2;\n    }\n    buf.setUint16(pos, this.instructions.length);\n    pos += 2;\n    if (this.instructions.length) {\n      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n      pos += this.instructions.length;\n    }\n    for (const flag of flags) {\n      buf.setUint8(pos++, flag);\n    }\n    for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n      const x = xCoordinates[i];\n      const flag = flags[i];\n      if (flag & X_SHORT_VECTOR) {\n        buf.setUint8(pos++, x);\n      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n        buf.setInt16(pos, x);\n        pos += 2;\n      }\n    }\n    for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n      const y = yCoordinates[i];\n      const flag = flags[i];\n      if (flag & Y_SHORT_VECTOR) {\n        buf.setUint8(pos++, y);\n      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n        buf.setInt16(pos, y);\n        pos += 2;\n      }\n    }\n    return pos - spos;\n  }\n  scale(x, factor) {\n    for (const contour of this.contours) {\n      if (contour.xCoordinates.length === 0) {\n        continue;\n      }\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor);\n      }\n    }\n  }\n}\nclass CompositeGlyph {\n  constructor({\n    flags,\n    glyphIndex,\n    argument1,\n    argument2,\n    transf,\n    instructions\n  }) {\n    this.flags = flags;\n    this.glyphIndex = glyphIndex;\n    this.argument1 = argument1;\n    this.argument2 = argument2;\n    this.transf = transf;\n    this.instructions = instructions;\n  }\n  static parse(pos, glyf) {\n    const spos = pos;\n    const transf = [];\n    let flags = glyf.getUint16(pos);\n    const glyphIndex = glyf.getUint16(pos + 2);\n    pos += 4;\n    let argument1, argument2;\n    if (flags & ARG_1_AND_2_ARE_WORDS) {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt16(pos);\n        argument2 = glyf.getInt16(pos + 2);\n      } else {\n        argument1 = glyf.getUint16(pos);\n        argument2 = glyf.getUint16(pos + 2);\n      }\n      pos += 4;\n      flags ^= ARG_1_AND_2_ARE_WORDS;\n    } else {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt8(pos);\n        argument2 = glyf.getInt8(pos + 1);\n      } else {\n        argument1 = glyf.getUint8(pos);\n        argument2 = glyf.getUint8(pos + 1);\n      }\n      pos += 2;\n    }\n    if (flags & WE_HAVE_A_SCALE) {\n      transf.push(glyf.getUint16(pos));\n      pos += 2;\n    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n      pos += 4;\n    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6));\n      pos += 8;\n    }\n    let instructions = null;\n    if (flags & WE_HAVE_INSTRUCTIONS) {\n      const instructionLength = glyf.getUint16(pos);\n      pos += 2;\n      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n      pos += instructionLength;\n    }\n    return [pos - spos, new CompositeGlyph({\n      flags,\n      glyphIndex,\n      argument1,\n      argument2,\n      transf,\n      instructions\n    })];\n  }\n  getSize() {\n    let size = 2 + 2 + this.transf.length * 2;\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      size += 2 + this.instructions.length;\n    }\n    size += 2;\n    if (this.flags & 2) {\n      if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n        size += 2;\n      }\n    } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n      size += 2;\n    }\n    return size;\n  }\n  write(pos, buf) {\n    const spos = pos;\n    if (this.flags & ARGS_ARE_XY_VALUES) {\n      if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    } else if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n      this.flags |= ARG_1_AND_2_ARE_WORDS;\n    }\n    buf.setUint16(pos, this.flags);\n    buf.setUint16(pos + 2, this.glyphIndex);\n    pos += 4;\n    if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n      if (this.flags & ARGS_ARE_XY_VALUES) {\n        buf.setInt16(pos, this.argument1);\n        buf.setInt16(pos + 2, this.argument2);\n      } else {\n        buf.setUint16(pos, this.argument1);\n        buf.setUint16(pos + 2, this.argument2);\n      }\n      pos += 4;\n    } else {\n      buf.setUint8(pos, this.argument1);\n      buf.setUint8(pos + 1, this.argument2);\n      pos += 2;\n    }\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      buf.setUint16(pos, this.instructions.length);\n      pos += 2;\n      if (this.instructions.length) {\n        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n        pos += this.instructions.length;\n      }\n    }\n    return pos - spos;\n  }\n  scale(x, factor) {}\n}\n\n;// ./src/core/opentype_file_builder.js\n\n\nfunction writeInt16(dest, offset, num) {\n  dest[offset] = num >> 8 & 0xff;\n  dest[offset + 1] = num & 0xff;\n}\nfunction writeInt32(dest, offset, num) {\n  dest[offset] = num >> 24 & 0xff;\n  dest[offset + 1] = num >> 16 & 0xff;\n  dest[offset + 2] = num >> 8 & 0xff;\n  dest[offset + 3] = num & 0xff;\n}\nfunction writeData(dest, offset, data) {\n  if (data instanceof Uint8Array) {\n    dest.set(data, offset);\n  } else if (typeof data === \"string\") {\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data.charCodeAt(i) & 0xff;\n    }\n  } else {\n    for (const num of data) {\n      dest[offset++] = num & 0xff;\n    }\n  }\n}\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\nclass OpenTypeFileBuilder {\n  constructor(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n  static getSearchParams(entriesCount, entrySize) {\n    let maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    const searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange\n    };\n  }\n  toArray() {\n    let sfnt = this.sfnt;\n    const tables = this.tables;\n    const tablesNames = Object.keys(tables);\n    tablesNames.sort();\n    const numTables = tablesNames.length;\n    let i, j, jj, table, tableName;\n    let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n    const tableOffsets = [offset];\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      const paddedLength = (table.length + 3 & ~3) >>> 0;\n      offset += paddedLength;\n      tableOffsets.push(offset);\n    }\n    const file = new Uint8Array(offset);\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      writeData(file, tableOffsets[i], table);\n    }\n    if (sfnt === \"true\") {\n      sfnt = string32(0x00010000);\n    }\n    file[0] = sfnt.charCodeAt(0) & 0xff;\n    file[1] = sfnt.charCodeAt(1) & 0xff;\n    file[2] = sfnt.charCodeAt(2) & 0xff;\n    file[3] = sfnt.charCodeAt(3) & 0xff;\n    writeInt16(file, 4, numTables);\n    const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n    writeInt16(file, 6, searchParams.range);\n    writeInt16(file, 8, searchParams.entry);\n    writeInt16(file, 10, searchParams.rangeShift);\n    offset = OTF_HEADER_SIZE;\n    for (i = 0; i < numTables; i++) {\n      tableName = tablesNames[i];\n      file[offset] = tableName.charCodeAt(0) & 0xff;\n      file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n      file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n      file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n      let checksum = 0;\n      for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n        const quad = readUint32(file, j);\n        checksum = checksum + quad >>> 0;\n      }\n      writeInt32(file, offset + 4, checksum);\n      writeInt32(file, offset + 8, tableOffsets[i]);\n      writeInt32(file, offset + 12, tables[tableName].length);\n      offset += OTF_TABLE_ENTRY_SIZE;\n    }\n    return file;\n  }\n  addTable(tag, data) {\n    if (tag in this.tables) {\n      throw new Error(\"Table \" + tag + \" already exists\");\n    }\n    this.tables[tag] = data;\n  }\n}\n\n;// ./src/core/type1_parser.js\n\n\n\n\nconst HINTING_ENABLED = false;\nconst COMMAND_MAP = {\n  hstem: [1],\n  vstem: [3],\n  vmoveto: [4],\n  rlineto: [5],\n  hlineto: [6],\n  vlineto: [7],\n  rrcurveto: [8],\n  callsubr: [10],\n  flex: [12, 35],\n  drop: [12, 18],\n  endchar: [14],\n  rmoveto: [21],\n  hmoveto: [22],\n  vhcurveto: [30],\n  hvcurveto: [31]\n};\nclass Type1CharString {\n  constructor() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n  convert(encoded, subrs, seacAnalysisEnabled) {\n    const count = encoded.length;\n    let error = false;\n    let wx, sbx, subrNumber;\n    for (let i = 0; i < count; i++) {\n      let value = encoded[i];\n      if (value < 32) {\n        if (value === 12) {\n          value = (value << 8) + encoded[++i];\n        }\n        switch (value) {\n          case 1:\n            if (!HINTING_ENABLED) {\n              this.stack = [];\n              break;\n            }\n            error = this.executeCommand(2, COMMAND_MAP.hstem);\n            break;\n          case 3:\n            if (!HINTING_ENABLED) {\n              this.stack = [];\n              break;\n            }\n            error = this.executeCommand(2, COMMAND_MAP.vstem);\n            break;\n          case 4:\n            if (this.flexing) {\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              const dy = this.stack.pop();\n              this.stack.push(0, dy);\n              break;\n            }\n            error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n            break;\n          case 5:\n            error = this.executeCommand(2, COMMAND_MAP.rlineto);\n            break;\n          case 6:\n            error = this.executeCommand(1, COMMAND_MAP.hlineto);\n            break;\n          case 7:\n            error = this.executeCommand(1, COMMAND_MAP.vlineto);\n            break;\n          case 8:\n            error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n            break;\n          case 9:\n            this.stack = [];\n            break;\n          case 10:\n            if (this.stack.length < 1) {\n              error = true;\n              break;\n            }\n            subrNumber = this.stack.pop();\n            if (!subrs[subrNumber]) {\n              error = true;\n              break;\n            }\n            error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n            break;\n          case 11:\n            return error;\n          case 13:\n            if (this.stack.length < 2) {\n              error = true;\n              break;\n            }\n            wx = this.stack.pop();\n            sbx = this.stack.pop();\n            this.lsb = sbx;\n            this.width = wx;\n            this.stack.push(wx, sbx);\n            error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n            break;\n          case 14:\n            this.output.push(COMMAND_MAP.endchar[0]);\n            break;\n          case 21:\n            if (this.flexing) {\n              break;\n            }\n            error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n            break;\n          case 22:\n            if (this.flexing) {\n              this.stack.push(0);\n              break;\n            }\n            error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n            break;\n          case 30:\n            error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n            break;\n          case 31:\n            error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n            break;\n          case (12 << 8) + 0:\n            this.stack = [];\n            break;\n          case (12 << 8) + 1:\n            if (!HINTING_ENABLED) {\n              this.stack = [];\n              break;\n            }\n            error = this.executeCommand(2, COMMAND_MAP.vstem);\n            break;\n          case (12 << 8) + 2:\n            if (!HINTING_ENABLED) {\n              this.stack = [];\n              break;\n            }\n            error = this.executeCommand(2, COMMAND_MAP.hstem);\n            break;\n          case (12 << 8) + 6:\n            if (seacAnalysisEnabled) {\n              const asb = this.stack.at(-5);\n              this.seac = this.stack.splice(-4, 4);\n              this.seac[0] += this.lsb - asb;\n              error = this.executeCommand(0, COMMAND_MAP.endchar);\n            } else {\n              error = this.executeCommand(4, COMMAND_MAP.endchar);\n            }\n            break;\n          case (12 << 8) + 7:\n            if (this.stack.length < 4) {\n              error = true;\n              break;\n            }\n            this.stack.pop();\n            wx = this.stack.pop();\n            const sby = this.stack.pop();\n            sbx = this.stack.pop();\n            this.lsb = sbx;\n            this.width = wx;\n            this.stack.push(wx, sbx, sby);\n            error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n            break;\n          case (12 << 8) + 12:\n            if (this.stack.length < 2) {\n              error = true;\n              break;\n            }\n            const num2 = this.stack.pop();\n            const num1 = this.stack.pop();\n            this.stack.push(num1 / num2);\n            break;\n          case (12 << 8) + 16:\n            if (this.stack.length < 2) {\n              error = true;\n              break;\n            }\n            subrNumber = this.stack.pop();\n            const numArgs = this.stack.pop();\n            if (subrNumber === 0 && numArgs === 3) {\n              const flexArgs = this.stack.splice(-17, 17);\n              this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\n              error = this.executeCommand(13, COMMAND_MAP.flex, true);\n              this.flexing = false;\n              this.stack.push(flexArgs[15], flexArgs[16]);\n            } else if (subrNumber === 1 && numArgs === 0) {\n              this.flexing = true;\n            }\n            break;\n          case (12 << 8) + 17:\n            break;\n          case (12 << 8) + 33:\n            this.stack = [];\n            break;\n          default:\n            warn('Unknown type 1 charstring command of \"' + value + '\"');\n            break;\n        }\n        if (error) {\n          break;\n        }\n        continue;\n      } else if (value <= 246) {\n        value -= 139;\n      } else if (value <= 250) {\n        value = (value - 247) * 256 + encoded[++i] + 108;\n      } else if (value <= 254) {\n        value = -((value - 251) * 256) - encoded[++i] - 108;\n      } else {\n        value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n      }\n      this.stack.push(value);\n    }\n    return error;\n  }\n  executeCommand(howManyArgs, command, keepStack) {\n    const stackLength = this.stack.length;\n    if (howManyArgs > stackLength) {\n      return true;\n    }\n    const start = stackLength - howManyArgs;\n    for (let i = start; i < stackLength; i++) {\n      let value = this.stack[i];\n      if (Number.isInteger(value)) {\n        this.output.push(28, value >> 8 & 0xff, value & 0xff);\n      } else {\n        value = 65536 * value | 0;\n        this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n      }\n    }\n    this.output.push(...command);\n    if (keepStack) {\n      this.stack.splice(start, howManyArgs);\n    } else {\n      this.stack.length = 0;\n    }\n    return false;\n  }\n}\nconst EEXEC_ENCRYPT_KEY = 55665;\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\nfunction isHexDigit(code) {\n  return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n}\nfunction decrypt(data, key, discardNumber) {\n  if (discardNumber >= data.length) {\n    return new Uint8Array(0);\n  }\n  const c1 = 52845,\n    c2 = 22719;\n  let r = key | 0,\n    i,\n    j;\n  for (i = 0; i < discardNumber; i++) {\n    r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n  }\n  const count = data.length - discardNumber;\n  const decrypted = new Uint8Array(count);\n  for (i = discardNumber, j = 0; j < count; i++, j++) {\n    const value = data[i];\n    decrypted[j] = value ^ r >> 8;\n    r = (value + r) * c1 + c2 & (1 << 16) - 1;\n  }\n  return decrypted;\n}\nfunction decryptAscii(data, key, discardNumber) {\n  const c1 = 52845,\n    c2 = 22719;\n  let r = key | 0;\n  const count = data.length,\n    maybeLength = count >>> 1;\n  const decrypted = new Uint8Array(maybeLength);\n  let i, j;\n  for (i = 0, j = 0; i < count; i++) {\n    const digit1 = data[i];\n    if (!isHexDigit(digit1)) {\n      continue;\n    }\n    i++;\n    let digit2;\n    while (i < count && !isHexDigit(digit2 = data[i])) {\n      i++;\n    }\n    if (i < count) {\n      const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n      decrypted[j++] = value ^ r >> 8;\n      r = (value + r) * c1 + c2 & (1 << 16) - 1;\n    }\n  }\n  return decrypted.slice(discardNumber, j);\n}\nfunction isSpecial(c) {\n  return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n}\nclass Type1Parser {\n  constructor(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      const data = stream.getBytes();\n      const isBinary = !((isHexDigit(data[0]) || isWhiteSpace(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n      stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    this.stream = stream;\n    this.nextChar();\n  }\n  readNumberArray() {\n    this.getToken();\n    const array = [];\n    while (true) {\n      const token = this.getToken();\n      if (token === null || token === \"]\" || token === \"}\") {\n        break;\n      }\n      array.push(parseFloat(token || 0));\n    }\n    return array;\n  }\n  readNumber() {\n    const token = this.getToken();\n    return parseFloat(token || 0);\n  }\n  readInt() {\n    const token = this.getToken();\n    return parseInt(token || 0, 10) | 0;\n  }\n  readBoolean() {\n    const token = this.getToken();\n    return token === \"true\" ? 1 : 0;\n  }\n  nextChar() {\n    return this.currentChar = this.stream.getByte();\n  }\n  prevChar() {\n    this.stream.skip(-2);\n    return this.currentChar = this.stream.getByte();\n  }\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch === -1) {\n        return null;\n      }\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    if (isSpecial(ch)) {\n      this.nextChar();\n      return String.fromCharCode(ch);\n    }\n    let token = \"\";\n    do {\n      token += String.fromCharCode(ch);\n      ch = this.nextChar();\n    } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n    return token;\n  }\n  readCharStrings(bytes, lenIV) {\n    if (lenIV === -1) {\n      return bytes;\n    }\n    return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n  }\n  extractFontProgram(properties) {\n    const stream = this.stream;\n    const subrs = [],\n      charstrings = [];\n    const privateData = Object.create(null);\n    privateData.lenIV = 4;\n    const program = {\n      subrs: [],\n      charstrings: [],\n      properties: {\n        privateData\n      }\n    };\n    let token, length, data, lenIV;\n    while ((token = this.getToken()) !== null) {\n      if (token !== \"/\") {\n        continue;\n      }\n      token = this.getToken();\n      switch (token) {\n        case \"CharStrings\":\n          this.getToken();\n          this.getToken();\n          this.getToken();\n          this.getToken();\n          while (true) {\n            token = this.getToken();\n            if (token === null || token === \"end\") {\n              break;\n            }\n            if (token !== \"/\") {\n              continue;\n            }\n            const glyph = this.getToken();\n            length = this.readInt();\n            this.getToken();\n            data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n            lenIV = program.properties.privateData.lenIV;\n            const encoded = this.readCharStrings(data, lenIV);\n            this.nextChar();\n            token = this.getToken();\n            if (token === \"noaccess\") {\n              this.getToken();\n            } else if (token === \"/\") {\n              this.prevChar();\n            }\n            charstrings.push({\n              glyph,\n              encoded\n            });\n          }\n          break;\n        case \"Subrs\":\n          this.readInt();\n          this.getToken();\n          while (this.getToken() === \"dup\") {\n            const index = this.readInt();\n            length = this.readInt();\n            this.getToken();\n            data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n            lenIV = program.properties.privateData.lenIV;\n            const encoded = this.readCharStrings(data, lenIV);\n            this.nextChar();\n            token = this.getToken();\n            if (token === \"noaccess\") {\n              this.getToken();\n            }\n            subrs[index] = encoded;\n          }\n          break;\n        case \"BlueValues\":\n        case \"OtherBlues\":\n        case \"FamilyBlues\":\n        case \"FamilyOtherBlues\":\n          const blueArray = this.readNumberArray();\n          if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {\n            program.properties.privateData[token] = blueArray;\n          }\n          break;\n        case \"StemSnapH\":\n        case \"StemSnapV\":\n          program.properties.privateData[token] = this.readNumberArray();\n          break;\n        case \"StdHW\":\n        case \"StdVW\":\n          program.properties.privateData[token] = this.readNumberArray()[0];\n          break;\n        case \"BlueShift\":\n        case \"lenIV\":\n        case \"BlueFuzz\":\n        case \"BlueScale\":\n        case \"LanguageGroup\":\n          program.properties.privateData[token] = this.readNumber();\n          break;\n        case \"ExpansionFactor\":\n          program.properties.privateData[token] = this.readNumber() || 0.06;\n          break;\n        case \"ForceBold\":\n          program.properties.privateData[token] = this.readBoolean();\n          break;\n      }\n    }\n    for (const {\n      encoded,\n      glyph\n    } of charstrings) {\n      const charString = new Type1CharString();\n      const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n      let output = charString.output;\n      if (error) {\n        output = [14];\n      }\n      const charStringObject = {\n        glyphName: glyph,\n        charstring: output,\n        width: charString.width,\n        lsb: charString.lsb,\n        seac: charString.seac\n      };\n      if (glyph === \".notdef\") {\n        program.charstrings.unshift(charStringObject);\n      } else {\n        program.charstrings.push(charStringObject);\n      }\n      if (properties.builtInEncoding) {\n        const index = properties.builtInEncoding.indexOf(glyph);\n        if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {\n          properties.widths[index] = charString.width;\n        }\n      }\n    }\n    return program;\n  }\n  extractFontHeader(properties) {\n    let token;\n    while ((token = this.getToken()) !== null) {\n      if (token !== \"/\") {\n        continue;\n      }\n      token = this.getToken();\n      switch (token) {\n        case \"FontMatrix\":\n          const matrix = this.readNumberArray();\n          properties.fontMatrix = matrix;\n          break;\n        case \"Encoding\":\n          const encodingArg = this.getToken();\n          let encoding;\n          if (!/^\\d+$/.test(encodingArg)) {\n            encoding = getEncoding(encodingArg);\n          } else {\n            encoding = [];\n            const size = parseInt(encodingArg, 10) | 0;\n            this.getToken();\n            for (let j = 0; j < size; j++) {\n              token = this.getToken();\n              while (token !== \"dup\" && token !== \"def\") {\n                token = this.getToken();\n                if (token === null) {\n                  return;\n                }\n              }\n              if (token === \"def\") {\n                break;\n              }\n              const index = this.readInt();\n              this.getToken();\n              const glyph = this.getToken();\n              encoding[index] = glyph;\n              this.getToken();\n            }\n          }\n          properties.builtInEncoding = encoding;\n          break;\n        case \"FontBBox\":\n          const fontBBox = this.readNumberArray();\n          properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n          properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n          properties.ascentScaled = true;\n          break;\n      }\n    }\n  }\n}\n\n;// ./src/core/type1_font.js\n\n\n\n\n\n\nfunction findBlock(streamBytes, signature, startIndex) {\n  const streamBytesLength = streamBytes.length;\n  const signatureLength = signature.length;\n  const scanLength = streamBytesLength - signatureLength;\n  let i = startIndex,\n    found = false;\n  while (i < scanLength) {\n    let j = 0;\n    while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n      j++;\n    }\n    if (j >= signatureLength) {\n      i += j;\n      while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n        i++;\n      }\n      found = true;\n      break;\n    }\n    i++;\n  }\n  return {\n    found,\n    length: i\n  };\n}\nfunction getHeaderBlock(stream, suggestedLength) {\n  const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n  const streamStartPos = stream.pos;\n  let headerBytes, headerBytesLength, block;\n  try {\n    headerBytes = stream.getBytes(suggestedLength);\n    headerBytesLength = headerBytes.length;\n  } catch {}\n  if (headerBytesLength === suggestedLength) {\n    block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n    if (block.found && block.length === suggestedLength) {\n      return {\n        stream: new Stream(headerBytes),\n        length: suggestedLength\n      };\n    }\n  }\n  warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n  stream.pos = streamStartPos;\n  const SCAN_BLOCK_LENGTH = 2048;\n  let actualLength;\n  while (true) {\n    const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n    block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n    if (block.length === 0) {\n      break;\n    }\n    stream.pos += block.length;\n    if (block.found) {\n      actualLength = stream.pos - streamStartPos;\n      break;\n    }\n  }\n  stream.pos = streamStartPos;\n  if (actualLength) {\n    return {\n      stream: new Stream(stream.getBytes(actualLength)),\n      length: actualLength\n    };\n  }\n  warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n  return {\n    stream: new Stream(stream.getBytes(suggestedLength)),\n    length: suggestedLength\n  };\n}\nfunction getEexecBlock(stream, suggestedLength) {\n  const eexecBytes = stream.getBytes();\n  if (eexecBytes.length === 0) {\n    throw new FormatError(\"getEexecBlock - no font program found.\");\n  }\n  return {\n    stream: new Stream(eexecBytes),\n    length: eexecBytes.length\n  };\n}\nclass Type1Font {\n  constructor(name, file, properties) {\n    const PFB_HEADER_SIZE = 6;\n    let headerBlockLength = properties.length1;\n    let eexecBlockLength = properties.length2;\n    let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n    }\n    const headerBlock = getHeaderBlock(file, headerBlockLength);\n    const headerBlockParser = new Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED);\n    headerBlockParser.extractFontHeader(properties);\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n    }\n    const eexecBlock = getEexecBlock(file, eexecBlockLength);\n    const eexecBlockParser = new Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED);\n    const data = eexecBlockParser.extractFontProgram(properties);\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n    const charstrings = data.charstrings;\n    const type2Charstrings = this.getType2Charstrings(charstrings);\n    const subrs = this.getType2Subrs(data.subrs);\n    this.charstrings = charstrings;\n    this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n  get numGlyphs() {\n    return this.charstrings.length + 1;\n  }\n  getCharset() {\n    const charset = [\".notdef\"];\n    for (const {\n      glyphName\n    } of this.charstrings) {\n      charset.push(glyphName);\n    }\n    return charset;\n  }\n  getGlyphMapping(properties) {\n    const charstrings = this.charstrings;\n    if (properties.composite) {\n      const charCodeToGlyphId = Object.create(null);\n      for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) {\n        const charCode = properties.cMap.charCodeOf(glyphId);\n        charCodeToGlyphId[charCode] = glyphId + 1;\n      }\n      return charCodeToGlyphId;\n    }\n    const glyphNames = [\".notdef\"];\n    let builtInEncoding, glyphId;\n    for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      glyphNames.push(charstrings[glyphId].glyphName);\n    }\n    const encoding = properties.builtInEncoding;\n    if (encoding) {\n      builtInEncoding = Object.create(null);\n      for (const charCode in encoding) {\n        glyphId = glyphNames.indexOf(encoding[charCode]);\n        if (glyphId >= 0) {\n          builtInEncoding[charCode] = glyphId;\n        }\n      }\n    }\n    return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n  }\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.numGlyphs) {\n      return false;\n    }\n    if (id === 0) {\n      return true;\n    }\n    const glyph = this.charstrings[id - 1];\n    return glyph.charstring.length > 0;\n  }\n  getSeacs(charstrings) {\n    const seacMap = [];\n    for (let i = 0, ii = charstrings.length; i < ii; i++) {\n      const charstring = charstrings[i];\n      if (charstring.seac) {\n        seacMap[i + 1] = charstring.seac;\n      }\n    }\n    return seacMap;\n  }\n  getType2Charstrings(type1Charstrings) {\n    const type2Charstrings = [];\n    for (const type1Charstring of type1Charstrings) {\n      type2Charstrings.push(type1Charstring.charstring);\n    }\n    return type2Charstrings;\n  }\n  getType2Subrs(type1Subrs) {\n    let bias = 0;\n    const count = type1Subrs.length;\n    if (count < 1133) {\n      bias = 107;\n    } else if (count < 33769) {\n      bias = 1131;\n    } else {\n      bias = 32768;\n    }\n    const type2Subrs = [];\n    let i;\n    for (i = 0; i < bias; i++) {\n      type2Subrs.push([0x0b]);\n    }\n    for (i = 0; i < count; i++) {\n      type2Subrs.push(type1Subrs[i]);\n    }\n    return type2Subrs;\n  }\n  wrap(name, glyphs, charstrings, subrs, properties) {\n    const cff = new CFF();\n    cff.header = new CFFHeader(1, 0, 4, 4);\n    cff.names = [name];\n    const topDict = new CFFTopDict();\n    topDict.setByName(\"version\", 391);\n    topDict.setByName(\"Notice\", 392);\n    topDict.setByName(\"FullName\", 393);\n    topDict.setByName(\"FamilyName\", 394);\n    topDict.setByName(\"Weight\", 395);\n    topDict.setByName(\"Encoding\", null);\n    topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n    topDict.setByName(\"FontBBox\", properties.bbox);\n    topDict.setByName(\"charset\", null);\n    topDict.setByName(\"CharStrings\", null);\n    topDict.setByName(\"Private\", null);\n    cff.topDict = topDict;\n    const strings = new CFFStrings();\n    strings.add(\"Version 0.11\");\n    strings.add(\"See original notice\");\n    strings.add(name);\n    strings.add(name);\n    strings.add(\"Medium\");\n    cff.strings = strings;\n    cff.globalSubrIndex = new CFFIndex();\n    const count = glyphs.length;\n    const charsetArray = [\".notdef\"];\n    let i, ii;\n    for (i = 0; i < count; i++) {\n      const glyphName = charstrings[i].glyphName;\n      const index = CFFStandardStrings.indexOf(glyphName);\n      if (index === -1) {\n        strings.add(glyphName);\n      }\n      charsetArray.push(glyphName);\n    }\n    cff.charset = new CFFCharset(false, 0, charsetArray);\n    const charStringsIndex = new CFFIndex();\n    charStringsIndex.add([0x8b, 0x0e]);\n    for (i = 0; i < count; i++) {\n      charStringsIndex.add(glyphs[i]);\n    }\n    cff.charStrings = charStringsIndex;\n    const privateDict = new CFFPrivateDict();\n    privateDict.setByName(\"Subrs\", null);\n    const fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\n    for (i = 0, ii = fields.length; i < ii; i++) {\n      const field = fields[i];\n      if (!(field in properties.privateData)) {\n        continue;\n      }\n      const value = properties.privateData[field];\n      if (Array.isArray(value)) {\n        for (let j = value.length - 1; j > 0; j--) {\n          value[j] -= value[j - 1];\n        }\n      }\n      privateDict.setByName(field, value);\n    }\n    cff.topDict.privateDict = privateDict;\n    const subrIndex = new CFFIndex();\n    for (i = 0, ii = subrs.length; i < ii; i++) {\n      subrIndex.add(subrs[i]);\n    }\n    privateDict.subrsIndex = subrIndex;\n    const compiler = new CFFCompiler(cff);\n    return compiler.compile();\n  }\n}\n\n;// ./src/core/fonts.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nconst PDF_GLYPH_SPACE_UNITS = 1000;\nconst EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"composite\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"fallbackName\", \"fontMatrix\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"subtype\", \"systemFontInfo\", \"type\", \"vertical\"];\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"toFontChar\", \"toUnicode\", \"vmetrics\", \"widths\"];\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  const scale = 0.001 / properties.fontMatrix[0];\n  const glyphsWidths = properties.widths;\n  for (const glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\n  if (properties.isInternalFont) {\n    return;\n  }\n  if (properties.hasIncludedToUnicodeMap) {\n    return;\n  }\n  if (properties.hasEncoding) {\n    return;\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  if (!isSymbolicFont) {\n    return;\n  }\n  if (nameRecords.length === 0) {\n    return;\n  }\n  if (properties.defaultEncoding === WinAnsiEncoding) {\n    return;\n  }\n  for (const r of nameRecords) {\n    if (!isWinNameRecord(r)) {\n      return;\n    }\n  }\n  const encoding = WinAnsiEncoding;\n  const toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (const charCode in encoding) {\n    const glyphName = encoding[charCode];\n    if (glyphName === \"\") {\n      continue;\n    }\n    const unicode = glyphsUnicodeMap[glyphName];\n    if (unicode === undefined) {\n      continue;\n    }\n    toUnicode[charCode] = String.fromCharCode(unicode);\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\n  if (properties.isInternalFont) {\n    return;\n  }\n  if (properties.hasIncludedToUnicodeMap) {\n    return;\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return;\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  const toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (const charCode in builtInEncoding) {\n    if (properties.hasEncoding) {\n      if (properties.baseEncodingName || properties.differences[charCode] !== undefined) {\n        continue;\n      }\n    }\n    const glyphName = builtInEncoding[charCode];\n    const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\nfunction amendFallbackToUnicode(properties) {\n  if (!properties.fallbackToUnicode) {\n    return;\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  const toUnicode = [];\n  for (const charCode in properties.fallbackToUnicode) {\n    if (properties.toUnicode.has(charCode)) {\n      continue;\n    }\n    toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\nclass fonts_Glyph {\n  constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n    this.originalCharCode = originalCharCode;\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n  get category() {\n    return shadow(this, \"category\", getCharUnicodeCategory(this.unicode), true);\n  }\n}\nfunction int16(b0, b1) {\n  return (b0 << 8) + b1;\n}\nfunction writeSignedInt16(bytes, index, value) {\n  bytes[index + 1] = value;\n  bytes[index] = value >>> 8;\n}\nfunction signedInt16(b0, b1) {\n  const value = (b0 << 8) + b1;\n  return value & 1 << 15 ? value - 0x10000 : value;\n}\nfunction writeUint32(bytes, index, value) {\n  bytes[index + 3] = value & 0xff;\n  bytes[index + 2] = value >>> 8;\n  bytes[index + 1] = value >>> 16;\n  bytes[index] = value >>> 24;\n}\nfunction int32(b0, b1, b2, b3) {\n  return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\nfunction string16(value) {\n  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n}\nfunction safeString16(value) {\n  if (value > 0x7fff) {\n    value = 0x7fff;\n  } else if (value < -0x8000) {\n    value = -0x8000;\n  }\n  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n}\nfunction isTrueTypeFile(file) {\n  const header = file.peekBytes(4);\n  return readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\";\n}\nfunction isTrueTypeCollectionFile(file) {\n  const header = file.peekBytes(4);\n  return bytesToString(header) === \"ttcf\";\n}\nfunction isOpenTypeFile(file) {\n  const header = file.peekBytes(4);\n  return bytesToString(header) === \"OTTO\";\n}\nfunction isType1File(file) {\n  const header = file.peekBytes(2);\n  if (header[0] === 0x25 && header[1] === 0x21) {\n    return true;\n  }\n  if (header[0] === 0x80 && header[1] === 0x01) {\n    return true;\n  }\n  return false;\n}\nfunction isCFFFile(file) {\n  const header = file.peekBytes(4);\n  if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n    return true;\n  }\n  return false;\n}\nfunction getFontFileType(file, {\n  type,\n  subtype,\n  composite\n}) {\n  let fileType, fileSubtype;\n  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n    fileType = composite ? \"CIDFontType2\" : \"TrueType\";\n  } else if (isOpenTypeFile(file)) {\n    fileType = composite ? \"CIDFontType2\" : \"OpenType\";\n  } else if (isType1File(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n    }\n  } else if (isCFFFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n      fileSubtype = \"CIDFontType0C\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      fileSubtype = \"Type1C\";\n    }\n  } else {\n    warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n    fileType = type;\n    fileSubtype = subtype;\n  }\n  return [fileType, fileSubtype];\n}\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n  for (const charCode in glyphMap) {\n    map[+charCode] = glyphMap[charCode];\n  }\n}\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n  const toFontChar = [];\n  let unicode;\n  for (let i = 0, ii = encoding.length; i < ii; i++) {\n    unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toFontChar[i] = unicode;\n    }\n  }\n  for (const charCode in differences) {\n    unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toFontChar[+charCode] = unicode;\n    }\n  }\n  return toFontChar;\n}\nfunction isMacNameRecord(r) {\n  return r.platform === 1 && r.encoding === 0 && r.language === 0;\n}\nfunction isWinNameRecord(r) {\n  return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\n}\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n  switch (cid.length) {\n    case 1:\n      return cid.charCodeAt(0);\n    case 2:\n      return cid.charCodeAt(0) << 8 | cid.charCodeAt(1);\n  }\n  const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n  if (shouldThrow) {\n    throw new FormatError(msg);\n  }\n  warn(msg);\n  return cid;\n}\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\n  const newMap = Object.create(null);\n  const toUnicodeExtraMap = new Map();\n  const toFontChar = [];\n  const usedGlyphIds = new Set();\n  let privateUseAreaIndex = 0;\n  const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n  let nextAvailableFontCharCode = privateUseOffetStart;\n  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n  const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1];\n  for (const originalCharCode in charCodeToGlyphId) {\n    let glyphId = charCodeToGlyphId[originalCharCode];\n    if (!hasGlyph(glyphId)) {\n      continue;\n    }\n    if (nextAvailableFontCharCode > privateUseOffetEnd) {\n      privateUseAreaIndex++;\n      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n        warn(\"Ran out of space in font private use area.\");\n        break;\n      }\n      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    }\n    const fontCharCode = nextAvailableFontCharCode++;\n    if (glyphId === 0) {\n      glyphId = newGlyphZeroId;\n    }\n    let unicode = toUnicode.get(originalCharCode);\n    if (typeof unicode === \"string\") {\n      unicode = unicode.codePointAt(0);\n    }\n    if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\n      toUnicodeExtraMap.set(unicode, glyphId);\n      usedGlyphIds.add(glyphId);\n    }\n    newMap[fontCharCode] = glyphId;\n    toFontChar[originalCharCode] = fontCharCode;\n  }\n  return {\n    toFontChar,\n    charCodeToGlyphId: newMap,\n    toUnicodeExtraMap,\n    nextAvailableFontCharCode\n  };\n}\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\n  const codes = [];\n  for (const charCode in glyphs) {\n    if (glyphs[charCode] >= numGlyphs) {\n      continue;\n    }\n    codes.push({\n      fontCharCode: charCode | 0,\n      glyphId: glyphs[charCode]\n    });\n  }\n  if (toUnicodeExtraMap) {\n    for (const [unicode, glyphId] of toUnicodeExtraMap) {\n      if (glyphId >= numGlyphs) {\n        continue;\n      }\n      codes.push({\n        fontCharCode: unicode,\n        glyphId\n      });\n    }\n  }\n  if (codes.length === 0) {\n    codes.push({\n      fontCharCode: 0,\n      glyphId: 0\n    });\n  }\n  codes.sort(function fontGetRangesSort(a, b) {\n    return a.fontCharCode - b.fontCharCode;\n  });\n  const ranges = [];\n  const length = codes.length;\n  for (let n = 0; n < length;) {\n    const start = codes[n].fontCharCode;\n    const codeIndices = [codes[n].glyphId];\n    ++n;\n    let end = start;\n    while (n < length && end + 1 === codes[n].fontCharCode) {\n      codeIndices.push(codes[n].glyphId);\n      ++end;\n      ++n;\n      if (end === 0xffff) {\n        break;\n      }\n    }\n    ranges.push([start, end, codeIndices]);\n  }\n  return ranges;\n}\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\n  const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\n  const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1;\n  let cmap = \"\\x00\\x00\" + string16(numTables) + \"\\x00\\x03\" + \"\\x00\\x01\" + string32(4 + numTables * 8);\n  let i, ii, j, jj;\n  for (i = ranges.length - 1; i >= 0; --i) {\n    if (ranges[i][0] <= 0xffff) {\n      break;\n    }\n  }\n  const bmpLength = i + 1;\n  if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n    ranges[i][1] = 0xfffe;\n  }\n  const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n  const segCount = bmpLength + trailingRangesCount;\n  const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n  let startCount = \"\";\n  let endCount = \"\";\n  let idDeltas = \"\";\n  let idRangeOffsets = \"\";\n  let glyphsIds = \"\";\n  let bias = 0;\n  let range, start, end, codes;\n  for (i = 0, ii = bmpLength; i < ii; i++) {\n    range = ranges[i];\n    start = range[0];\n    end = range[1];\n    startCount += string16(start);\n    endCount += string16(end);\n    codes = range[2];\n    let contiguous = true;\n    for (j = 1, jj = codes.length; j < jj; ++j) {\n      if (codes[j] !== codes[j - 1] + 1) {\n        contiguous = false;\n        break;\n      }\n    }\n    if (!contiguous) {\n      const offset = (segCount - i) * 2 + bias * 2;\n      bias += end - start + 1;\n      idDeltas += string16(0);\n      idRangeOffsets += string16(offset);\n      for (j = 0, jj = codes.length; j < jj; ++j) {\n        glyphsIds += string16(codes[j]);\n      }\n    } else {\n      const startCode = codes[0];\n      idDeltas += string16(startCode - start & 0xffff);\n      idRangeOffsets += string16(0);\n    }\n  }\n  if (trailingRangesCount > 0) {\n    endCount += \"\\xFF\\xFF\";\n    startCount += \"\\xFF\\xFF\";\n    idDeltas += \"\\x00\\x01\";\n    idRangeOffsets += \"\\x00\\x00\";\n  }\n  const format314 = \"\\x00\\x00\" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + \"\\x00\\x00\" + startCount + idDeltas + idRangeOffsets + glyphsIds;\n  let format31012 = \"\";\n  let header31012 = \"\";\n  if (numTables > 1) {\n    cmap += \"\\x00\\x03\" + \"\\x00\\x0A\" + string32(4 + numTables * 8 + 4 + format314.length);\n    format31012 = \"\";\n    for (i = 0, ii = ranges.length; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      codes = range[2];\n      let code = codes[0];\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          end = range[0] + j - 1;\n          format31012 += string32(start) + string32(end) + string32(code);\n          start = end + 1;\n          code = codes[j];\n        }\n      }\n      format31012 += string32(start) + string32(range[1]) + string32(code);\n    }\n    header31012 = \"\\x00\\x0C\" + \"\\x00\\x00\" + string32(format31012.length + 16) + \"\\x00\\x00\\x00\\x00\" + string32(format31012.length / 12);\n  }\n  return cmap + \"\\x00\\x04\" + string16(format314.length + 4) + format314 + header31012 + format31012;\n}\nfunction validateOS2Table(os2, file) {\n  file.pos = (file.start || 0) + os2.offset;\n  const version = file.getUint16();\n  file.skip(60);\n  const selection = file.getUint16();\n  if (version < 4 && selection & 0x0300) {\n    return false;\n  }\n  const firstChar = file.getUint16();\n  const lastChar = file.getUint16();\n  if (firstChar > lastChar) {\n    return false;\n  }\n  file.skip(6);\n  const usWinAscent = file.getUint16();\n  if (usWinAscent === 0) {\n    return false;\n  }\n  os2.data[8] = os2.data[9] = 0;\n  return true;\n}\nfunction createOS2Table(properties, charstrings, override) {\n  override ||= {\n    unitsPerEm: 0,\n    yMax: 0,\n    yMin: 0,\n    ascent: 0,\n    descent: 0\n  };\n  let ulUnicodeRange1 = 0;\n  let ulUnicodeRange2 = 0;\n  let ulUnicodeRange3 = 0;\n  let ulUnicodeRange4 = 0;\n  let firstCharIndex = null;\n  let lastCharIndex = 0;\n  let position = -1;\n  if (charstrings) {\n    for (let code in charstrings) {\n      code |= 0;\n      if (firstCharIndex > code || !firstCharIndex) {\n        firstCharIndex = code;\n      }\n      if (lastCharIndex < code) {\n        lastCharIndex = code;\n      }\n      position = getUnicodeRangeFor(code, position);\n      if (position < 32) {\n        ulUnicodeRange1 |= 1 << position;\n      } else if (position < 64) {\n        ulUnicodeRange2 |= 1 << position - 32;\n      } else if (position < 96) {\n        ulUnicodeRange3 |= 1 << position - 64;\n      } else if (position < 123) {\n        ulUnicodeRange4 |= 1 << position - 96;\n      } else {\n        throw new FormatError(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n      }\n    }\n    if (lastCharIndex > 0xffff) {\n      lastCharIndex = 0xffff;\n    }\n  } else {\n    firstCharIndex = 0;\n    lastCharIndex = 255;\n  }\n  const bbox = properties.bbox || [0, 0, 0, 0];\n  const unitsPerEm = override.unitsPerEm || (properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000);\n  const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n  const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n  let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n  if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n    typoDescent = -typoDescent;\n  }\n  const winAscent = override.yMax || typoAscent;\n  const winDescent = -override.yMin || -typoDescent;\n  return \"\\x00\\x03\" + \"\\x02\\x24\" + \"\\x01\\xF4\" + \"\\x00\\x05\" + \"\\x00\\x00\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x00\\x8C\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x01\\xDF\" + \"\\x00\\x31\" + \"\\x01\\x02\" + \"\\x00\\x00\" + \"\\x00\\x00\\x06\" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + \"\\x00\\x00\\x00\\x00\\x00\\x00\" + string32(ulUnicodeRange1) + string32(ulUnicodeRange2) + string32(ulUnicodeRange3) + string32(ulUnicodeRange4) + \"\\x2A\\x32\\x31\\x2A\" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + \"\\x00\\x64\" + string16(winAscent) + string16(winDescent) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + \"\\x00\\x03\";\n}\nfunction createPostTable(properties) {\n  const angle = Math.floor(properties.italicAngle * 2 ** 16);\n  return \"\\x00\\x03\\x00\\x00\" + string32(angle) + \"\\x00\\x00\" + \"\\x00\\x00\" + string32(properties.fixedPitch ? 1 : 0) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\";\n}\nfunction createPostscriptName(name) {\n  return name.replaceAll(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\nfunction createNameTable(name, proto) {\n  if (!proto) {\n    proto = [[], []];\n  }\n  const strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || createPostscriptName(name), proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\n  const stringsUnicode = [];\n  let i, ii, j, jj, str;\n  for (i = 0, ii = strings.length; i < ii; i++) {\n    str = proto[1][i] || strings[i];\n    const strBufUnicode = [];\n    for (j = 0, jj = str.length; j < jj; j++) {\n      strBufUnicode.push(string16(str.charCodeAt(j)));\n    }\n    stringsUnicode.push(strBufUnicode.join(\"\"));\n  }\n  const names = [strings, stringsUnicode];\n  const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n  const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n  const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n  const namesRecordCount = strings.length * platforms.length;\n  let nameTable = \"\\x00\\x00\" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);\n  let strOffset = 0;\n  for (i = 0, ii = platforms.length; i < ii; i++) {\n    const strs = names[i];\n    for (j = 0, jj = strs.length; j < jj; j++) {\n      str = strs[j];\n      const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);\n      nameTable += nameRecord;\n      strOffset += str.length;\n    }\n  }\n  nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n  return nameTable;\n}\nclass Font {\n  constructor(name, file, properties) {\n    this.name = name;\n    this.psName = null;\n    this.mimetype = null;\n    this.disableFontFace = false;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n    this.cssFontInfo = properties.cssFontInfo;\n    this._charsCache = Object.create(null);\n    this._glyphCache = Object.create(null);\n    let isSerifFont = !!(properties.flags & FontFlags.Serif);\n    if (!isSerifFont && !properties.isSimulatedFlags) {\n      const baseName = name.replaceAll(/[,_]/g, \"-\").split(\"-\", 1)[0],\n        serifFonts = getSerifFonts();\n      for (const namePart of baseName.split(\"+\")) {\n        if (serifFonts[namePart]) {\n          isSerifFont = true;\n          break;\n        }\n      }\n    }\n    this.isSerifFont = isSerifFont;\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n    let {\n      type,\n      subtype\n    } = properties;\n    this.type = type;\n    this.subtype = subtype;\n    this.systemFontInfo = properties.systemFontInfo;\n    const matches = name.match(/^InvalidPDFjsFont_(.*)_\\d+$/);\n    this.isInvalidPDFjsFont = !!matches;\n    if (this.isInvalidPDFjsFont) {\n      this.fallbackName = matches[1];\n    } else if (this.isMonospace) {\n      this.fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      this.fallbackName = \"serif\";\n    } else {\n      this.fallbackName = \"sans-serif\";\n    }\n    if (this.systemFontInfo?.guessFallback) {\n      this.systemFontInfo.guessFallback = false;\n      this.systemFontInfo.css += `,${this.fallbackName}`;\n    }\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.lineHeight = this.ascent - this.descent;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n    this.toUnicode = properties.toUnicode;\n    this.toFontChar = [];\n    if (properties.type === \"Type3\") {\n      for (let charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      return;\n    }\n    this.cidEncoding = properties.cidEncoding || \"\";\n    this.vertical = !!properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n    if (!file || file.isEmpty) {\n      if (file) {\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n    [type, subtype] = getFontFileType(file, properties);\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\"Inconsistent font file Type/SubType, expected: \" + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n    }\n    let data;\n    try {\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n          const cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new CFFFont(file, properties) : new Type1Font(name, file, properties);\n          adjustWidths(properties);\n          data = this.convert(name, cff, properties);\n          break;\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n            type = \"OpenType\";\n          }\n          break;\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n    amendFallbackToUnicode(properties);\n    this.data = data;\n    this.type = type;\n    this.subtype = subtype;\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n  get renderer() {\n    const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n    return shadow(this, \"renderer\", renderer);\n  }\n  exportData(extraProperties = false) {\n    const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;\n    const data = Object.create(null);\n    let property, value;\n    for (property of exportDataProperties) {\n      value = this[property];\n      if (value !== undefined) {\n        data[property] = value;\n      }\n    }\n    return data;\n  }\n  fallbackToSystemFont(properties) {\n    this.missingFile = true;\n    const {\n      name,\n      type\n    } = this;\n    let fontName = normalizeFontName(name);\n    const stdFontMap = getStdFontMap(),\n      nonStdFontMap = getNonStdFontMap();\n    const isStandardFont = !!stdFontMap[fontName];\n    const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n    const fontBasicMetricsMap = getFontBasicMetrics();\n    const metrics = fontBasicMetricsMap[fontName];\n    if (metrics) {\n      if (isNaN(this.ascent)) {\n        this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n      }\n      if (isNaN(this.descent)) {\n        this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n      }\n      if (isNaN(this.capHeight)) {\n        this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n      }\n    }\n    this.bold = /bold/gi.test(fontName);\n    this.italic = /oblique|italic/gi.test(fontName);\n    this.black = /Black/g.test(name);\n    const isNarrow = /Narrow/g.test(name);\n    this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n    if ((isStandardFont || isMappedToStandardFont) && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n      const cidToGidMap = properties.cidToGidMap;\n      const map = [];\n      applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n      if (/Arial-?Black/i.test(name)) {\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n      } else if (/Calibri/i.test(name)) {\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n      }\n      if (cidToGidMap) {\n        for (const charCode in map) {\n          const cid = map[charCode];\n          if (cidToGidMap[cid] !== undefined) {\n            map[+charCode] = cidToGidMap[cid];\n          }\n        }\n        if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof IdentityToUnicodeMap) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            const cid = map[charCode];\n            if (cidToGidMap[cid] === undefined) {\n              map[+charCode] = unicodeCharCode;\n            }\n          });\n        }\n      }\n      if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n      this.toFontChar = map;\n      this.toUnicode = new ToUnicodeMap(map);\n    } else if (/Symbol/i.test(fontName)) {\n      this.toFontChar = buildToFontChar(SymbolSetEncoding, getGlyphsUnicode(), this.differences);\n    } else if (/Dingbats/i.test(fontName)) {\n      this.toFontChar = buildToFontChar(ZapfDingbatsEncoding, getDingbatsGlyphsUnicode(), this.differences);\n    } else if (isStandardFont || isMappedToStandardFont) {\n      const map = buildToFontChar(this.defaultEncoding, getGlyphsUnicode(), this.differences);\n      if (type === \"CIDFontType2\" && !this.cidEncoding.startsWith(\"Identity-\") && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n      this.toFontChar = map;\n    } else {\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      const map = [];\n      this.toUnicode.forEach((charCode, unicodeCharCode) => {\n        if (!this.composite) {\n          const glyphName = this.differences[charCode] || this.defaultEncoding[charCode];\n          const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n          if (unicode !== -1) {\n            unicodeCharCode = unicode;\n          }\n        }\n        map[+charCode] = unicodeCharCode;\n      });\n      if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n        if (/Tahoma|Verdana/i.test(name)) {\n          applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n        }\n      }\n      this.toFontChar = map;\n    }\n    amendFallbackToUnicode(properties);\n    this.loadedName = fontName.split(\"-\", 1)[0];\n  }\n  checkAndRepair(name, font, properties) {\n    const VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\n    function readTables(file, numTables) {\n      const tables = Object.create(null);\n      tables[\"OS/2\"] = null;\n      tables.cmap = null;\n      tables.head = null;\n      tables.hhea = null;\n      tables.hmtx = null;\n      tables.maxp = null;\n      tables.name = null;\n      tables.post = null;\n      for (let i = 0; i < numTables; i++) {\n        const table = readTableEntry(file);\n        if (!VALID_TABLES.includes(table.tag)) {\n          continue;\n        }\n        if (table.length === 0) {\n          continue;\n        }\n        tables[table.tag] = table;\n      }\n      return tables;\n    }\n    function readTableEntry(file) {\n      const tag = file.getString(4);\n      const checksum = file.getInt32() >>> 0;\n      const offset = file.getInt32() >>> 0;\n      const length = file.getInt32() >>> 0;\n      const previousPosition = file.pos;\n      file.pos = file.start || 0;\n      file.skip(offset);\n      const data = file.getBytes(length);\n      file.pos = previousPosition;\n      if (tag === \"head\") {\n        data[8] = data[9] = data[10] = data[11] = 0;\n        data[17] |= 0x20;\n      }\n      return {\n        tag,\n        checksum,\n        length,\n        offset,\n        data\n      };\n    }\n    function readOpenTypeHeader(ttf) {\n      return {\n        version: ttf.getString(4),\n        numTables: ttf.getUint16(),\n        searchRange: ttf.getUint16(),\n        entrySelector: ttf.getUint16(),\n        rangeShift: ttf.getUint16()\n      };\n    }\n    function readTrueTypeCollectionHeader(ttc) {\n      const ttcTag = ttc.getString(4);\n      assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n      const majorVersion = ttc.getUint16();\n      const minorVersion = ttc.getUint16();\n      const numFonts = ttc.getInt32() >>> 0;\n      const offsetTable = [];\n      for (let i = 0; i < numFonts; i++) {\n        offsetTable.push(ttc.getInt32() >>> 0);\n      }\n      const header = {\n        ttcTag,\n        majorVersion,\n        minorVersion,\n        numFonts,\n        offsetTable\n      };\n      switch (majorVersion) {\n        case 1:\n          return header;\n        case 2:\n          header.dsigTag = ttc.getInt32() >>> 0;\n          header.dsigLength = ttc.getInt32() >>> 0;\n          header.dsigOffset = ttc.getInt32() >>> 0;\n          return header;\n      }\n      throw new FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n    }\n    function readTrueTypeCollectionData(ttc, fontName) {\n      const {\n        numFonts,\n        offsetTable\n      } = readTrueTypeCollectionHeader(ttc);\n      const fontNameParts = fontName.split(\"+\");\n      let fallbackData;\n      for (let i = 0; i < numFonts; i++) {\n        ttc.pos = (ttc.start || 0) + offsetTable[i];\n        const potentialHeader = readOpenTypeHeader(ttc);\n        const potentialTables = readTables(ttc, potentialHeader.numTables);\n        if (!potentialTables.name) {\n          throw new FormatError('TrueType Collection font must contain a \"name\" table.');\n        }\n        const [nameTable] = readNameTable(potentialTables.name);\n        for (let j = 0, jj = nameTable.length; j < jj; j++) {\n          for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n            const nameEntry = nameTable[j][k]?.replaceAll(/\\s/g, \"\");\n            if (!nameEntry) {\n              continue;\n            }\n            if (nameEntry === fontName) {\n              return {\n                header: potentialHeader,\n                tables: potentialTables\n              };\n            }\n            if (fontNameParts.length < 2) {\n              continue;\n            }\n            for (const part of fontNameParts) {\n              if (nameEntry === part) {\n                fallbackData = {\n                  name: part,\n                  header: potentialHeader,\n                  tables: potentialTables\n                };\n              }\n            }\n          }\n        }\n      }\n      if (fallbackData) {\n        warn(`TrueType Collection does not contain \"${fontName}\" font, ` + `falling back to \"${fallbackData.name}\" font instead.`);\n        return {\n          header: fallbackData.header,\n          tables: fallbackData.tables\n        };\n      }\n      throw new FormatError(`TrueType Collection does not contain \"${fontName}\" font.`);\n    }\n    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n      if (!cmap) {\n        warn(\"No cmap table available.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false\n        };\n      }\n      let segment;\n      let start = (file.start || 0) + cmap.offset;\n      file.pos = start;\n      file.skip(2);\n      const numTables = file.getUint16();\n      let potentialTable;\n      let canBreak = false;\n      for (let i = 0; i < numTables; i++) {\n        const platformId = file.getUint16();\n        const encodingId = file.getUint16();\n        const offset = file.getInt32() >>> 0;\n        let useTable = false;\n        if (potentialTable?.platformId === platformId && potentialTable?.encodingId === encodingId) {\n          continue;\n        }\n        if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {\n          useTable = true;\n        } else if (platformId === 1 && encodingId === 0) {\n          useTable = true;\n        } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n          useTable = true;\n          if (!isSymbolicFont) {\n            canBreak = true;\n          }\n        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n          useTable = true;\n          let correctlySorted = true;\n          if (i < numTables - 1) {\n            const nextBytes = file.peekBytes(2),\n              nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n            if (nextPlatformId < platformId) {\n              correctlySorted = false;\n            }\n          }\n          if (correctlySorted) {\n            canBreak = true;\n          }\n        }\n        if (useTable) {\n          potentialTable = {\n            platformId,\n            encodingId,\n            offset\n          };\n        }\n        if (canBreak) {\n          break;\n        }\n      }\n      if (potentialTable) {\n        file.pos = start + potentialTable.offset;\n      }\n      if (!potentialTable || file.peekByte() === -1) {\n        warn(\"Could not find a preferred cmap table.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false\n        };\n      }\n      const format = file.getUint16();\n      let hasShortCmap = false;\n      const mappings = [];\n      let j, glyphId;\n      if (format === 0) {\n        file.skip(2 + 2);\n        for (j = 0; j < 256; j++) {\n          const index = file.getByte();\n          if (!index) {\n            continue;\n          }\n          mappings.push({\n            charCode: j,\n            glyphId: index\n          });\n        }\n        hasShortCmap = true;\n      } else if (format === 2) {\n        file.skip(2 + 2);\n        const subHeaderKeys = [];\n        let maxSubHeaderKey = 0;\n        for (let i = 0; i < 256; i++) {\n          const subHeaderKey = file.getUint16() >> 3;\n          subHeaderKeys.push(subHeaderKey);\n          maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n        }\n        const subHeaders = [];\n        for (let i = 0; i <= maxSubHeaderKey; i++) {\n          subHeaders.push({\n            firstCode: file.getUint16(),\n            entryCount: file.getUint16(),\n            idDelta: signedInt16(file.getByte(), file.getByte()),\n            idRangePos: file.pos + file.getUint16()\n          });\n        }\n        for (let i = 0; i < 256; i++) {\n          if (subHeaderKeys[i] === 0) {\n            file.pos = subHeaders[0].idRangePos + 2 * i;\n            glyphId = file.getUint16();\n            mappings.push({\n              charCode: i,\n              glyphId\n            });\n          } else {\n            const s = subHeaders[subHeaderKeys[i]];\n            for (j = 0; j < s.entryCount; j++) {\n              const charCode = (i << 8) + j + s.firstCode;\n              file.pos = s.idRangePos + 2 * j;\n              glyphId = file.getUint16();\n              if (glyphId !== 0) {\n                glyphId = (glyphId + s.idDelta) % 65536;\n              }\n              mappings.push({\n                charCode,\n                glyphId\n              });\n            }\n          }\n        }\n      } else if (format === 4) {\n        file.skip(2 + 2);\n        const segCount = file.getUint16() >> 1;\n        file.skip(6);\n        const segments = [];\n        let segIndex;\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments.push({\n            end: file.getUint16()\n          });\n        }\n        file.skip(2);\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].start = file.getUint16();\n        }\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].delta = file.getUint16();\n        }\n        let offsetsCount = 0,\n          offsetIndex;\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          const rangeOffset = file.getUint16();\n          if (!rangeOffset) {\n            segment.offsetIndex = -1;\n            continue;\n          }\n          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n          segment.offsetIndex = offsetIndex;\n          offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n        }\n        const offsets = [];\n        for (j = 0; j < offsetsCount; j++) {\n          offsets.push(file.getUint16());\n        }\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          start = segment.start;\n          const end = segment.end;\n          const delta = segment.delta;\n          offsetIndex = segment.offsetIndex;\n          for (j = start; j <= end; j++) {\n            if (j === 0xffff) {\n              continue;\n            }\n            glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n            glyphId = glyphId + delta & 0xffff;\n            mappings.push({\n              charCode: j,\n              glyphId\n            });\n          }\n        }\n      } else if (format === 6) {\n        file.skip(2 + 2);\n        const firstCode = file.getUint16();\n        const entryCount = file.getUint16();\n        for (j = 0; j < entryCount; j++) {\n          glyphId = file.getUint16();\n          const charCode = firstCode + j;\n          mappings.push({\n            charCode,\n            glyphId\n          });\n        }\n      } else if (format === 12) {\n        file.skip(2 + 4 + 4);\n        const nGroups = file.getInt32() >>> 0;\n        for (j = 0; j < nGroups; j++) {\n          const startCharCode = file.getInt32() >>> 0;\n          const endCharCode = file.getInt32() >>> 0;\n          let glyphCode = file.getInt32() >>> 0;\n          for (let charCode = startCharCode; charCode <= endCharCode; charCode++) {\n            mappings.push({\n              charCode,\n              glyphId: glyphCode++\n            });\n          }\n        }\n      } else {\n        warn(\"cmap table has unsupported format: \" + format);\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false\n        };\n      }\n      mappings.sort(function (a, b) {\n        return a.charCode - b.charCode;\n      });\n      for (let i = 1; i < mappings.length; i++) {\n        if (mappings[i - 1].charCode === mappings[i].charCode) {\n          mappings.splice(i, 1);\n          i--;\n        }\n      }\n      return {\n        platformId: potentialTable.platformId,\n        encodingId: potentialTable.encodingId,\n        mappings,\n        hasShortCmap\n      };\n    }\n    function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {\n      if (!header) {\n        if (metrics) {\n          metrics.data = null;\n        }\n        return;\n      }\n      file.pos = (file.start || 0) + header.offset;\n      file.pos += 4;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      const caretOffset = file.getUint16();\n      file.pos += 8;\n      file.pos += 2;\n      let numOfMetrics = file.getUint16();\n      if (caretOffset !== 0) {\n        const macStyle = int16(headTable.data[44], headTable.data[45]);\n        if (!(macStyle & 2)) {\n          header.data[22] = 0;\n          header.data[23] = 0;\n        }\n      }\n      if (numOfMetrics > numGlyphs) {\n        info(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`);\n        numOfMetrics = numGlyphs;\n        header.data[34] = (numOfMetrics & 0xff00) >> 8;\n        header.data[35] = numOfMetrics & 0x00ff;\n      }\n      const numOfSidebearings = numGlyphs - numOfMetrics;\n      const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n      if (numMissing > 0) {\n        const entries = new Uint8Array(metrics.length + numMissing * 2);\n        entries.set(metrics.data);\n        if (dupFirstEntry) {\n          entries[metrics.length] = metrics.data[2];\n          entries[metrics.length + 1] = metrics.data[3];\n        }\n        metrics.data = entries;\n      }\n    }\n    function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n      const glyphProfile = {\n        length: 0,\n        sizeOfInstructions: 0\n      };\n      if (sourceStart < 0 || sourceStart >= source.length || sourceEnd > source.length || sourceEnd - sourceStart <= 12) {\n        return glyphProfile;\n      }\n      const glyf = source.subarray(sourceStart, sourceEnd);\n      const xMin = signedInt16(glyf[2], glyf[3]);\n      const yMin = signedInt16(glyf[4], glyf[5]);\n      const xMax = signedInt16(glyf[6], glyf[7]);\n      const yMax = signedInt16(glyf[8], glyf[9]);\n      if (xMin > xMax) {\n        writeSignedInt16(glyf, 2, xMax);\n        writeSignedInt16(glyf, 6, xMin);\n      }\n      if (yMin > yMax) {\n        writeSignedInt16(glyf, 4, yMax);\n        writeSignedInt16(glyf, 8, yMin);\n      }\n      const contoursCount = signedInt16(glyf[0], glyf[1]);\n      if (contoursCount < 0) {\n        if (contoursCount < -1) {\n          return glyphProfile;\n        }\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n      let i,\n        j = 10,\n        flagsCount = 0;\n      for (i = 0; i < contoursCount; i++) {\n        const endPoint = glyf[j] << 8 | glyf[j + 1];\n        flagsCount = endPoint + 1;\n        j += 2;\n      }\n      const instructionsStart = j;\n      const instructionsLength = glyf[j] << 8 | glyf[j + 1];\n      glyphProfile.sizeOfInstructions = instructionsLength;\n      j += 2 + instructionsLength;\n      const instructionsEnd = j;\n      let coordinatesLength = 0;\n      for (i = 0; i < flagsCount; i++) {\n        const flag = glyf[j++];\n        if (flag & 0xc0) {\n          glyf[j - 1] = flag & 0x3f;\n        }\n        let xLength = 2;\n        if (flag & 2) {\n          xLength = 1;\n        } else if (flag & 16) {\n          xLength = 0;\n        }\n        let yLength = 2;\n        if (flag & 4) {\n          yLength = 1;\n        } else if (flag & 32) {\n          yLength = 0;\n        }\n        const xyLength = xLength + yLength;\n        coordinatesLength += xyLength;\n        if (flag & 8) {\n          const repeat = glyf[j++];\n          if (repeat === 0) {\n            glyf[j - 1] ^= 8;\n          }\n          i += repeat;\n          coordinatesLength += repeat * xyLength;\n        }\n      }\n      if (coordinatesLength === 0) {\n        return glyphProfile;\n      }\n      let glyphDataLength = j + coordinatesLength;\n      if (glyphDataLength > glyf.length) {\n        return glyphProfile;\n      }\n      if (!hintsValid && instructionsLength > 0) {\n        dest.set(glyf.subarray(0, instructionsStart), destStart);\n        dest.set([0, 0], destStart + instructionsStart);\n        dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n        glyphDataLength -= instructionsLength;\n        if (glyf.length - glyphDataLength > 3) {\n          glyphDataLength = glyphDataLength + 3 & ~3;\n        }\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n      if (glyf.length - glyphDataLength > 3) {\n        glyphDataLength = glyphDataLength + 3 & ~3;\n        dest.set(glyf.subarray(0, glyphDataLength), destStart);\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n      dest.set(glyf, destStart);\n      glyphProfile.length = glyf.length;\n      return glyphProfile;\n    }\n    function sanitizeHead(head, numGlyphs, locaLength) {\n      const data = head.data;\n      const version = int32(data[0], data[1], data[2], data[3]);\n      if (version >> 16 !== 1) {\n        info(\"Attempting to fix invalid version in head table: \" + version);\n        data[0] = 0;\n        data[1] = 1;\n        data[2] = 0;\n        data[3] = 0;\n      }\n      const indexToLocFormat = int16(data[50], data[51]);\n      if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n        info(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n        const numGlyphsPlusOne = numGlyphs + 1;\n        if (locaLength === numGlyphsPlusOne << 1) {\n          data[50] = 0;\n          data[51] = 0;\n        } else if (locaLength === numGlyphsPlusOne << 2) {\n          data[50] = 0;\n          data[51] = 1;\n        } else {\n          throw new FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n        }\n      }\n    }\n    function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n      let itemSize, itemDecode, itemEncode;\n      if (isGlyphLocationsLong) {\n        itemSize = 4;\n        itemDecode = function fontItemDecodeLong(data, offset) {\n          return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n        };\n        itemEncode = function fontItemEncodeLong(data, offset, value) {\n          data[offset] = value >>> 24 & 0xff;\n          data[offset + 1] = value >> 16 & 0xff;\n          data[offset + 2] = value >> 8 & 0xff;\n          data[offset + 3] = value & 0xff;\n        };\n      } else {\n        itemSize = 2;\n        itemDecode = function fontItemDecode(data, offset) {\n          return data[offset] << 9 | data[offset + 1] << 1;\n        };\n        itemEncode = function fontItemEncode(data, offset, value) {\n          data[offset] = value >> 9 & 0xff;\n          data[offset + 1] = value >> 1 & 0xff;\n        };\n      }\n      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n      const locaDataSize = itemSize * (1 + numGlyphsOut);\n      const locaData = new Uint8Array(locaDataSize);\n      locaData.set(loca.data.subarray(0, locaDataSize));\n      loca.data = locaData;\n      const oldGlyfData = glyf.data;\n      const oldGlyfDataLength = oldGlyfData.length;\n      const newGlyfData = new Uint8Array(oldGlyfDataLength);\n      let i, j;\n      const locaEntries = [];\n      for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n        let offset = itemDecode(locaData, j);\n        if (offset > oldGlyfDataLength) {\n          offset = oldGlyfDataLength;\n        }\n        locaEntries.push({\n          index: i,\n          offset,\n          endOffset: 0\n        });\n      }\n      locaEntries.sort((a, b) => a.offset - b.offset);\n      for (i = 0; i < numGlyphs; i++) {\n        locaEntries[i].endOffset = locaEntries[i + 1].offset;\n      }\n      locaEntries.sort((a, b) => a.index - b.index);\n      for (i = 0; i < numGlyphs; i++) {\n        const {\n          offset,\n          endOffset\n        } = locaEntries[i];\n        if (offset !== 0 || endOffset !== 0) {\n          break;\n        }\n        const nextOffset = locaEntries[i + 1].offset;\n        if (nextOffset === 0) {\n          continue;\n        }\n        locaEntries[i].endOffset = nextOffset;\n        break;\n      }\n      const last = locaEntries.at(-2);\n      if (last.offset !== 0 && last.endOffset === 0) {\n        last.endOffset = oldGlyfDataLength;\n      }\n      const missingGlyphs = Object.create(null);\n      let writeOffset = 0;\n      itemEncode(locaData, 0, writeOffset);\n      for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n        const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid);\n        const newLength = glyphProfile.length;\n        if (newLength === 0) {\n          missingGlyphs[i] = true;\n        }\n        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n        }\n        writeOffset += newLength;\n        itemEncode(locaData, j, writeOffset);\n      }\n      if (writeOffset === 0) {\n        const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n        for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n          itemEncode(locaData, j, simpleGlyph.length);\n        }\n        glyf.data = simpleGlyph;\n      } else if (dupFirstEntry) {\n        const firstEntryLength = itemDecode(locaData, itemSize);\n        if (newGlyfData.length > firstEntryLength + writeOffset) {\n          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n        } else {\n          glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n          glyf.data.set(newGlyfData.subarray(0, writeOffset));\n        }\n        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n        itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n      } else {\n        glyf.data = newGlyfData.subarray(0, writeOffset);\n      }\n      return {\n        missingGlyphs,\n        maxSizeOfInstructions\n      };\n    }\n    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n      const start = (font.start || 0) + post.offset;\n      font.pos = start;\n      const length = post.length,\n        end = start + length;\n      const version = font.getInt32();\n      font.skip(28);\n      let glyphNames;\n      let valid = true;\n      let i;\n      switch (version) {\n        case 0x00010000:\n          glyphNames = MacStandardGlyphOrdering;\n          break;\n        case 0x00020000:\n          const numGlyphs = font.getUint16();\n          if (numGlyphs !== maxpNumGlyphs) {\n            valid = false;\n            break;\n          }\n          const glyphNameIndexes = [];\n          for (i = 0; i < numGlyphs; ++i) {\n            const index = font.getUint16();\n            if (index >= 32768) {\n              valid = false;\n              break;\n            }\n            glyphNameIndexes.push(index);\n          }\n          if (!valid) {\n            break;\n          }\n          const customNames = [],\n            strBuf = [];\n          while (font.pos < end) {\n            const stringLength = font.getByte();\n            strBuf.length = stringLength;\n            for (i = 0; i < stringLength; ++i) {\n              strBuf[i] = String.fromCharCode(font.getByte());\n            }\n            customNames.push(strBuf.join(\"\"));\n          }\n          glyphNames = [];\n          for (i = 0; i < numGlyphs; ++i) {\n            const j = glyphNameIndexes[i];\n            if (j < 258) {\n              glyphNames.push(MacStandardGlyphOrdering[j]);\n              continue;\n            }\n            glyphNames.push(customNames[j - 258]);\n          }\n          break;\n        case 0x00030000:\n          break;\n        default:\n          warn(\"Unknown/unsupported post table version \" + version);\n          valid = false;\n          if (propertiesObj.defaultEncoding) {\n            glyphNames = propertiesObj.defaultEncoding;\n          }\n          break;\n      }\n      propertiesObj.glyphNames = glyphNames;\n      return valid;\n    }\n    function readNameTable(nameTable) {\n      const start = (font.start || 0) + nameTable.offset;\n      font.pos = start;\n      const names = [[], []],\n        records = [];\n      const length = nameTable.length,\n        end = start + length;\n      const format = font.getUint16();\n      const FORMAT_0_HEADER_LENGTH = 6;\n      if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n        return [names, records];\n      }\n      const numRecords = font.getUint16();\n      const stringsStart = font.getUint16();\n      const NAME_RECORD_LENGTH = 12;\n      let i, ii;\n      for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n        const r = {\n          platform: font.getUint16(),\n          encoding: font.getUint16(),\n          language: font.getUint16(),\n          name: font.getUint16(),\n          length: font.getUint16(),\n          offset: font.getUint16()\n        };\n        if (isMacNameRecord(r) || isWinNameRecord(r)) {\n          records.push(r);\n        }\n      }\n      for (i = 0, ii = records.length; i < ii; i++) {\n        const record = records[i];\n        if (record.length <= 0) {\n          continue;\n        }\n        const pos = start + stringsStart + record.offset;\n        if (pos + record.length > end) {\n          continue;\n        }\n        font.pos = pos;\n        const nameIndex = record.name;\n        if (record.encoding) {\n          let str = \"\";\n          for (let j = 0, jj = record.length; j < jj; j += 2) {\n            str += String.fromCharCode(font.getUint16());\n          }\n          names[1][nameIndex] = str;\n        } else {\n          names[0][nameIndex] = font.getString(record.length);\n        }\n      }\n      return [names, records];\n    }\n    const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n    function sanitizeTTProgram(table, ttContext) {\n      let data = table.data;\n      let i = 0,\n        j,\n        n,\n        b,\n        funcId,\n        pc,\n        lastEndf = 0,\n        lastDeff = 0;\n      const stack = [];\n      const callstack = [];\n      const functionsCalled = [];\n      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n      let inFDEF = false,\n        ifLevel = 0,\n        inELSE = 0;\n      for (let ii = data.length; i < ii;) {\n        const op = data[i++];\n        if (op === 0x40) {\n          n = data[i++];\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if (op === 0x41) {\n          n = data[i++];\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push(b << 8 | data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb0) {\n          n = op - 0xb0 + 1;\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb8) {\n          n = op - 0xb8 + 1;\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push(signedInt16(b, data[i++]));\n            }\n          }\n        } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n          if (!inFDEF && !inELSE) {\n            funcId = stack.at(-1);\n            if (isNaN(funcId)) {\n              info(\"TT: CALL empty stack (or invalid entry).\");\n            } else {\n              ttContext.functionsUsed[funcId] = true;\n              if (funcId in ttContext.functionsStackDeltas) {\n                const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n                if (newStackLength < 0) {\n                  warn(\"TT: CALL invalid functions stack delta.\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n                stack.length = newStackLength;\n              } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n                callstack.push({\n                  data,\n                  i,\n                  stackTop: stack.length - 1\n                });\n                functionsCalled.push(funcId);\n                pc = ttContext.functionsDefined[funcId];\n                if (!pc) {\n                  warn(\"TT: CALL non-existent function\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n                data = pc.data;\n                i = pc.i;\n              }\n            }\n          }\n        } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n          if (inFDEF || inELSE) {\n            warn(\"TT: nested FDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n          inFDEF = true;\n          lastDeff = i;\n          funcId = stack.pop();\n          ttContext.functionsDefined[funcId] = {\n            data,\n            i\n          };\n        } else if (op === 0x2d) {\n          if (inFDEF) {\n            inFDEF = false;\n            lastEndf = i;\n          } else {\n            pc = callstack.pop();\n            if (!pc) {\n              warn(\"TT: ENDF bad stack\");\n              ttContext.hintsValid = false;\n              return;\n            }\n            funcId = functionsCalled.pop();\n            data = pc.data;\n            i = pc.i;\n            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n          }\n        } else if (op === 0x89) {\n          if (inFDEF || inELSE) {\n            warn(\"TT: nested IDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n          inFDEF = true;\n          lastDeff = i;\n        } else if (op === 0x58) {\n          ++ifLevel;\n        } else if (op === 0x1b) {\n          inELSE = ifLevel;\n        } else if (op === 0x59) {\n          if (inELSE === ifLevel) {\n            inELSE = 0;\n          }\n          --ifLevel;\n        } else if (op === 0x1c) {\n          if (!inFDEF && !inELSE) {\n            const offset = stack.at(-1);\n            if (offset > 0) {\n              i += offset - 1;\n            }\n          }\n        }\n        if (!inFDEF && !inELSE) {\n          let stackDelta = 0;\n          if (op <= 0x8e) {\n            stackDelta = TTOpsStackDeltas[op];\n          } else if (op >= 0xc0 && op <= 0xdf) {\n            stackDelta = -1;\n          } else if (op >= 0xe0) {\n            stackDelta = -2;\n          }\n          if (op >= 0x71 && op <= 0x75) {\n            n = stack.pop();\n            if (!isNaN(n)) {\n              stackDelta = -n * 2;\n            }\n          }\n          while (stackDelta < 0 && stack.length > 0) {\n            stack.pop();\n            stackDelta++;\n          }\n          while (stackDelta > 0) {\n            stack.push(NaN);\n            stackDelta--;\n          }\n        }\n      }\n      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n      const content = [data];\n      if (i > data.length) {\n        content.push(new Uint8Array(i - data.length));\n      }\n      if (lastDeff > lastEndf) {\n        warn(\"TT: complementing a missing function tail\");\n        content.push(new Uint8Array([0x22, 0x2d]));\n      }\n      foldTTTable(table, content);\n    }\n    function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n      if (ttContext.tooComplexToFollowFunctions) {\n        return;\n      }\n      if (ttContext.functionsDefined.length > maxFunctionDefs) {\n        warn(\"TT: more functions defined than expected\");\n        ttContext.hintsValid = false;\n        return;\n      }\n      for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n        if (j > maxFunctionDefs) {\n          warn(\"TT: invalid function id: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n          warn(\"TT: undefined function: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n      }\n    }\n    function foldTTTable(table, content) {\n      if (content.length > 1) {\n        let newLength = 0;\n        let j, jj;\n        for (j = 0, jj = content.length; j < jj; j++) {\n          newLength += content[j].length;\n        }\n        newLength = newLength + 3 & ~3;\n        const result = new Uint8Array(newLength);\n        let pos = 0;\n        for (j = 0, jj = content.length; j < jj; j++) {\n          result.set(content[j], pos);\n          pos += content[j].length;\n        }\n        table.data = result;\n        table.length = newLength;\n      }\n    }\n    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n      const ttContext = {\n        functionsDefined: [],\n        functionsUsed: [],\n        functionsStackDeltas: [],\n        tooComplexToFollowFunctions: false,\n        hintsValid: true\n      };\n      if (fpgm) {\n        sanitizeTTProgram(fpgm, ttContext);\n      }\n      if (prep) {\n        sanitizeTTProgram(prep, ttContext);\n      }\n      if (fpgm) {\n        checkInvalidFunctions(ttContext, maxFunctionDefs);\n      }\n      if (cvt && cvt.length & 1) {\n        const cvtData = new Uint8Array(cvt.length + 1);\n        cvtData.set(cvt.data);\n        cvt.data = cvtData;\n      }\n      return ttContext.hintsValid;\n    }\n    font = new Stream(new Uint8Array(font.getBytes()));\n    let header, tables;\n    if (isTrueTypeCollectionFile(font)) {\n      const ttcData = readTrueTypeCollectionData(font, this.name);\n      header = ttcData.header;\n      tables = ttcData.tables;\n    } else {\n      header = readOpenTypeHeader(font);\n      tables = readTables(font, header.numTables);\n    }\n    let cff, cffFile;\n    const isTrueType = !tables[\"CFF \"];\n    if (!isTrueType) {\n      const isComposite = properties.composite && (properties.cidToGidMap?.length > 0 || !(properties.cMap instanceof IdentityCMap));\n      if (header.version === \"OTTO\" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n        cffFile = new Stream(tables[\"CFF \"].data);\n        cff = new CFFFont(cffFile, properties);\n        adjustWidths(properties);\n        return this.convert(name, cff, properties);\n      }\n      delete tables.glyf;\n      delete tables.loca;\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n      this.isOpenType = true;\n    } else {\n      if (!tables.loca) {\n        throw new FormatError('Required \"loca\" table is not found');\n      }\n      if (!tables.glyf) {\n        warn('Required \"glyf\" table is not found -- trying to recover.');\n        tables.glyf = {\n          tag: \"glyf\",\n          data: new Uint8Array(0)\n        };\n      }\n      this.isOpenType = false;\n    }\n    if (!tables.maxp) {\n      throw new FormatError('Required \"maxp\" table is not found');\n    }\n    font.pos = (font.start || 0) + tables.maxp.offset;\n    let version = font.getInt32();\n    const numGlyphs = font.getUint16();\n    if (version !== 0x00010000 && version !== 0x00005000) {\n      if (tables.maxp.length === 6) {\n        version = 0x0005000;\n      } else if (tables.maxp.length >= 32) {\n        version = 0x00010000;\n      } else {\n        throw new FormatError(`\"maxp\" table has a wrong version number`);\n      }\n      writeUint32(tables.maxp.data, 0, version);\n    }\n    if (properties.scaleFactors?.length === numGlyphs && isTrueType) {\n      const {\n        scaleFactors\n      } = properties;\n      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n      const glyphs = new GlyfTable({\n        glyfTable: tables.glyf.data,\n        isGlyphLocationsLong,\n        locaTable: tables.loca.data,\n        numGlyphs\n      });\n      glyphs.scale(scaleFactors);\n      const {\n        glyf,\n        loca,\n        isLocationLong\n      } = glyphs.write();\n      tables.glyf.data = glyf;\n      tables.loca.data = loca;\n      if (isLocationLong !== !!isGlyphLocationsLong) {\n        tables.head.data[50] = 0;\n        tables.head.data[51] = isLocationLong ? 1 : 0;\n      }\n      const metrics = tables.hmtx.data;\n      for (let i = 0; i < numGlyphs; i++) {\n        const j = 4 * i;\n        const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));\n        metrics[j] = advanceWidth >> 8 & 0xff;\n        metrics[j + 1] = advanceWidth & 0xff;\n        const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));\n        writeSignedInt16(metrics, j + 2, lsb);\n      }\n    }\n    let numGlyphsOut = numGlyphs + 1;\n    let dupFirstEntry = true;\n    if (numGlyphsOut > 0xffff) {\n      dupFirstEntry = false;\n      numGlyphsOut = numGlyphs;\n      warn(\"Not enough space in glyfs to duplicate first glyph.\");\n    }\n    let maxFunctionDefs = 0;\n    let maxSizeOfInstructions = 0;\n    if (version >= 0x00010000 && tables.maxp.length >= 32) {\n      font.pos += 8;\n      const maxZones = font.getUint16();\n      if (maxZones > 2) {\n        tables.maxp.data[14] = 0;\n        tables.maxp.data[15] = 2;\n      }\n      font.pos += 4;\n      maxFunctionDefs = font.getUint16();\n      font.pos += 4;\n      maxSizeOfInstructions = font.getUint16();\n    }\n    tables.maxp.data[4] = numGlyphsOut >> 8;\n    tables.maxp.data[5] = numGlyphsOut & 255;\n    const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n    if (!hintsValid) {\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n    }\n    sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);\n    if (!tables.head) {\n      throw new FormatError('Required \"head\" table is not found');\n    }\n    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n    let missingGlyphs = Object.create(null);\n    if (isTrueType) {\n      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n      const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n      missingGlyphs = glyphsInfo.missingGlyphs;\n      if (version >= 0x00010000 && tables.maxp.length >= 32) {\n        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n      }\n    }\n    if (!tables.hhea) {\n      throw new FormatError('Required \"hhea\" table is not found');\n    }\n    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n      tables.hhea.data[10] = 0xff;\n      tables.hhea.data[11] = 0xff;\n    }\n    const metricsOverride = {\n      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n      yMax: signedInt16(tables.head.data[42], tables.head.data[43]),\n      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])\n    };\n    this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n    this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n    if (this.cssFontInfo?.lineHeight) {\n      this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n      this.lineGap = this.cssFontInfo.metrics.lineGap;\n    } else {\n      this.lineHeight = this.ascent - this.descent + this.lineGap;\n    }\n    if (tables.post) {\n      readPostScriptTable(tables.post, properties, numGlyphs);\n    }\n    tables.post = {\n      tag: \"post\",\n      data: createPostTable(properties)\n    };\n    const charCodeToGlyphId = Object.create(null);\n    function hasGlyph(glyphId) {\n      return !missingGlyphs[glyphId];\n    }\n    if (properties.composite) {\n      const cidToGidMap = properties.cidToGidMap || [];\n      const isCidToGidMapEmpty = cidToGidMap.length === 0;\n      properties.cMap.forEach(function (charCode, cid) {\n        if (typeof cid === \"string\") {\n          cid = convertCidString(charCode, cid, true);\n        }\n        if (cid > 0xffff) {\n          throw new FormatError(\"Max size of CID is 65,535\");\n        }\n        let glyphId = -1;\n        if (isCidToGidMapEmpty) {\n          glyphId = cid;\n        } else if (cidToGidMap[cid] !== undefined) {\n          glyphId = cidToGidMap[cid];\n        }\n        if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      });\n    } else {\n      const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n      const cmapPlatformId = cmapTable.platformId;\n      const cmapEncodingId = cmapTable.encodingId;\n      const cmapMappings = cmapTable.mappings;\n      let baseEncoding = [],\n        forcePostTable = false;\n      if (properties.hasEncoding && (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\")) {\n        baseEncoding = getEncoding(properties.baseEncodingName);\n      }\n      if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        for (let charCode = 0; charCode < 256; charCode++) {\n          let glyphName;\n          if (this.differences[charCode] !== undefined) {\n            glyphName = this.differences[charCode];\n          } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n            glyphName = baseEncoding[charCode];\n          } else {\n            glyphName = StandardEncoding[charCode];\n          }\n          if (!glyphName) {\n            continue;\n          }\n          const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n          let unicodeOrCharCode;\n          if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n            unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n          }\n          if (unicodeOrCharCode === undefined) {\n            if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n              const unicode = this.toUnicode.get(charCode);\n              if (unicode) {\n                unicodeOrCharCode = unicode.codePointAt(0);\n              }\n            }\n            if (unicodeOrCharCode === undefined) {\n              continue;\n            }\n          }\n          for (const mapping of cmapMappings) {\n            if (mapping.charCode !== unicodeOrCharCode) {\n              continue;\n            }\n            charCodeToGlyphId[charCode] = mapping.glyphId;\n            break;\n          }\n        }\n      } else if (cmapPlatformId === 0) {\n        for (const mapping of cmapMappings) {\n          charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n        }\n        forcePostTable = true;\n      } else if (cmapPlatformId === 3 && cmapEncodingId === 0) {\n        for (const mapping of cmapMappings) {\n          let charCode = mapping.charCode;\n          if (charCode >= 0xf000 && charCode <= 0xf0ff) {\n            charCode &= 0xff;\n          }\n          charCodeToGlyphId[charCode] = mapping.glyphId;\n        }\n      } else {\n        for (const mapping of cmapMappings) {\n          charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n        }\n      }\n      if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {\n        for (let i = 0; i < 256; ++i) {\n          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n            continue;\n          }\n          const glyphName = this.differences[i] || baseEncoding[i];\n          if (!glyphName) {\n            continue;\n          }\n          const glyphId = properties.glyphNames.indexOf(glyphName);\n          if (glyphId > 0 && hasGlyph(glyphId)) {\n            charCodeToGlyphId[i] = glyphId;\n          }\n        }\n      }\n    }\n    if (charCodeToGlyphId.length === 0) {\n      charCodeToGlyphId[0] = 0;\n    }\n    let glyphZeroId = numGlyphsOut - 1;\n    if (!dupFirstEntry) {\n      glyphZeroId = 0;\n    }\n    if (!properties.cssFontInfo) {\n      const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId, this.toUnicode);\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, newMapping.toUnicodeExtraMap, numGlyphsOut)\n      };\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n        };\n      }\n    }\n    if (!isTrueType) {\n      try {\n        cffFile = new Stream(tables[\"CFF \"].data);\n        const parser = new CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED);\n        cff = parser.parse();\n        cff.duplicateFirstGlyph();\n        const compiler = new CFFCompiler(cff);\n        tables[\"CFF \"].data = compiler.compile();\n      } catch {\n        warn(\"Failed to compile font \" + properties.loadedName);\n      }\n    }\n    if (!tables.name) {\n      tables.name = {\n        tag: \"name\",\n        data: createNameTable(this.name)\n      };\n    } else {\n      const [namePrototype, nameRecords] = readNameTable(tables.name);\n      tables.name.data = createNameTable(name, namePrototype);\n      this.psName = namePrototype[0][6] || null;\n      if (!properties.composite) {\n        adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\n      }\n    }\n    const builder = new OpenTypeFileBuilder(header.version);\n    for (const tableTag in tables) {\n      builder.addTable(tableTag, tables[tableTag].data);\n    }\n    return builder.toArray();\n  }\n  convert(fontName, font, properties) {\n    properties.fixedPitch = false;\n    if (properties.builtInEncoding) {\n      adjustType1ToUnicode(properties, properties.builtInEncoding);\n    }\n    let glyphZeroId = 1;\n    if (font instanceof CFFFont) {\n      glyphZeroId = font.numGlyphs - 1;\n    }\n    const mapping = font.getGlyphMapping(properties);\n    let newMapping = null;\n    let newCharCodeToGlyphId = mapping;\n    let toUnicodeExtraMap = null;\n    if (!properties.cssFontInfo) {\n      newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId, this.toUnicode);\n      this.toFontChar = newMapping.toFontChar;\n      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n      toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\n    }\n    const numGlyphs = font.numGlyphs;\n    function getCharCodes(charCodeToGlyphId, glyphId) {\n      let charCodes = null;\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          (charCodes ||= []).push(charCode | 0);\n        }\n      }\n      return charCodes;\n    }\n    function createCharCode(charCodeToGlyphId, glyphId) {\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          return charCode | 0;\n        }\n      }\n      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n      return newMapping.nextAvailableFontCharCode++;\n    }\n    const seacs = font.seacs;\n    if (newMapping && SEAC_ANALYSIS_ENABLED && seacs?.length) {\n      const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n      const charset = font.getCharset();\n      const seacMap = Object.create(null);\n      for (let glyphId in seacs) {\n        glyphId |= 0;\n        const seac = seacs[glyphId];\n        const baseGlyphName = StandardEncoding[seac[2]];\n        const accentGlyphName = StandardEncoding[seac[3]];\n        const baseGlyphId = charset.indexOf(baseGlyphName);\n        const accentGlyphId = charset.indexOf(accentGlyphName);\n        if (baseGlyphId < 0 || accentGlyphId < 0) {\n          continue;\n        }\n        const accentOffset = {\n          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n        };\n        const charCodes = getCharCodes(mapping, glyphId);\n        if (!charCodes) {\n          continue;\n        }\n        for (const charCode of charCodes) {\n          const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n          const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n          const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n          seacMap[charCode] = {\n            baseFontCharCode,\n            accentFontCharCode,\n            accentOffset\n          };\n        }\n      }\n      properties.seacMap = seacMap;\n    }\n    const unitsPerEm = properties.fontMatrix ? 1 / Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000;\n    const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n    builder.addTable(\"CFF \", font.data);\n    builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n    builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs));\n    builder.addTable(\"head\", \"\\x00\\x01\\x00\\x00\" + \"\\x00\\x00\\x10\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x5F\\x0F\\x3C\\xF5\" + \"\\x00\\x00\" + safeString16(unitsPerEm) + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\" + safeString16(properties.descent) + \"\\x0F\\xFF\" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + \"\\x00\\x11\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\");\n    builder.addTable(\"hhea\", \"\\x00\\x01\\x00\\x00\" + safeString16(properties.ascent) + safeString16(properties.descent) + \"\\x00\\x00\" + \"\\xFF\\xFF\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + string16(numGlyphs));\n    builder.addTable(\"hmtx\", function fontFieldsHmtx() {\n      const charstrings = font.charstrings;\n      const cffWidths = font.cff ? font.cff.widths : null;\n      let hmtx = \"\\x00\\x00\\x00\\x00\";\n      for (let i = 1, ii = numGlyphs; i < ii; i++) {\n        let width = 0;\n        if (charstrings) {\n          const charstring = charstrings[i - 1];\n          width = \"width\" in charstring ? charstring.width : 0;\n        } else if (cffWidths) {\n          width = Math.ceil(cffWidths[i] || 0);\n        }\n        hmtx += string16(width) + string16(0);\n      }\n      return hmtx;\n    }());\n    builder.addTable(\"maxp\", \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs));\n    builder.addTable(\"name\", createNameTable(fontName));\n    builder.addTable(\"post\", createPostTable(properties));\n    return builder.toArray();\n  }\n  get _spaceWidth() {\n    const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n    let width;\n    for (const glyphName of possibleSpaceReplacements) {\n      if (glyphName in this.widths) {\n        width = this.widths[glyphName];\n        break;\n      }\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      const glyphUnicode = glyphsUnicodeMap[glyphName];\n      let charcode = 0;\n      if (this.composite && this.cMap.contains(glyphUnicode)) {\n        charcode = this.cMap.lookup(glyphUnicode);\n        if (typeof charcode === \"string\") {\n          charcode = convertCidString(glyphUnicode, charcode);\n        }\n      }\n      if (!charcode && this.toUnicode) {\n        charcode = this.toUnicode.charCodeOf(glyphUnicode);\n      }\n      if (charcode <= 0) {\n        charcode = glyphUnicode;\n      }\n      width = this.widths[charcode];\n      if (width) {\n        break;\n      }\n    }\n    return shadow(this, \"_spaceWidth\", width || this.defaultWidth);\n  }\n  _charToGlyph(charcode, isSpace = false) {\n    let glyph = this._glyphCache[charcode];\n    if (glyph?.isSpace === isSpace) {\n      return glyph;\n    }\n    let fontCharCode, width, operatorListId;\n    let widthCode = charcode;\n    if (this.cMap?.contains(charcode)) {\n      widthCode = this.cMap.lookup(charcode);\n      if (typeof widthCode === \"string\") {\n        widthCode = convertCidString(charcode, widthCode);\n      }\n    }\n    width = this.widths[widthCode];\n    if (typeof width !== \"number\") {\n      width = this.defaultWidth;\n    }\n    const vmetric = this.vmetrics?.[widthCode];\n    let unicode = this.toUnicode.get(charcode) || charcode;\n    if (typeof unicode === \"number\") {\n      unicode = String.fromCharCode(unicode);\n    }\n    let isInFont = this.toFontChar[charcode] !== undefined;\n    fontCharCode = this.toFontChar[charcode] || charcode;\n    if (this.missingFile) {\n      const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n      if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n        fontCharCode = 0x20;\n        if (glyphName === \"\") {\n          width ||= this._spaceWidth;\n          unicode = String.fromCharCode(fontCharCode);\n        }\n      }\n      fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n    }\n    if (this.isType3Font) {\n      operatorListId = fontCharCode;\n    }\n    let accent = null;\n    if (this.seacMap?.[charcode]) {\n      isInFont = true;\n      const seac = this.seacMap[charcode];\n      fontCharCode = seac.baseFontCharCode;\n      accent = {\n        fontChar: String.fromCodePoint(seac.accentFontCharCode),\n        offset: seac.accentOffset\n      };\n    }\n    let fontChar = \"\";\n    if (typeof fontCharCode === \"number\") {\n      if (fontCharCode <= 0x10ffff) {\n        fontChar = String.fromCodePoint(fontCharCode);\n      } else {\n        warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n      }\n    }\n    if (this.missingFile && this.vertical && fontChar.length === 1) {\n      const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];\n      if (vertical) {\n        fontChar = unicode = String.fromCharCode(vertical);\n      }\n    }\n    glyph = new fonts_Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n    return this._glyphCache[charcode] = glyph;\n  }\n  charsToGlyphs(chars) {\n    let glyphs = this._charsCache[chars];\n    if (glyphs) {\n      return glyphs;\n    }\n    glyphs = [];\n    if (this.cMap) {\n      const c = Object.create(null),\n        ii = chars.length;\n      let i = 0;\n      while (i < ii) {\n        this.cMap.readCharCode(chars, i, c);\n        const {\n          charcode,\n          length\n        } = c;\n        i += length;\n        const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);\n        glyphs.push(glyph);\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        const charcode = chars.charCodeAt(i);\n        const glyph = this._charToGlyph(charcode, charcode === 0x20);\n        glyphs.push(glyph);\n      }\n    }\n    return this._charsCache[chars] = glyphs;\n  }\n  getCharPositions(chars) {\n    const positions = [];\n    if (this.cMap) {\n      const c = Object.create(null);\n      let i = 0;\n      while (i < chars.length) {\n        this.cMap.readCharCode(chars, i, c);\n        const length = c.length;\n        positions.push([i, i + length]);\n        i += length;\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        positions.push([i, i + 1]);\n      }\n    }\n    return positions;\n  }\n  get glyphCacheValues() {\n    return Object.values(this._glyphCache);\n  }\n  encodeString(str) {\n    const buffers = [];\n    const currentBuf = [];\n    const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n    const getCharCode = this.toUnicode instanceof IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n    for (let i = 0, ii = str.length; i < ii; i++) {\n      const unicode = str.codePointAt(i);\n      if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n        i++;\n      }\n      if (this.toUnicode) {\n        const charCode = getCharCode(unicode);\n        if (charCode !== -1) {\n          if (hasCurrentBufErrors()) {\n            buffers.push(currentBuf.join(\"\"));\n            currentBuf.length = 0;\n          }\n          const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;\n          for (let j = charCodeLength - 1; j >= 0; j--) {\n            currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));\n          }\n          continue;\n        }\n      }\n      if (!hasCurrentBufErrors()) {\n        buffers.push(currentBuf.join(\"\"));\n        currentBuf.length = 0;\n      }\n      currentBuf.push(String.fromCodePoint(unicode));\n    }\n    buffers.push(currentBuf.join(\"\"));\n    return buffers;\n  }\n}\nclass ErrorFont {\n  constructor(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n  charsToGlyphs() {\n    return [];\n  }\n  encodeString(chars) {\n    return [chars];\n  }\n  exportData(extraProperties = false) {\n    return {\n      error: this.error\n    };\n  }\n}\n\n;// ./src/core/pattern.js\n\n\n\n\nconst ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7\n};\nclass Pattern {\n  constructor() {\n    unreachable(\"Cannot initialize Pattern.\");\n  }\n  static parseShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache) {\n    const dict = shading instanceof BaseStream ? shading.dict : shading;\n    const type = dict.get(\"ShadingType\");\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache);\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache);\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(ex);\n      return new DummyShading();\n    }\n  }\n}\nclass BaseShading {\n  static SMALL_NUMBER = 1e-6;\n  getIR() {\n    unreachable(\"Abstract method `getIR` called.\");\n  }\n}\nclass RadialAxialShading extends BaseShading {\n  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n    super();\n    this.shadingType = dict.get(\"ShadingType\");\n    let coordsLen = 0;\n    if (this.shadingType === ShadingType.AXIAL) {\n      coordsLen = 4;\n    } else if (this.shadingType === ShadingType.RADIAL) {\n      coordsLen = 6;\n    }\n    this.coordsArr = dict.getArray(\"Coords\");\n    if (!isNumberArray(this.coordsArr, coordsLen)) {\n      throw new FormatError(\"RadialAxialShading: Invalid /Coords array.\");\n    }\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache\n    });\n    this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n    let t0 = 0.0,\n      t1 = 1.0;\n    const domainArr = dict.getArray(\"Domain\");\n    if (isNumberArray(domainArr, 2)) {\n      [t0, t1] = domainArr;\n    }\n    let extendStart = false,\n      extendEnd = false;\n    const extendArr = dict.getArray(\"Extend\");\n    if (isBooleanArray(extendArr, 2)) {\n      [extendStart, extendEnd] = extendArr;\n    }\n    if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {\n      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n      const distance = Math.hypot(x1 - x2, y1 - y2);\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = pdfFunctionFactory.createFromArray(fnObj);\n    const NUMBER_OF_SAMPLES = 840;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n    const colorStops = this.colorStops = [];\n    if (t0 >= t1 || step <= 0) {\n      info(\"Bad shading domain.\");\n      return;\n    }\n    const color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    let rgbColor;\n    let iBase = 0;\n    ratio[0] = t0;\n    fn(ratio, 0, color, 0);\n    let rgbBase = cs.getRgb(color, 0);\n    const cssColorBase = Util.makeHexColor(rgbBase[0], rgbBase[1], rgbBase[2]);\n    colorStops.push([0, cssColorBase]);\n    let iPrev = 1;\n    ratio[0] = t0 + step;\n    fn(ratio, 0, color, 0);\n    let rgbPrev = cs.getRgb(color, 0);\n    let maxSlopeR = rgbPrev[0] - rgbBase[0] + 1;\n    let maxSlopeG = rgbPrev[1] - rgbBase[1] + 1;\n    let maxSlopeB = rgbPrev[2] - rgbBase[2] + 1;\n    let minSlopeR = rgbPrev[0] - rgbBase[0] - 1;\n    let minSlopeG = rgbPrev[1] - rgbBase[1] - 1;\n    let minSlopeB = rgbPrev[2] - rgbBase[2] - 1;\n    for (let i = 2; i < NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      const run = i - iBase;\n      maxSlopeR = Math.min(maxSlopeR, (rgbColor[0] - rgbBase[0] + 1) / run);\n      maxSlopeG = Math.min(maxSlopeG, (rgbColor[1] - rgbBase[1] + 1) / run);\n      maxSlopeB = Math.min(maxSlopeB, (rgbColor[2] - rgbBase[2] + 1) / run);\n      minSlopeR = Math.max(minSlopeR, (rgbColor[0] - rgbBase[0] - 1) / run);\n      minSlopeG = Math.max(minSlopeG, (rgbColor[1] - rgbBase[1] - 1) / run);\n      minSlopeB = Math.max(minSlopeB, (rgbColor[2] - rgbBase[2] - 1) / run);\n      const slopesExist = minSlopeR <= maxSlopeR && minSlopeG <= maxSlopeG && minSlopeB <= maxSlopeB;\n      if (!slopesExist) {\n        const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\n        colorStops.push([iPrev / NUMBER_OF_SAMPLES, cssColor]);\n        maxSlopeR = rgbColor[0] - rgbPrev[0] + 1;\n        maxSlopeG = rgbColor[1] - rgbPrev[1] + 1;\n        maxSlopeB = rgbColor[2] - rgbPrev[2] + 1;\n        minSlopeR = rgbColor[0] - rgbPrev[0] - 1;\n        minSlopeG = rgbColor[1] - rgbPrev[1] - 1;\n        minSlopeB = rgbColor[2] - rgbPrev[2] - 1;\n        iBase = iPrev;\n        rgbBase = rgbPrev;\n      }\n      iPrev = i;\n      rgbPrev = rgbColor;\n    }\n    const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\n    colorStops.push([1, cssColor]);\n    let background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n    if (!extendStart) {\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += BaseShading.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n    this.colorStops = colorStops;\n  }\n  getIR() {\n    const {\n      coordsArr,\n      shadingType\n    } = this;\n    let type, p0, p1, r0, r1;\n    if (shadingType === ShadingType.AXIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[2], coordsArr[3]];\n      r0 = null;\n      r1 = null;\n      type = \"axial\";\n    } else if (shadingType === ShadingType.RADIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[3], coordsArr[4]];\n      r0 = coordsArr[2];\n      r1 = coordsArr[5];\n      type = \"radial\";\n    } else {\n      unreachable(`getPattern type unknown: ${shadingType}`);\n    }\n    return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n  }\n}\nclass MeshStreamReader {\n  constructor(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n    const numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    const csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n  }\n  get hasData() {\n    if (this.stream.end) {\n      return this.stream.pos < this.stream.end;\n    }\n    if (this.bufferLength > 0) {\n      return true;\n    }\n    const nextByte = this.stream.getByte();\n    if (nextByte < 0) {\n      return false;\n    }\n    this.buffer = nextByte;\n    this.bufferLength = 8;\n    return true;\n  }\n  readBits(n) {\n    let buffer = this.buffer;\n    let bufferLength = this.bufferLength;\n    if (n === 32) {\n      if (bufferLength === 0) {\n        return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;\n      }\n      buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();\n      const nextByte = this.stream.getByte();\n      this.buffer = nextByte & (1 << bufferLength) - 1;\n      return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n    }\n    if (n === 8 && bufferLength === 0) {\n      return this.stream.getByte();\n    }\n    while (bufferLength < n) {\n      buffer = buffer << 8 | this.stream.getByte();\n      bufferLength += 8;\n    }\n    bufferLength -= n;\n    this.bufferLength = bufferLength;\n    this.buffer = buffer & (1 << bufferLength) - 1;\n    return buffer >> bufferLength;\n  }\n  align() {\n    this.buffer = 0;\n    this.bufferLength = 0;\n  }\n  readFlag() {\n    return this.readBits(this.context.bitsPerFlag);\n  }\n  readCoordinate() {\n    const bitsPerCoordinate = this.context.bitsPerCoordinate;\n    const xi = this.readBits(bitsPerCoordinate);\n    const yi = this.readBits(bitsPerCoordinate);\n    const decode = this.context.decode;\n    const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n    return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n  }\n  readComponents() {\n    const numComps = this.context.numComps;\n    const bitsPerComponent = this.context.bitsPerComponent;\n    const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n    const decode = this.context.decode;\n    const components = this.tmpCompsBuf;\n    for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n      const ci = this.readBits(bitsPerComponent);\n      components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n    }\n    const color = this.tmpCsCompsBuf;\n    if (this.context.colorFn) {\n      this.context.colorFn(components, 0, color, 0);\n    }\n    return this.context.colorSpace.getRgb(color, 0);\n  }\n}\nlet bCache = Object.create(null);\nfunction buildB(count) {\n  const lut = [];\n  for (let i = 0; i <= count; i++) {\n    const t = i / count,\n      t_ = 1 - t;\n    lut.push(new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3]));\n  }\n  return lut;\n}\nfunction getB(count) {\n  return bCache[count] ||= buildB(count);\n}\nfunction clearPatternCaches() {\n  bCache = Object.create(null);\n}\nclass MeshShading extends BaseShading {\n  static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n  static TRIANGLE_DENSITY = 20;\n  constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n    super();\n    if (!(stream instanceof BaseStream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    const dict = stream.dict;\n    this.shadingType = dict.get(\"ShadingType\");\n    this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache\n    });\n    this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n    const decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps\n    };\n    const reader = new MeshStreamReader(stream, decodeContext);\n    let patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        this._decodeType4Shading(reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        this._decodeType5Shading(reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        this._decodeType6Shading(reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        this._decodeType7Shading(reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n    if (patchMesh) {\n      this._updateBounds();\n      for (let i = 0, ii = this.figures.length; i < ii; i++) {\n        this._buildFigureFromPatch(i);\n      }\n    }\n    this._updateBounds();\n    this._packData();\n  }\n  _decodeType4Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const operators = [];\n    const ps = [];\n    let verticesLeft = 0;\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      if (verticesLeft === 0) {\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps.at(-2), ps.at(-1));\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps.at(-3), ps.at(-1));\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n      reader.align();\n    }\n    this.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps)\n    });\n  }\n  _decodeType5Shading(reader, verticesPerRow) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = [];\n    while (reader.hasData) {\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    this.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow\n    });\n  }\n  _decodeType6Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16);\n    const cs = new Int32Array(4);\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      const pi = coords.length;\n      for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      const ci = colors.length;\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      let tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3;\n          ps[13] = pi + 4;\n          ps[14] = pi + 5;\n          ps[15] = pi + 6;\n          ps[8] = pi + 2;\n          ps[11] = pi + 7;\n          ps[4] = pi + 1;\n          ps[7] = pi + 8;\n          ps[0] = pi;\n          ps[1] = pi + 11;\n          ps[2] = pi + 10;\n          ps[3] = pi + 9;\n          cs[2] = ci + 1;\n          cs[3] = ci + 2;\n          cs[0] = ci;\n          cs[1] = ci + 3;\n          break;\n        case 1:\n          tmp1 = ps[12];\n          tmp2 = ps[13];\n          tmp3 = ps[14];\n          tmp4 = ps[15];\n          ps[12] = tmp4;\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = tmp3;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[2];\n          tmp2 = cs[3];\n          cs[2] = tmp2;\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[7];\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1];\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 3:\n          ps[12] = ps[0];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[1];\n          ps[11] = pi + 3;\n          ps[4] = ps[2];\n          ps[7] = pi + 4;\n          ps[0] = ps[3];\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          cs[2] = cs[0];\n          cs[3] = ci;\n          cs[0] = cs[1];\n          cs[1] = ci + 1;\n          break;\n      }\n      ps[5] = coords.length;\n      coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n      ps[6] = coords.length;\n      coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n      ps[9] = coords.length;\n      coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n      ps[10] = coords.length;\n      coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps),\n        colors: new Int32Array(cs)\n      });\n    }\n  }\n  _decodeType7Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16);\n    const cs = new Int32Array(4);\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      const pi = coords.length;\n      for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      const ci = colors.length;\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      let tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3;\n          ps[13] = pi + 4;\n          ps[14] = pi + 5;\n          ps[15] = pi + 6;\n          ps[8] = pi + 2;\n          ps[9] = pi + 13;\n          ps[10] = pi + 14;\n          ps[11] = pi + 7;\n          ps[4] = pi + 1;\n          ps[5] = pi + 12;\n          ps[6] = pi + 15;\n          ps[7] = pi + 8;\n          ps[0] = pi;\n          ps[1] = pi + 11;\n          ps[2] = pi + 10;\n          ps[3] = pi + 9;\n          cs[2] = ci + 1;\n          cs[3] = ci + 2;\n          cs[0] = ci;\n          cs[1] = ci + 3;\n          break;\n        case 1:\n          tmp1 = ps[12];\n          tmp2 = ps[13];\n          tmp3 = ps[14];\n          tmp4 = ps[15];\n          ps[12] = tmp4;\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = tmp3;\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[2];\n          tmp2 = cs[3];\n          cs[2] = tmp2;\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[7];\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1];\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n        case 3:\n          ps[12] = ps[0];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[1];\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = ps[2];\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = ps[3];\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          cs[2] = cs[0];\n          cs[3] = ci;\n          cs[0] = cs[1];\n          cs[1] = ci + 1;\n          break;\n      }\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps),\n        colors: new Int32Array(cs)\n      });\n    }\n  }\n  _buildFigureFromPatch(index) {\n    const figure = this.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n    const coords = this.coords,\n      colors = this.colors;\n    const pi = figure.coords;\n    const ci = figure.colors;\n    const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n    const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n    const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n    const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n    let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0]));\n    splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n    let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1]));\n    splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n    const verticesPerRow = splitXBy + 1;\n    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    let k = 0;\n    const cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    const c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    const bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (let row = 0; row <= splitYBy; row++) {\n      cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n      cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n      cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n      cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n      cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n      cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n      for (let col = 0; col <= splitXBy; col++, k++) {\n        if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n          continue;\n        }\n        let x = 0,\n          y = 0;\n        let q = 0;\n        for (let i = 0; i <= 3; i++) {\n          for (let j = 0; j <= 3; j++, q++) {\n            const m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        const newColor = new Uint8Array(3);\n        newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n        newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n        newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n    this.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow\n    };\n  }\n  _updateBounds() {\n    let minX = this.coords[0][0],\n      minY = this.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (let i = 1, ii = this.coords.length; i < ii; i++) {\n      const x = this.coords[i][0],\n        y = this.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    this.bounds = [minX, minY, maxX, maxY];\n  }\n  _packData() {\n    let i, ii, j, jj;\n    const coords = this.coords;\n    const coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      const xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    this.coords = coordsPacked;\n    const colors = this.colors;\n    const colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      const c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    this.colors = colorsPacked;\n    const figures = this.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      const figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n  getIR() {\n    const {\n      bounds\n    } = this;\n    if (bounds[2] - bounds[0] === 0 || bounds[3] - bounds[1] === 0) {\n      throw new FormatError(`Invalid MeshShading bounds: [${bounds}].`);\n    }\n    return [\"Mesh\", this.shadingType, this.coords, this.colors, this.figures, bounds, this.bbox, this.background];\n  }\n}\nclass DummyShading extends BaseShading {\n  getIR() {\n    return [\"Dummy\"];\n  }\n}\nfunction getTilingPatternIR(operatorList, dict, color) {\n  const matrix = lookupMatrix(dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n  const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n  if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array.`);\n  }\n  const xstep = dict.get(\"XStep\");\n  if (typeof xstep !== \"number\") {\n    throw new FormatError(`Invalid getTilingPatternIR /XStep value.`);\n  }\n  const ystep = dict.get(\"YStep\");\n  if (typeof ystep !== \"number\") {\n    throw new FormatError(`Invalid getTilingPatternIR /YStep value.`);\n  }\n  const paintType = dict.get(\"PaintType\");\n  if (!Number.isInteger(paintType)) {\n    throw new FormatError(`Invalid getTilingPatternIR /PaintType value.`);\n  }\n  const tilingType = dict.get(\"TilingType\");\n  if (!Number.isInteger(tilingType)) {\n    throw new FormatError(`Invalid getTilingPatternIR /TilingType value.`);\n  }\n  return [\"TilingPattern\", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n}\n\n;// ./src/core/calibri_factors.js\nconst CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nconst CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriBoldItalicMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nconst CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriItalicMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nconst CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst CalibriRegularMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\n\n;// ./src/core/helvetica_factors.js\nconst HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nconst HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaBoldItalicMetrics = {\n  lineHeight: 1.35,\n  lineGap: 0.2\n};\nconst HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaItalicMetrics = {\n  lineHeight: 1.35,\n  lineGap: 0.2\n};\nconst HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst HelveticaRegularMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\n\n;// ./src/core/liberationsans_widths.js\nconst LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\nconst LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nconst LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\nconst LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nconst LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\nconst LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nconst LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\nconst LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\n\n;// ./src/core/myriadpro_factors.js\nconst MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProBoldMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nconst MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProBoldItalicMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nconst MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProItalicMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nconst MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst MyriadProRegularMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\n\n;// ./src/core/segoeui_factors.js\nconst SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiBoldMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nconst SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiBoldItalicMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nconst SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiItalicMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nconst SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nconst SegoeuiRegularMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\n\n;// ./src/core/xfa_fonts.js\n\n\n\n\n\n\n\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n  t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: MyriadProRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: MyriadProRegularMetrics\n  };\n  t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: MyriadProBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: MyriadProBoldMetrics\n  };\n  t[\"MyriadPro-It\"] = t[\"MyriadPro-Italic\"] = t[\"PdfJS-Fallback-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: MyriadProItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: MyriadProItalicMetrics\n  };\n  t[\"MyriadPro-BoldIt\"] = t[\"MyriadPro-BoldItalic\"] = t[\"PdfJS-Fallback-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: MyriadProBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: MyriadProBoldItalicMetrics\n  };\n  t.ArialMT = t.Arial = t[\"Arial-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping\n  };\n  t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping\n  };\n  t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping\n  };\n  t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping\n  };\n  t[\"Calibri-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: CalibriRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: CalibriRegularMetrics\n  };\n  t[\"Calibri-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: CalibriBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: CalibriBoldMetrics\n  };\n  t[\"Calibri-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: CalibriItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: CalibriItalicMetrics\n  };\n  t[\"Calibri-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: CalibriBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: CalibriBoldItalicMetrics\n  };\n  t[\"Segoeui-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: SegoeuiRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: SegoeuiRegularMetrics\n  };\n  t[\"Segoeui-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: SegoeuiBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: SegoeuiBoldMetrics\n  };\n  t[\"Segoeui-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: SegoeuiItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: SegoeuiItalicMetrics\n  };\n  t[\"Segoeui-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: SegoeuiBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: SegoeuiBoldItalicMetrics\n  };\n  t[\"Helvetica-Regular\"] = t.Helvetica = {\n    name: \"LiberationSans-Regular\",\n    factors: HelveticaRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: HelveticaRegularMetrics\n  };\n  t[\"Helvetica-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: HelveticaBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: HelveticaBoldMetrics\n  };\n  t[\"Helvetica-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: HelveticaItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: HelveticaItalicMetrics\n  };\n  t[\"Helvetica-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: HelveticaBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: HelveticaBoldItalicMetrics\n  };\n});\nfunction getXfaFontName(name) {\n  const fontName = normalizeFontName(name);\n  const fontMap = getXFAFontMap();\n  return fontMap[fontName];\n}\nfunction getXfaFontWidths(name) {\n  const info = getXfaFontName(name);\n  if (!info) {\n    return null;\n  }\n  const {\n    baseWidths,\n    baseMapping,\n    factors\n  } = info;\n  const rescaledBaseWidths = !factors ? baseWidths : baseWidths.map((w, i) => w * factors[i]);\n  let currentCode = -2;\n  let currentArray;\n  const newWidths = [];\n  for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) {\n    if (unicode === -1) {\n      continue;\n    }\n    if (unicode === currentCode + 1) {\n      currentArray.push(rescaledBaseWidths[glyphIndex]);\n      currentCode += 1;\n    } else {\n      currentCode = unicode;\n      currentArray = [rescaledBaseWidths[glyphIndex]];\n      newWidths.push(unicode, currentArray);\n    }\n  }\n  return newWidths;\n}\nfunction getXfaFontDict(name) {\n  const widths = getXfaFontWidths(name);\n  const dict = new Dict(null);\n  dict.set(\"BaseFont\", Name.get(name));\n  dict.set(\"Type\", Name.get(\"Font\"));\n  dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n  dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n  dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n  dict.set(\"W\", widths);\n  dict.set(\"FirstChar\", widths[0]);\n  dict.set(\"LastChar\", widths.at(-2) + widths.at(-1).length - 1);\n  const descriptor = new Dict(null);\n  dict.set(\"FontDescriptor\", descriptor);\n  const systemInfo = new Dict(null);\n  systemInfo.set(\"Ordering\", \"Identity\");\n  systemInfo.set(\"Registry\", \"Adobe\");\n  systemInfo.set(\"Supplement\", 0);\n  dict.set(\"CIDSystemInfo\", systemInfo);\n  return dict;\n}\n\n;// ./src/core/ps_parser.js\n\n\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`);\n  }\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n  parseCondition() {\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5\n};\nclass PostScriptToken {\n  static get opCache() {\n    return shadow(this, \"opCache\", Object.create(null));\n  }\n  constructor(type, value) {\n    this.type = type;\n    this.value = value;\n  }\n  static getOperator(op) {\n    return PostScriptToken.opCache[op] ||= new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n  }\n  static get LBRACE() {\n    return shadow(this, \"LBRACE\", new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\"));\n  }\n  static get RBRACE() {\n    return shadow(this, \"RBRACE\", new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\"));\n  }\n  static get IF() {\n    return shadow(this, \"IF\", new PostScriptToken(PostScriptTokenTypes.IF, \"IF\"));\n  }\n  static get IFELSE() {\n    return shadow(this, \"IFELSE\", new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\"));\n  }\n}\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n    this.strBuf = [];\n  }\n  nextChar() {\n    return this.currentChar = this.stream.getByte();\n  }\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30:\n      case 0x31:\n      case 0x32:\n      case 0x33:\n      case 0x34:\n      case 0x35:\n      case 0x36:\n      case 0x37:\n      case 0x38:\n      case 0x39:\n      case 0x2b:\n      case 0x2d:\n      case 0x2e:\n        return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());\n      case 0x7b:\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d:\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n    while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\n;// ./src/core/image_utils.js\n\n\nclass BaseLocalCache {\n  constructor(options) {\n    this._onlyRefs = options?.onlyRefs === true;\n    if (!this._onlyRefs) {\n      this._nameRefMap = new Map();\n      this._imageMap = new Map();\n    }\n    this._imageCache = new RefSetCache();\n  }\n  getByName(name) {\n    if (this._onlyRefs) {\n      unreachable(\"Should not call `getByName` method.\");\n    }\n    const ref = this._nameRefMap.get(name);\n    if (ref) {\n      return this.getByRef(ref);\n    }\n    return this._imageMap.get(name) || null;\n  }\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n  set(name, ref, data) {\n    unreachable(\"Abstract method `set` called.\");\n  }\n}\nclass LocalImageCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\nclass LocalColorSpaceCache extends BaseLocalCache {\n  set(name = null, ref = null, data) {\n    if (typeof name !== \"string\" && !ref) {\n      throw new Error('LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      if (name !== null) {\n        this._nameRefMap.set(name, ref);\n      }\n      this._imageCache.put(ref, data);\n      return;\n    }\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\nclass LocalFunctionCache extends BaseLocalCache {\n  constructor(options) {\n    super({\n      onlyRefs: true\n    });\n  }\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\nclass LocalGStateCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\nclass LocalTilingPatternCache extends BaseLocalCache {\n  constructor(options) {\n    super({\n      onlyRefs: true\n    });\n  }\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\nclass RegionalImageCache extends BaseLocalCache {\n  constructor(options) {\n    super({\n      onlyRefs: true\n    });\n  }\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('RegionalImageCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\nclass GlobalImageCache {\n  static NUM_PAGES_THRESHOLD = 2;\n  static MIN_IMAGES_TO_CACHE = 10;\n  static MAX_BYTE_SIZE = 5 * MAX_IMAGE_SIZE_TO_CACHE;\n  #decodeFailedSet = new RefSet();\n  constructor() {\n    this._refCache = new RefSetCache();\n    this._imageCache = new RefSetCache();\n  }\n  get #byteSize() {\n    let byteSize = 0;\n    for (const imageData of this._imageCache) {\n      byteSize += imageData.byteSize;\n    }\n    return byteSize;\n  }\n  get #cacheLimitReached() {\n    if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n      return false;\n    }\n    if (this.#byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n      return false;\n    }\n    return true;\n  }\n  shouldCache(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n      this._refCache.put(ref, pageIndexSet);\n    }\n    pageIndexSet.add(pageIndex);\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n    if (!this._imageCache.has(ref) && this.#cacheLimitReached) {\n      return false;\n    }\n    return true;\n  }\n  addDecodeFailed(ref) {\n    this.#decodeFailedSet.put(ref);\n  }\n  hasDecodeFailed(ref) {\n    return this.#decodeFailedSet.has(ref);\n  }\n  addByteSize(ref, byteSize) {\n    const imageData = this._imageCache.get(ref);\n    if (!imageData) {\n      return;\n    }\n    if (imageData.byteSize) {\n      return;\n    }\n    imageData.byteSize = byteSize;\n  }\n  getData(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      return null;\n    }\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n    const imageData = this._imageCache.get(ref);\n    if (!imageData) {\n      return null;\n    }\n    pageIndexSet.add(pageIndex);\n    return imageData;\n  }\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error('GlobalImageCache.setData - expected \"shouldCache\" to have been called.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    if (this.#cacheLimitReached) {\n      warn(\"GlobalImageCache.setData - cache limit reached.\");\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this.#decodeFailedSet.clear();\n      this._refCache.clear();\n    }\n    this._imageCache.clear();\n  }\n}\n\n;// ./src/core/function.js\n\n\n\n\n\n\nclass PDFFunctionFactory {\n  constructor({\n    xref,\n    isEvalSupported = true\n  }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n  create(fn) {\n    const cachedFunction = this.getCached(fn);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn\n    });\n    this._cache(fn, parsedFunction);\n    return parsedFunction;\n  }\n  createFromArray(fnObj) {\n    const cachedFunction = this.getCached(fnObj);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj\n    });\n    this._cache(fnObj, parsedFunction);\n    return parsedFunction;\n  }\n  getCached(cacheKey) {\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (cacheKey instanceof BaseStream) {\n      fnRef = cacheKey.dict?.objId;\n    }\n    if (fnRef) {\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\n      if (localFunction) {\n        return localFunction;\n      }\n    }\n    return null;\n  }\n  _cache(cacheKey, parsedFunction) {\n    if (!parsedFunction) {\n      throw new Error('PDFFunctionFactory._cache - expected \"parsedFunction\" argument.');\n    }\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (cacheKey instanceof BaseStream) {\n      fnRef = cacheKey.dict?.objId;\n    }\n    if (fnRef) {\n      this._localFunctionCache.set(null, fnRef, parsedFunction);\n    }\n  }\n  get _localFunctionCache() {\n    return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n  }\n}\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  if (!isNumberArray(arr, null)) {\n    return arr.map(x => +x);\n  }\n  return arr;\n}\nclass PDFFunction {\n  static getSampleArray(size, outputSize, bps, stream) {\n    let i, ii;\n    let length = 1;\n    for (i = 0, ii = size.length; i < ii; i++) {\n      length *= size[i];\n    }\n    length *= outputSize;\n    const array = new Array(length);\n    let codeSize = 0;\n    let codeBuf = 0;\n    const sampleMul = 1.0 / (2.0 ** bps - 1);\n    const strBytes = stream.getBytes((length * bps + 7) / 8);\n    let strIdx = 0;\n    for (i = 0; i < length; i++) {\n      while (codeSize < bps) {\n        codeBuf <<= 8;\n        codeBuf |= strBytes[strIdx++];\n        codeSize += 8;\n      }\n      codeSize -= bps;\n      array[i] = (codeBuf >> codeSize) * sampleMul;\n      codeBuf &= (1 << codeSize) - 1;\n    }\n    return array;\n  }\n  static parse({\n    xref,\n    isEvalSupported,\n    fn\n  }) {\n    const dict = fn.dict || fn;\n    const typeNum = dict.get(\"FunctionType\");\n    switch (typeNum) {\n      case 0:\n        return this.constructSampled({\n          xref,\n          isEvalSupported,\n          fn,\n          dict\n        });\n      case 1:\n        break;\n      case 2:\n        return this.constructInterpolated({\n          xref,\n          isEvalSupported,\n          dict\n        });\n      case 3:\n        return this.constructStiched({\n          xref,\n          isEvalSupported,\n          dict\n        });\n      case 4:\n        return this.constructPostScript({\n          xref,\n          isEvalSupported,\n          fn,\n          dict\n        });\n    }\n    throw new FormatError(\"Unknown type of function\");\n  }\n  static parseArray({\n    xref,\n    isEvalSupported,\n    fnObj\n  }) {\n    if (!Array.isArray(fnObj)) {\n      return this.parse({\n        xref,\n        isEvalSupported,\n        fn: fnObj\n      });\n    }\n    const fnArray = [];\n    for (const fn of fnObj) {\n      fnArray.push(this.parse({\n        xref,\n        isEvalSupported,\n        fn: xref.fetchIfRef(fn)\n      }));\n    }\n    return function (src, srcOffset, dest, destOffset) {\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        fnArray[i](src, srcOffset, dest, destOffset + i);\n      }\n    };\n  }\n  static constructSampled({\n    xref,\n    isEvalSupported,\n    fn,\n    dict\n  }) {\n    function toMultiArray(arr) {\n      const inputLength = arr.length;\n      const out = [];\n      let index = 0;\n      for (let i = 0; i < inputLength; i += 2) {\n        out[index++] = [arr[i], arr[i + 1]];\n      }\n      return out;\n    }\n    function interpolate(x, xmin, xmax, ymin, ymax) {\n      return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n    }\n    let domain = toNumberArray(dict.getArray(\"Domain\"));\n    let range = toNumberArray(dict.getArray(\"Range\"));\n    if (!domain || !range) {\n      throw new FormatError(\"No domain or range\");\n    }\n    const inputSize = domain.length / 2;\n    const outputSize = range.length / 2;\n    domain = toMultiArray(domain);\n    range = toMultiArray(range);\n    const size = toNumberArray(dict.getArray(\"Size\"));\n    const bps = dict.get(\"BitsPerSample\");\n    const order = dict.get(\"Order\") || 1;\n    if (order !== 1) {\n      info(\"No support for cubic spline interpolation: \" + order);\n    }\n    let encode = toNumberArray(dict.getArray(\"Encode\"));\n    if (!encode) {\n      encode = [];\n      for (let i = 0; i < inputSize; ++i) {\n        encode.push([0, size[i] - 1]);\n      }\n    } else {\n      encode = toMultiArray(encode);\n    }\n    let decode = toNumberArray(dict.getArray(\"Decode\"));\n    decode = !decode ? range : toMultiArray(decode);\n    const samples = this.getSampleArray(size, outputSize, bps, fn);\n    return function constructSampledFn(src, srcOffset, dest, destOffset) {\n      const cubeVertices = 1 << inputSize;\n      const cubeN = new Float64Array(cubeVertices);\n      const cubeVertex = new Uint32Array(cubeVertices);\n      let i, j;\n      for (j = 0; j < cubeVertices; j++) {\n        cubeN[j] = 1;\n      }\n      let k = outputSize,\n        pos = 1;\n      for (i = 0; i < inputSize; ++i) {\n        const domain_2i = domain[i][0];\n        const domain_2i_1 = domain[i][1];\n        const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n        let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n        const size_i = size[i];\n        e = Math.min(Math.max(e, 0), size_i - 1);\n        const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n        const n0 = e0 + 1 - e;\n        const n1 = e - e0;\n        const offset0 = e0 * k;\n        const offset1 = offset0 + k;\n        for (j = 0; j < cubeVertices; j++) {\n          if (j & pos) {\n            cubeN[j] *= n1;\n            cubeVertex[j] += offset1;\n          } else {\n            cubeN[j] *= n0;\n            cubeVertex[j] += offset0;\n          }\n        }\n        k *= size_i;\n        pos <<= 1;\n      }\n      for (j = 0; j < outputSize; ++j) {\n        let rj = 0;\n        for (i = 0; i < cubeVertices; i++) {\n          rj += samples[cubeVertex[i] + j] * cubeN[i];\n        }\n        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n      }\n    };\n  }\n  static constructInterpolated({\n    xref,\n    isEvalSupported,\n    dict\n  }) {\n    const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n    const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n    const n = dict.get(\"N\");\n    const diff = [];\n    for (let i = 0, ii = c0.length; i < ii; ++i) {\n      diff.push(c1[i] - c0[i]);\n    }\n    const length = diff.length;\n    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n      for (let j = 0; j < length; ++j) {\n        dest[destOffset + j] = c0[j] + x * diff[j];\n      }\n    };\n  }\n  static constructStiched({\n    xref,\n    isEvalSupported,\n    dict\n  }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n    if (!domain) {\n      throw new FormatError(\"No domain\");\n    }\n    const inputSize = domain.length / 2;\n    if (inputSize !== 1) {\n      throw new FormatError(\"Bad domain for stiched function\");\n    }\n    const fns = [];\n    for (const fn of dict.get(\"Functions\")) {\n      fns.push(this.parse({\n        xref,\n        isEvalSupported,\n        fn: xref.fetchIfRef(fn)\n      }));\n    }\n    const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n    const encode = toNumberArray(dict.getArray(\"Encode\"));\n    const tmpBuf = new Float32Array(1);\n    return function constructStichedFn(src, srcOffset, dest, destOffset) {\n      const clip = function constructStichedFromIRClip(v, min, max) {\n        if (v > max) {\n          v = max;\n        } else if (v < min) {\n          v = min;\n        }\n        return v;\n      };\n      const v = clip(src[srcOffset], domain[0], domain[1]);\n      const length = bounds.length;\n      let i;\n      for (i = 0; i < length; ++i) {\n        if (v < bounds[i]) {\n          break;\n        }\n      }\n      let dmin = domain[0];\n      if (i > 0) {\n        dmin = bounds[i - 1];\n      }\n      let dmax = domain[1];\n      if (i < bounds.length) {\n        dmax = bounds[i];\n      }\n      const rmin = encode[2 * i];\n      const rmax = encode[2 * i + 1];\n      tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n      fns[i](tmpBuf, 0, dest, destOffset);\n    };\n  }\n  static constructPostScript({\n    xref,\n    isEvalSupported,\n    fn,\n    dict\n  }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n    const range = toNumberArray(dict.getArray(\"Range\"));\n    if (!domain) {\n      throw new FormatError(\"No domain.\");\n    }\n    if (!range) {\n      throw new FormatError(\"No range.\");\n    }\n    const lexer = new PostScriptLexer(fn);\n    const parser = new PostScriptParser(lexer);\n    const code = parser.parse();\n    if (isEvalSupported && FeatureTest.isEvalSupported) {\n      const compiled = new PostScriptCompiler().compile(code, domain, range);\n      if (compiled) {\n        return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n      }\n    }\n    info(\"Unable to compile PS function\");\n    const numOutputs = range.length >> 1;\n    const numInputs = domain.length >> 1;\n    const evaluator = new PostScriptEvaluator(code);\n    const cache = Object.create(null);\n    const MAX_CACHE_SIZE = 2048 * 4;\n    let cache_available = MAX_CACHE_SIZE;\n    const tmpBuf = new Float32Array(numInputs);\n    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n      let i, value;\n      let key = \"\";\n      const input = tmpBuf;\n      for (i = 0; i < numInputs; i++) {\n        value = src[srcOffset + i];\n        input[i] = value;\n        key += value + \"_\";\n      }\n      const cachedValue = cache[key];\n      if (cachedValue !== undefined) {\n        dest.set(cachedValue, destOffset);\n        return;\n      }\n      const output = new Float32Array(numOutputs);\n      const stack = evaluator.execute(input);\n      const stackIndex = stack.length - numOutputs;\n      for (i = 0; i < numOutputs; i++) {\n        value = stack[stackIndex + i];\n        let bound = range[i * 2];\n        if (value < bound) {\n          value = bound;\n        } else {\n          bound = range[i * 2 + 1];\n          if (value > bound) {\n            value = bound;\n          }\n        }\n        output[i] = value;\n      }\n      if (cache_available > 0) {\n        cache_available--;\n        cache[key] = output;\n      }\n      dest.set(output, destOffset);\n    };\n  }\n}\nfunction isPDFFunction(v) {\n  let fnDict;\n  if (v instanceof Dict) {\n    fnDict = v;\n  } else if (v instanceof BaseStream) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\nclass PostScriptStack {\n  static MAX_STACK_SIZE = 100;\n  constructor(initialStack) {\n    this.stack = initialStack ? Array.from(initialStack) : [];\n  }\n  push(value) {\n    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n    this.stack.push(value);\n  }\n  pop() {\n    if (this.stack.length <= 0) {\n      throw new Error(\"PostScript function stack underflow.\");\n    }\n    return this.stack.pop();\n  }\n  copy(n) {\n    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n    const stack = this.stack;\n    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n      stack.push(stack[i]);\n    }\n  }\n  index(n) {\n    this.push(this.stack[this.stack.length - n - 1]);\n  }\n  roll(n, p) {\n    const stack = this.stack;\n    const l = stack.length - n;\n    const r = stack.length - 1;\n    const c = l + (p - Math.floor(p / n) * n);\n    for (let i = l, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n    for (let i = l, j = c - 1; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n    for (let i = c, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n  }\n}\nclass PostScriptEvaluator {\n  constructor(operators) {\n    this.operators = operators;\n  }\n  execute(initialStack) {\n    const stack = new PostScriptStack(initialStack);\n    let counter = 0;\n    const operators = this.operators;\n    const length = operators.length;\n    let operator, a, b;\n    while (counter < length) {\n      operator = operators[counter++];\n      if (typeof operator === \"number\") {\n        stack.push(operator);\n        continue;\n      }\n      switch (operator) {\n        case \"jz\":\n          b = stack.pop();\n          a = stack.pop();\n          if (!a) {\n            counter = b;\n          }\n          break;\n        case \"j\":\n          a = stack.pop();\n          counter = a;\n          break;\n        case \"abs\":\n          a = stack.pop();\n          stack.push(Math.abs(a));\n          break;\n        case \"add\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a + b);\n          break;\n        case \"and\":\n          b = stack.pop();\n          a = stack.pop();\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a && b);\n          } else {\n            stack.push(a & b);\n          }\n          break;\n        case \"atan\":\n          b = stack.pop();\n          a = stack.pop();\n          a = Math.atan2(a, b) / Math.PI * 180;\n          if (a < 0) {\n            a += 360;\n          }\n          stack.push(a);\n          break;\n        case \"bitshift\":\n          b = stack.pop();\n          a = stack.pop();\n          if (a > 0) {\n            stack.push(a << b);\n          } else {\n            stack.push(a >> b);\n          }\n          break;\n        case \"ceiling\":\n          a = stack.pop();\n          stack.push(Math.ceil(a));\n          break;\n        case \"copy\":\n          a = stack.pop();\n          stack.copy(a);\n          break;\n        case \"cos\":\n          a = stack.pop();\n          stack.push(Math.cos(a % 360 / 180 * Math.PI));\n          break;\n        case \"cvi\":\n          a = stack.pop() | 0;\n          stack.push(a);\n          break;\n        case \"cvr\":\n          break;\n        case \"div\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a / b);\n          break;\n        case \"dup\":\n          stack.copy(1);\n          break;\n        case \"eq\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a === b);\n          break;\n        case \"exch\":\n          stack.roll(2, 1);\n          break;\n        case \"exp\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a ** b);\n          break;\n        case \"false\":\n          stack.push(false);\n          break;\n        case \"floor\":\n          a = stack.pop();\n          stack.push(Math.floor(a));\n          break;\n        case \"ge\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a >= b);\n          break;\n        case \"gt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a > b);\n          break;\n        case \"idiv\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a / b | 0);\n          break;\n        case \"index\":\n          a = stack.pop();\n          stack.index(a);\n          break;\n        case \"le\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a <= b);\n          break;\n        case \"ln\":\n          a = stack.pop();\n          stack.push(Math.log(a));\n          break;\n        case \"log\":\n          a = stack.pop();\n          stack.push(Math.log10(a));\n          break;\n        case \"lt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a < b);\n          break;\n        case \"mod\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a % b);\n          break;\n        case \"mul\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a * b);\n          break;\n        case \"ne\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a !== b);\n          break;\n        case \"neg\":\n          a = stack.pop();\n          stack.push(-a);\n          break;\n        case \"not\":\n          a = stack.pop();\n          if (typeof a === \"boolean\") {\n            stack.push(!a);\n          } else {\n            stack.push(~a);\n          }\n          break;\n        case \"or\":\n          b = stack.pop();\n          a = stack.pop();\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a || b);\n          } else {\n            stack.push(a | b);\n          }\n          break;\n        case \"pop\":\n          stack.pop();\n          break;\n        case \"roll\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.roll(a, b);\n          break;\n        case \"round\":\n          a = stack.pop();\n          stack.push(Math.round(a));\n          break;\n        case \"sin\":\n          a = stack.pop();\n          stack.push(Math.sin(a % 360 / 180 * Math.PI));\n          break;\n        case \"sqrt\":\n          a = stack.pop();\n          stack.push(Math.sqrt(a));\n          break;\n        case \"sub\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a - b);\n          break;\n        case \"true\":\n          stack.push(true);\n          break;\n        case \"truncate\":\n          a = stack.pop();\n          a = a < 0 ? Math.ceil(a) : Math.floor(a);\n          stack.push(a);\n          break;\n        case \"xor\":\n          b = stack.pop();\n          a = stack.pop();\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a !== b);\n          } else {\n            stack.push(a ^ b);\n          }\n          break;\n        default:\n          throw new FormatError(`Unknown operator ${operator}`);\n      }\n    }\n    return stack.stack;\n  }\n}\nclass AstNode {\n  constructor(type) {\n    this.type = type;\n  }\n  visit(visitor) {\n    unreachable(\"abstract method\");\n  }\n}\nclass AstArgument extends AstNode {\n  constructor(index, min, max) {\n    super(\"args\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  visit(visitor) {\n    visitor.visitArgument(this);\n  }\n}\nclass AstLiteral extends AstNode {\n  constructor(number) {\n    super(\"literal\");\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  visit(visitor) {\n    visitor.visitLiteral(this);\n  }\n}\nclass AstBinaryOperation extends AstNode {\n  constructor(op, arg1, arg2, min, max) {\n    super(\"binary\");\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  visit(visitor) {\n    visitor.visitBinaryOperation(this);\n  }\n}\nclass AstMin extends AstNode {\n  constructor(arg, max) {\n    super(\"max\");\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  visit(visitor) {\n    visitor.visitMin(this);\n  }\n}\nclass AstVariable extends AstNode {\n  constructor(index, min, max) {\n    super(\"var\");\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  visit(visitor) {\n    visitor.visitVariable(this);\n  }\n}\nclass AstVariableDefinition extends AstNode {\n  constructor(variable, arg) {\n    super(\"definition\");\n    this.variable = variable;\n    this.arg = arg;\n  }\n  visit(visitor) {\n    visitor.visitVariableDefinition(this);\n  }\n}\nclass ExpressionBuilderVisitor {\n  constructor() {\n    this.parts = [];\n  }\n  visitArgument(arg) {\n    this.parts.push(\"Math.max(\", arg.min, \", Math.min(\", arg.max, \", src[srcOffset + \", arg.index, \"]))\");\n  }\n  visitVariable(variable) {\n    this.parts.push(\"v\", variable.index);\n  }\n  visitLiteral(literal) {\n    this.parts.push(literal.number);\n  }\n  visitBinaryOperation(operation) {\n    this.parts.push(\"(\");\n    operation.arg1.visit(this);\n    this.parts.push(\" \", operation.op, \" \");\n    operation.arg2.visit(this);\n    this.parts.push(\")\");\n  }\n  visitVariableDefinition(definition) {\n    this.parts.push(\"var \");\n    definition.variable.visit(this);\n    this.parts.push(\" = \");\n    definition.arg.visit(this);\n    this.parts.push(\";\");\n  }\n  visitMin(max) {\n    this.parts.push(\"Math.min(\");\n    max.arg.visit(this);\n    this.parts.push(\", \", max.max, \")\");\n  }\n  toString() {\n    return this.parts.join(\"\");\n  }\n}\nfunction buildAddOperation(num1, num2) {\n  if (num2.type === \"literal\" && num2.number === 0) {\n    return num1;\n  }\n  if (num1.type === \"literal\" && num1.number === 0) {\n    return num2;\n  }\n  if (num2.type === \"literal\" && num1.type === \"literal\") {\n    return new AstLiteral(num1.number + num2.number);\n  }\n  return new AstBinaryOperation(\"+\", num1, num2, num1.min + num2.min, num1.max + num2.max);\n}\nfunction buildMulOperation(num1, num2) {\n  if (num2.type === \"literal\") {\n    if (num2.number === 0) {\n      return new AstLiteral(0);\n    } else if (num2.number === 1) {\n      return num1;\n    } else if (num1.type === \"literal\") {\n      return new AstLiteral(num1.number * num2.number);\n    }\n  }\n  if (num1.type === \"literal\") {\n    if (num1.number === 0) {\n      return new AstLiteral(0);\n    } else if (num1.number === 1) {\n      return num2;\n    }\n  }\n  const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n  const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n  return new AstBinaryOperation(\"*\", num1, num2, min, max);\n}\nfunction buildSubOperation(num1, num2) {\n  if (num2.type === \"literal\") {\n    if (num2.number === 0) {\n      return num1;\n    } else if (num1.type === \"literal\") {\n      return new AstLiteral(num1.number - num2.number);\n    }\n  }\n  if (num2.type === \"binary\" && num2.op === \"-\" && num1.type === \"literal\" && num1.number === 1 && num2.arg1.type === \"literal\" && num2.arg1.number === 1) {\n    return num2.arg2;\n  }\n  return new AstBinaryOperation(\"-\", num1, num2, num1.min - num2.max, num1.max - num2.min);\n}\nfunction buildMinOperation(num1, max) {\n  if (num1.min >= max) {\n    return new AstLiteral(max);\n  } else if (num1.max <= max) {\n    return num1;\n  }\n  return new AstMin(num1, max);\n}\nclass PostScriptCompiler {\n  compile(code, domain, range) {\n    const stack = [];\n    const instructions = [];\n    const inputSize = domain.length >> 1,\n      outputSize = range.length >> 1;\n    let lastRegister = 0;\n    let n, j;\n    let num1, num2, ast1, ast2, tmpVar, item;\n    for (let i = 0; i < inputSize; i++) {\n      stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n    }\n    for (let i = 0, ii = code.length; i < ii; i++) {\n      item = code[i];\n      if (typeof item === \"number\") {\n        stack.push(new AstLiteral(item));\n        continue;\n      }\n      switch (item) {\n        case \"add\":\n          if (stack.length < 2) {\n            return null;\n          }\n          num2 = stack.pop();\n          num1 = stack.pop();\n          stack.push(buildAddOperation(num1, num2));\n          break;\n        case \"cvr\":\n          if (stack.length < 1) {\n            return null;\n          }\n          break;\n        case \"mul\":\n          if (stack.length < 2) {\n            return null;\n          }\n          num2 = stack.pop();\n          num1 = stack.pop();\n          stack.push(buildMulOperation(num1, num2));\n          break;\n        case \"sub\":\n          if (stack.length < 2) {\n            return null;\n          }\n          num2 = stack.pop();\n          num1 = stack.pop();\n          stack.push(buildSubOperation(num1, num2));\n          break;\n        case \"exch\":\n          if (stack.length < 2) {\n            return null;\n          }\n          ast1 = stack.pop();\n          ast2 = stack.pop();\n          stack.push(ast1, ast2);\n          break;\n        case \"pop\":\n          if (stack.length < 1) {\n            return null;\n          }\n          stack.pop();\n          break;\n        case \"index\":\n          if (stack.length < 1) {\n            return null;\n          }\n          num1 = stack.pop();\n          if (num1.type !== \"literal\") {\n            return null;\n          }\n          n = num1.number;\n          if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n            return null;\n          }\n          ast1 = stack[stack.length - n - 1];\n          if (ast1.type === \"literal\" || ast1.type === \"var\") {\n            stack.push(ast1);\n            break;\n          }\n          tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n          stack[stack.length - n - 1] = tmpVar;\n          stack.push(tmpVar);\n          instructions.push(new AstVariableDefinition(tmpVar, ast1));\n          break;\n        case \"dup\":\n          if (stack.length < 1) {\n            return null;\n          }\n          if (typeof code[i + 1] === \"number\" && code[i + 2] === \"gt\" && code[i + 3] === i + 7 && code[i + 4] === \"jz\" && code[i + 5] === \"pop\" && code[i + 6] === code[i + 1]) {\n            num1 = stack.pop();\n            stack.push(buildMinOperation(num1, code[i + 1]));\n            i += 6;\n            break;\n          }\n          ast1 = stack.at(-1);\n          if (ast1.type === \"literal\" || ast1.type === \"var\") {\n            stack.push(ast1);\n            break;\n          }\n          tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n          stack[stack.length - 1] = tmpVar;\n          stack.push(tmpVar);\n          instructions.push(new AstVariableDefinition(tmpVar, ast1));\n          break;\n        case \"roll\":\n          if (stack.length < 2) {\n            return null;\n          }\n          num2 = stack.pop();\n          num1 = stack.pop();\n          if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n            return null;\n          }\n          j = num2.number;\n          n = num1.number;\n          if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {\n            return null;\n          }\n          j = (j % n + n) % n;\n          if (j === 0) {\n            break;\n          }\n          stack.push(...stack.splice(stack.length - n, n - j));\n          break;\n        default:\n          return null;\n      }\n    }\n    if (stack.length !== outputSize) {\n      return null;\n    }\n    const result = [];\n    for (const instruction of instructions) {\n      const statementBuilder = new ExpressionBuilderVisitor();\n      instruction.visit(statementBuilder);\n      result.push(statementBuilder.toString());\n    }\n    for (let i = 0, ii = stack.length; i < ii; i++) {\n      const expr = stack[i],\n        statementBuilder = new ExpressionBuilderVisitor();\n      expr.visit(statementBuilder);\n      const min = range[i * 2],\n        max = range[i * 2 + 1];\n      const out = [statementBuilder.toString()];\n      if (min > expr.min) {\n        out.unshift(\"Math.max(\", min, \", \");\n        out.push(\")\");\n      }\n      if (max < expr.max) {\n        out.unshift(\"Math.min(\", max, \", \");\n        out.push(\")\");\n      }\n      out.unshift(\"dest[destOffset + \", i, \"] = \");\n      out.push(\";\");\n      result.push(out.join(\"\"));\n    }\n    return result.join(\"\\n\");\n  }\n}\n\n;// ./src/core/bidi.js\n\nconst baseTypes = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\", \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"];\nconst arabicTypes = [\"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"];\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\nfunction findUnequal(arr, start, value) {\n  let j, jj;\n  for (j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\nfunction setValues(arr, start, end, value) {\n  for (let j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\nfunction reverseValues(arr, start, end) {\n  for (let i = start, j = end - 1; i < j; ++i, --j) {\n    const temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return {\n    str,\n    dir\n  };\n}\nconst chars = [];\nconst types = [];\nfunction bidi(str, startLevel = -1, vertical = false) {\n  let isLTR = true;\n  const strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n  chars.length = strLength;\n  types.length = strLength;\n  let numBidi = 0;\n  let i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n    const charCode = str.charCodeAt(i);\n    let charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac || 0xfb50 <= charCode && charCode <= 0xfdff || 0xfe70 <= charCode && charCode <= 0xfeff) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3 && strLength > 4) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n  const levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n  const e = isOdd(startLevel) ? \"R\" : \"L\";\n  const sor = e;\n  const eor = sor;\n  let lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n  lastType = sor;\n  let t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n      types[i] = types[i - 1];\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      for (let j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      for (let j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      const end = findUnequal(types, i + 1, \"ON\");\n      let before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n      let after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n      levels[i] += 1;\n    }\n  }\n  let highestLevel = -1;\n  let lowestOddLevel = 99;\n  let level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    let start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    const ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\n;// ./src/core/font_substitutions.js\n\n\n\nconst NORMAL = {\n  style: \"normal\",\n  weight: \"normal\"\n};\nconst BOLD = {\n  style: \"normal\",\n  weight: \"bold\"\n};\nconst ITALIC = {\n  style: \"italic\",\n  weight: \"normal\"\n};\nconst BOLDITALIC = {\n  style: \"italic\",\n  weight: \"bold\"\n};\nconst substitutionMap = new Map([[\"Times-Roman\", {\n  local: [\"Times New Roman\", \"Times-Roman\", \"Times\", \"Liberation Serif\", \"Nimbus Roman\", \"Nimbus Roman L\", \"Tinos\", \"Thorndale\", \"TeX Gyre Termes\", \"FreeSerif\", \"Linux Libertine O\", \"Libertinus Serif\", \"DejaVu Serif\", \"Bitstream Vera Serif\", \"Ubuntu\"],\n  style: NORMAL,\n  ultimate: \"serif\"\n}], [\"Times-Bold\", {\n  alias: \"Times-Roman\",\n  style: BOLD,\n  ultimate: \"serif\"\n}], [\"Times-Italic\", {\n  alias: \"Times-Roman\",\n  style: ITALIC,\n  ultimate: \"serif\"\n}], [\"Times-BoldItalic\", {\n  alias: \"Times-Roman\",\n  style: BOLDITALIC,\n  ultimate: \"serif\"\n}], [\"Helvetica\", {\n  local: [\"Helvetica\", \"Helvetica Neue\", \"Arial\", \"Arial Nova\", \"Liberation Sans\", \"Arimo\", \"Nimbus Sans\", \"Nimbus Sans L\", \"A030\", \"TeX Gyre Heros\", \"FreeSans\", \"DejaVu Sans\", \"Albany\", \"Bitstream Vera Sans\", \"Arial Unicode MS\", \"Microsoft Sans Serif\", \"Apple Symbols\", \"Cantarell\"],\n  path: \"LiberationSans-Regular.ttf\",\n  style: NORMAL,\n  ultimate: \"sans-serif\"\n}], [\"Helvetica-Bold\", {\n  alias: \"Helvetica\",\n  path: \"LiberationSans-Bold.ttf\",\n  style: BOLD,\n  ultimate: \"sans-serif\"\n}], [\"Helvetica-Oblique\", {\n  alias: \"Helvetica\",\n  path: \"LiberationSans-Italic.ttf\",\n  style: ITALIC,\n  ultimate: \"sans-serif\"\n}], [\"Helvetica-BoldOblique\", {\n  alias: \"Helvetica\",\n  path: \"LiberationSans-BoldItalic.ttf\",\n  style: BOLDITALIC,\n  ultimate: \"sans-serif\"\n}], [\"Courier\", {\n  local: [\"Courier\", \"Courier New\", \"Liberation Mono\", \"Nimbus Mono\", \"Nimbus Mono L\", \"Cousine\", \"Cumberland\", \"TeX Gyre Cursor\", \"FreeMono\", \"Linux Libertine Mono O\", \"Libertinus Mono\"],\n  style: NORMAL,\n  ultimate: \"monospace\"\n}], [\"Courier-Bold\", {\n  alias: \"Courier\",\n  style: BOLD,\n  ultimate: \"monospace\"\n}], [\"Courier-Oblique\", {\n  alias: \"Courier\",\n  style: ITALIC,\n  ultimate: \"monospace\"\n}], [\"Courier-BoldOblique\", {\n  alias: \"Courier\",\n  style: BOLDITALIC,\n  ultimate: \"monospace\"\n}], [\"ArialBlack\", {\n  local: [\"Arial Black\"],\n  style: {\n    style: \"normal\",\n    weight: \"900\"\n  },\n  fallback: \"Helvetica-Bold\"\n}], [\"ArialBlack-Bold\", {\n  alias: \"ArialBlack\"\n}], [\"ArialBlack-Italic\", {\n  alias: \"ArialBlack\",\n  style: {\n    style: \"italic\",\n    weight: \"900\"\n  },\n  fallback: \"Helvetica-BoldOblique\"\n}], [\"ArialBlack-BoldItalic\", {\n  alias: \"ArialBlack-Italic\"\n}], [\"ArialNarrow\", {\n  local: [\"Arial Narrow\", \"Liberation Sans Narrow\", \"Helvetica Condensed\", \"Nimbus Sans Narrow\", \"TeX Gyre Heros Cn\"],\n  style: NORMAL,\n  fallback: \"Helvetica\"\n}], [\"ArialNarrow-Bold\", {\n  alias: \"ArialNarrow\",\n  style: BOLD,\n  fallback: \"Helvetica-Bold\"\n}], [\"ArialNarrow-Italic\", {\n  alias: \"ArialNarrow\",\n  style: ITALIC,\n  fallback: \"Helvetica-Oblique\"\n}], [\"ArialNarrow-BoldItalic\", {\n  alias: \"ArialNarrow\",\n  style: BOLDITALIC,\n  fallback: \"Helvetica-BoldOblique\"\n}], [\"Calibri\", {\n  local: [\"Calibri\", \"Carlito\"],\n  style: NORMAL,\n  fallback: \"Helvetica\"\n}], [\"Calibri-Bold\", {\n  alias: \"Calibri\",\n  style: BOLD,\n  fallback: \"Helvetica-Bold\"\n}], [\"Calibri-Italic\", {\n  alias: \"Calibri\",\n  style: ITALIC,\n  fallback: \"Helvetica-Oblique\"\n}], [\"Calibri-BoldItalic\", {\n  alias: \"Calibri\",\n  style: BOLDITALIC,\n  fallback: \"Helvetica-BoldOblique\"\n}], [\"Wingdings\", {\n  local: [\"Wingdings\", \"URW Dingbats\"],\n  style: NORMAL\n}], [\"Wingdings-Regular\", {\n  alias: \"Wingdings\"\n}], [\"Wingdings-Bold\", {\n  alias: \"Wingdings\"\n}]]);\nconst fontAliases = new Map([[\"Arial-Black\", \"ArialBlack\"]]);\nfunction getStyleToAppend(style) {\n  switch (style) {\n    case BOLD:\n      return \"Bold\";\n    case ITALIC:\n      return \"Italic\";\n    case BOLDITALIC:\n      return \"Bold Italic\";\n    default:\n      if (style?.weight === \"bold\") {\n        return \"Bold\";\n      }\n      if (style?.style === \"italic\") {\n        return \"Italic\";\n      }\n  }\n  return \"\";\n}\nfunction getFamilyName(str) {\n  const keywords = new Set([\"thin\", \"extralight\", \"ultralight\", \"demilight\", \"semilight\", \"light\", \"book\", \"regular\", \"normal\", \"medium\", \"demibold\", \"semibold\", \"bold\", \"extrabold\", \"ultrabold\", \"black\", \"heavy\", \"extrablack\", \"ultrablack\", \"roman\", \"italic\", \"oblique\", \"ultracondensed\", \"extracondensed\", \"condensed\", \"semicondensed\", \"normal\", \"semiexpanded\", \"expanded\", \"extraexpanded\", \"ultraexpanded\", \"bolditalic\"]);\n  return str.split(/[- ,+]+/g).filter(tok => !keywords.has(tok.toLowerCase())).join(\" \");\n}\nfunction generateFont({\n  alias,\n  local,\n  path,\n  fallback,\n  style,\n  ultimate\n}, src, localFontPath, useFallback = true, usePath = true, append = \"\") {\n  const result = {\n    style: null,\n    ultimate: null\n  };\n  if (local) {\n    const extra = append ? ` ${append}` : \"\";\n    for (const name of local) {\n      src.push(`local(${name}${extra})`);\n    }\n  }\n  if (alias) {\n    const substitution = substitutionMap.get(alias);\n    const aliasAppend = append || getStyleToAppend(style);\n    Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend));\n  }\n  if (style) {\n    result.style = style;\n  }\n  if (ultimate) {\n    result.ultimate = ultimate;\n  }\n  if (useFallback && fallback) {\n    const fallbackInfo = substitutionMap.get(fallback);\n    const {\n      ultimate: fallbackUltimate\n    } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append);\n    result.ultimate ||= fallbackUltimate;\n  }\n  if (usePath && path && localFontPath) {\n    src.push(`url(${localFontPath}${path})`);\n  }\n  return result;\n}\nfunction getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) {\n  if (baseFontName.startsWith(\"InvalidPDFjsFont_\")) {\n    return null;\n  }\n  if ((type === \"TrueType\" || type === \"Type1\") && /^[A-Z]{6}\\+/.test(baseFontName)) {\n    baseFontName = baseFontName.slice(7);\n  }\n  baseFontName = normalizeFontName(baseFontName);\n  const key = baseFontName;\n  let substitutionInfo = systemFontCache.get(key);\n  if (substitutionInfo) {\n    return substitutionInfo;\n  }\n  let substitution = substitutionMap.get(baseFontName);\n  if (!substitution) {\n    for (const [alias, subst] of fontAliases) {\n      if (baseFontName.startsWith(alias)) {\n        baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\n        substitution = substitutionMap.get(baseFontName);\n        break;\n      }\n    }\n  }\n  let mustAddBaseFont = false;\n  if (!substitution) {\n    substitution = substitutionMap.get(standardFontName);\n    mustAddBaseFont = true;\n  }\n  const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\n  if (!substitution) {\n    if (!validateFontName(baseFontName)) {\n      warn(`Cannot substitute the font because of its name: ${baseFontName}`);\n      systemFontCache.set(key, null);\n      return null;\n    }\n    const bold = /bold/gi.test(baseFontName);\n    const italic = /oblique|italic/gi.test(baseFontName);\n    const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL;\n    substitutionInfo = {\n      css: `\"${getFamilyName(baseFontName)}\",${loadedName}`,\n      guessFallback: true,\n      loadedName,\n      baseFontName,\n      src: `local(${baseFontName})`,\n      style\n    };\n    systemFontCache.set(key, substitutionInfo);\n    return substitutionInfo;\n  }\n  const src = [];\n  if (mustAddBaseFont && validateFontName(baseFontName)) {\n    src.push(`local(${baseFontName})`);\n  }\n  const {\n    style,\n    ultimate\n  } = generateFont(substitution, src, localFontPath);\n  const guessFallback = ultimate === null;\n  const fallback = guessFallback ? \"\" : `,${ultimate}`;\n  substitutionInfo = {\n    css: `\"${getFamilyName(baseFontName)}\",${loadedName}${fallback}`,\n    guessFallback,\n    loadedName,\n    baseFontName,\n    src: src.join(\",\"),\n    style\n  };\n  systemFontCache.set(key, substitutionInfo);\n  return substitutionInfo;\n}\n\n;// ./src/core/image_resizer.js\n\n\n\nconst MIN_IMAGE_DIM = 2048;\nconst MAX_IMAGE_DIM = 65537;\nconst MAX_ERROR = 128;\nclass ImageResizer {\n  static #goodSquareLength = MIN_IMAGE_DIM;\n  static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n  constructor(imgData, isMask) {\n    this._imgData = imgData;\n    this._isMask = isMask;\n  }\n  static get canUseImageDecoder() {\n    return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image/bmp\") : Promise.resolve(false));\n  }\n  static needsToBeResized(width, height) {\n    if (width <= this.#goodSquareLength && height <= this.#goodSquareLength) {\n      return false;\n    }\n    const {\n      MAX_DIM\n    } = this;\n    if (width > MAX_DIM || height > MAX_DIM) {\n      return true;\n    }\n    const area = width * height;\n    if (this._hasMaxArea) {\n      return area > this.MAX_AREA;\n    }\n    if (area < this.#goodSquareLength ** 2) {\n      return false;\n    }\n    if (this._areGoodDims(width, height)) {\n      this.#goodSquareLength = Math.max(this.#goodSquareLength, Math.floor(Math.sqrt(width * height)));\n      return false;\n    }\n    this.#goodSquareLength = this._guessMax(this.#goodSquareLength, MAX_DIM, MAX_ERROR, 0);\n    const maxArea = this.MAX_AREA = this.#goodSquareLength ** 2;\n    return area > maxArea;\n  }\n  static get MAX_DIM() {\n    return shadow(this, \"MAX_DIM\", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1));\n  }\n  static get MAX_AREA() {\n    this._hasMaxArea = true;\n    return shadow(this, \"MAX_AREA\", this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2);\n  }\n  static set MAX_AREA(area) {\n    if (area >= 0) {\n      this._hasMaxArea = true;\n      shadow(this, \"MAX_AREA\", area);\n    }\n  }\n  static setOptions({\n    canvasMaxAreaInBytes = -1,\n    isImageDecoderSupported = false\n  }) {\n    if (!this._hasMaxArea) {\n      this.MAX_AREA = canvasMaxAreaInBytes >> 2;\n    }\n    this.#isImageDecoderSupported = isImageDecoderSupported;\n  }\n  static _areGoodDims(width, height) {\n    try {\n      const canvas = new OffscreenCanvas(width, height);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.fillRect(0, 0, 1, 1);\n      const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\n      canvas.width = canvas.height = 1;\n      return opacity !== 0;\n    } catch {\n      return false;\n    }\n  }\n  static _guessMax(start, end, tolerance, defaultHeight) {\n    while (start + tolerance + 1 < end) {\n      const middle = Math.floor((start + end) / 2);\n      const height = defaultHeight || middle;\n      if (this._areGoodDims(middle, height)) {\n        start = middle;\n      } else {\n        end = middle;\n      }\n    }\n    return start;\n  }\n  static async createImage(imgData, isMask = false) {\n    return new ImageResizer(imgData, isMask)._createImage();\n  }\n  async _createImage() {\n    const {\n      _imgData: imgData\n    } = this;\n    const {\n      width,\n      height\n    } = imgData;\n    if (width * height * 4 > MAX_INT_32) {\n      const result = this.#rescaleImageData();\n      if (result) {\n        return result;\n      }\n    }\n    const data = this._encodeBMP();\n    let decoder, imagePromise;\n    if (await ImageResizer.canUseImageDecoder) {\n      decoder = new ImageDecoder({\n        data,\n        type: \"image/bmp\",\n        preferAnimation: false,\n        transfer: [data.buffer]\n      });\n      imagePromise = decoder.decode().catch(reason => {\n        warn(`BMP image decoding failed: ${reason}`);\n        return createImageBitmap(new Blob([this._encodeBMP().buffer], {\n          type: \"image/bmp\"\n        }));\n      }).finally(() => {\n        decoder.close();\n      });\n    } else {\n      imagePromise = createImageBitmap(new Blob([data.buffer], {\n        type: \"image/bmp\"\n      }));\n    }\n    const {\n      MAX_AREA,\n      MAX_DIM\n    } = ImageResizer;\n    const minFactor = Math.max(width / MAX_DIM, height / MAX_DIM, Math.sqrt(width * height / MAX_AREA));\n    const firstFactor = Math.max(minFactor, 2);\n    const factor = Math.round(10 * (minFactor + 1.25)) / 10 / firstFactor;\n    const N = Math.floor(Math.log2(factor));\n    const steps = new Array(N + 2).fill(2);\n    steps[0] = firstFactor;\n    steps.splice(-1, 1, factor / (1 << N));\n    let newWidth = width;\n    let newHeight = height;\n    const result = await imagePromise;\n    let bitmap = result.image || result;\n    for (const step of steps) {\n      const prevWidth = newWidth;\n      const prevHeight = newHeight;\n      newWidth = Math.floor(newWidth / step) - 1;\n      newHeight = Math.floor(newHeight / step) - 1;\n      const canvas = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n      bitmap.close();\n      bitmap = canvas.transferToImageBitmap();\n    }\n    imgData.data = null;\n    imgData.bitmap = bitmap;\n    imgData.width = newWidth;\n    imgData.height = newHeight;\n    return imgData;\n  }\n  #rescaleImageData() {\n    const {\n      _imgData: imgData\n    } = this;\n    const {\n      data,\n      width,\n      height,\n      kind\n    } = imgData;\n    const rgbaSize = width * height * 4;\n    const K = Math.ceil(Math.log2(rgbaSize / MAX_INT_32));\n    const newWidth = width >> K;\n    const newHeight = height >> K;\n    let rgbaData;\n    let maxHeight = height;\n    try {\n      rgbaData = new Uint8Array(rgbaSize);\n    } catch {\n      let n = Math.floor(Math.log2(rgbaSize + 1));\n      while (true) {\n        try {\n          rgbaData = new Uint8Array(2 ** n - 1);\n          break;\n        } catch {\n          n -= 1;\n        }\n      }\n      maxHeight = Math.floor((2 ** n - 1) / (width * 4));\n      const newSize = width * maxHeight * 4;\n      if (newSize < rgbaData.length) {\n        rgbaData = new Uint8Array(newSize);\n      }\n    }\n    const src32 = new Uint32Array(rgbaData.buffer);\n    const dest32 = new Uint32Array(newWidth * newHeight);\n    let srcPos = 0;\n    let newIndex = 0;\n    const step = Math.ceil(height / maxHeight);\n    const remainder = height % maxHeight === 0 ? height : height % maxHeight;\n    for (let k = 0; k < step; k++) {\n      const h = k < step - 1 ? maxHeight : remainder;\n      ({\n        srcPos\n      } = convertToRGBA({\n        kind,\n        src: data,\n        dest: src32,\n        width,\n        height: h,\n        inverseDecode: this._isMask,\n        srcPos\n      }));\n      for (let i = 0, ii = h >> K; i < ii; i++) {\n        const buf = src32.subarray((i << K) * width);\n        for (let j = 0; j < newWidth; j++) {\n          dest32[newIndex++] = buf[j << K];\n        }\n      }\n    }\n    if (ImageResizer.needsToBeResized(newWidth, newHeight)) {\n      imgData.data = dest32;\n      imgData.width = newWidth;\n      imgData.height = newHeight;\n      imgData.kind = ImageKind.RGBA_32BPP;\n      return null;\n    }\n    const canvas = new OffscreenCanvas(newWidth, newHeight);\n    const ctx = canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    });\n    ctx.putImageData(new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), 0, 0);\n    imgData.data = null;\n    imgData.bitmap = canvas.transferToImageBitmap();\n    imgData.width = newWidth;\n    imgData.height = newHeight;\n    return imgData;\n  }\n  _encodeBMP() {\n    const {\n      width,\n      height,\n      kind\n    } = this._imgData;\n    let data = this._imgData.data;\n    let bitPerPixel;\n    let colorTable = new Uint8Array(0);\n    let maskTable = colorTable;\n    let compression = 0;\n    switch (kind) {\n      case ImageKind.GRAYSCALE_1BPP:\n        {\n          bitPerPixel = 1;\n          colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]);\n          const rowLen = width + 7 >> 3;\n          const rowSize = rowLen + 3 & -4;\n          if (rowLen !== rowSize) {\n            const newData = new Uint8Array(rowSize * height);\n            let k = 0;\n            for (let i = 0, ii = height * rowLen; i < ii; i += rowLen, k += rowSize) {\n              newData.set(data.subarray(i, i + rowLen), k);\n            }\n            data = newData;\n          }\n          break;\n        }\n      case ImageKind.RGB_24BPP:\n        {\n          bitPerPixel = 24;\n          if (width & 3) {\n            const rowLen = 3 * width;\n            const rowSize = rowLen + 3 & -4;\n            const extraLen = rowSize - rowLen;\n            const newData = new Uint8Array(rowSize * height);\n            let k = 0;\n            for (let i = 0, ii = height * rowLen; i < ii; i += rowLen) {\n              const row = data.subarray(i, i + rowLen);\n              for (let j = 0; j < rowLen; j += 3) {\n                newData[k++] = row[j + 2];\n                newData[k++] = row[j + 1];\n                newData[k++] = row[j];\n              }\n              k += extraLen;\n            }\n            data = newData;\n          } else {\n            for (let i = 0, ii = data.length; i < ii; i += 3) {\n              const tmp = data[i];\n              data[i] = data[i + 2];\n              data[i + 2] = tmp;\n            }\n          }\n          break;\n        }\n      case ImageKind.RGBA_32BPP:\n        bitPerPixel = 32;\n        compression = 3;\n        maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52);\n        const view = new DataView(maskTable.buffer);\n        if (FeatureTest.isLittleEndian) {\n          view.setUint32(0, 0x000000ff, true);\n          view.setUint32(4, 0x0000ff00, true);\n          view.setUint32(8, 0x00ff0000, true);\n          view.setUint32(12, 0xff000000, true);\n        } else {\n          view.setUint32(0, 0xff000000, true);\n          view.setUint32(4, 0x00ff0000, true);\n          view.setUint32(8, 0x0000ff00, true);\n          view.setUint32(12, 0x000000ff, true);\n        }\n        break;\n      default:\n        throw new Error(\"invalid format\");\n    }\n    let i = 0;\n    const headerLength = 40 + maskTable.length;\n    const fileLength = 14 + headerLength + colorTable.length + data.length;\n    const bmpData = new Uint8Array(fileLength);\n    const view = new DataView(bmpData.buffer);\n    view.setUint16(i, 0x4d42, true);\n    i += 2;\n    view.setUint32(i, fileLength, true);\n    i += 4;\n    view.setUint32(i, 0, true);\n    i += 4;\n    view.setUint32(i, 14 + headerLength + colorTable.length, true);\n    i += 4;\n    view.setUint32(i, headerLength, true);\n    i += 4;\n    view.setInt32(i, width, true);\n    i += 4;\n    view.setInt32(i, -height, true);\n    i += 4;\n    view.setUint16(i, 1, true);\n    i += 2;\n    view.setUint16(i, bitPerPixel, true);\n    i += 2;\n    view.setUint32(i, compression, true);\n    i += 4;\n    view.setUint32(i, 0, true);\n    i += 4;\n    view.setInt32(i, 0, true);\n    i += 4;\n    view.setInt32(i, 0, true);\n    i += 4;\n    view.setUint32(i, colorTable.length / 4, true);\n    i += 4;\n    view.setUint32(i, 0, true);\n    i += 4;\n    bmpData.set(maskTable, i);\n    i += maskTable.length;\n    bmpData.set(colorTable, i);\n    i += colorTable.length;\n    bmpData.set(data, i);\n    return bmpData;\n  }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n  update(input) {\n    let data, length;\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (ArrayBuffer.isView(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n    }\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        h1 ^= k1;\n        h1 = h1 << 13 | h1 >>> 19;\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n        k2 = k2 << 15 | k2 >>> 17;\n        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n        h2 ^= k2;\n        h2 = h2 << 13 | h2 >>> 19;\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n    k1 = 0;\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n  }\n}\n\n;// ./src/core/operator_list.js\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n  let state = parentState;\n  for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n    const item = pattern[i];\n    state = state[item] ||= [];\n  }\n  state[pattern.at(-1)] = {\n    checkFn,\n    iterateFn,\n    processFn\n  };\n}\nconst InitialState = [];\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, function iterateInlineImageGroup(context, i) {\n  const fnArray = context.fnArray;\n  const iFirstSave = context.iCurr - 3;\n  const pos = (i - iFirstSave) % 4;\n  switch (pos) {\n    case 0:\n      return fnArray[i] === OPS.save;\n    case 1:\n      return fnArray[i] === OPS.transform;\n    case 2:\n      return fnArray[i] === OPS.paintInlineImageXObject;\n    case 3:\n      return fnArray[i] === OPS.restore;\n  }\n  throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n}, function foundInlineImageGroup(context, i) {\n  const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n  const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n  const MAX_WIDTH = 1000;\n  const IMAGE_PADDING = 1;\n  const fnArray = context.fnArray,\n    argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstSave = curr - 3;\n  const iFirstTransform = curr - 2;\n  const iFirstPIIXO = curr - 1;\n  const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n  if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n    return i - (i - iFirstSave) % 4;\n  }\n  let maxX = 0;\n  const map = [];\n  let maxLineHeight = 0;\n  let currentX = IMAGE_PADDING,\n    currentY = IMAGE_PADDING;\n  for (let q = 0; q < count; q++) {\n    const transform = argsArray[iFirstTransform + (q << 2)];\n    const img = argsArray[iFirstPIIXO + (q << 2)][0];\n    if (currentX + img.width > MAX_WIDTH) {\n      maxX = Math.max(maxX, currentX);\n      currentY += maxLineHeight + 2 * IMAGE_PADDING;\n      currentX = 0;\n      maxLineHeight = 0;\n    }\n    map.push({\n      transform,\n      x: currentX,\n      y: currentY,\n      w: img.width,\n      h: img.height\n    });\n    currentX += img.width + 2 * IMAGE_PADDING;\n    maxLineHeight = Math.max(maxLineHeight, img.height);\n  }\n  const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n  const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n  const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n  const imgRowSize = imgWidth << 2;\n  for (let q = 0; q < count; q++) {\n    const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n    const rowSize = map[q].w << 2;\n    let dataOffset = 0;\n    let offset = map[q].x + map[q].y * imgWidth << 2;\n    imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n    for (let k = 0, kk = map[q].h; k < kk; k++) {\n      imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n      dataOffset += rowSize;\n      offset += imgRowSize;\n    }\n    imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n    while (offset >= 0) {\n      data[offset - 4] = data[offset];\n      data[offset - 3] = data[offset + 1];\n      data[offset - 2] = data[offset + 2];\n      data[offset - 1] = data[offset + 3];\n      data[offset + rowSize] = data[offset + rowSize - 4];\n      data[offset + rowSize + 1] = data[offset + rowSize - 3];\n      data[offset + rowSize + 2] = data[offset + rowSize - 2];\n      data[offset + rowSize + 3] = data[offset + rowSize - 1];\n      offset -= imgRowSize;\n    }\n  }\n  const img = {\n    width: imgWidth,\n    height: imgHeight\n  };\n  if (context.isOffscreenCanvasSupported) {\n    const canvas = new OffscreenCanvas(imgWidth, imgHeight);\n    const ctx = canvas.getContext(\"2d\");\n    ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0);\n    img.bitmap = canvas.transferToImageBitmap();\n    img.data = null;\n  } else {\n    img.kind = ImageKind.RGBA_32BPP;\n    img.data = imgData;\n  }\n  fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n  argsArray.splice(iFirstSave, count * 4, [img, map]);\n  return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, function iterateImageMaskGroup(context, i) {\n  const fnArray = context.fnArray;\n  const iFirstSave = context.iCurr - 3;\n  const pos = (i - iFirstSave) % 4;\n  switch (pos) {\n    case 0:\n      return fnArray[i] === OPS.save;\n    case 1:\n      return fnArray[i] === OPS.transform;\n    case 2:\n      return fnArray[i] === OPS.paintImageMaskXObject;\n    case 3:\n      return fnArray[i] === OPS.restore;\n  }\n  throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n}, function foundImageMaskGroup(context, i) {\n  const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n  const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n  const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n  const fnArray = context.fnArray,\n    argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstSave = curr - 3;\n  const iFirstTransform = curr - 2;\n  const iFirstPIMXO = curr - 1;\n  let count = Math.floor((i - iFirstSave) / 4);\n  if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n    return i - (i - iFirstSave) % 4;\n  }\n  let isSameImage = false;\n  let iTransform, transformArgs;\n  const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n  const firstTransformArg0 = argsArray[iFirstTransform][0],\n    firstTransformArg1 = argsArray[iFirstTransform][1],\n    firstTransformArg2 = argsArray[iFirstTransform][2],\n    firstTransformArg3 = argsArray[iFirstTransform][3];\n  if (firstTransformArg1 === firstTransformArg2) {\n    isSameImage = true;\n    iTransform = iFirstTransform + 4;\n    let iPIMXO = iFirstPIMXO + 4;\n    for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n      transformArgs = argsArray[iTransform];\n      if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n        if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n          isSameImage = false;\n        } else {\n          count = q;\n        }\n        break;\n      }\n    }\n  }\n  if (isSameImage) {\n    count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n    const positions = new Float32Array(count * 2);\n    iTransform = iFirstTransform;\n    for (let q = 0; q < count; q++, iTransform += 4) {\n      transformArgs = argsArray[iTransform];\n      positions[q << 1] = transformArgs[4];\n      positions[(q << 1) + 1] = transformArgs[5];\n    }\n    fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n    argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n  } else {\n    count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n    const images = [];\n    for (let q = 0; q < count; q++) {\n      transformArgs = argsArray[iFirstTransform + (q << 2)];\n      const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n      images.push({\n        data: maskParams.data,\n        width: maskParams.width,\n        height: maskParams.height,\n        interpolate: maskParams.interpolate,\n        count: maskParams.count,\n        transform: transformArgs\n      });\n    }\n    fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n    argsArray.splice(iFirstSave, count * 4, [images]);\n  }\n  return iFirstSave + 1;\n});\naddState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) {\n  const argsArray = context.argsArray;\n  const iFirstTransform = context.iCurr - 2;\n  return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n}, function iterateImageGroup(context, i) {\n  const fnArray = context.fnArray,\n    argsArray = context.argsArray;\n  const iFirstSave = context.iCurr - 3;\n  const pos = (i - iFirstSave) % 4;\n  switch (pos) {\n    case 0:\n      return fnArray[i] === OPS.save;\n    case 1:\n      if (fnArray[i] !== OPS.transform) {\n        return false;\n      }\n      const iFirstTransform = context.iCurr - 2;\n      const firstTransformArg0 = argsArray[iFirstTransform][0];\n      const firstTransformArg3 = argsArray[iFirstTransform][3];\n      if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n        return false;\n      }\n      return true;\n    case 2:\n      if (fnArray[i] !== OPS.paintImageXObject) {\n        return false;\n      }\n      const iFirstPIXO = context.iCurr - 1;\n      const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n      if (argsArray[i][0] !== firstPIXOArg0) {\n        return false;\n      }\n      return true;\n    case 3:\n      return fnArray[i] === OPS.restore;\n  }\n  throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n  const MIN_IMAGES_IN_BLOCK = 3;\n  const MAX_IMAGES_IN_BLOCK = 1000;\n  const fnArray = context.fnArray,\n    argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstSave = curr - 3;\n  const iFirstTransform = curr - 2;\n  const iFirstPIXO = curr - 1;\n  const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n  const firstTransformArg0 = argsArray[iFirstTransform][0];\n  const firstTransformArg3 = argsArray[iFirstTransform][3];\n  const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n  if (count < MIN_IMAGES_IN_BLOCK) {\n    return i - (i - iFirstSave) % 4;\n  }\n  const positions = new Float32Array(count * 2);\n  let iTransform = iFirstTransform;\n  for (let q = 0; q < count; q++, iTransform += 4) {\n    const transformArgs = argsArray[iTransform];\n    positions[q << 1] = transformArgs[4];\n    positions[(q << 1) + 1] = transformArgs[5];\n  }\n  const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n  fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n  argsArray.splice(iFirstSave, count * 4, args);\n  return iFirstSave + 1;\n});\naddState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, function iterateShowTextGroup(context, i) {\n  const fnArray = context.fnArray,\n    argsArray = context.argsArray;\n  const iFirstSave = context.iCurr - 4;\n  const pos = (i - iFirstSave) % 5;\n  switch (pos) {\n    case 0:\n      return fnArray[i] === OPS.beginText;\n    case 1:\n      return fnArray[i] === OPS.setFont;\n    case 2:\n      return fnArray[i] === OPS.setTextMatrix;\n    case 3:\n      if (fnArray[i] !== OPS.showText) {\n        return false;\n      }\n      const iFirstSetFont = context.iCurr - 3;\n      const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n      if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n        return false;\n      }\n      return true;\n    case 4:\n      return fnArray[i] === OPS.endText;\n  }\n  throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n  const MIN_CHARS_IN_BLOCK = 3;\n  const MAX_CHARS_IN_BLOCK = 1000;\n  const fnArray = context.fnArray,\n    argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstBeginText = curr - 4;\n  const iFirstSetFont = curr - 3;\n  const iFirstSetTextMatrix = curr - 2;\n  const iFirstShowText = curr - 1;\n  const iFirstEndText = curr;\n  const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n  const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n  let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n  if (count < MIN_CHARS_IN_BLOCK) {\n    return i - (i - iFirstBeginText) % 5;\n  }\n  let iFirst = iFirstBeginText;\n  if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n    count++;\n    iFirst -= 5;\n  }\n  let iEndText = iFirst + 4;\n  for (let q = 1; q < count; q++) {\n    fnArray.splice(iEndText, 3);\n    argsArray.splice(iEndText, 3);\n    iEndText += 2;\n  }\n  return iEndText + 1;\n});\nclass NullOptimizer {\n  constructor(queue) {\n    this.queue = queue;\n  }\n  _optimize() {}\n  push(fn, args) {\n    this.queue.fnArray.push(fn);\n    this.queue.argsArray.push(args);\n    this._optimize();\n  }\n  flush() {}\n  reset() {}\n}\nclass QueueOptimizer extends NullOptimizer {\n  constructor(queue) {\n    super(queue);\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n      isOffscreenCanvasSupported: false\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n  set isOffscreenCanvasSupported(value) {\n    this.context.isOffscreenCanvasSupported = value;\n  }\n  _optimize() {\n    const fnArray = this.queue.fnArray;\n    let i = this.lastProcessed,\n      ii = fnArray.length;\n    let state = this.state;\n    let match = this.match;\n    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n      this.lastProcessed = ii;\n      return;\n    }\n    const context = this.context;\n    while (i < ii) {\n      if (match) {\n        const iterate = (0, match.iterateFn)(context, i);\n        if (iterate) {\n          i++;\n          continue;\n        }\n        i = (0, match.processFn)(context, i + 1);\n        ii = fnArray.length;\n        match = null;\n        state = null;\n        if (i >= ii) {\n          break;\n        }\n      }\n      state = (state || InitialState)[fnArray[i]];\n      if (!state || Array.isArray(state)) {\n        i++;\n        continue;\n      }\n      context.iCurr = i;\n      i++;\n      if (state.checkFn && !(0, state.checkFn)(context)) {\n        state = null;\n        continue;\n      }\n      match = state;\n      state = null;\n    }\n    this.state = state;\n    this.match = match;\n    this.lastProcessed = i;\n  }\n  flush() {\n    while (this.match) {\n      const length = this.queue.fnArray.length;\n      this.lastProcessed = (0, this.match.processFn)(this.context, length);\n      this.match = null;\n      this.state = null;\n      this._optimize();\n    }\n  }\n  reset() {\n    this.state = null;\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n}\nclass OperatorList {\n  static CHUNK_SIZE = 1000;\n  static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\n  constructor(intent = 0, streamSink) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this);\n    this.dependencies = new Set();\n    this._totalLength = 0;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n  set isOffscreenCanvasSupported(value) {\n    this.optimizer.isOffscreenCanvasSupported = value;\n  }\n  get length() {\n    return this.argsArray.length;\n  }\n  get ready() {\n    return this._resolved || this._streamSink.ready;\n  }\n  get totalLength() {\n    return this._totalLength + this.length;\n  }\n  addOp(fn, args) {\n    this.optimizer.push(fn, args);\n    this.weight++;\n    if (this._streamSink) {\n      if (this.weight >= OperatorList.CHUNK_SIZE) {\n        this.flush();\n      } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) {\n        this.flush();\n      }\n    }\n  }\n  addImageOps(fn, args, optionalContent) {\n    if (optionalContent !== undefined) {\n      this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    this.addOp(fn, args);\n    if (optionalContent !== undefined) {\n      this.addOp(OPS.endMarkedContent, []);\n    }\n  }\n  addDependency(dependency) {\n    if (this.dependencies.has(dependency)) {\n      return;\n    }\n    this.dependencies.add(dependency);\n    this.addOp(OPS.dependency, [dependency]);\n  }\n  addDependencies(dependencies) {\n    for (const dependency of dependencies) {\n      this.addDependency(dependency);\n    }\n  }\n  addOpList(opList) {\n    if (!(opList instanceof OperatorList)) {\n      warn('addOpList - ignoring invalid \"opList\" parameter.');\n      return;\n    }\n    for (const dependency of opList.dependencies) {\n      this.dependencies.add(dependency);\n    }\n    for (let i = 0, ii = opList.length; i < ii; i++) {\n      this.addOp(opList.fnArray[i], opList.argsArray[i]);\n    }\n  }\n  getIR() {\n    return {\n      fnArray: this.fnArray,\n      argsArray: this.argsArray,\n      length: this.length\n    };\n  }\n  get _transfers() {\n    const transfers = [];\n    const {\n      fnArray,\n      argsArray,\n      length\n    } = this;\n    for (let i = 0; i < length; i++) {\n      switch (fnArray[i]) {\n        case OPS.paintInlineImageXObject:\n        case OPS.paintInlineImageXObjectGroup:\n        case OPS.paintImageMaskXObject:\n          const arg = argsArray[i][0];\n          if (!arg.cached && arg.data?.buffer instanceof ArrayBuffer) {\n            transfers.push(arg.data.buffer);\n          }\n          break;\n      }\n    }\n    return transfers;\n  }\n  flush(lastChunk = false, separateAnnots = null) {\n    this.optimizer.flush();\n    const length = this.length;\n    this._totalLength += length;\n    this._streamSink.enqueue({\n      fnArray: this.fnArray,\n      argsArray: this.argsArray,\n      lastChunk,\n      separateAnnots,\n      length\n    }, 1, this._transfers);\n    this.dependencies.clear();\n    this.fnArray.length = 0;\n    this.argsArray.length = 0;\n    this.weight = 0;\n    this.optimizer.reset();\n  }\n}\n\n;// ./src/core/image.js\n\n\n\n\n\n\n\n\n\nfunction decodeAndClamp(value, addend, coefficient, max) {\n  value = addend + value * coefficient;\n  if (value < 0) {\n    value = 0;\n  } else if (value > max) {\n    value = max;\n  }\n  return value;\n}\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n  const length = w2 * h2;\n  let dest;\n  if (bpc <= 8) {\n    dest = new Uint8Array(length);\n  } else if (bpc <= 16) {\n    dest = new Uint16Array(length);\n  } else {\n    dest = new Uint32Array(length);\n  }\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let i,\n    j,\n    py,\n    newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1;\n  for (i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio);\n  }\n  for (i = 0; i < h2; i++) {\n    py = Math.floor(i * yRatio) * w1Scanline;\n    for (j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex];\n    }\n  }\n  return dest;\n}\nclass PDFImage {\n  constructor({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    this.image = image;\n    const dict = image.dict;\n    const filter = dict.get(\"F\", \"Filter\");\n    let filterName;\n    if (filter instanceof Name) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = xref.fetchIfRef(filter[0]);\n      if (filterZero instanceof Name) {\n        filterName = filterZero.name;\n      }\n    }\n    switch (filterName) {\n      case \"JPXDecode\":\n        ({\n          width: image.width,\n          height: image.height,\n          componentsCount: image.numComps,\n          bitsPerComponent: image.bitsPerComponent\n        } = JpxImage.parseImageProperties(image.stream));\n        image.stream.reset();\n        this.jpxDecoderOptions = {\n          numComponents: 0,\n          isIndexedColormap: false,\n          smaskInData: dict.has(\"SMaskInData\")\n        };\n        break;\n      case \"JBIG2Decode\":\n        image.bitsPerComponent = 1;\n        image.numComps = 1;\n        break;\n    }\n    let width = dict.get(\"W\", \"Width\");\n    let height = dict.get(\"H\", \"Height\");\n    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n      warn(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(`Invalid image width: ${width} or height: ${height}`);\n    }\n    this.width = width;\n    this.height = height;\n    this.interpolate = dict.get(\"I\", \"Interpolate\");\n    this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n    let bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(`Bits per component missing in image: ${this.imageMask}`);\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n    if (!this.imageMask) {\n      let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n      const hasColorSpace = !!colorSpace;\n      if (!hasColorSpace) {\n        if (this.jpxDecoderOptions) {\n          colorSpace = Name.get(\"DeviceRGBA\");\n        } else {\n          switch (image.numComps) {\n            case 1:\n              colorSpace = Name.get(\"DeviceGray\");\n              break;\n            case 3:\n              colorSpace = Name.get(\"DeviceRGB\");\n              break;\n            case 4:\n              colorSpace = Name.get(\"DeviceCMYK\");\n              break;\n            default:\n              throw new Error(`Images with ${image.numComps} color components not supported.`);\n          }\n        }\n      } else if (this.jpxDecoderOptions?.smaskInData) {\n        colorSpace = Name.get(\"DeviceRGBA\");\n      }\n      this.colorSpace = ColorSpace.parse({\n        cs: colorSpace,\n        xref,\n        resources: isInline ? res : null,\n        pdfFunctionFactory,\n        localColorSpaceCache\n      });\n      this.numComps = this.colorSpace.numComps;\n      if (this.jpxDecoderOptions) {\n        this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComp : 0;\n        this.jpxDecoderOptions.isIndexedColormap = this.colorSpace.name === \"Indexed\";\n      }\n    }\n    this.decode = dict.getArray(\"D\", \"Decode\");\n    this.needsDecode = false;\n    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !ColorSpace.isDefaultDecode(this.decode, 1))) {\n      this.needsDecode = true;\n      const max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace?.name === \"Indexed\";\n      for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        const dmin = this.decode[i];\n        const dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n        localColorSpaceCache\n      });\n    } else if (mask) {\n      if (mask instanceof BaseStream) {\n        const maskDict = mask.dict,\n          imageMask = maskDict.get(\"IM\", \"ImageMask\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          });\n        }\n      } else {\n        this.mask = mask;\n      }\n    }\n  }\n  static async buildImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n    if (smask) {\n      if (smask instanceof BaseStream) {\n        smaskData = smask;\n      } else {\n        warn(\"Unsupported /SMask format.\");\n      }\n    } else if (mask) {\n      if (mask instanceof BaseStream || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        warn(\"Unsupported /Mask format.\");\n      }\n    }\n    return new PDFImage({\n      xref,\n      res,\n      image: imageData,\n      isInline,\n      smask: smaskData,\n      mask: maskData,\n      pdfFunctionFactory,\n      localColorSpaceCache\n    });\n  }\n  static createRawMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n    interpolate\n  }) {\n    const computedLength = (width + 7 >> 3) * height;\n    const actualLength = imgArray.byteLength;\n    const haveFullData = computedLength === actualLength;\n    let data, i;\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8Array(imgArray);\n    } else {\n      data = new Uint8Array(computedLength);\n      data.set(imgArray);\n      data.fill(0xff, actualLength);\n    }\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n    return {\n      data,\n      width,\n      height,\n      interpolate\n    };\n  }\n  static async createMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n    interpolate,\n    isOffscreenCanvasSupported = false\n  }) {\n    const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n    if (isSingleOpaquePixel) {\n      return {\n        isSingleOpaquePixel\n      };\n    }\n    if (isOffscreenCanvasSupported) {\n      if (ImageResizer.needsToBeResized(width, height)) {\n        const data = new Uint8ClampedArray(width * height * 4);\n        convertBlackAndWhiteToRGBA({\n          src: imgArray,\n          dest: data,\n          width,\n          height,\n          nonBlackColor: 0,\n          inverseDecode\n        });\n        return ImageResizer.createImage({\n          kind: ImageKind.RGBA_32BPP,\n          data,\n          width,\n          height,\n          interpolate\n        });\n      }\n      const canvas = new OffscreenCanvas(width, height);\n      const ctx = canvas.getContext(\"2d\");\n      const imgData = ctx.createImageData(width, height);\n      convertBlackAndWhiteToRGBA({\n        src: imgArray,\n        dest: imgData.data,\n        width,\n        height,\n        nonBlackColor: 0,\n        inverseDecode\n      });\n      ctx.putImageData(imgData, 0, 0);\n      const bitmap = canvas.transferToImageBitmap();\n      return {\n        data: null,\n        width,\n        height,\n        interpolate,\n        bitmap\n      };\n    }\n    return this.createRawMask({\n      imgArray,\n      width,\n      height,\n      inverseDecode,\n      imageIsFromDecodeStream,\n      interpolate\n    });\n  }\n  get drawWidth() {\n    return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\n  }\n  get drawHeight() {\n    return Math.max(this.height, this.smask?.height || 0, this.mask?.height || 0);\n  }\n  decodeBuffer(buffer) {\n    const bpc = this.bpc;\n    const numComps = this.numComps;\n    const decodeAddends = this.decodeAddends;\n    const decodeCoefficients = this.decodeCoefficients;\n    const max = (1 << bpc) - 1;\n    let i, ii;\n    if (bpc === 1) {\n      for (i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = +!buffer[i];\n      }\n      return;\n    }\n    let index = 0;\n    for (i = 0, ii = this.width * this.height; i < ii; i++) {\n      for (let j = 0; j < numComps; j++) {\n        buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n        index++;\n      }\n    }\n  }\n  getComponents(buffer) {\n    const bpc = this.bpc;\n    if (bpc === 8) {\n      return buffer;\n    }\n    const width = this.width;\n    const height = this.height;\n    const numComps = this.numComps;\n    const length = width * height * numComps;\n    let bufferPos = 0;\n    let output;\n    if (bpc <= 8) {\n      output = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      output = new Uint16Array(length);\n    } else {\n      output = new Uint32Array(length);\n    }\n    const rowComps = width * numComps;\n    const max = (1 << bpc) - 1;\n    let i = 0,\n      ii,\n      buf;\n    if (bpc === 1) {\n      let mask, loop1End, loop2End;\n      for (let j = 0; j < height; j++) {\n        loop1End = i + (rowComps & ~7);\n        loop2End = i + rowComps;\n        while (i < loop1End) {\n          buf = buffer[bufferPos++];\n          output[i] = buf >> 7 & 1;\n          output[i + 1] = buf >> 6 & 1;\n          output[i + 2] = buf >> 5 & 1;\n          output[i + 3] = buf >> 4 & 1;\n          output[i + 4] = buf >> 3 & 1;\n          output[i + 5] = buf >> 2 & 1;\n          output[i + 6] = buf >> 1 & 1;\n          output[i + 7] = buf & 1;\n          i += 8;\n        }\n        if (i < loop2End) {\n          buf = buffer[bufferPos++];\n          mask = 128;\n          while (i < loop2End) {\n            output[i++] = +!!(buf & mask);\n            mask >>= 1;\n          }\n        }\n      }\n    } else {\n      let bits = 0;\n      buf = 0;\n      for (i = 0, ii = length; i < ii; ++i) {\n        if (i % rowComps === 0) {\n          buf = 0;\n          bits = 0;\n        }\n        while (bits < bpc) {\n          buf = buf << 8 | buffer[bufferPos++];\n          bits += 8;\n        }\n        const remainingBits = bits - bpc;\n        let value = buf >> remainingBits;\n        if (value < 0) {\n          value = 0;\n        } else if (value > max) {\n          value = max;\n        }\n        output[i] = value;\n        buf &= (1 << remainingBits) - 1;\n        bits = remainingBits;\n      }\n    }\n    return output;\n  }\n  async fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n    const smask = this.smask;\n    const mask = this.mask;\n    let alphaBuf, sw, sh, i, ii, j;\n    if (smask) {\n      sw = smask.width;\n      sh = smask.height;\n      alphaBuf = new Uint8ClampedArray(sw * sh);\n      await smask.fillGrayBuffer(alphaBuf);\n      if (sw !== width || sh !== height) {\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n      }\n    } else if (mask) {\n      if (mask instanceof PDFImage) {\n        sw = mask.width;\n        sh = mask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        mask.numComps = 1;\n        await mask.fillGrayBuffer(alphaBuf);\n        for (i = 0, ii = sw * sh; i < ii; ++i) {\n          alphaBuf[i] = 255 - alphaBuf[i];\n        }\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n        }\n      } else if (Array.isArray(mask)) {\n        alphaBuf = new Uint8ClampedArray(width * height);\n        const numComps = this.numComps;\n        for (i = 0, ii = width * height; i < ii; ++i) {\n          let opacity = 0;\n          const imageOffset = i * numComps;\n          for (j = 0; j < numComps; ++j) {\n            const color = image[imageOffset + j];\n            const maskOffset = j * 2;\n            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n              opacity = 255;\n              break;\n            }\n          }\n          alphaBuf[i] = opacity;\n        }\n      } else {\n        throw new FormatError(\"Unknown mask format.\");\n      }\n    }\n    if (alphaBuf) {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = alphaBuf[i];\n      }\n    } else {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = 255;\n      }\n    }\n  }\n  undoPreblend(buffer, width, height) {\n    const matte = this.smask?.matte;\n    if (!matte) {\n      return;\n    }\n    const matteRgb = this.colorSpace.getRgb(matte, 0);\n    const matteR = matteRgb[0];\n    const matteG = matteRgb[1];\n    const matteB = matteRgb[2];\n    const length = width * height * 4;\n    for (let i = 0; i < length; i += 4) {\n      const alpha = buffer[i + 3];\n      if (alpha === 0) {\n        buffer[i] = 255;\n        buffer[i + 1] = 255;\n        buffer[i + 2] = 255;\n        continue;\n      }\n      const k = 255 / alpha;\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n    }\n  }\n  async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) {\n    const drawWidth = this.drawWidth;\n    const drawHeight = this.drawHeight;\n    const imgData = {\n      width: drawWidth,\n      height: drawHeight,\n      interpolate: this.interpolate,\n      kind: 0,\n      data: null\n    };\n    const numComps = this.numComps;\n    const originalWidth = this.width;\n    const originalHeight = this.height;\n    const bpc = this.bpc;\n    const rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n    const mustBeResized = isOffscreenCanvasSupported && ImageResizer.needsToBeResized(drawWidth, drawHeight);\n    if (!this.smask && !this.mask && this.colorSpace.name === \"DeviceRGBA\") {\n      imgData.kind = ImageKind.RGBA_32BPP;\n      const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, {});\n      if (isOffscreenCanvasSupported) {\n        if (!mustBeResized) {\n          return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray);\n        }\n        return ImageResizer.createImage(imgData, false);\n      }\n      return imgData;\n    }\n    if (!forceRGBA) {\n      let kind;\n      if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n        kind = ImageKind.GRAYSCALE_1BPP;\n      } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n        kind = ImageKind.RGB_24BPP;\n      }\n      if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n        const image = await this.#getImage(originalWidth, originalHeight);\n        if (image) {\n          return image;\n        }\n        const data = await this.getImageBytes(originalHeight * rowBytes, {});\n        if (isOffscreenCanvasSupported) {\n          if (mustBeResized) {\n            return ImageResizer.createImage({\n              data,\n              kind,\n              width: drawWidth,\n              height: drawHeight,\n              interpolate: this.interpolate\n            }, this.needsDecode);\n          }\n          return this.createBitmap(kind, originalWidth, originalHeight, data);\n        }\n        imgData.kind = kind;\n        imgData.data = data;\n        if (this.needsDecode) {\n          assert(kind === ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\n          const buffer = imgData.data;\n          for (let i = 0, ii = buffer.length; i < ii; i++) {\n            buffer[i] ^= 0xff;\n          }\n        }\n        return imgData;\n      }\n      if (this.image instanceof JpegStream && !this.smask && !this.mask && !this.needsDecode) {\n        let imageLength = originalHeight * rowBytes;\n        if (isOffscreenCanvasSupported && !mustBeResized) {\n          let isHandled = false;\n          switch (this.colorSpace.name) {\n            case \"DeviceGray\":\n              imageLength *= 4;\n              isHandled = true;\n              break;\n            case \"DeviceRGB\":\n              imageLength = imageLength / 3 * 4;\n              isHandled = true;\n              break;\n            case \"DeviceCMYK\":\n              isHandled = true;\n              break;\n          }\n          if (isHandled) {\n            const image = await this.#getImage(drawWidth, drawHeight);\n            if (image) {\n              return image;\n            }\n            const rgba = await this.getImageBytes(imageLength, {\n              drawWidth,\n              drawHeight,\n              forceRGBA: true\n            });\n            return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, rgba);\n          }\n        } else {\n          switch (this.colorSpace.name) {\n            case \"DeviceGray\":\n              imageLength *= 3;\n            case \"DeviceRGB\":\n            case \"DeviceCMYK\":\n              imgData.kind = ImageKind.RGB_24BPP;\n              imgData.data = await this.getImageBytes(imageLength, {\n                drawWidth,\n                drawHeight,\n                forceRGB: true\n              });\n              if (mustBeResized) {\n                return ImageResizer.createImage(imgData);\n              }\n              return imgData;\n          }\n        }\n      }\n    }\n    const imgArray = await this.getImageBytes(originalHeight * rowBytes, {\n      internal: true\n    });\n    const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n    const comps = this.getComponents(imgArray);\n    let alpha01, maybeUndoPreblend;\n    let canvas, ctx, canvasImgData, data;\n    if (isOffscreenCanvasSupported && !mustBeResized) {\n      canvas = new OffscreenCanvas(drawWidth, drawHeight);\n      ctx = canvas.getContext(\"2d\");\n      canvasImgData = ctx.createImageData(drawWidth, drawHeight);\n      data = canvasImgData.data;\n    }\n    imgData.kind = ImageKind.RGBA_32BPP;\n    if (!forceRGBA && !this.smask && !this.mask) {\n      if (!isOffscreenCanvasSupported || mustBeResized) {\n        imgData.kind = ImageKind.RGB_24BPP;\n        data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n        alpha01 = 0;\n      } else {\n        const arr = new Uint32Array(data.buffer);\n        arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff);\n        alpha01 = 1;\n      }\n      maybeUndoPreblend = false;\n    } else {\n      if (!isOffscreenCanvasSupported || mustBeResized) {\n        data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n      }\n      alpha01 = 1;\n      maybeUndoPreblend = true;\n      await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\n    }\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    this.colorSpace.fillRgb(data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n    if (maybeUndoPreblend) {\n      this.undoPreblend(data, drawWidth, actualHeight);\n    }\n    if (isOffscreenCanvasSupported && !mustBeResized) {\n      ctx.putImageData(canvasImgData, 0, 0);\n      const bitmap = canvas.transferToImageBitmap();\n      return {\n        data: null,\n        width: drawWidth,\n        height: drawHeight,\n        bitmap,\n        interpolate: this.interpolate\n      };\n    }\n    imgData.data = data;\n    if (mustBeResized) {\n      return ImageResizer.createImage(imgData);\n    }\n    return imgData;\n  }\n  async fillGrayBuffer(buffer) {\n    const numComps = this.numComps;\n    if (numComps !== 1) {\n      throw new FormatError(`Reading gray scale from a color image: ${numComps}`);\n    }\n    const width = this.width;\n    const height = this.height;\n    const bpc = this.bpc;\n    const rowBytes = width * numComps * bpc + 7 >> 3;\n    const imgArray = await this.getImageBytes(height * rowBytes, {\n      internal: true\n    });\n    const comps = this.getComponents(imgArray);\n    let i, length;\n    if (bpc === 1) {\n      length = width * height;\n      if (this.needsDecode) {\n        for (i = 0; i < length; ++i) {\n          buffer[i] = comps[i] - 1 & 255;\n        }\n      } else {\n        for (i = 0; i < length; ++i) {\n          buffer[i] = -comps[i] & 255;\n        }\n      }\n      return;\n    }\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    length = width * height;\n    const scale = 255 / ((1 << bpc) - 1);\n    for (i = 0; i < length; ++i) {\n      buffer[i] = scale * comps[i];\n    }\n  }\n  createBitmap(kind, width, height, src) {\n    const canvas = new OffscreenCanvas(width, height);\n    const ctx = canvas.getContext(\"2d\");\n    let imgData;\n    if (kind === ImageKind.RGBA_32BPP) {\n      imgData = new ImageData(src, width, height);\n    } else {\n      imgData = ctx.createImageData(width, height);\n      convertToRGBA({\n        kind,\n        src,\n        dest: new Uint32Array(imgData.data.buffer),\n        width,\n        height,\n        inverseDecode: this.needsDecode\n      });\n    }\n    ctx.putImageData(imgData, 0, 0);\n    const bitmap = canvas.transferToImageBitmap();\n    return {\n      data: null,\n      width,\n      height,\n      bitmap,\n      interpolate: this.interpolate\n    };\n  }\n  async #getImage(width, height) {\n    const bitmap = await this.image.getTransferableImage();\n    if (!bitmap) {\n      return null;\n    }\n    return {\n      data: null,\n      width,\n      height,\n      bitmap,\n      interpolate: this.interpolate\n    };\n  }\n  async getImageBytes(length, {\n    drawWidth,\n    drawHeight,\n    forceRGBA = false,\n    forceRGB = false,\n    internal = false\n  }) {\n    this.image.reset();\n    this.image.drawWidth = drawWidth || this.width;\n    this.image.drawHeight = drawHeight || this.height;\n    this.image.forceRGBA = !!forceRGBA;\n    this.image.forceRGB = !!forceRGB;\n    const imageBytes = await this.image.getImageData(length, this.jpxDecoderOptions);\n    if (internal || this.image instanceof DecodeStream) {\n      return imageBytes;\n    }\n    assert(imageBytes instanceof Uint8Array, 'PDFImage.getImageBytes: Unsupported \"imageBytes\" type.');\n    return new Uint8Array(imageBytes);\n  }\n}\n\n;// ./src/core/evaluator.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n  maxImageSize: -1,\n  disableFontFace: false,\n  ignoreErrors: false,\n  isEvalSupported: true,\n  isOffscreenCanvasSupported: false,\n  isImageDecoderSupported: false,\n  canvasMaxAreaInBytes: -1,\n  fontExtraProperties: false,\n  useSystemFonts: true,\n  cMapUrl: null,\n  standardFontDataUrl: null\n});\nconst PatternType = {\n  TILING: 1,\n  SHADING: 2\n};\nconst TEXT_CHUNK_BATCH_SIZE = 10;\nconst deferred = Promise.resolve();\nfunction normalizeBlendMode(value, parsingArray = false) {\n  if (Array.isArray(value)) {\n    for (const val of value) {\n      const maybeBM = normalizeBlendMode(val, true);\n      if (maybeBM) {\n        return maybeBM;\n      }\n    }\n    warn(`Unsupported blend mode Array: ${value}`);\n    return \"source-over\";\n  }\n  if (!(value instanceof Name)) {\n    if (parsingArray) {\n      return null;\n    }\n    return \"source-over\";\n  }\n  switch (value.name) {\n    case \"Normal\":\n    case \"Compatible\":\n      return \"source-over\";\n    case \"Multiply\":\n      return \"multiply\";\n    case \"Screen\":\n      return \"screen\";\n    case \"Overlay\":\n      return \"overlay\";\n    case \"Darken\":\n      return \"darken\";\n    case \"Lighten\":\n      return \"lighten\";\n    case \"ColorDodge\":\n      return \"color-dodge\";\n    case \"ColorBurn\":\n      return \"color-burn\";\n    case \"HardLight\":\n      return \"hard-light\";\n    case \"SoftLight\":\n      return \"soft-light\";\n    case \"Difference\":\n      return \"difference\";\n    case \"Exclusion\":\n      return \"exclusion\";\n    case \"Hue\":\n      return \"hue\";\n    case \"Saturation\":\n      return \"saturation\";\n    case \"Color\":\n      return \"color\";\n    case \"Luminosity\":\n      return \"luminosity\";\n  }\n  if (parsingArray) {\n    return null;\n  }\n  warn(`Unsupported blend mode: ${value.name}`);\n  return \"source-over\";\n}\nfunction addLocallyCachedImageOps(opList, data) {\n  if (data.objId) {\n    opList.addDependency(data.objId);\n  }\n  opList.addImageOps(data.fn, data.args, data.optionalContent);\n  if (data.fn === OPS.paintImageMaskXObject && data.args[0]?.count > 0) {\n    data.args[0].count++;\n  }\n}\nclass TimeSlotManager {\n  static TIME_SLOT_DURATION_MS = 20;\n  static CHECK_TIME_EVERY = 100;\n  constructor() {\n    this.reset();\n  }\n  check() {\n    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n      return false;\n    }\n    this.checked = 0;\n    return this.endTime <= Date.now();\n  }\n  reset() {\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n    this.checked = 0;\n  }\n}\nclass PartialEvaluator {\n  constructor({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    systemFontCache,\n    options = null\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.systemFontCache = systemFontCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.type3FontRefs = null;\n    this._regionalImageCache = new RegionalImageCache();\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n    ImageResizer.setOptions(this.options);\n    JpegStream.setOptions(this.options);\n  }\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.options.isEvalSupported\n    });\n    return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n  get parsingType3Font() {\n    return !!this.type3FontRefs;\n  }\n  clone(newOptions = null) {\n    const newEvaluator = Object.create(this);\n    newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);\n    return newEvaluator;\n  }\n  hasBlendModes(resources, nonBlendModesSet) {\n    if (!(resources instanceof Dict)) {\n      return false;\n    }\n    if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n      return false;\n    }\n    const processed = new RefSet(nonBlendModesSet);\n    if (resources.objId) {\n      processed.put(resources.objId);\n    }\n    const nodes = [resources],\n      xref = this.xref;\n    while (nodes.length) {\n      const node = nodes.shift();\n      const graphicStates = node.get(\"ExtGState\");\n      if (graphicStates instanceof Dict) {\n        for (let graphicState of graphicStates.getRawValues()) {\n          if (graphicState instanceof Ref) {\n            if (processed.has(graphicState)) {\n              continue;\n            }\n            try {\n              graphicState = xref.fetch(graphicState);\n            } catch (ex) {\n              processed.put(graphicState);\n              info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n              continue;\n            }\n          }\n          if (!(graphicState instanceof Dict)) {\n            continue;\n          }\n          if (graphicState.objId) {\n            processed.put(graphicState.objId);\n          }\n          const bm = graphicState.get(\"BM\");\n          if (bm instanceof Name) {\n            if (bm.name !== \"Normal\") {\n              return true;\n            }\n            continue;\n          }\n          if (bm !== undefined && Array.isArray(bm)) {\n            for (const element of bm) {\n              if (element instanceof Name && element.name !== \"Normal\") {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      const xObjects = node.get(\"XObject\");\n      if (!(xObjects instanceof Dict)) {\n        continue;\n      }\n      for (let xObject of xObjects.getRawValues()) {\n        if (xObject instanceof Ref) {\n          if (processed.has(xObject)) {\n            continue;\n          }\n          try {\n            xObject = xref.fetch(xObject);\n          } catch (ex) {\n            processed.put(xObject);\n            info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n            continue;\n          }\n        }\n        if (!(xObject instanceof BaseStream)) {\n          continue;\n        }\n        if (xObject.dict.objId) {\n          processed.put(xObject.dict.objId);\n        }\n        const xResources = xObject.dict.get(\"Resources\");\n        if (!(xResources instanceof Dict)) {\n          continue;\n        }\n        if (xResources.objId && processed.has(xResources.objId)) {\n          continue;\n        }\n        nodes.push(xResources);\n        if (xResources.objId) {\n          processed.put(xResources.objId);\n        }\n      }\n    }\n    for (const ref of processed) {\n      nonBlendModesSet.put(ref);\n    }\n    return false;\n  }\n  async #fetchData(url) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(`Failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n    }\n    return new Uint8Array(await response.arrayBuffer());\n  }\n  async fetchBuiltInCMap(name) {\n    const cachedData = this.builtInCMapCache.get(name);\n    if (cachedData) {\n      return cachedData;\n    }\n    let data;\n    if (this.options.cMapUrl !== null) {\n      const cMapData = await this.#fetchData(`${this.options.cMapUrl}${name}.bcmap`);\n      data = {\n        cMapData,\n        isCompressed: true\n      };\n    } else {\n      data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", {\n        name\n      });\n    }\n    this.builtInCMapCache.set(name, data);\n    return data;\n  }\n  async fetchStandardFontData(name) {\n    const cachedData = this.standardFontDataCache.get(name);\n    if (cachedData) {\n      return new Stream(cachedData);\n    }\n    if (this.options.useSystemFonts && name !== \"Symbol\" && name !== \"ZapfDingbats\") {\n      return null;\n    }\n    const standardFontNameToFileName = getFontNameToFileMap(),\n      filename = standardFontNameToFileName[name];\n    let data;\n    try {\n      if (this.options.standardFontDataUrl !== null) {\n        data = await this.#fetchData(`${this.options.standardFontDataUrl}${filename}`);\n      } else {\n        data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n          filename\n        });\n      }\n    } catch (ex) {\n      warn(ex);\n      return null;\n    }\n    this.standardFontDataCache.set(name, data);\n    return new Stream(data);\n  }\n  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {\n    const dict = xobj.dict;\n    const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n    const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n    let optionalContent, groupOptions;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n    }\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    const group = dict.get(\"Group\");\n    if (group) {\n      groupOptions = {\n        matrix,\n        bbox,\n        smask,\n        isolated: false,\n        knockout: false\n      };\n      const groupSubtype = group.get(\"S\");\n      let colorSpace = null;\n      if (isName(groupSubtype, \"Transparency\")) {\n        groupOptions.isolated = group.get(\"I\") || false;\n        groupOptions.knockout = group.get(\"K\") || false;\n        if (group.has(\"CS\")) {\n          const cs = group.getRaw(\"CS\");\n          const cachedColorSpace = ColorSpace.getCached(cs, this.xref, localColorSpaceCache);\n          if (cachedColorSpace) {\n            colorSpace = cachedColorSpace;\n          } else {\n            colorSpace = await this.parseColorSpace({\n              cs,\n              resources,\n              localColorSpaceCache\n            });\n          }\n        }\n      }\n      if (smask?.backdrop) {\n        colorSpace ||= ColorSpace.singletons.rgb;\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n      }\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\n    }\n    const args = group ? [matrix, null] : [matrix, bbox];\n    operatorList.addOp(OPS.paintFormXObjectBegin, args);\n    await this.getOperatorList({\n      stream: xobj,\n      task,\n      resources: dict.get(\"Resources\") || resources,\n      operatorList,\n      initialState\n    });\n    operatorList.addOp(OPS.paintFormXObjectEnd, []);\n    if (group) {\n      operatorList.addOp(OPS.endGroup, [groupOptions]);\n    }\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.endMarkedContent, []);\n    }\n  }\n  _sendImgData(objId, imgData, cacheGlobally = false) {\n    const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\n    if (this.parsingType3Font || cacheGlobally) {\n      return this.handler.send(\"commonobj\", [objId, \"Image\", imgData], transfers);\n    }\n    return this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", imgData], transfers);\n  }\n  async buildPaintImageXObject({\n    resources,\n    image,\n    isInline = false,\n    operatorList,\n    cacheKey,\n    localImageCache,\n    localColorSpaceCache\n  }) {\n    const dict = image.dict;\n    const imageRef = dict.objId;\n    const w = dict.get(\"W\", \"Width\");\n    const h = dict.get(\"H\", \"Height\");\n    if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n      warn(\"Image dimensions are missing, or not numbers.\");\n      return;\n    }\n    const maxImageSize = this.options.maxImageSize;\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\n      const msg = \"Image exceeded maximum allowed size and was removed.\";\n      if (this.options.ignoreErrors) {\n        warn(msg);\n        return;\n      }\n      throw new Error(msg);\n    }\n    let optionalContent;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n    }\n    const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    let imgData, args;\n    if (imageMask) {\n      const interpolate = dict.get(\"I\", \"Interpolate\");\n      const bitStrideLength = w + 7 >> 3;\n      const imgArray = image.getBytes(bitStrideLength * h);\n      const decode = dict.getArray(\"D\", \"Decode\");\n      if (this.parsingType3Font) {\n        imgData = PDFImage.createRawMask({\n          imgArray,\n          width: w,\n          height: h,\n          imageIsFromDecodeStream: image instanceof DecodeStream,\n          inverseDecode: decode?.[0] > 0,\n          interpolate\n        });\n        imgData.cached = !!cacheKey;\n        args = [imgData];\n        operatorList.addImageOps(OPS.paintImageMaskXObject, args, optionalContent);\n        if (cacheKey) {\n          const cacheData = {\n            fn: OPS.paintImageMaskXObject,\n            args,\n            optionalContent\n          };\n          localImageCache.set(cacheKey, imageRef, cacheData);\n          if (imageRef) {\n            this._regionalImageCache.set(null, imageRef, cacheData);\n          }\n        }\n        return;\n      }\n      imgData = await PDFImage.createMask({\n        imgArray,\n        width: w,\n        height: h,\n        imageIsFromDecodeStream: image instanceof DecodeStream,\n        inverseDecode: decode?.[0] > 0,\n        interpolate,\n        isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported\n      });\n      if (imgData.isSingleOpaquePixel) {\n        operatorList.addImageOps(OPS.paintSolidColorImageMask, [], optionalContent);\n        if (cacheKey) {\n          const cacheData = {\n            fn: OPS.paintSolidColorImageMask,\n            args: [],\n            optionalContent\n          };\n          localImageCache.set(cacheKey, imageRef, cacheData);\n          if (imageRef) {\n            this._regionalImageCache.set(null, imageRef, cacheData);\n          }\n        }\n        return;\n      }\n      const objId = `mask_${this.idFactory.createObjId()}`;\n      operatorList.addDependency(objId);\n      imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n      this._sendImgData(objId, imgData);\n      args = [{\n        data: objId,\n        width: imgData.width,\n        height: imgData.height,\n        interpolate: imgData.interpolate,\n        count: 1\n      }];\n      operatorList.addImageOps(OPS.paintImageMaskXObject, args, optionalContent);\n      if (cacheKey) {\n        const cacheData = {\n          objId,\n          fn: OPS.paintImageMaskXObject,\n          args,\n          optionalContent\n        };\n        localImageCache.set(cacheKey, imageRef, cacheData);\n        if (imageRef) {\n          this._regionalImageCache.set(null, imageRef, cacheData);\n        }\n      }\n      return;\n    }\n    const SMALL_IMAGE_DIMENSIONS = 200;\n    if (isInline && w + h < SMALL_IMAGE_DIMENSIONS && !dict.has(\"SMask\") && !dict.has(\"Mask\")) {\n      try {\n        const imageObj = new PDFImage({\n          xref: this.xref,\n          res: resources,\n          image,\n          isInline,\n          pdfFunctionFactory: this._pdfFunctionFactory,\n          localColorSpaceCache\n        });\n        imgData = await imageObj.createImageData(true, false);\n        operatorList.isOffscreenCanvasSupported = this.options.isOffscreenCanvasSupported;\n        operatorList.addImageOps(OPS.paintInlineImageXObject, [imgData], optionalContent);\n      } catch (reason) {\n        const msg = `Unable to decode inline image: \"${reason}\".`;\n        if (!this.options.ignoreErrors) {\n          throw new Error(msg);\n        }\n        warn(msg);\n      }\n      return;\n    }\n    let objId = `img_${this.idFactory.createObjId()}`,\n      cacheGlobally = false;\n    if (this.parsingType3Font) {\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n    } else if (cacheKey && imageRef) {\n      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);\n      if (cacheGlobally) {\n        assert(!isInline, \"Cannot cache an inline image globally.\");\n        objId = `${this.idFactory.getDocId()}_${objId}`;\n      }\n    }\n    operatorList.addDependency(objId);\n    args = [objId, w, h];\n    operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent);\n    if (cacheGlobally) {\n      if (this.globalImageCache.hasDecodeFailed(imageRef)) {\n        this.globalImageCache.setData(imageRef, {\n          objId,\n          fn: OPS.paintImageXObject,\n          args,\n          optionalContent,\n          byteSize: 0\n        });\n        this._sendImgData(objId, null, cacheGlobally);\n        return;\n      }\n      if (w * h > 250000 || dict.has(\"SMask\") || dict.has(\"Mask\")) {\n        const localLength = await this.handler.sendWithPromise(\"commonobj\", [objId, \"CopyLocalImage\", {\n          imageRef\n        }]);\n        if (localLength) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: OPS.paintImageXObject,\n            args,\n            optionalContent,\n            byteSize: 0\n          });\n          this.globalImageCache.addByteSize(imageRef, localLength);\n          return;\n        }\n      }\n    }\n    PDFImage.buildImage({\n      xref: this.xref,\n      res: resources,\n      image,\n      isInline,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache\n    }).then(async imageObj => {\n      imgData = await imageObj.createImageData(false, this.options.isOffscreenCanvasSupported);\n      imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n      imgData.ref = imageRef;\n      if (cacheGlobally) {\n        this.globalImageCache.addByteSize(imageRef, imgData.dataLen);\n      }\n      return this._sendImgData(objId, imgData, cacheGlobally);\n    }).catch(reason => {\n      warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n      if (imageRef) {\n        this.globalImageCache.addDecodeFailed(imageRef);\n      }\n      return this._sendImgData(objId, null, cacheGlobally);\n    });\n    if (cacheKey) {\n      const cacheData = {\n        objId,\n        fn: OPS.paintImageXObject,\n        args,\n        optionalContent\n      };\n      localImageCache.set(cacheKey, imageRef, cacheData);\n      if (imageRef) {\n        this._regionalImageCache.set(null, imageRef, cacheData);\n        if (cacheGlobally) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: OPS.paintImageXObject,\n            args,\n            optionalContent,\n            byteSize: 0\n          });\n        }\n      }\n    }\n  }\n  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {\n    const smaskContent = smask.get(\"G\");\n    const smaskOptions = {\n      subtype: smask.get(\"S\").name,\n      backdrop: smask.get(\"BC\")\n    };\n    const transferObj = smask.get(\"TR\");\n    if (isPDFFunction(transferObj)) {\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256);\n      const tmp = new Float32Array(1);\n      for (let i = 0; i < 256; i++) {\n        tmp[0] = i / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[i] = tmp[0] * 255 | 0;\n      }\n      smaskOptions.transferMap = transferMap;\n    }\n    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache);\n  }\n  handleTransferFunction(tr) {\n    let transferArray;\n    if (Array.isArray(tr)) {\n      transferArray = tr;\n    } else if (isPDFFunction(tr)) {\n      transferArray = [tr];\n    } else {\n      return null;\n    }\n    const transferMaps = [];\n    let numFns = 0,\n      numEffectfulFns = 0;\n    for (const entry of transferArray) {\n      const transferObj = this.xref.fetchIfRef(entry);\n      numFns++;\n      if (isName(transferObj, \"Identity\")) {\n        transferMaps.push(null);\n        continue;\n      } else if (!isPDFFunction(transferObj)) {\n        return null;\n      }\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256),\n        tmp = new Float32Array(1);\n      for (let j = 0; j < 256; j++) {\n        tmp[0] = j / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[j] = tmp[0] * 255 | 0;\n      }\n      transferMaps.push(transferMap);\n      numEffectfulFns++;\n    }\n    if (!(numFns === 1 || numFns === 4)) {\n      return null;\n    }\n    if (numEffectfulFns === 0) {\n      return null;\n    }\n    return transferMaps;\n  }\n  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) {\n    const tilingOpList = new OperatorList();\n    const patternResources = Dict.merge({\n      xref: this.xref,\n      dictArray: [patternDict.get(\"Resources\"), resources]\n    });\n    return this.getOperatorList({\n      stream: pattern,\n      task,\n      resources: patternResources,\n      operatorList: tilingOpList\n    }).then(function () {\n      const operatorListIR = tilingOpList.getIR();\n      const tilingPatternIR = getTilingPatternIR(operatorListIR, patternDict, color);\n      operatorList.addDependencies(tilingOpList.dependencies);\n      operatorList.addOp(fn, tilingPatternIR);\n      if (patternDict.objId) {\n        localTilingPatternCache.set(null, patternDict.objId, {\n          operatorListIR,\n          dict: patternDict\n        });\n      }\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n        return;\n      }\n      throw reason;\n    });\n  }\n  async handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) {\n    const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\n    let translated = await this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo);\n    if (translated.font.isType3Font) {\n      try {\n        await translated.loadType3Data(this, resources, task);\n        operatorList.addDependencies(translated.type3Dependencies);\n      } catch (reason) {\n        translated = new TranslatedFont({\n          loadedName: \"g_font_error\",\n          font: new ErrorFont(`Type3 font load error: ${reason}`),\n          dict: translated.font,\n          evaluatorOptions: this.options\n        });\n      }\n    }\n    state.font = translated.font;\n    translated.send(this.handler);\n    return translated.loadedName;\n  }\n  handleText(chars, state) {\n    const font = state.font;\n    const glyphs = font.charsToGlyphs(chars);\n    if (font.data) {\n      const isAddToPathSet = !!(state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n      if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace || this.options.disableFontFace) {\n        PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);\n      }\n    }\n    return glyphs;\n  }\n  ensureStateFont(state) {\n    if (state.font) {\n      return;\n    }\n    const reason = new FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n    if (this.options.ignoreErrors) {\n      warn(`ensureStateFont: \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n  async setGState({\n    resources,\n    gState,\n    operatorList,\n    cacheKey,\n    task,\n    stateManager,\n    localGStateCache,\n    localColorSpaceCache\n  }) {\n    const gStateRef = gState.objId;\n    let isSimpleGState = true;\n    const gStateObj = [];\n    let promise = Promise.resolve();\n    for (const key of gState.getKeys()) {\n      const value = gState.get(key);\n      switch (key) {\n        case \"Type\":\n          break;\n        case \"LW\":\n        case \"LC\":\n        case \"LJ\":\n        case \"ML\":\n        case \"D\":\n        case \"RI\":\n        case \"FL\":\n        case \"CA\":\n        case \"ca\":\n          gStateObj.push([key, value]);\n          break;\n        case \"Font\":\n          isSimpleGState = false;\n          promise = promise.then(() => this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {\n            operatorList.addDependency(loadedName);\n            gStateObj.push([key, [loadedName, value[1]]]);\n          }));\n          break;\n        case \"BM\":\n          gStateObj.push([key, normalizeBlendMode(value)]);\n          break;\n        case \"SMask\":\n          if (isName(value, \"None\")) {\n            gStateObj.push([key, false]);\n            break;\n          }\n          if (value instanceof Dict) {\n            isSimpleGState = false;\n            promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache));\n            gStateObj.push([key, true]);\n          } else {\n            warn(\"Unsupported SMask type\");\n          }\n          break;\n        case \"TR\":\n          const transferMaps = this.handleTransferFunction(value);\n          gStateObj.push([key, transferMaps]);\n          break;\n        case \"OP\":\n        case \"op\":\n        case \"OPM\":\n        case \"BG\":\n        case \"BG2\":\n        case \"UCR\":\n        case \"UCR2\":\n        case \"TR2\":\n        case \"HT\":\n        case \"SM\":\n        case \"SA\":\n        case \"AIS\":\n        case \"TK\":\n          info(\"graphic state operator \" + key);\n          break;\n        default:\n          info(\"Unknown graphic state operator \" + key);\n          break;\n      }\n    }\n    await promise;\n    if (gStateObj.length > 0) {\n      operatorList.addOp(OPS.setGState, [gStateObj]);\n    }\n    if (isSimpleGState) {\n      localGStateCache.set(cacheKey, gStateRef, gStateObj);\n    }\n  }\n  loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) {\n    const errorFont = async () => {\n      return new TranslatedFont({\n        loadedName: \"g_font_error\",\n        font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n        dict: font,\n        evaluatorOptions: this.options\n      });\n    };\n    let fontRef;\n    if (font) {\n      if (font instanceof Ref) {\n        fontRef = font;\n      }\n    } else {\n      const fontRes = resources.get(\"Font\");\n      if (fontRes) {\n        fontRef = fontRes.getRaw(fontName);\n      }\n    }\n    if (fontRef) {\n      if (this.type3FontRefs?.has(fontRef)) {\n        return errorFont();\n      }\n      if (this.fontCache.has(fontRef)) {\n        return this.fontCache.get(fontRef);\n      }\n      try {\n        font = this.xref.fetchIfRef(fontRef);\n      } catch (ex) {\n        warn(`loadFont - lookup failed: \"${ex}\".`);\n      }\n    }\n    if (!(font instanceof Dict)) {\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\n        warn(`Font \"${fontName}\" is not available.`);\n        return errorFont();\n      }\n      warn(`Font \"${fontName}\" is not available -- attempting to fallback to a default font.`);\n      font = fallbackFontDict || PartialEvaluator.fallbackFontDict;\n    }\n    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n      return this.fontCache.get(font.cacheKey);\n    }\n    const {\n      promise,\n      resolve\n    } = Promise.withResolvers();\n    let preEvaluatedFont;\n    try {\n      preEvaluatedFont = this.preEvaluateFont(font);\n      preEvaluatedFont.cssFontInfo = cssFontInfo;\n    } catch (reason) {\n      warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n      return errorFont();\n    }\n    const {\n      descriptor,\n      hash\n    } = preEvaluatedFont;\n    const fontRefIsRef = fontRef instanceof Ref;\n    let fontID;\n    if (hash && descriptor instanceof Dict) {\n      const fontAliases = descriptor.fontAliases ||= Object.create(null);\n      if (fontAliases[hash]) {\n        const aliasFontRef = fontAliases[hash].aliasRef;\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n          this.fontCache.putAlias(fontRef, aliasFontRef);\n          return this.fontCache.get(fontRef);\n        }\n      } else {\n        fontAliases[hash] = {\n          fontID: this.idFactory.createFontId()\n        };\n      }\n      if (fontRefIsRef) {\n        fontAliases[hash].aliasRef = fontRef;\n      }\n      fontID = fontAliases[hash].fontID;\n    } else {\n      fontID = this.idFactory.createFontId();\n    }\n    assert(fontID?.startsWith(\"f\"), 'The \"fontID\" must be (correctly) defined.');\n    if (fontRefIsRef) {\n      this.fontCache.put(fontRef, promise);\n    } else {\n      font.cacheKey = `cacheKey_${fontID}`;\n      this.fontCache.put(font.cacheKey, promise);\n    }\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n    this.translateFont(preEvaluatedFont).then(translatedFont => {\n      resolve(new TranslatedFont({\n        loadedName: font.loadedName,\n        font: translatedFont,\n        dict: font,\n        evaluatorOptions: this.options\n      }));\n    }).catch(reason => {\n      warn(`loadFont - translateFont failed: \"${reason}\".`);\n      resolve(new TranslatedFont({\n        loadedName: font.loadedName,\n        font: new ErrorFont(reason instanceof Error ? reason.message : reason),\n        dict: font,\n        evaluatorOptions: this.options\n      }));\n    });\n    return promise;\n  }\n  buildPath(operatorList, fn, args, parsingText = false) {\n    const lastIndex = operatorList.length - 1;\n    if (!args) {\n      args = [];\n    }\n    if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== OPS.constructPath) {\n      if (parsingText) {\n        warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n        operatorList.addOp(OPS.save, null);\n      }\n      let minMax;\n      switch (fn) {\n        case OPS.rectangle:\n          const x = args[0] + args[2];\n          const y = args[1] + args[3];\n          minMax = [Math.min(args[0], x), Math.min(args[1], y), Math.max(args[0], x), Math.max(args[1], y)];\n          break;\n        case OPS.moveTo:\n        case OPS.lineTo:\n          minMax = [args[0], args[1], args[0], args[1]];\n          break;\n        default:\n          minMax = [Infinity, Infinity, -Infinity, -Infinity];\n          break;\n      }\n      operatorList.addOp(OPS.constructPath, [[fn], args, minMax]);\n      if (parsingText) {\n        operatorList.addOp(OPS.restore, null);\n      }\n    } else {\n      const opArgs = operatorList.argsArray[lastIndex];\n      opArgs[0].push(fn);\n      opArgs[1].push(...args);\n      const minMax = opArgs[2];\n      switch (fn) {\n        case OPS.rectangle:\n          const x = args[0] + args[2];\n          const y = args[1] + args[3];\n          minMax[0] = Math.min(minMax[0], args[0], x);\n          minMax[1] = Math.min(minMax[1], args[1], y);\n          minMax[2] = Math.max(minMax[2], args[0], x);\n          minMax[3] = Math.max(minMax[3], args[1], y);\n          break;\n        case OPS.moveTo:\n        case OPS.lineTo:\n          minMax[0] = Math.min(minMax[0], args[0]);\n          minMax[1] = Math.min(minMax[1], args[1]);\n          minMax[2] = Math.max(minMax[2], args[0]);\n          minMax[3] = Math.max(minMax[3], args[1]);\n          break;\n      }\n    }\n  }\n  parseColorSpace({\n    cs,\n    resources,\n    localColorSpaceCache\n  }) {\n    return ColorSpace.parseAsync({\n      cs,\n      xref: this.xref,\n      resources,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return null;\n      }\n      if (this.options.ignoreErrors) {\n        warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n        return null;\n      }\n      throw reason;\n    });\n  }\n  parseShading({\n    shading,\n    resources,\n    localColorSpaceCache,\n    localShadingPatternCache\n  }) {\n    let id = localShadingPatternCache.get(shading);\n    if (id) {\n      return id;\n    }\n    let patternIR;\n    try {\n      const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, localColorSpaceCache);\n      patternIR = shadingFill.getIR();\n    } catch (reason) {\n      if (reason instanceof AbortException) {\n        return null;\n      }\n      if (this.options.ignoreErrors) {\n        warn(`parseShading - ignoring shading: \"${reason}\".`);\n        localShadingPatternCache.set(shading, null);\n        return null;\n      }\n      throw reason;\n    }\n    id = `pattern_${this.idFactory.createObjId()}`;\n    if (this.parsingType3Font) {\n      id = `${this.idFactory.getDocId()}_type3_${id}`;\n    }\n    localShadingPatternCache.set(shading, id);\n    if (this.parsingType3Font) {\n      this.handler.send(\"commonobj\", [id, \"Pattern\", patternIR]);\n    } else {\n      this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n    }\n    return id;\n  }\n  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) {\n    const patternName = args.pop();\n    if (patternName instanceof Name) {\n      const rawPattern = patterns.getRaw(patternName.name);\n      const localTilingPattern = rawPattern instanceof Ref && localTilingPatternCache.getByRef(rawPattern);\n      if (localTilingPattern) {\n        try {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          const tilingPatternIR = getTilingPatternIR(localTilingPattern.operatorListIR, localTilingPattern.dict, color);\n          operatorList.addOp(fn, tilingPatternIR);\n          return undefined;\n        } catch {}\n      }\n      const pattern = this.xref.fetchIfRef(rawPattern);\n      if (pattern) {\n        const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n        const typeNum = dict.get(\"PatternType\");\n        if (typeNum === PatternType.TILING) {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache);\n        } else if (typeNum === PatternType.SHADING) {\n          const shading = dict.get(\"Shading\");\n          const objId = this.parseShading({\n            shading,\n            resources,\n            localColorSpaceCache,\n            localShadingPatternCache\n          });\n          if (objId) {\n            const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n            operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n          }\n          return undefined;\n        }\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\n      }\n    }\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\n  }\n  _parseVisibilityExpression(array, nestingCounter, currentResult) {\n    const MAX_NESTING = 10;\n    if (++nestingCounter > MAX_NESTING) {\n      warn(\"Visibility expression is too deeply nested\");\n      return;\n    }\n    const length = array.length;\n    const operator = this.xref.fetchIfRef(array[0]);\n    if (length < 2 || !(operator instanceof Name)) {\n      warn(\"Invalid visibility expression\");\n      return;\n    }\n    switch (operator.name) {\n      case \"And\":\n      case \"Or\":\n      case \"Not\":\n        currentResult.push(operator.name);\n        break;\n      default:\n        warn(`Invalid operator ${operator.name} in visibility expression`);\n        return;\n    }\n    for (let i = 1; i < length; i++) {\n      const raw = array[i];\n      const object = this.xref.fetchIfRef(raw);\n      if (Array.isArray(object)) {\n        const nestedResult = [];\n        currentResult.push(nestedResult);\n        this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n      } else if (raw instanceof Ref) {\n        currentResult.push(raw.toString());\n      }\n    }\n  }\n  async parseMarkedContentProps(contentProperties, resources) {\n    let optionalContent;\n    if (contentProperties instanceof Name) {\n      const properties = resources.get(\"Properties\");\n      optionalContent = properties.get(contentProperties.name);\n    } else if (contentProperties instanceof Dict) {\n      optionalContent = contentProperties;\n    } else {\n      throw new FormatError(\"Optional content properties malformed.\");\n    }\n    const optionalContentType = optionalContent.get(\"Type\")?.name;\n    if (optionalContentType === \"OCG\") {\n      return {\n        type: optionalContentType,\n        id: optionalContent.objId\n      };\n    } else if (optionalContentType === \"OCMD\") {\n      const expression = optionalContent.get(\"VE\");\n      if (Array.isArray(expression)) {\n        const result = [];\n        this._parseVisibilityExpression(expression, 0, result);\n        if (result.length > 0) {\n          return {\n            type: \"OCMD\",\n            expression: result\n          };\n        }\n      }\n      const optionalContentGroups = optionalContent.get(\"OCGs\");\n      if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof Dict) {\n        const groupIds = [];\n        if (Array.isArray(optionalContentGroups)) {\n          for (const ocg of optionalContentGroups) {\n            groupIds.push(ocg.toString());\n          }\n        } else {\n          groupIds.push(optionalContentGroups.objId);\n        }\n        return {\n          type: optionalContentType,\n          ids: groupIds,\n          policy: optionalContent.get(\"P\") instanceof Name ? optionalContent.get(\"P\").name : null,\n          expression: null\n        };\n      } else if (optionalContentGroups instanceof Ref) {\n        return {\n          type: optionalContentType,\n          id: optionalContentGroups.toString()\n        };\n      }\n    }\n    return null;\n  }\n  getOperatorList({\n    stream,\n    task,\n    resources,\n    operatorList,\n    initialState = null,\n    fallbackFontDict = null\n  }) {\n    resources ||= Dict.empty;\n    initialState ||= new EvalState();\n    if (!operatorList) {\n      throw new Error('getOperatorList: missing \"operatorList\" parameter');\n    }\n    const self = this;\n    const xref = this.xref;\n    let parsingText = false;\n    const localImageCache = new LocalImageCache();\n    const localColorSpaceCache = new LocalColorSpaceCache();\n    const localGStateCache = new LocalGStateCache();\n    const localTilingPatternCache = new LocalTilingPatternCache();\n    const localShadingPatternCache = new Map();\n    const xobjs = resources.get(\"XObject\") || Dict.empty;\n    const patterns = resources.get(\"Pattern\") || Dict.empty;\n    const stateManager = new StateManager(initialState);\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    const timeSlotManager = new TimeSlotManager();\n    function closePendingRestoreOPS(argument) {\n      for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n        operatorList.addOp(OPS.restore, []);\n      }\n    }\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        Promise.all([promise, operatorList.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      const operation = {};\n      let stop, i, ii, cs, name, isValidName;\n      while (!(stop = timeSlotManager.check())) {\n        operation.args = null;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        let args = operation.args;\n        let fn = operation.fn;\n        switch (fn | 0) {\n          case OPS.paintXObject:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n            if (isValidName) {\n              const localImage = localImageCache.getByName(name);\n              if (localImage) {\n                addLocallyCachedImageOps(operatorList, localImage);\n                args = null;\n                continue;\n              }\n            }\n            next(new Promise(function (resolveXObject, rejectXObject) {\n              if (!isValidName) {\n                throw new FormatError(\"XObject must be referred to by name.\");\n              }\n              let xobj = xobjs.getRaw(name);\n              if (xobj instanceof Ref) {\n                const localImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj);\n                if (localImage) {\n                  addLocallyCachedImageOps(operatorList, localImage);\n                  resolveXObject();\n                  return;\n                }\n                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n                if (globalImage) {\n                  operatorList.addDependency(globalImage.objId);\n                  operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent);\n                  resolveXObject();\n                  return;\n                }\n                xobj = xref.fetch(xobj);\n              }\n              if (!(xobj instanceof BaseStream)) {\n                throw new FormatError(\"XObject should be a stream\");\n              }\n              const type = xobj.dict.get(\"Subtype\");\n              if (!(type instanceof Name)) {\n                throw new FormatError(\"XObject should have a Name subtype\");\n              }\n              if (type.name === \"Form\") {\n                stateManager.save();\n                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () {\n                  stateManager.restore();\n                  resolveXObject();\n                }, rejectXObject);\n                return;\n              } else if (type.name === \"Image\") {\n                self.buildPaintImageXObject({\n                  resources,\n                  image: xobj,\n                  operatorList,\n                  cacheKey: name,\n                  localImageCache,\n                  localColorSpaceCache\n                }).then(resolveXObject, rejectXObject);\n                return;\n              } else if (type.name === \"PS\") {\n                info(\"Ignored XObject subtype PS\");\n              } else {\n                throw new FormatError(`Unhandled XObject subtype ${type.name}`);\n              }\n              resolveXObject();\n            }).catch(function (reason) {\n              if (reason instanceof AbortException) {\n                return;\n              }\n              if (self.options.ignoreErrors) {\n                warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                return;\n              }\n              throw reason;\n            }));\n            return;\n          case OPS.setFont:\n            const fontSize = args[1];\n            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n            }));\n            return;\n          case OPS.beginText:\n            parsingText = true;\n            break;\n          case OPS.endText:\n            parsingText = false;\n            break;\n          case OPS.endInlineImage:\n            const cacheKey = args[0].cacheKey;\n            if (cacheKey) {\n              const localImage = localImageCache.getByName(cacheKey);\n              if (localImage) {\n                addLocallyCachedImageOps(operatorList, localImage);\n                args = null;\n                continue;\n              }\n            }\n            next(self.buildPaintImageXObject({\n              resources,\n              image: args[0],\n              isInline: true,\n              operatorList,\n              cacheKey,\n              localImageCache,\n              localColorSpaceCache\n            }));\n            return;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            args[0] = self.handleText(args[0], stateManager.state);\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            const combinedGlyphs = [],\n              state = stateManager.state;\n            for (const arrItem of args[0]) {\n              if (typeof arrItem === \"string\") {\n                combinedGlyphs.push(...self.handleText(arrItem, state));\n              } else if (typeof arrItem === \"number\") {\n                combinedGlyphs.push(arrItem);\n              }\n            }\n            args[0] = combinedGlyphs;\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.setTextRenderingMode:\n            stateManager.state.textRenderingMode = args[0];\n            break;\n          case OPS.setFillColorSpace:\n            {\n              const cachedColorSpace = ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n              if (cachedColorSpace) {\n                stateManager.state.fillColorSpace = cachedColorSpace;\n                continue;\n              }\n              next(self.parseColorSpace({\n                cs: args[0],\n                resources,\n                localColorSpaceCache\n              }).then(function (colorSpace) {\n                stateManager.state.fillColorSpace = colorSpace || ColorSpace.singletons.gray;\n              }));\n              return;\n            }\n          case OPS.setStrokeColorSpace:\n            {\n              const cachedColorSpace = ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n              if (cachedColorSpace) {\n                stateManager.state.strokeColorSpace = cachedColorSpace;\n                continue;\n              }\n              next(self.parseColorSpace({\n                cs: args[0],\n                resources,\n                localColorSpaceCache\n              }).then(function (colorSpace) {\n                stateManager.state.strokeColorSpace = colorSpace || ColorSpace.singletons.gray;\n              }));\n              return;\n            }\n          case OPS.setFillColor:\n            cs = stateManager.state.fillColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColor:\n            cs = stateManager.state.strokeColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillGray:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeGray:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillCMYKColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeCMYKColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillRGBColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setStrokeRGBColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setFillColorN:\n            cs = stateManager.state.patternFillColorSpace;\n            if (!cs) {\n              if (isNumberArray(args, null)) {\n                args = ColorSpace.singletons.gray.getRgb(args, 0);\n                fn = OPS.setFillRGBColor;\n                break;\n              }\n              args = [];\n              fn = OPS.setFillTransparent;\n              break;\n            }\n            if (cs.name === \"Pattern\") {\n              next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColorN:\n            cs = stateManager.state.patternStrokeColorSpace;\n            if (!cs) {\n              if (isNumberArray(args, null)) {\n                args = ColorSpace.singletons.gray.getRgb(args, 0);\n                fn = OPS.setStrokeRGBColor;\n                break;\n              }\n              args = [];\n              fn = OPS.setStrokeTransparent;\n              break;\n            }\n            if (cs.name === \"Pattern\") {\n              next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.shadingFill:\n            let shading;\n            try {\n              const shadingRes = resources.get(\"Shading\");\n              if (!shadingRes) {\n                throw new FormatError(\"No shading resource found\");\n              }\n              shading = shadingRes.get(args[0].name);\n              if (!shading) {\n                throw new FormatError(\"No shading object found\");\n              }\n            } catch (reason) {\n              if (reason instanceof AbortException) {\n                continue;\n              }\n              if (self.options.ignoreErrors) {\n                warn(`getOperatorList - ignoring Shading: \"${reason}\".`);\n                continue;\n              }\n              throw reason;\n            }\n            const patternId = self.parseShading({\n              shading,\n              resources,\n              localColorSpaceCache,\n              localShadingPatternCache\n            });\n            if (!patternId) {\n              continue;\n            }\n            args = [patternId];\n            fn = OPS.shadingFill;\n            break;\n          case OPS.setGState:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n            if (isValidName) {\n              const localGStateObj = localGStateCache.getByName(name);\n              if (localGStateObj) {\n                if (localGStateObj.length > 0) {\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\n                }\n                args = null;\n                continue;\n              }\n            }\n            next(new Promise(function (resolveGState, rejectGState) {\n              if (!isValidName) {\n                throw new FormatError(\"GState must be referred to by name.\");\n              }\n              const extGState = resources.get(\"ExtGState\");\n              if (!(extGState instanceof Dict)) {\n                throw new FormatError(\"ExtGState should be a dictionary.\");\n              }\n              const gState = extGState.get(name);\n              if (!(gState instanceof Dict)) {\n                throw new FormatError(\"GState should be a dictionary.\");\n              }\n              self.setGState({\n                resources,\n                gState,\n                operatorList,\n                cacheKey: name,\n                task,\n                stateManager,\n                localGStateCache,\n                localColorSpaceCache\n              }).then(resolveGState, rejectGState);\n            }).catch(function (reason) {\n              if (reason instanceof AbortException) {\n                return;\n              }\n              if (self.options.ignoreErrors) {\n                warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n                return;\n              }\n              throw reason;\n            }));\n            return;\n          case OPS.moveTo:\n          case OPS.lineTo:\n          case OPS.curveTo:\n          case OPS.curveTo2:\n          case OPS.curveTo3:\n          case OPS.closePath:\n          case OPS.rectangle:\n            self.buildPath(operatorList, fn, args, parsingText);\n            continue;\n          case OPS.markPoint:\n          case OPS.markPointProps:\n          case OPS.beginCompat:\n          case OPS.endCompat:\n            continue;\n          case OPS.beginMarkedContentProps:\n            if (!(args[0] instanceof Name)) {\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n              operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n              continue;\n            }\n            if (args[0].name === \"OC\") {\n              next(self.parseMarkedContentProps(args[1], resources).then(data => {\n                operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", data]);\n              }).catch(reason => {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  warn(`getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`);\n                  operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", null]);\n                  return;\n                }\n                throw reason;\n              }));\n              return;\n            }\n            args = [args[0].name, args[1] instanceof Dict ? args[1].get(\"MCID\") : null];\n            break;\n          case OPS.beginMarkedContent:\n          case OPS.endMarkedContent:\n          default:\n            if (args !== null) {\n              for (i = 0, ii = args.length; i < ii; i++) {\n                if (args[i] instanceof Dict) {\n                  break;\n                }\n              }\n              if (i < ii) {\n                warn(\"getOperatorList - ignoring operator: \" + fn);\n                continue;\n              }\n            }\n        }\n        operatorList.addOp(fn, args);\n      }\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      closePendingRestoreOPS();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        warn(`getOperatorList - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n        closePendingRestoreOPS();\n        return;\n      }\n      throw reason;\n    });\n  }\n  getTextContent({\n    stream,\n    task,\n    resources,\n    stateManager = null,\n    includeMarkedContent = false,\n    sink,\n    seenStyles = new Set(),\n    viewBox,\n    lang = null,\n    markedContentData = null,\n    disableNormalization = false,\n    keepWhiteSpace = false\n  }) {\n    resources ||= Dict.empty;\n    stateManager ||= new StateManager(new TextState());\n    if (includeMarkedContent) {\n      markedContentData ||= {\n        level: 0\n      };\n    }\n    const textContent = {\n      items: [],\n      styles: Object.create(null),\n      lang\n    };\n    const textContentItem = {\n      initialized: false,\n      str: [],\n      totalWidth: 0,\n      totalHeight: 0,\n      width: 0,\n      height: 0,\n      vertical: false,\n      prevTransform: null,\n      textAdvanceScale: 0,\n      spaceInFlowMin: 0,\n      spaceInFlowMax: 0,\n      trackingSpaceMin: Infinity,\n      negativeSpaceMax: -Infinity,\n      notASpace: -Infinity,\n      transform: null,\n      fontName: null,\n      hasEOL: false\n    };\n    const twoLastChars = [\" \", \" \"];\n    let twoLastCharsPos = 0;\n    function saveLastChar(char) {\n      const nextPos = (twoLastCharsPos + 1) % 2;\n      const ret = twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[nextPos] === \" \";\n      twoLastChars[twoLastCharsPos] = char;\n      twoLastCharsPos = nextPos;\n      return !keepWhiteSpace && ret;\n    }\n    function shouldAddWhitepsace() {\n      return !keepWhiteSpace && twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[(twoLastCharsPos + 1) % 2] === \" \";\n    }\n    function resetLastChars() {\n      twoLastChars[0] = twoLastChars[1] = \" \";\n      twoLastCharsPos = 0;\n    }\n    const TRACKING_SPACE_FACTOR = 0.102;\n    const NOT_A_SPACE_FACTOR = 0.03;\n    const NEGATIVE_SPACE_FACTOR = -0.2;\n    const SPACE_IN_FLOW_MIN_FACTOR = 0.102;\n    const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n    const VERTICAL_SHIFT_RATIO = 0.25;\n    const self = this;\n    const xref = this.xref;\n    const showSpacedTextBuffer = [];\n    let xobjs = null;\n    const emptyXObjectCache = new LocalImageCache();\n    const emptyGStateCache = new LocalGStateCache();\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    let textState;\n    function pushWhitespace({\n      width = 0,\n      height = 0,\n      transform = textContentItem.prevTransform,\n      fontName = textContentItem.fontName\n    }) {\n      textContent.items.push({\n        str: \" \",\n        dir: \"ltr\",\n        width,\n        height,\n        transform,\n        fontName,\n        hasEOL: false\n      });\n    }\n    function getCurrentTextTransform() {\n      const font = textState.font;\n      const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n      if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)) {\n        const glyphHeight = font.bbox[3] - font.bbox[1];\n        if (glyphHeight > 0) {\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\n        }\n      }\n      return Util.transform(textState.ctm, Util.transform(textState.textMatrix, tsm));\n    }\n    function ensureTextContentItem() {\n      if (textContentItem.initialized) {\n        return textContentItem;\n      }\n      const {\n        font,\n        loadedName\n      } = textState;\n      if (!seenStyles.has(loadedName)) {\n        seenStyles.add(loadedName);\n        textContent.styles[loadedName] = {\n          fontFamily: font.fallbackName,\n          ascent: font.ascent,\n          descent: font.descent,\n          vertical: font.vertical\n        };\n        if (self.options.fontExtraProperties && font.systemFontInfo) {\n          const style = textContent.styles[loadedName];\n          style.fontSubstitution = font.systemFontInfo.css;\n          style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName;\n        }\n      }\n      textContentItem.fontName = loadedName;\n      const trm = textContentItem.transform = getCurrentTextTransform();\n      if (!font.vertical) {\n        textContentItem.width = textContentItem.totalWidth = 0;\n        textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);\n        textContentItem.vertical = false;\n      } else {\n        textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);\n        textContentItem.height = textContentItem.totalHeight = 0;\n        textContentItem.vertical = true;\n      }\n      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n      const {\n        fontSize\n      } = textState;\n      textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR;\n      textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR;\n      textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR;\n      textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n      textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n      textContentItem.hasEOL = false;\n      textContentItem.initialized = true;\n      return textContentItem;\n    }\n    function updateAdvanceScale() {\n      if (!textContentItem.initialized) {\n        return;\n      }\n      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      const scaleFactor = scaleCtmX * scaleLineX;\n      if (scaleFactor === textContentItem.textAdvanceScale) {\n        return;\n      }\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n        textContentItem.width = 0;\n      } else {\n        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n        textContentItem.height = 0;\n      }\n      textContentItem.textAdvanceScale = scaleFactor;\n    }\n    function runBidiTransform(textChunk) {\n      let text = textChunk.str.join(\"\");\n      if (!disableNormalization) {\n        text = normalizeUnicode(text);\n      }\n      const bidiResult = bidi(text, -1, textChunk.vertical);\n      return {\n        str: bidiResult.str,\n        dir: bidiResult.dir,\n        width: Math.abs(textChunk.totalWidth),\n        height: Math.abs(textChunk.totalHeight),\n        transform: textChunk.transform,\n        fontName: textChunk.fontName,\n        hasEOL: textChunk.hasEOL\n      };\n    }\n    async function handleSetFont(fontName, fontRef) {\n      const translated = await self.loadFont(fontName, fontRef, resources);\n      if (translated.font.isType3Font) {\n        try {\n          await translated.loadType3Data(self, resources, task);\n        } catch {}\n      }\n      textState.loadedName = translated.loadedName;\n      textState.font = translated.font;\n      textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n    }\n    function applyInverseRotation(x, y, matrix) {\n      const scale = Math.hypot(matrix[0], matrix[1]);\n      return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale];\n    }\n    function compareWithLastPosition(glyphWidth) {\n      const currentTransform = getCurrentTextTransform();\n      let posX = currentTransform[4];\n      let posY = currentTransform[5];\n      if (textState.font?.vertical) {\n        if (posX < viewBox[0] || posX > viewBox[2] || posY + glyphWidth < viewBox[1] || posY > viewBox[3]) {\n          return false;\n        }\n      } else if (posX + glyphWidth < viewBox[0] || posX > viewBox[2] || posY < viewBox[1] || posY > viewBox[3]) {\n        return false;\n      }\n      if (!textState.font || !textContentItem.prevTransform) {\n        return true;\n      }\n      let lastPosX = textContentItem.prevTransform[4];\n      let lastPosY = textContentItem.prevTransform[5];\n      if (lastPosX === posX && lastPosY === posY) {\n        return true;\n      }\n      let rotate = -1;\n      if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) {\n        rotate = currentTransform[0] > 0 ? 0 : 180;\n      } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) {\n        rotate = currentTransform[1] > 0 ? 90 : 270;\n      }\n      switch (rotate) {\n        case 0:\n          break;\n        case 90:\n          [posX, posY] = [posY, posX];\n          [lastPosX, lastPosY] = [lastPosY, lastPosX];\n          break;\n        case 180:\n          [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY];\n          break;\n        case 270:\n          [posX, posY] = [-posY, -posX];\n          [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n          break;\n        default:\n          [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n          [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform);\n      }\n      if (textState.font.vertical) {\n        const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n        const advanceX = posX - lastPosX;\n        const textOrientation = Math.sign(textContentItem.height);\n        if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n          if (Math.abs(advanceX) > 0.5 * textContentItem.width) {\n            appendEOL();\n            return true;\n          }\n          resetLastChars();\n          flushTextContentItem();\n          return true;\n        }\n        if (Math.abs(advanceX) > textContentItem.width) {\n          appendEOL();\n          return true;\n        }\n        if (advanceY <= textOrientation * textContentItem.notASpace) {\n          resetLastChars();\n        }\n        if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n          if (shouldAddWhitepsace()) {\n            resetLastChars();\n            flushTextContentItem();\n            pushWhitespace({\n              height: Math.abs(advanceY)\n            });\n          } else {\n            textContentItem.height += advanceY;\n          }\n        } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {\n          if (textContentItem.str.length === 0) {\n            resetLastChars();\n            pushWhitespace({\n              height: Math.abs(advanceY)\n            });\n          } else {\n            textContentItem.height += advanceY;\n          }\n        }\n        if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) {\n          flushTextContentItem();\n        }\n        return true;\n      }\n      const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n      const advanceY = posY - lastPosY;\n      const textOrientation = Math.sign(textContentItem.width);\n      if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n        if (Math.abs(advanceY) > 0.5 * textContentItem.height) {\n          appendEOL();\n          return true;\n        }\n        resetLastChars();\n        flushTextContentItem();\n        return true;\n      }\n      if (Math.abs(advanceY) > textContentItem.height) {\n        appendEOL();\n        return true;\n      }\n      if (advanceX <= textOrientation * textContentItem.notASpace) {\n        resetLastChars();\n      }\n      if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n        if (shouldAddWhitepsace()) {\n          resetLastChars();\n          flushTextContentItem();\n          pushWhitespace({\n            width: Math.abs(advanceX)\n          });\n        } else {\n          textContentItem.width += advanceX;\n        }\n      } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {\n        if (textContentItem.str.length === 0) {\n          resetLastChars();\n          pushWhitespace({\n            width: Math.abs(advanceX)\n          });\n        } else {\n          textContentItem.width += advanceX;\n        }\n      }\n      if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) {\n        flushTextContentItem();\n      }\n      return true;\n    }\n    function buildTextContentItem({\n      chars,\n      extraSpacing\n    }) {\n      const font = textState.font;\n      if (!chars) {\n        const charSpacing = textState.charSpacing + extraSpacing;\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n        if (keepWhiteSpace) {\n          compareWithLastPosition(0);\n        }\n        return;\n      }\n      const glyphs = font.charsToGlyphs(chars);\n      const scale = textState.fontMatrix[0] * textState.fontSize;\n      for (let i = 0, ii = glyphs.length; i < ii; i++) {\n        const glyph = glyphs[i];\n        const {\n          category\n        } = glyph;\n        if (category.isInvisibleFormatMark) {\n          continue;\n        }\n        let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n        let glyphWidth = glyph.width;\n        if (font.vertical) {\n          glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n        }\n        let scaledDim = glyphWidth * scale;\n        if (!keepWhiteSpace && category.isWhitespace) {\n          if (!font.vertical) {\n            charSpacing += scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n          } else {\n            charSpacing += -scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n          saveLastChar(\" \");\n          continue;\n        }\n        if (!category.isZeroWidthDiacritic && !compareWithLastPosition(scaledDim)) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(scaledDim * textState.textHScale, 0);\n          } else {\n            textState.translateTextMatrix(0, scaledDim);\n          }\n          continue;\n        }\n        const textChunk = ensureTextContentItem();\n        if (category.isZeroWidthDiacritic) {\n          scaledDim = 0;\n        }\n        if (!font.vertical) {\n          scaledDim *= textState.textHScale;\n          textState.translateTextMatrix(scaledDim, 0);\n          textChunk.width += scaledDim;\n        } else {\n          textState.translateTextMatrix(0, scaledDim);\n          scaledDim = Math.abs(scaledDim);\n          textChunk.height += scaledDim;\n        }\n        if (scaledDim) {\n          textChunk.prevTransform = getCurrentTextTransform();\n        }\n        const glyphUnicode = glyph.unicode;\n        if (saveLastChar(glyphUnicode)) {\n          textChunk.str.push(\" \");\n        }\n        textChunk.str.push(glyphUnicode);\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n      }\n    }\n    function appendEOL() {\n      resetLastChars();\n      if (textContentItem.initialized) {\n        textContentItem.hasEOL = true;\n        flushTextContentItem();\n      } else {\n        textContent.items.push({\n          str: \"\",\n          dir: \"ltr\",\n          width: 0,\n          height: 0,\n          transform: getCurrentTextTransform(),\n          fontName: textState.loadedName,\n          hasEOL: true\n        });\n      }\n    }\n    function addFakeSpaces(width, transf, textOrientation) {\n      if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {\n        if (textContentItem.initialized) {\n          resetLastChars();\n          textContentItem.str.push(\" \");\n        }\n        return false;\n      }\n      const fontName = textContentItem.fontName;\n      let height = 0;\n      if (textContentItem.vertical) {\n        height = width;\n        width = 0;\n      }\n      flushTextContentItem();\n      resetLastChars();\n      pushWhitespace({\n        width: Math.abs(width),\n        height: Math.abs(height),\n        transform: transf || getCurrentTextTransform(),\n        fontName\n      });\n      return true;\n    }\n    function flushTextContentItem() {\n      if (!textContentItem.initialized || !textContentItem.str) {\n        return;\n      }\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n      } else {\n        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n      }\n      textContent.items.push(runBidiTransform(textContentItem));\n      textContentItem.initialized = false;\n      textContentItem.str.length = 0;\n    }\n    function enqueueChunk(batch = false) {\n      const length = textContent.items.length;\n      if (length === 0) {\n        return;\n      }\n      if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n        return;\n      }\n      sink.enqueue(textContent, length);\n      textContent.items = [];\n      textContent.styles = Object.create(null);\n    }\n    const timeSlotManager = new TimeSlotManager();\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        enqueueChunk(true);\n        Promise.all([promise, sink.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      const operation = {};\n      let stop,\n        name,\n        isValidName,\n        args = [];\n      while (!(stop = timeSlotManager.check())) {\n        args.length = 0;\n        operation.args = args;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        const previousState = textState;\n        textState = stateManager.state;\n        const fn = operation.fn;\n        args = operation.args;\n        switch (fn | 0) {\n          case OPS.setFont:\n            const fontNameArg = args[0].name,\n              fontSizeArg = args[1];\n            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n              break;\n            }\n            flushTextContentItem();\n            textState.fontName = fontNameArg;\n            textState.fontSize = fontSizeArg;\n            next(handleSetFont(fontNameArg, null));\n            return;\n          case OPS.setTextRise:\n            textState.textRise = args[0];\n            break;\n          case OPS.setHScale:\n            textState.textHScale = args[0] / 100;\n            break;\n          case OPS.setLeading:\n            textState.leading = args[0];\n            break;\n          case OPS.moveText:\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.setLeadingMoveText:\n            textState.leading = -args[1];\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.nextLine:\n            textState.carriageReturn();\n            break;\n          case OPS.setTextMatrix:\n            textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n            textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n            updateAdvanceScale();\n            break;\n          case OPS.setCharSpacing:\n            textState.charSpacing = args[0];\n            break;\n          case OPS.setWordSpacing:\n            textState.wordSpacing = args[0];\n            break;\n          case OPS.beginText:\n            textState.textMatrix = IDENTITY_MATRIX.slice();\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;\n            const elements = args[0];\n            for (let i = 0, ii = elements.length; i < ii; i++) {\n              const item = elements[i];\n              if (typeof item === \"string\") {\n                showSpacedTextBuffer.push(item);\n              } else if (typeof item === \"number\" && item !== 0) {\n                const str = showSpacedTextBuffer.join(\"\");\n                showSpacedTextBuffer.length = 0;\n                buildTextContentItem({\n                  chars: str,\n                  extraSpacing: item * spaceFactor\n                });\n              }\n            }\n            if (showSpacedTextBuffer.length > 0) {\n              const str = showSpacedTextBuffer.join(\"\");\n              showSpacedTextBuffer.length = 0;\n              buildTextContentItem({\n                chars: str,\n                extraSpacing: 0\n              });\n            }\n            break;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0\n            });\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0\n            });\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            textState.wordSpacing = args[0];\n            textState.charSpacing = args[1];\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[2],\n              extraSpacing: 0\n            });\n            break;\n          case OPS.paintXObject:\n            flushTextContentItem();\n            xobjs ??= resources.get(\"XObject\") || Dict.empty;\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n            if (isValidName && emptyXObjectCache.getByName(name)) {\n              break;\n            }\n            next(new Promise(function (resolveXObject, rejectXObject) {\n              if (!isValidName) {\n                throw new FormatError(\"XObject must be referred to by name.\");\n              }\n              let xobj = xobjs.getRaw(name);\n              if (xobj instanceof Ref) {\n                if (emptyXObjectCache.getByRef(xobj)) {\n                  resolveXObject();\n                  return;\n                }\n                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n                if (globalImage) {\n                  resolveXObject();\n                  return;\n                }\n                xobj = xref.fetch(xobj);\n              }\n              if (!(xobj instanceof BaseStream)) {\n                throw new FormatError(\"XObject should be a stream\");\n              }\n              const type = xobj.dict.get(\"Subtype\");\n              if (!(type instanceof Name)) {\n                throw new FormatError(\"XObject should have a Name subtype\");\n              }\n              if (type.name !== \"Form\") {\n                emptyXObjectCache.set(name, xobj.dict.objId, true);\n                resolveXObject();\n                return;\n              }\n              const currentState = stateManager.state.clone();\n              const xObjStateManager = new StateManager(currentState);\n              const matrix = lookupMatrix(xobj.dict.getArray(\"Matrix\"), null);\n              if (matrix) {\n                xObjStateManager.transform(matrix);\n              }\n              enqueueChunk();\n              const sinkWrapper = {\n                enqueueInvoked: false,\n                enqueue(chunk, size) {\n                  this.enqueueInvoked = true;\n                  sink.enqueue(chunk, size);\n                },\n                get desiredSize() {\n                  return sink.desiredSize;\n                },\n                get ready() {\n                  return sink.ready;\n                }\n              };\n              self.getTextContent({\n                stream: xobj,\n                task,\n                resources: xobj.dict.get(\"Resources\") || resources,\n                stateManager: xObjStateManager,\n                includeMarkedContent,\n                sink: sinkWrapper,\n                seenStyles,\n                viewBox,\n                lang,\n                markedContentData,\n                disableNormalization,\n                keepWhiteSpace\n              }).then(function () {\n                if (!sinkWrapper.enqueueInvoked) {\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n                }\n                resolveXObject();\n              }, rejectXObject);\n            }).catch(function (reason) {\n              if (reason instanceof AbortException) {\n                return;\n              }\n              if (self.options.ignoreErrors) {\n                warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                return;\n              }\n              throw reason;\n            }));\n            return;\n          case OPS.setGState:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n            if (isValidName && emptyGStateCache.getByName(name)) {\n              break;\n            }\n            next(new Promise(function (resolveGState, rejectGState) {\n              if (!isValidName) {\n                throw new FormatError(\"GState must be referred to by name.\");\n              }\n              const extGState = resources.get(\"ExtGState\");\n              if (!(extGState instanceof Dict)) {\n                throw new FormatError(\"ExtGState should be a dictionary.\");\n              }\n              const gState = extGState.get(name);\n              if (!(gState instanceof Dict)) {\n                throw new FormatError(\"GState should be a dictionary.\");\n              }\n              const gStateFont = gState.get(\"Font\");\n              if (!gStateFont) {\n                emptyGStateCache.set(name, gState.objId, true);\n                resolveGState();\n                return;\n              }\n              flushTextContentItem();\n              textState.fontName = null;\n              textState.fontSize = gStateFont[1];\n              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);\n            }).catch(function (reason) {\n              if (reason instanceof AbortException) {\n                return;\n              }\n              if (self.options.ignoreErrors) {\n                warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n                return;\n              }\n              throw reason;\n            }));\n            return;\n          case OPS.beginMarkedContent:\n            flushTextContentItem();\n            if (includeMarkedContent) {\n              markedContentData.level++;\n              textContent.items.push({\n                type: \"beginMarkedContent\",\n                tag: args[0] instanceof Name ? args[0].name : null\n              });\n            }\n            break;\n          case OPS.beginMarkedContentProps:\n            flushTextContentItem();\n            if (includeMarkedContent) {\n              markedContentData.level++;\n              let mcid = null;\n              if (args[1] instanceof Dict) {\n                mcid = args[1].get(\"MCID\");\n              }\n              textContent.items.push({\n                type: \"beginMarkedContentProps\",\n                id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mc${mcid}` : null,\n                tag: args[0] instanceof Name ? args[0].name : null\n              });\n            }\n            break;\n          case OPS.endMarkedContent:\n            flushTextContentItem();\n            if (includeMarkedContent) {\n              if (markedContentData.level === 0) {\n                break;\n              }\n              markedContentData.level--;\n              textContent.items.push({\n                type: \"endMarkedContent\"\n              });\n            }\n            break;\n          case OPS.restore:\n            if (previousState && (previousState.font !== textState.font || previousState.fontSize !== textState.fontSize || previousState.fontName !== textState.fontName)) {\n              flushTextContentItem();\n            }\n            break;\n        }\n        if (textContent.items.length >= sink.desiredSize) {\n          stop = true;\n          break;\n        }\n      }\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      flushTextContentItem();\n      enqueueChunk();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        warn(`getTextContent - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n        flushTextContentItem();\n        enqueueChunk();\n        return;\n      }\n      throw reason;\n    });\n  }\n  async extractDataStructures(dict, properties) {\n    const xref = this.xref;\n    let cidToGidBytes;\n    const toUnicodePromise = this.readToUnicode(properties.toUnicode);\n    if (properties.composite) {\n      const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n      if (cidSystemInfo instanceof Dict) {\n        properties.cidSystemInfo = {\n          registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n          ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n          supplement: cidSystemInfo.get(\"Supplement\")\n        };\n      }\n      try {\n        const cidToGidMap = dict.get(\"CIDToGIDMap\");\n        if (cidToGidMap instanceof BaseStream) {\n          cidToGidBytes = cidToGidMap.getBytes();\n        }\n      } catch (ex) {\n        if (!this.options.ignoreErrors) {\n          throw ex;\n        }\n        warn(`extractDataStructures - ignoring CIDToGIDMap data: \"${ex}\".`);\n      }\n    }\n    const differences = [];\n    let baseEncodingName = null;\n    let encoding;\n    if (dict.has(\"Encoding\")) {\n      encoding = dict.get(\"Encoding\");\n      if (encoding instanceof Dict) {\n        baseEncodingName = encoding.get(\"BaseEncoding\");\n        baseEncodingName = baseEncodingName instanceof Name ? baseEncodingName.name : null;\n        if (encoding.has(\"Differences\")) {\n          const diffEncoding = encoding.get(\"Differences\");\n          let index = 0;\n          for (const entry of diffEncoding) {\n            const data = xref.fetchIfRef(entry);\n            if (typeof data === \"number\") {\n              index = data;\n            } else if (data instanceof Name) {\n              differences[index++] = data.name;\n            } else {\n              throw new FormatError(`Invalid entry in 'Differences' array: ${data}`);\n            }\n          }\n        }\n      } else if (encoding instanceof Name) {\n        baseEncodingName = encoding.name;\n      } else {\n        const msg = \"Encoding is not a Name nor a Dict\";\n        if (!this.options.ignoreErrors) {\n          throw new FormatError(msg);\n        }\n        warn(msg);\n      }\n      if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n        baseEncodingName = null;\n      }\n    }\n    const nonEmbeddedFont = !properties.file || properties.isInternalFont,\n      isSymbolsFontName = getSymbolsFonts()[properties.name];\n    if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) {\n      baseEncodingName = null;\n    }\n    if (baseEncodingName) {\n      properties.defaultEncoding = getEncoding(baseEncodingName);\n    } else {\n      const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n      const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n      encoding = StandardEncoding;\n      if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n        encoding = WinAnsiEncoding;\n      }\n      if (isSymbolicFont || isSymbolsFontName) {\n        encoding = MacRomanEncoding;\n        if (nonEmbeddedFont) {\n          if (/Symbol/i.test(properties.name)) {\n            encoding = SymbolSetEncoding;\n          } else if (/Dingbats/i.test(properties.name)) {\n            encoding = ZapfDingbatsEncoding;\n          } else if (/Wingdings/i.test(properties.name)) {\n            encoding = WinAnsiEncoding;\n          }\n        }\n      }\n      properties.defaultEncoding = encoding;\n    }\n    properties.differences = differences;\n    properties.baseEncodingName = baseEncodingName;\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n    properties.dict = dict;\n    properties.toUnicode = await toUnicodePromise;\n    const builtToUnicode = await this.buildToUnicode(properties);\n    properties.toUnicode = builtToUnicode;\n    if (cidToGidBytes) {\n      properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);\n    }\n    return properties;\n  }\n  _simpleFontToUnicode(properties, forceGlyphs = false) {\n    assert(!properties.composite, \"Must be a simple font.\");\n    const toUnicode = [];\n    const encoding = properties.defaultEncoding.slice();\n    const baseEncodingName = properties.baseEncodingName;\n    const differences = properties.differences;\n    for (const charcode in differences) {\n      const glyphName = differences[charcode];\n      if (glyphName === \".notdef\") {\n        continue;\n      }\n      encoding[charcode] = glyphName;\n    }\n    const glyphsUnicodeMap = getGlyphsUnicode();\n    for (const charcode in encoding) {\n      let glyphName = encoding[charcode];\n      if (glyphName === \"\") {\n        continue;\n      }\n      let unicode = glyphsUnicodeMap[glyphName];\n      if (unicode !== undefined) {\n        toUnicode[charcode] = String.fromCharCode(unicode);\n        continue;\n      }\n      let code = 0;\n      switch (glyphName[0]) {\n        case \"G\":\n          if (glyphName.length === 3) {\n            code = parseInt(glyphName.substring(1), 16);\n          }\n          break;\n        case \"g\":\n          if (glyphName.length === 5) {\n            code = parseInt(glyphName.substring(1), 16);\n          }\n          break;\n        case \"C\":\n        case \"c\":\n          if (glyphName.length >= 3 && glyphName.length <= 4) {\n            const codeStr = glyphName.substring(1);\n            if (forceGlyphs) {\n              code = parseInt(codeStr, 16);\n              break;\n            }\n            code = +codeStr;\n            if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n              return this._simpleFontToUnicode(properties, true);\n            }\n          }\n          break;\n        case \"u\":\n          unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n          if (unicode !== -1) {\n            code = unicode;\n          }\n          break;\n        default:\n          switch (glyphName) {\n            case \"f_h\":\n            case \"f_t\":\n            case \"T_h\":\n              toUnicode[charcode] = glyphName.replaceAll(\"_\", \"\");\n              continue;\n          }\n          break;\n      }\n      if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n        if (baseEncodingName && code === +charcode) {\n          const baseEncoding = getEncoding(baseEncodingName);\n          if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n            toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n            continue;\n          }\n        }\n        toUnicode[charcode] = String.fromCodePoint(code);\n      }\n    }\n    return toUnicode;\n  }\n  async buildToUnicode(properties) {\n    properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0;\n    if (properties.hasIncludedToUnicodeMap) {\n      if (!properties.composite && properties.hasEncoding) {\n        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n      }\n      return properties.toUnicode;\n    }\n    if (!properties.composite) {\n      return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n    }\n    if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof IdentityCMap) || properties.cidSystemInfo?.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n      const {\n        registry,\n        ordering\n      } = properties.cidSystemInfo;\n      const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n      const ucs2CMap = await CMapFactory.create({\n        encoding: ucs2CMapName,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      });\n      const toUnicode = [],\n        buf = [];\n      properties.cMap.forEach(function (charcode, cid) {\n        if (cid > 0xffff) {\n          throw new FormatError(\"Max size of CID is 65,535\");\n        }\n        const ucs2 = ucs2CMap.lookup(cid);\n        if (ucs2) {\n          buf.length = 0;\n          for (let i = 0, ii = ucs2.length; i < ii; i += 2) {\n            buf.push((ucs2.charCodeAt(i) << 8) + ucs2.charCodeAt(i + 1));\n          }\n          toUnicode[charcode] = String.fromCharCode(...buf);\n        }\n      });\n      return new ToUnicodeMap(toUnicode);\n    }\n    return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n  }\n  async readToUnicode(cmapObj) {\n    if (!cmapObj) {\n      return null;\n    }\n    if (cmapObj instanceof Name) {\n      const cmap = await CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      });\n      if (cmap instanceof IdentityCMap) {\n        return new IdentityToUnicodeMap(0, 0xffff);\n      }\n      return new ToUnicodeMap(cmap.getMap());\n    }\n    if (cmapObj instanceof BaseStream) {\n      try {\n        const cmap = await CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n          useCMap: null\n        });\n        if (cmap instanceof IdentityCMap) {\n          return new IdentityToUnicodeMap(0, 0xffff);\n        }\n        const map = new Array(cmap.length);\n        cmap.forEach(function (charCode, token) {\n          if (typeof token === \"number\") {\n            map[charCode] = String.fromCodePoint(token);\n            return;\n          }\n          if (token.length % 2 !== 0) {\n            token = \"\\u0000\" + token;\n          }\n          const str = [];\n          for (let k = 0; k < token.length; k += 2) {\n            const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n            if ((w1 & 0xf800) !== 0xd800) {\n              str.push(w1);\n              continue;\n            }\n            k += 2;\n            const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n          }\n          map[charCode] = String.fromCodePoint(...str);\n        });\n        return new ToUnicodeMap(map);\n      } catch (reason) {\n        if (reason instanceof AbortException) {\n          return null;\n        }\n        if (this.options.ignoreErrors) {\n          warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n          return null;\n        }\n        throw reason;\n      }\n    }\n    return null;\n  }\n  readCidToGidMap(glyphsData, toUnicode) {\n    const result = [];\n    for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n      const glyphID = glyphsData[j++] << 8 | glyphsData[j];\n      const code = j >> 1;\n      if (glyphID === 0 && !toUnicode.has(code)) {\n        continue;\n      }\n      result[code] = glyphID;\n    }\n    return result;\n  }\n  extractWidths(dict, descriptor, properties) {\n    const xref = this.xref;\n    let glyphsWidths = [];\n    let defaultWidth = 0;\n    const glyphsVMetrics = [];\n    let defaultVMetrics;\n    if (properties.composite) {\n      const dw = dict.get(\"DW\");\n      defaultWidth = typeof dw === \"number\" ? Math.ceil(dw) : 1000;\n      const widths = dict.get(\"W\");\n      if (Array.isArray(widths)) {\n        for (let i = 0, ii = widths.length; i < ii; i++) {\n          let start = xref.fetchIfRef(widths[i++]);\n          if (!Number.isInteger(start)) {\n            break;\n          }\n          const code = xref.fetchIfRef(widths[i]);\n          if (Array.isArray(code)) {\n            for (const c of code) {\n              const width = xref.fetchIfRef(c);\n              if (typeof width === \"number\") {\n                glyphsWidths[start] = width;\n              }\n              start++;\n            }\n          } else if (Number.isInteger(code)) {\n            const width = xref.fetchIfRef(widths[++i]);\n            if (typeof width !== \"number\") {\n              continue;\n            }\n            for (let j = start; j <= code; j++) {\n              glyphsWidths[j] = width;\n            }\n          } else {\n            break;\n          }\n        }\n      }\n      if (properties.vertical) {\n        const dw2 = dict.getArray(\"DW2\");\n        let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000];\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n        vmetrics = dict.get(\"W2\");\n        if (Array.isArray(vmetrics)) {\n          for (let i = 0, ii = vmetrics.length; i < ii; i++) {\n            let start = xref.fetchIfRef(vmetrics[i++]);\n            if (!Number.isInteger(start)) {\n              break;\n            }\n            const code = xref.fetchIfRef(vmetrics[i]);\n            if (Array.isArray(code)) {\n              for (let j = 0, jj = code.length; j < jj; j++) {\n                const vmetric = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n                if (isNumberArray(vmetric, null)) {\n                  glyphsVMetrics[start] = vmetric;\n                }\n                start++;\n              }\n            } else if (Number.isInteger(code)) {\n              const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n              if (!isNumberArray(vmetric, null)) {\n                continue;\n              }\n              for (let j = start; j <= code; j++) {\n                glyphsVMetrics[j] = vmetric;\n              }\n            } else {\n              break;\n            }\n          }\n        }\n      }\n    } else {\n      const widths = dict.get(\"Widths\");\n      if (Array.isArray(widths)) {\n        let j = properties.firstChar;\n        for (const w of widths) {\n          const width = xref.fetchIfRef(w);\n          if (typeof width === \"number\") {\n            glyphsWidths[j] = width;\n          }\n          j++;\n        }\n        const missingWidth = descriptor.get(\"MissingWidth\");\n        defaultWidth = typeof missingWidth === \"number\" ? missingWidth : 0;\n      } else {\n        const baseFontName = dict.get(\"BaseFont\");\n        if (baseFontName instanceof Name) {\n          const metrics = this.getBaseFontMetrics(baseFontName.name);\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n          defaultWidth = metrics.defaultWidth;\n        }\n      }\n    }\n    let isMonospace = true;\n    let firstWidth = defaultWidth;\n    for (const glyph in glyphsWidths) {\n      const glyphWidth = glyphsWidths[glyph];\n      if (!glyphWidth) {\n        continue;\n      }\n      if (!firstWidth) {\n        firstWidth = glyphWidth;\n        continue;\n      }\n      if (firstWidth !== glyphWidth) {\n        isMonospace = false;\n        break;\n      }\n    }\n    if (isMonospace) {\n      properties.flags |= FontFlags.FixedPitch;\n    } else {\n      properties.flags &= ~FontFlags.FixedPitch;\n    }\n    properties.defaultWidth = defaultWidth;\n    properties.widths = glyphsWidths;\n    properties.defaultVMetrics = defaultVMetrics;\n    properties.vmetrics = glyphsVMetrics;\n  }\n  isSerifFont(baseFontName) {\n    const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n    return fontNameWoStyle in getSerifFonts() || /serif/gi.test(fontNameWoStyle);\n  }\n  getBaseFontMetrics(name) {\n    let defaultWidth = 0;\n    let widths = Object.create(null);\n    let monospace = false;\n    const stdFontMap = getStdFontMap();\n    let lookupName = stdFontMap[name] || name;\n    const Metrics = getMetrics();\n    if (!(lookupName in Metrics)) {\n      lookupName = this.isSerifFont(name) ? \"Times-Roman\" : \"Helvetica\";\n    }\n    const glyphWidths = Metrics[lookupName];\n    if (typeof glyphWidths === \"number\") {\n      defaultWidth = glyphWidths;\n      monospace = true;\n    } else {\n      widths = glyphWidths();\n    }\n    return {\n      defaultWidth,\n      monospace,\n      widths\n    };\n  }\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\n    const widths = Object.create(null);\n    const differences = properties.differences;\n    const encoding = properties.defaultEncoding;\n    for (let charCode = 0; charCode < 256; charCode++) {\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\n        continue;\n      }\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\n        continue;\n      }\n    }\n    return widths;\n  }\n  preEvaluateFont(dict) {\n    const baseDict = dict;\n    let type = dict.get(\"Subtype\");\n    if (!(type instanceof Name)) {\n      throw new FormatError(\"invalid font Subtype\");\n    }\n    let composite = false;\n    let hash;\n    if (type.name === \"Type0\") {\n      const df = dict.get(\"DescendantFonts\");\n      if (!df) {\n        throw new FormatError(\"Descendant fonts are not specified\");\n      }\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n      if (!(dict instanceof Dict)) {\n        throw new FormatError(\"Descendant font is not a dictionary.\");\n      }\n      type = dict.get(\"Subtype\");\n      if (!(type instanceof Name)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n      composite = true;\n    }\n    let firstChar = dict.get(\"FirstChar\");\n    if (!Number.isInteger(firstChar)) {\n      firstChar = 0;\n    }\n    let lastChar = dict.get(\"LastChar\");\n    if (!Number.isInteger(lastChar)) {\n      lastChar = composite ? 0xffff : 0xff;\n    }\n    const descriptor = dict.get(\"FontDescriptor\");\n    const toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n    if (descriptor) {\n      hash = new MurmurHash3_64();\n      const encoding = baseDict.getRaw(\"Encoding\");\n      if (encoding instanceof Name) {\n        hash.update(encoding.name);\n      } else if (encoding instanceof Ref) {\n        hash.update(encoding.toString());\n      } else if (encoding instanceof Dict) {\n        for (const entry of encoding.getRawValues()) {\n          if (entry instanceof Name) {\n            hash.update(entry.name);\n          } else if (entry instanceof Ref) {\n            hash.update(entry.toString());\n          } else if (Array.isArray(entry)) {\n            const diffLength = entry.length,\n              diffBuf = new Array(diffLength);\n            for (let j = 0; j < diffLength; j++) {\n              const diffEntry = entry[j];\n              if (diffEntry instanceof Name) {\n                diffBuf[j] = diffEntry.name;\n              } else if (typeof diffEntry === \"number\" || diffEntry instanceof Ref) {\n                diffBuf[j] = diffEntry.toString();\n              }\n            }\n            hash.update(diffBuf.join());\n          }\n        }\n      }\n      hash.update(`${firstChar}-${lastChar}`);\n      if (toUnicode instanceof BaseStream) {\n        const stream = toUnicode.str || toUnicode;\n        const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n        hash.update(uint8array);\n      } else if (toUnicode instanceof Name) {\n        hash.update(toUnicode.name);\n      }\n      const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n      if (Array.isArray(widths)) {\n        const widthsBuf = [];\n        for (const entry of widths) {\n          if (typeof entry === \"number\" || entry instanceof Ref) {\n            widthsBuf.push(entry.toString());\n          }\n        }\n        hash.update(widthsBuf.join());\n      }\n      if (composite) {\n        hash.update(\"compositeFont\");\n        const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n        if (Array.isArray(compositeWidths)) {\n          const widthsBuf = [];\n          for (const entry of compositeWidths) {\n            if (typeof entry === \"number\" || entry instanceof Ref) {\n              widthsBuf.push(entry.toString());\n            } else if (Array.isArray(entry)) {\n              const subWidthsBuf = [];\n              for (const element of entry) {\n                if (typeof element === \"number\" || element instanceof Ref) {\n                  subWidthsBuf.push(element.toString());\n                }\n              }\n              widthsBuf.push(`[${subWidthsBuf.join()}]`);\n            }\n          }\n          hash.update(widthsBuf.join());\n        }\n        const cidToGidMap = dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n        if (cidToGidMap instanceof Name) {\n          hash.update(cidToGidMap.name);\n        } else if (cidToGidMap instanceof Ref) {\n          hash.update(cidToGidMap.toString());\n        } else if (cidToGidMap instanceof BaseStream) {\n          hash.update(cidToGidMap.peekBytes());\n        }\n      }\n    }\n    return {\n      descriptor,\n      dict,\n      baseDict,\n      composite,\n      type: type.name,\n      firstChar,\n      lastChar,\n      toUnicode,\n      hash: hash ? hash.hexdigest() : \"\"\n    };\n  }\n  async translateFont({\n    descriptor,\n    dict,\n    baseDict,\n    composite,\n    type,\n    firstChar,\n    lastChar,\n    toUnicode,\n    cssFontInfo\n  }) {\n    const isType3Font = type === \"Type3\";\n    if (!descriptor) {\n      if (isType3Font) {\n        const bbox = lookupNormalRect(dict.getArray(\"FontBBox\"), [0, 0, 0, 0]);\n        descriptor = new Dict(null);\n        descriptor.set(\"FontName\", Name.get(type));\n        descriptor.set(\"FontBBox\", bbox);\n      } else {\n        let baseFontName = dict.get(\"BaseFont\");\n        if (!(baseFontName instanceof Name)) {\n          throw new FormatError(\"Base font is not specified\");\n        }\n        baseFontName = baseFontName.name.replaceAll(/[,_]/g, \"-\");\n        const metrics = this.getBaseFontMetrics(baseFontName);\n        const fontNameWoStyle = baseFontName.split(\"-\", 1)[0];\n        const flags = (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) | (metrics.monospace ? FontFlags.FixedPitch : 0) | (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic : FontFlags.Nonsymbolic);\n        const properties = {\n          type,\n          name: baseFontName,\n          loadedName: baseDict.loadedName,\n          systemFontInfo: null,\n          widths: metrics.widths,\n          defaultWidth: metrics.defaultWidth,\n          isSimulatedFlags: true,\n          flags,\n          firstChar,\n          lastChar,\n          toUnicode,\n          xHeight: 0,\n          capHeight: 0,\n          italicAngle: 0,\n          isType3Font\n        };\n        const widths = dict.get(\"Widths\");\n        const standardFontName = getStandardFontName(baseFontName);\n        let file = null;\n        if (standardFontName) {\n          file = await this.fetchStandardFontData(standardFontName);\n          properties.isInternalFont = !!file;\n        }\n        if (!properties.isInternalFont && this.options.useSystemFonts) {\n          properties.systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, baseFontName, standardFontName, type);\n        }\n        const newProperties = await this.extractDataStructures(dict, properties);\n        if (Array.isArray(widths)) {\n          const glyphWidths = [];\n          let j = firstChar;\n          for (const w of widths) {\n            const width = this.xref.fetchIfRef(w);\n            if (typeof width === \"number\") {\n              glyphWidths[j] = width;\n            }\n            j++;\n          }\n          newProperties.widths = glyphWidths;\n        } else {\n          newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n        }\n        return new Font(baseFontName, file, newProperties);\n      }\n    }\n    let fontName = descriptor.get(\"FontName\");\n    let baseFont = dict.get(\"BaseFont\");\n    if (typeof fontName === \"string\") {\n      fontName = Name.get(fontName);\n    }\n    if (typeof baseFont === \"string\") {\n      baseFont = Name.get(baseFont);\n    }\n    const fontNameStr = fontName?.name;\n    const baseFontStr = baseFont?.name;\n    if (!isType3Font && fontNameStr !== baseFontStr) {\n      info(`The FontDescriptor's FontName is \"${fontNameStr}\" but ` + `should be the same as the Font's BaseFont \"${baseFontStr}\".`);\n      if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr))) {\n        fontName = null;\n      }\n    }\n    fontName ||= baseFont;\n    if (!(fontName instanceof Name)) {\n      throw new FormatError(\"invalid font name\");\n    }\n    let fontFile, subtype, length1, length2, length3;\n    try {\n      fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n      if (fontFile) {\n        if (!(fontFile instanceof BaseStream)) {\n          throw new FormatError(\"FontFile should be a stream\");\n        } else if (fontFile.isEmpty) {\n          throw new FormatError(\"FontFile is empty\");\n        }\n      }\n    } catch (ex) {\n      if (!this.options.ignoreErrors) {\n        throw ex;\n      }\n      warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n      fontFile = null;\n    }\n    let isInternalFont = false;\n    let glyphScaleFactors = null;\n    let systemFontInfo = null;\n    if (fontFile) {\n      if (fontFile.dict) {\n        const subtypeEntry = fontFile.dict.get(\"Subtype\");\n        if (subtypeEntry instanceof Name) {\n          subtype = subtypeEntry.name;\n        }\n        length1 = fontFile.dict.get(\"Length1\");\n        length2 = fontFile.dict.get(\"Length2\");\n        length3 = fontFile.dict.get(\"Length3\");\n      }\n    } else if (cssFontInfo) {\n      const standardFontName = getXfaFontName(fontName.name);\n      if (standardFontName) {\n        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n        cssFontInfo.metrics = standardFontName.metrics || null;\n        glyphScaleFactors = standardFontName.factors || null;\n        fontFile = await this.fetchStandardFontData(standardFontName.name);\n        isInternalFont = !!fontFile;\n        baseDict = dict = getXfaFontDict(fontName.name);\n        composite = true;\n      }\n    } else if (!isType3Font) {\n      const standardFontName = getStandardFontName(fontName.name);\n      if (standardFontName) {\n        fontFile = await this.fetchStandardFontData(standardFontName);\n        isInternalFont = !!fontFile;\n      }\n      if (!isInternalFont && this.options.useSystemFonts) {\n        systemFontInfo = getFontSubstitution(this.systemFontCache, this.idFactory, this.options.standardFontDataUrl, fontName.name, standardFontName, type);\n      }\n    }\n    const fontMatrix = lookupMatrix(dict.getArray(\"FontMatrix\"), FONT_IDENTITY_MATRIX);\n    const bbox = lookupNormalRect(descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"), undefined);\n    let ascent = descriptor.get(\"Ascent\");\n    if (typeof ascent !== \"number\") {\n      ascent = undefined;\n    }\n    let descent = descriptor.get(\"Descent\");\n    if (typeof descent !== \"number\") {\n      descent = undefined;\n    }\n    let xHeight = descriptor.get(\"XHeight\");\n    if (typeof xHeight !== \"number\") {\n      xHeight = 0;\n    }\n    let capHeight = descriptor.get(\"CapHeight\");\n    if (typeof capHeight !== \"number\") {\n      capHeight = 0;\n    }\n    let flags = descriptor.get(\"Flags\");\n    if (!Number.isInteger(flags)) {\n      flags = 0;\n    }\n    let italicAngle = descriptor.get(\"ItalicAngle\");\n    if (typeof italicAngle !== \"number\") {\n      italicAngle = 0;\n    }\n    const properties = {\n      type,\n      name: fontName.name,\n      subtype,\n      file: fontFile,\n      length1,\n      length2,\n      length3,\n      isInternalFont,\n      loadedName: baseDict.loadedName,\n      composite,\n      fixedPitch: false,\n      fontMatrix,\n      firstChar,\n      lastChar,\n      toUnicode,\n      bbox,\n      ascent,\n      descent,\n      xHeight,\n      capHeight,\n      flags,\n      italicAngle,\n      isType3Font,\n      cssFontInfo,\n      scaleFactors: glyphScaleFactors,\n      systemFontInfo\n    };\n    if (composite) {\n      const cidEncoding = baseDict.get(\"Encoding\");\n      if (cidEncoding instanceof Name) {\n        properties.cidEncoding = cidEncoding.name;\n      }\n      const cMap = await CMapFactory.create({\n        encoding: cidEncoding,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      });\n      properties.cMap = cMap;\n      properties.vertical = properties.cMap.vertical;\n    }\n    const newProperties = await this.extractDataStructures(dict, properties);\n    this.extractWidths(dict, descriptor, newProperties);\n    return new Font(fontName.name, fontFile, newProperties);\n  }\n  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n    function buildPath(fontChar) {\n      const glyphName = `${font.loadedName}_path_${fontChar}`;\n      try {\n        if (font.renderer.hasBuiltPath(fontChar)) {\n          return;\n        }\n        handler.send(\"commonobj\", [glyphName, \"FontPath\", font.renderer.getPathJs(fontChar)]);\n      } catch (reason) {\n        if (evaluatorOptions.ignoreErrors) {\n          warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n          return;\n        }\n        throw reason;\n      }\n    }\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n      const accent = glyph.accent;\n      if (accent?.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  }\n  static get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"Helvetica\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\nclass TranslatedFont {\n  constructor({\n    loadedName,\n    font,\n    dict,\n    evaluatorOptions\n  }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n    this.type3Loaded = null;\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\n    this.sent = false;\n  }\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n    this.sent = true;\n    handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]);\n  }\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n    this.font.disableFontFace = true;\n    PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions);\n  }\n  loadType3Data(evaluator, resources, task) {\n    if (this.type3Loaded) {\n      return this.type3Loaded;\n    }\n    if (!this.font.isType3Font) {\n      throw new Error(\"Must be a Type3 font.\");\n    }\n    const type3Evaluator = evaluator.clone({\n      ignoreErrors: false\n    });\n    const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n    if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n      type3FontRefs.put(this.dict.objId);\n    }\n    type3Evaluator.type3FontRefs = type3FontRefs;\n    const translatedFont = this.font,\n      type3Dependencies = this.type3Dependencies;\n    let loadCharProcsPromise = Promise.resolve();\n    const charProcs = this.dict.get(\"CharProcs\");\n    const fontResources = this.dict.get(\"Resources\") || resources;\n    const charProcOperatorList = Object.create(null);\n    const fontBBox = Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]),\n      width = fontBBox[2] - fontBBox[0],\n      height = fontBBox[3] - fontBBox[1];\n    const fontBBoxSize = Math.hypot(width, height);\n    for (const key of charProcs.getKeys()) {\n      loadCharProcsPromise = loadCharProcsPromise.then(() => {\n        const glyphStream = charProcs.get(key);\n        const operatorList = new OperatorList();\n        return type3Evaluator.getOperatorList({\n          stream: glyphStream,\n          task,\n          resources: fontResources,\n          operatorList\n        }).then(() => {\n          if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n            this._removeType3ColorOperators(operatorList, fontBBoxSize);\n          }\n          charProcOperatorList[key] = operatorList.getIR();\n          for (const dependency of operatorList.dependencies) {\n            type3Dependencies.add(dependency);\n          }\n        }).catch(function (reason) {\n          warn(`Type3 font resource \"${key}\" is not available.`);\n          const dummyOperatorList = new OperatorList();\n          charProcOperatorList[key] = dummyOperatorList.getIR();\n        });\n      });\n    }\n    this.type3Loaded = loadCharProcsPromise.then(() => {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n      if (this._bbox) {\n        translatedFont.isCharBBox = true;\n        translatedFont.bbox = this._bbox;\n      }\n    });\n    return this.type3Loaded;\n  }\n  _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n    const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\n      width = charBBox[2] - charBBox[0],\n      height = charBBox[3] - charBBox[1];\n    const charBBoxSize = Math.hypot(width, height);\n    if (width === 0 || height === 0) {\n      operatorList.fnArray.splice(0, 1);\n      operatorList.argsArray.splice(0, 1);\n    } else if (fontBBoxSize === 0 || Math.round(charBBoxSize / fontBBoxSize) >= 10) {\n      if (!this._bbox) {\n        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      }\n      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n    }\n    let i = 0,\n      ii = operatorList.length;\n    while (i < ii) {\n      switch (operatorList.fnArray[i]) {\n        case OPS.setCharWidthAndBounds:\n          break;\n        case OPS.setStrokeColorSpace:\n        case OPS.setFillColorSpace:\n        case OPS.setStrokeColor:\n        case OPS.setStrokeColorN:\n        case OPS.setFillColor:\n        case OPS.setFillColorN:\n        case OPS.setStrokeGray:\n        case OPS.setFillGray:\n        case OPS.setStrokeRGBColor:\n        case OPS.setFillRGBColor:\n        case OPS.setStrokeCMYKColor:\n        case OPS.setFillCMYKColor:\n        case OPS.shadingFill:\n        case OPS.setRenderingIntent:\n          operatorList.fnArray.splice(i, 1);\n          operatorList.argsArray.splice(i, 1);\n          ii--;\n          continue;\n        case OPS.setGState:\n          const [gStateObj] = operatorList.argsArray[i];\n          let j = 0,\n            jj = gStateObj.length;\n          while (j < jj) {\n            const [gStateKey] = gStateObj[j];\n            switch (gStateKey) {\n              case \"TR\":\n              case \"TR2\":\n              case \"HT\":\n              case \"BG\":\n              case \"BG2\":\n              case \"UCR\":\n              case \"UCR2\":\n                gStateObj.splice(j, 1);\n                jj--;\n                continue;\n            }\n            j++;\n          }\n          break;\n      }\n      i++;\n    }\n  }\n}\nclass StateManager {\n  constructor(initialState = new EvalState()) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n  save() {\n    const old = this.state;\n    this.stateStack.push(this.state);\n    this.state = old.clone();\n  }\n  restore() {\n    const prev = this.stateStack.pop();\n    if (prev) {\n      this.state = prev;\n    }\n  }\n  transform(args) {\n    this.state.ctm = Util.transform(this.state.ctm, args);\n  }\n}\nclass TextState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.loadedName = null;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n  setTextMatrix(a, b, c, d, e, f) {\n    const m = this.textMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n  setTextLineMatrix(a, b, c, d, e, f) {\n    const m = this.textLineMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n  translateTextMatrix(x, y) {\n    const m = this.textMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n  translateTextLineMatrix(x, y) {\n    const m = this.textLineMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n  carriageReturn() {\n    this.translateTextLineMatrix(0, -this.leading);\n    this.textMatrix = this.textLineMatrix.slice();\n  }\n  clone() {\n    const clone = Object.create(this);\n    clone.textMatrix = this.textMatrix.slice();\n    clone.textLineMatrix = this.textLineMatrix.slice();\n    clone.fontMatrix = this.fontMatrix.slice();\n    return clone;\n  }\n}\nclass EvalState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this._fillColorSpace = ColorSpace.singletons.gray;\n    this._strokeColorSpace = ColorSpace.singletons.gray;\n    this.patternFillColorSpace = null;\n    this.patternStrokeColorSpace = null;\n  }\n  get fillColorSpace() {\n    return this._fillColorSpace;\n  }\n  set fillColorSpace(colorSpace) {\n    this._fillColorSpace = this.patternFillColorSpace = colorSpace;\n  }\n  get strokeColorSpace() {\n    return this._strokeColorSpace;\n  }\n  set strokeColorSpace(colorSpace) {\n    this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;\n  }\n  clone() {\n    return Object.create(this);\n  }\n}\nclass EvaluatorPreprocessor {\n  static get opMap() {\n    return shadow(this, \"opMap\", Object.assign(Object.create(null), {\n      w: {\n        id: OPS.setLineWidth,\n        numArgs: 1,\n        variableArgs: false\n      },\n      J: {\n        id: OPS.setLineCap,\n        numArgs: 1,\n        variableArgs: false\n      },\n      j: {\n        id: OPS.setLineJoin,\n        numArgs: 1,\n        variableArgs: false\n      },\n      M: {\n        id: OPS.setMiterLimit,\n        numArgs: 1,\n        variableArgs: false\n      },\n      d: {\n        id: OPS.setDash,\n        numArgs: 2,\n        variableArgs: false\n      },\n      ri: {\n        id: OPS.setRenderingIntent,\n        numArgs: 1,\n        variableArgs: false\n      },\n      i: {\n        id: OPS.setFlatness,\n        numArgs: 1,\n        variableArgs: false\n      },\n      gs: {\n        id: OPS.setGState,\n        numArgs: 1,\n        variableArgs: false\n      },\n      q: {\n        id: OPS.save,\n        numArgs: 0,\n        variableArgs: false\n      },\n      Q: {\n        id: OPS.restore,\n        numArgs: 0,\n        variableArgs: false\n      },\n      cm: {\n        id: OPS.transform,\n        numArgs: 6,\n        variableArgs: false\n      },\n      m: {\n        id: OPS.moveTo,\n        numArgs: 2,\n        variableArgs: false\n      },\n      l: {\n        id: OPS.lineTo,\n        numArgs: 2,\n        variableArgs: false\n      },\n      c: {\n        id: OPS.curveTo,\n        numArgs: 6,\n        variableArgs: false\n      },\n      v: {\n        id: OPS.curveTo2,\n        numArgs: 4,\n        variableArgs: false\n      },\n      y: {\n        id: OPS.curveTo3,\n        numArgs: 4,\n        variableArgs: false\n      },\n      h: {\n        id: OPS.closePath,\n        numArgs: 0,\n        variableArgs: false\n      },\n      re: {\n        id: OPS.rectangle,\n        numArgs: 4,\n        variableArgs: false\n      },\n      S: {\n        id: OPS.stroke,\n        numArgs: 0,\n        variableArgs: false\n      },\n      s: {\n        id: OPS.closeStroke,\n        numArgs: 0,\n        variableArgs: false\n      },\n      f: {\n        id: OPS.fill,\n        numArgs: 0,\n        variableArgs: false\n      },\n      F: {\n        id: OPS.fill,\n        numArgs: 0,\n        variableArgs: false\n      },\n      \"f*\": {\n        id: OPS.eoFill,\n        numArgs: 0,\n        variableArgs: false\n      },\n      B: {\n        id: OPS.fillStroke,\n        numArgs: 0,\n        variableArgs: false\n      },\n      \"B*\": {\n        id: OPS.eoFillStroke,\n        numArgs: 0,\n        variableArgs: false\n      },\n      b: {\n        id: OPS.closeFillStroke,\n        numArgs: 0,\n        variableArgs: false\n      },\n      \"b*\": {\n        id: OPS.closeEOFillStroke,\n        numArgs: 0,\n        variableArgs: false\n      },\n      n: {\n        id: OPS.endPath,\n        numArgs: 0,\n        variableArgs: false\n      },\n      W: {\n        id: OPS.clip,\n        numArgs: 0,\n        variableArgs: false\n      },\n      \"W*\": {\n        id: OPS.eoClip,\n        numArgs: 0,\n        variableArgs: false\n      },\n      BT: {\n        id: OPS.beginText,\n        numArgs: 0,\n        variableArgs: false\n      },\n      ET: {\n        id: OPS.endText,\n        numArgs: 0,\n        variableArgs: false\n      },\n      Tc: {\n        id: OPS.setCharSpacing,\n        numArgs: 1,\n        variableArgs: false\n      },\n      Tw: {\n        id: OPS.setWordSpacing,\n        numArgs: 1,\n        variableArgs: false\n      },\n      Tz: {\n        id: OPS.setHScale,\n        numArgs: 1,\n        variableArgs: false\n      },\n      TL: {\n        id: OPS.setLeading,\n        numArgs: 1,\n        variableArgs: false\n      },\n      Tf: {\n        id: OPS.setFont,\n        numArgs: 2,\n        variableArgs: false\n      },\n      Tr: {\n        id: OPS.setTextRenderingMode,\n        numArgs: 1,\n        variableArgs: false\n      },\n      Ts: {\n        id: OPS.setTextRise,\n        numArgs: 1,\n        variableArgs: false\n      },\n      Td: {\n        id: OPS.moveText,\n        numArgs: 2,\n        variableArgs: false\n      },\n      TD: {\n        id: OPS.setLeadingMoveText,\n        numArgs: 2,\n        variableArgs: false\n      },\n      Tm: {\n        id: OPS.setTextMatrix,\n        numArgs: 6,\n        variableArgs: false\n      },\n      \"T*\": {\n        id: OPS.nextLine,\n        numArgs: 0,\n        variableArgs: false\n      },\n      Tj: {\n        id: OPS.showText,\n        numArgs: 1,\n        variableArgs: false\n      },\n      TJ: {\n        id: OPS.showSpacedText,\n        numArgs: 1,\n        variableArgs: false\n      },\n      \"'\": {\n        id: OPS.nextLineShowText,\n        numArgs: 1,\n        variableArgs: false\n      },\n      '\"': {\n        id: OPS.nextLineSetSpacingShowText,\n        numArgs: 3,\n        variableArgs: false\n      },\n      d0: {\n        id: OPS.setCharWidth,\n        numArgs: 2,\n        variableArgs: false\n      },\n      d1: {\n        id: OPS.setCharWidthAndBounds,\n        numArgs: 6,\n        variableArgs: false\n      },\n      CS: {\n        id: OPS.setStrokeColorSpace,\n        numArgs: 1,\n        variableArgs: false\n      },\n      cs: {\n        id: OPS.setFillColorSpace,\n        numArgs: 1,\n        variableArgs: false\n      },\n      SC: {\n        id: OPS.setStrokeColor,\n        numArgs: 4,\n        variableArgs: true\n      },\n      SCN: {\n        id: OPS.setStrokeColorN,\n        numArgs: 33,\n        variableArgs: true\n      },\n      sc: {\n        id: OPS.setFillColor,\n        numArgs: 4,\n        variableArgs: true\n      },\n      scn: {\n        id: OPS.setFillColorN,\n        numArgs: 33,\n        variableArgs: true\n      },\n      G: {\n        id: OPS.setStrokeGray,\n        numArgs: 1,\n        variableArgs: false\n      },\n      g: {\n        id: OPS.setFillGray,\n        numArgs: 1,\n        variableArgs: false\n      },\n      RG: {\n        id: OPS.setStrokeRGBColor,\n        numArgs: 3,\n        variableArgs: false\n      },\n      rg: {\n        id: OPS.setFillRGBColor,\n        numArgs: 3,\n        variableArgs: false\n      },\n      K: {\n        id: OPS.setStrokeCMYKColor,\n        numArgs: 4,\n        variableArgs: false\n      },\n      k: {\n        id: OPS.setFillCMYKColor,\n        numArgs: 4,\n        variableArgs: false\n      },\n      sh: {\n        id: OPS.shadingFill,\n        numArgs: 1,\n        variableArgs: false\n      },\n      BI: {\n        id: OPS.beginInlineImage,\n        numArgs: 0,\n        variableArgs: false\n      },\n      ID: {\n        id: OPS.beginImageData,\n        numArgs: 0,\n        variableArgs: false\n      },\n      EI: {\n        id: OPS.endInlineImage,\n        numArgs: 1,\n        variableArgs: false\n      },\n      Do: {\n        id: OPS.paintXObject,\n        numArgs: 1,\n        variableArgs: false\n      },\n      MP: {\n        id: OPS.markPoint,\n        numArgs: 1,\n        variableArgs: false\n      },\n      DP: {\n        id: OPS.markPointProps,\n        numArgs: 2,\n        variableArgs: false\n      },\n      BMC: {\n        id: OPS.beginMarkedContent,\n        numArgs: 1,\n        variableArgs: false\n      },\n      BDC: {\n        id: OPS.beginMarkedContentProps,\n        numArgs: 2,\n        variableArgs: false\n      },\n      EMC: {\n        id: OPS.endMarkedContent,\n        numArgs: 0,\n        variableArgs: false\n      },\n      BX: {\n        id: OPS.beginCompat,\n        numArgs: 0,\n        variableArgs: false\n      },\n      EX: {\n        id: OPS.endCompat,\n        numArgs: 0,\n        variableArgs: false\n      },\n      BM: null,\n      BD: null,\n      true: null,\n      fa: null,\n      fal: null,\n      fals: null,\n      false: null,\n      nu: null,\n      nul: null,\n      null: null\n    }));\n  }\n  static MAX_INVALID_PATH_OPS = 10;\n  constructor(stream, xref, stateManager = new StateManager()) {\n    this.parser = new Parser({\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n      xref\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._isPathOp = false;\n    this._numInvalidPathOPS = 0;\n  }\n  get savedStatesDepth() {\n    return this.stateManager.stateStack.length;\n  }\n  read(operation) {\n    let args = operation.args;\n    while (true) {\n      const obj = this.parser.getObj();\n      if (obj instanceof Cmd) {\n        const cmd = obj.cmd;\n        const opSpec = EvaluatorPreprocessor.opMap[cmd];\n        if (!opSpec) {\n          warn(`Unknown command \"${cmd}\".`);\n          continue;\n        }\n        const fn = opSpec.id;\n        const numArgs = opSpec.numArgs;\n        let argsLength = args !== null ? args.length : 0;\n        if (!this._isPathOp) {\n          this._numInvalidPathOPS = 0;\n        }\n        this._isPathOp = fn >= OPS.moveTo && fn <= OPS.endPath;\n        if (!opSpec.variableArgs) {\n          if (argsLength !== numArgs) {\n            const nonProcessedArgs = this.nonProcessedArgs;\n            while (argsLength > numArgs) {\n              nonProcessedArgs.push(args.shift());\n              argsLength--;\n            }\n            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n              if (args === null) {\n                args = [];\n              }\n              args.unshift(nonProcessedArgs.pop());\n              argsLength++;\n            }\n          }\n          if (argsLength < numArgs) {\n            const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`;\n            if (this._isPathOp && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {\n              throw new FormatError(`Invalid ${partialMsg}`);\n            }\n            warn(`Skipping ${partialMsg}`);\n            if (args !== null) {\n              args.length = 0;\n            }\n            continue;\n          }\n        } else if (argsLength > numArgs) {\n          info(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`);\n        }\n        this.preprocessCommand(fn, args);\n        operation.fn = fn;\n        operation.args = args;\n        return true;\n      }\n      if (obj === EOF) {\n        return false;\n      }\n      if (obj !== null) {\n        if (args === null) {\n          args = [];\n        }\n        args.push(obj);\n        if (args.length > 33) {\n          throw new FormatError(\"Too many arguments\");\n        }\n      }\n    }\n  }\n  preprocessCommand(fn, args) {\n    switch (fn | 0) {\n      case OPS.save:\n        this.stateManager.save();\n        break;\n      case OPS.restore:\n        this.stateManager.restore();\n        break;\n      case OPS.transform:\n        this.stateManager.transform(args);\n        break;\n    }\n  }\n}\n\n;// ./src/core/default_appearance.js\n\n\n\n\n\n\n\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n  constructor(str) {\n    super(new StringStream(str));\n  }\n  parse() {\n    const operation = {\n      fn: 0,\n      args: []\n    };\n    const result = {\n      fontSize: 0,\n      fontName: \"\",\n      fontColor: new Uint8ClampedArray(3)\n    };\n    try {\n      while (true) {\n        operation.args.length = 0;\n        if (!this.read(operation)) {\n          break;\n        }\n        if (this.savedStatesDepth !== 0) {\n          continue;\n        }\n        const {\n          fn,\n          args\n        } = operation;\n        switch (fn | 0) {\n          case OPS.setFont:\n            const [fontName, fontSize] = args;\n            if (fontName instanceof Name) {\n              result.fontName = fontName.name;\n            }\n            if (typeof fontSize === \"number\" && fontSize > 0) {\n              result.fontSize = fontSize;\n            }\n            break;\n          case OPS.setFillRGBColor:\n            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillGray:\n            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillCMYKColor:\n            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n        }\n      }\n    } catch (reason) {\n      warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n    }\n    return result;\n  }\n}\nfunction parseDefaultAppearance(str) {\n  return new DefaultAppearanceEvaluator(str).parse();\n}\nclass AppearanceStreamEvaluator extends EvaluatorPreprocessor {\n  constructor(stream, evaluatorOptions, xref) {\n    super(stream);\n    this.stream = stream;\n    this.evaluatorOptions = evaluatorOptions;\n    this.xref = xref;\n    this.resources = stream.dict?.get(\"Resources\");\n  }\n  parse() {\n    const operation = {\n      fn: 0,\n      args: []\n    };\n    let result = {\n      scaleFactor: 1,\n      fontSize: 0,\n      fontName: \"\",\n      fontColor: new Uint8ClampedArray(3),\n      fillColorSpace: ColorSpace.singletons.gray\n    };\n    let breakLoop = false;\n    const stack = [];\n    try {\n      while (true) {\n        operation.args.length = 0;\n        if (breakLoop || !this.read(operation)) {\n          break;\n        }\n        const {\n          fn,\n          args\n        } = operation;\n        switch (fn | 0) {\n          case OPS.save:\n            stack.push({\n              scaleFactor: result.scaleFactor,\n              fontSize: result.fontSize,\n              fontName: result.fontName,\n              fontColor: result.fontColor.slice(),\n              fillColorSpace: result.fillColorSpace\n            });\n            break;\n          case OPS.restore:\n            result = stack.pop() || result;\n            break;\n          case OPS.setTextMatrix:\n            result.scaleFactor *= Math.hypot(args[0], args[1]);\n            break;\n          case OPS.setFont:\n            const [fontName, fontSize] = args;\n            if (fontName instanceof Name) {\n              result.fontName = fontName.name;\n            }\n            if (typeof fontSize === \"number\" && fontSize > 0) {\n              result.fontSize = fontSize * result.scaleFactor;\n            }\n            break;\n          case OPS.setFillColorSpace:\n            result.fillColorSpace = ColorSpace.parse({\n              cs: args[0],\n              xref: this.xref,\n              resources: this.resources,\n              pdfFunctionFactory: this._pdfFunctionFactory,\n              localColorSpaceCache: this._localColorSpaceCache\n            });\n            break;\n          case OPS.setFillColor:\n            const cs = result.fillColorSpace;\n            cs.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillRGBColor:\n            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillGray:\n            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillCMYKColor:\n            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.showText:\n          case OPS.showSpacedText:\n          case OPS.nextLineShowText:\n          case OPS.nextLineSetSpacingShowText:\n            breakLoop = true;\n            break;\n        }\n      }\n    } catch (reason) {\n      warn(`parseAppearanceStream - ignoring errors: \"${reason}\".`);\n    }\n    this.stream.reset();\n    delete result.scaleFactor;\n    delete result.fillColorSpace;\n    return result;\n  }\n  get _localColorSpaceCache() {\n    return shadow(this, \"_localColorSpaceCache\", new LocalColorSpaceCache());\n  }\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.evaluatorOptions.isEvalSupported\n    });\n    return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n}\nfunction parseAppearanceStream(stream, evaluatorOptions, xref) {\n  return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref).parse();\n}\nfunction getPdfColor(color, isFill) {\n  if (color[0] === color[1] && color[1] === color[2]) {\n    const gray = color[0] / 255;\n    return `${numberToString(gray)} ${isFill ? \"g\" : \"G\"}`;\n  }\n  return Array.from(color, c => numberToString(c / 255)).join(\" \") + ` ${isFill ? \"rg\" : \"RG\"}`;\n}\nfunction createDefaultAppearance({\n  fontSize,\n  fontName,\n  fontColor\n}) {\n  return `/${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(fontColor, true)}`;\n}\nclass FakeUnicodeFont {\n  constructor(xref, fontFamily) {\n    this.xref = xref;\n    this.widths = null;\n    this.firstChar = Infinity;\n    this.lastChar = -Infinity;\n    this.fontFamily = fontFamily;\n    const canvas = new OffscreenCanvas(1, 1);\n    this.ctxMeasure = canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    });\n    if (!FakeUnicodeFont._fontNameId) {\n      FakeUnicodeFont._fontNameId = 1;\n    }\n    this.fontName = Name.get(`InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont._fontNameId++}`);\n  }\n  get fontDescriptorRef() {\n    if (!FakeUnicodeFont._fontDescriptorRef) {\n      const fontDescriptor = new Dict(this.xref);\n      fontDescriptor.set(\"Type\", Name.get(\"FontDescriptor\"));\n      fontDescriptor.set(\"FontName\", this.fontName);\n      fontDescriptor.set(\"FontFamily\", \"MyriadPro Regular\");\n      fontDescriptor.set(\"FontBBox\", [0, 0, 0, 0]);\n      fontDescriptor.set(\"FontStretch\", Name.get(\"Normal\"));\n      fontDescriptor.set(\"FontWeight\", 400);\n      fontDescriptor.set(\"ItalicAngle\", 0);\n      FakeUnicodeFont._fontDescriptorRef = this.xref.getNewPersistentRef(fontDescriptor);\n    }\n    return FakeUnicodeFont._fontDescriptorRef;\n  }\n  get descendantFontRef() {\n    const descendantFont = new Dict(this.xref);\n    descendantFont.set(\"BaseFont\", this.fontName);\n    descendantFont.set(\"Type\", Name.get(\"Font\"));\n    descendantFont.set(\"Subtype\", Name.get(\"CIDFontType0\"));\n    descendantFont.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n    descendantFont.set(\"FirstChar\", this.firstChar);\n    descendantFont.set(\"LastChar\", this.lastChar);\n    descendantFont.set(\"FontDescriptor\", this.fontDescriptorRef);\n    descendantFont.set(\"DW\", 1000);\n    const widths = [];\n    const chars = [...this.widths.entries()].sort();\n    let currentChar = null;\n    let currentWidths = null;\n    for (const [char, width] of chars) {\n      if (!currentChar) {\n        currentChar = char;\n        currentWidths = [width];\n        continue;\n      }\n      if (char === currentChar + currentWidths.length) {\n        currentWidths.push(width);\n      } else {\n        widths.push(currentChar, currentWidths);\n        currentChar = char;\n        currentWidths = [width];\n      }\n    }\n    if (currentChar) {\n      widths.push(currentChar, currentWidths);\n    }\n    descendantFont.set(\"W\", widths);\n    const cidSystemInfo = new Dict(this.xref);\n    cidSystemInfo.set(\"Ordering\", \"Identity\");\n    cidSystemInfo.set(\"Registry\", \"Adobe\");\n    cidSystemInfo.set(\"Supplement\", 0);\n    descendantFont.set(\"CIDSystemInfo\", cidSystemInfo);\n    return this.xref.getNewPersistentRef(descendantFont);\n  }\n  get baseFontRef() {\n    const baseFont = new Dict(this.xref);\n    baseFont.set(\"BaseFont\", this.fontName);\n    baseFont.set(\"Type\", Name.get(\"Font\"));\n    baseFont.set(\"Subtype\", Name.get(\"Type0\"));\n    baseFont.set(\"Encoding\", Name.get(\"Identity-H\"));\n    baseFont.set(\"DescendantFonts\", [this.descendantFontRef]);\n    baseFont.set(\"ToUnicode\", Name.get(\"Identity-H\"));\n    return this.xref.getNewPersistentRef(baseFont);\n  }\n  get resources() {\n    const resources = new Dict(this.xref);\n    const font = new Dict(this.xref);\n    font.set(this.fontName.name, this.baseFontRef);\n    resources.set(\"Font\", font);\n    return resources;\n  }\n  _createContext() {\n    this.widths = new Map();\n    this.ctxMeasure.font = `1000px ${this.fontFamily}`;\n    return this.ctxMeasure;\n  }\n  createFontResources(text) {\n    const ctx = this._createContext();\n    for (const line of text.split(/\\r\\n?|\\n/)) {\n      for (const char of line.split(\"\")) {\n        const code = char.charCodeAt(0);\n        if (this.widths.has(code)) {\n          continue;\n        }\n        const metrics = ctx.measureText(char);\n        const width = Math.ceil(metrics.width);\n        this.widths.set(code, width);\n        this.firstChar = Math.min(code, this.firstChar);\n        this.lastChar = Math.max(code, this.lastChar);\n      }\n    }\n    return this.resources;\n  }\n  static getFirstPositionInfo(rect, rotation, fontSize) {\n    const [x1, y1, x2, y2] = rect;\n    let w = x2 - x1;\n    let h = y2 - y1;\n    if (rotation % 180 !== 0) {\n      [w, h] = [h, w];\n    }\n    const lineHeight = LINE_FACTOR * fontSize;\n    const lineDescent = LINE_DESCENT_FACTOR * fontSize;\n    return {\n      coords: [0, h + lineDescent - lineHeight],\n      bbox: [0, 0, w, h],\n      matrix: rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined\n    };\n  }\n  createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) {\n    const ctx = this._createContext();\n    const lines = [];\n    let maxWidth = -Infinity;\n    for (const line of text.split(/\\r\\n?|\\n/)) {\n      lines.push(line);\n      const lineWidth = ctx.measureText(line).width;\n      maxWidth = Math.max(maxWidth, lineWidth);\n      for (const code of codePointIter(line)) {\n        const char = String.fromCodePoint(code);\n        let width = this.widths.get(code);\n        if (width === undefined) {\n          const metrics = ctx.measureText(char);\n          width = Math.ceil(metrics.width);\n          this.widths.set(code, width);\n          this.firstChar = Math.min(code, this.firstChar);\n          this.lastChar = Math.max(code, this.lastChar);\n        }\n      }\n    }\n    maxWidth *= fontSize / 1000;\n    const [x1, y1, x2, y2] = rect;\n    let w = x2 - x1;\n    let h = y2 - y1;\n    if (rotation % 180 !== 0) {\n      [w, h] = [h, w];\n    }\n    let hscale = 1;\n    if (maxWidth > w) {\n      hscale = w / maxWidth;\n    }\n    let vscale = 1;\n    const lineHeight = LINE_FACTOR * fontSize;\n    const lineDescent = LINE_DESCENT_FACTOR * fontSize;\n    const maxHeight = lineHeight * lines.length;\n    if (maxHeight > h) {\n      vscale = h / maxHeight;\n    }\n    const fscale = Math.min(hscale, vscale);\n    const newFontSize = fontSize * fscale;\n    const buffer = [\"q\", `0 0 ${numberToString(w)} ${numberToString(h)} re W n`, `BT`, `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(bgColor, true)}`, `/${this.fontName.name} ${numberToString(newFontSize)} Tf`];\n    const {\n      resources\n    } = this;\n    strokeAlpha = typeof strokeAlpha === \"number\" && strokeAlpha >= 0 && strokeAlpha <= 1 ? strokeAlpha : 1;\n    if (strokeAlpha !== 1) {\n      buffer.push(\"/R0 gs\");\n      const extGState = new Dict(this.xref);\n      const r0 = new Dict(this.xref);\n      r0.set(\"ca\", strokeAlpha);\n      r0.set(\"CA\", strokeAlpha);\n      r0.set(\"Type\", Name.get(\"ExtGState\"));\n      extGState.set(\"R0\", r0);\n      resources.set(\"ExtGState\", extGState);\n    }\n    const vShift = numberToString(lineHeight);\n    for (const line of lines) {\n      buffer.push(`0 -${vShift} Td <${stringToUTF16HexString(line)}> Tj`);\n    }\n    buffer.push(\"ET\", \"Q\");\n    const appearance = buffer.join(\"\\n\");\n    const appearanceStreamDict = new Dict(this.xref);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n    appearanceStreamDict.set(\"Resources\", resources);\n    if (rotation) {\n      const matrix = getRotationMatrix(rotation, w, h);\n      appearanceStreamDict.set(\"Matrix\", matrix);\n    }\n    const ap = new StringStream(appearance);\n    ap.dict = appearanceStreamDict;\n    return ap;\n  }\n}\n\n;// ./src/core/name_number_tree.js\n\n\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n  getAll() {\n    const map = new Map();\n    if (!this.root) {\n      return map;\n    }\n    const xref = this.xref;\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!(obj instanceof Dict)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        if (!Array.isArray(kids)) {\n          continue;\n        }\n        for (const kid of kids) {\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (!Array.isArray(entries)) {\n        continue;\n      }\n      for (let i = 0, ii = entries.length; i < ii; i += 2) {\n        map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n      }\n    }\n    return map;\n  }\n  getRaw(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = l + r >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = kid;\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        const tmp = l + r >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return entries[m + 1];\n        }\n      }\n    }\n    return null;\n  }\n  get(key) {\n    return this.xref.fetchIfRef(this.getRaw(key));\n  }\n}\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\n;// ./src/core/cleanup_helper.js\n\n\n\n\nfunction clearGlobalCaches() {\n  clearPatternCaches();\n  clearPrimitiveCaches();\n  clearUnicodeCaches();\n  JpxImage.cleanup();\n}\n\n;// ./src/core/file_spec.js\n\n\n\nfunction pickPlatformItem(dict) {\n  if (!(dict instanceof Dict)) {\n    return null;\n  }\n  if (dict.has(\"UF\")) {\n    return dict.get(\"UF\");\n  } else if (dict.has(\"F\")) {\n    return dict.get(\"F\");\n  } else if (dict.has(\"Unix\")) {\n    return dict.get(\"Unix\");\n  } else if (dict.has(\"Mac\")) {\n    return dict.get(\"Mac\");\n  } else if (dict.has(\"DOS\")) {\n    return dict.get(\"DOS\");\n  }\n  return null;\n}\nfunction stripPath(str) {\n  return str.substring(str.lastIndexOf(\"/\") + 1);\n}\nclass FileSpec {\n  #contentAvailable = false;\n  constructor(root, xref, skipContent = false) {\n    if (!(root instanceof Dict)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    if (!skipContent) {\n      if (root.has(\"EF\")) {\n        this.#contentAvailable = true;\n      } else {\n        warn(\"Non-embedded file specifications are not supported\");\n      }\n    }\n  }\n  get filename() {\n    let filename = \"\";\n    const item = pickPlatformItem(this.root);\n    if (item && typeof item === \"string\") {\n      filename = stringToPDFString(item).replaceAll(\"\\\\\\\\\", \"\\\\\").replaceAll(\"\\\\/\", \"/\").replaceAll(\"\\\\\", \"/\");\n    }\n    return shadow(this, \"filename\", filename || \"unnamed\");\n  }\n  get content() {\n    if (!this.#contentAvailable) {\n      return null;\n    }\n    this._contentRef ||= pickPlatformItem(this.root?.get(\"EF\"));\n    let content = null;\n    if (this._contentRef) {\n      const fileObj = this.xref.fetchIfRef(this._contentRef);\n      if (fileObj instanceof BaseStream) {\n        content = fileObj.getBytes();\n      } else {\n        warn(\"Embedded file specification points to non-existing/invalid content\");\n      }\n    } else {\n      warn(\"Embedded file specification does not have any content\");\n    }\n    return content;\n  }\n  get description() {\n    let description = \"\";\n    const desc = this.root?.get(\"Desc\");\n    if (desc && typeof desc === \"string\") {\n      description = stringToPDFString(desc);\n    }\n    return shadow(this, \"description\", description);\n  }\n  get serializable() {\n    return {\n      rawFilename: this.filename,\n      filename: stripPath(this.filename),\n      content: this.content,\n      description: this.description\n    };\n  }\n}\n\n;// ./src/core/xml_parser.js\n\nconst XMLParserErrorCode = {\n  NoError: 0,\n  EndOfDocument: -1,\n  UnterminatedCdat: -2,\n  UnterminatedXmlDeclaration: -3,\n  UnterminatedDoctypeDeclaration: -4,\n  UnterminatedComment: -5,\n  MalformedElement: -6,\n  OutOfMemory: -7,\n  UnterminatedAttributeValue: -8,\n  UnterminatedElement: -9,\n  ElementNeverBegun: -10\n};\nfunction isWhitespace(s, index) {\n  const ch = s[index];\n  return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\nfunction isWhitespaceString(s) {\n  for (let i = 0, ii = s.length; i < ii; i++) {\n    if (!isWhitespace(s, i)) {\n      return false;\n    }\n  }\n  return true;\n}\nclass XMLParserBase {\n  _resolveEntities(s) {\n    return s.replaceAll(/&([^;]+);/g, (all, entity) => {\n      if (entity.substring(0, 2) === \"#x\") {\n        return String.fromCodePoint(parseInt(entity.substring(2), 16));\n      } else if (entity.substring(0, 1) === \"#\") {\n        return String.fromCodePoint(parseInt(entity.substring(1), 10));\n      }\n      switch (entity) {\n        case \"lt\":\n          return \"<\";\n        case \"gt\":\n          return \">\";\n        case \"amp\":\n          return \"&\";\n        case \"quot\":\n          return '\"';\n        case \"apos\":\n          return \"'\";\n      }\n      return this.onResolveEntity(entity);\n    });\n  }\n  _parseContent(s, start) {\n    const attributes = [];\n    let pos = start;\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n      ++pos;\n    }\n    const name = s.substring(start, pos);\n    skipWs();\n    while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n      skipWs();\n      let attrName = \"\",\n        attrValue = \"\";\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n        attrName += s[pos];\n        ++pos;\n      }\n      skipWs();\n      if (s[pos] !== \"=\") {\n        return null;\n      }\n      ++pos;\n      skipWs();\n      const attrEndChar = s[pos];\n      if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n        return null;\n      }\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n      if (attrEndIndex < 0) {\n        return null;\n      }\n      attrValue = s.substring(pos, attrEndIndex);\n      attributes.push({\n        name: attrName,\n        value: this._resolveEntities(attrValue)\n      });\n      pos = attrEndIndex + 1;\n      skipWs();\n    }\n    return {\n      name,\n      attributes,\n      parsed: pos - start\n    };\n  }\n  _parseProcessingInstruction(s, start) {\n    let pos = start;\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"?\" && s[pos] !== \"/\") {\n      ++pos;\n    }\n    const name = s.substring(start, pos);\n    skipWs();\n    const attrStart = pos;\n    while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n      ++pos;\n    }\n    const value = s.substring(attrStart, pos);\n    return {\n      name,\n      value,\n      parsed: pos - start\n    };\n  }\n  parseXml(s) {\n    let i = 0;\n    while (i < s.length) {\n      const ch = s[i];\n      let j = i;\n      if (ch === \"<\") {\n        ++j;\n        const ch2 = s[j];\n        let q;\n        switch (ch2) {\n          case \"/\":\n            ++j;\n            q = s.indexOf(\">\", j);\n            if (q < 0) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onEndElement(s.substring(j, q));\n            j = q + 1;\n            break;\n          case \"?\":\n            ++j;\n            const pi = this._parseProcessingInstruction(s, j);\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n              return;\n            }\n            this.onPi(pi.name, pi.value);\n            j += pi.parsed + 2;\n            break;\n          case \"!\":\n            if (s.substring(j + 1, j + 3) === \"--\") {\n              q = s.indexOf(\"-->\", j + 3);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedComment);\n                return;\n              }\n              this.onComment(s.substring(j + 3, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n              q = s.indexOf(\"]]>\", j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\n                return;\n              }\n              this.onCdata(s.substring(j + 8, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n              const q2 = s.indexOf(\"[\", j + 8);\n              let complexDoctype = false;\n              q = s.indexOf(\">\", j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                return;\n              }\n              if (q2 > 0 && q > q2) {\n                q = s.indexOf(\"]>\", j + 8);\n                if (q < 0) {\n                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                  return;\n                }\n                complexDoctype = true;\n              }\n              const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n              this.onDoctype(doctypeContent);\n              j = q + (complexDoctype ? 2 : 1);\n            } else {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            break;\n          default:\n            const content = this._parseContent(s, j);\n            if (content === null) {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            let isClosed = false;\n            if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n              isClosed = true;\n            } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onBeginElement(content.name, content.attributes, isClosed);\n            j += content.parsed + (isClosed ? 2 : 1);\n            break;\n        }\n      } else {\n        while (j < s.length && s[j] !== \"<\") {\n          j++;\n        }\n        const text = s.substring(i, j);\n        this.onText(this._resolveEntities(text));\n      }\n      i = j;\n    }\n  }\n  onResolveEntity(name) {\n    return `&${name};`;\n  }\n  onPi(name, value) {}\n  onComment(text) {}\n  onCdata(text) {}\n  onDoctype(doctypeContent) {}\n  onText(text) {}\n  onBeginElement(name, attributes, isEmpty) {}\n  onEndElement(name) {}\n  onError(code) {}\n}\nclass SimpleDOMNode {\n  constructor(nodeName, nodeValue) {\n    this.nodeName = nodeName;\n    this.nodeValue = nodeValue;\n    Object.defineProperty(this, \"parentNode\", {\n      value: null,\n      writable: true\n    });\n  }\n  get firstChild() {\n    return this.childNodes?.[0];\n  }\n  get nextSibling() {\n    const childNodes = this.parentNode.childNodes;\n    if (!childNodes) {\n      return undefined;\n    }\n    const index = childNodes.indexOf(this);\n    if (index === -1) {\n      return undefined;\n    }\n    return childNodes[index + 1];\n  }\n  get textContent() {\n    if (!this.childNodes) {\n      return this.nodeValue || \"\";\n    }\n    return this.childNodes.map(function (child) {\n      return child.textContent;\n    }).join(\"\");\n  }\n  get children() {\n    return this.childNodes || [];\n  }\n  hasChildNodes() {\n    return this.childNodes?.length > 0;\n  }\n  searchNode(paths, pos) {\n    if (pos >= paths.length) {\n      return this;\n    }\n    const component = paths[pos];\n    if (component.name.startsWith(\"#\") && pos < paths.length - 1) {\n      return this.searchNode(paths, pos + 1);\n    }\n    const stack = [];\n    let node = this;\n    while (true) {\n      if (component.name === node.nodeName) {\n        if (component.pos === 0) {\n          const res = node.searchNode(paths, pos + 1);\n          if (res !== null) {\n            return res;\n          }\n        } else if (stack.length === 0) {\n          return null;\n        } else {\n          const [parent] = stack.pop();\n          let siblingPos = 0;\n          for (const child of parent.childNodes) {\n            if (component.name === child.nodeName) {\n              if (siblingPos === component.pos) {\n                return child.searchNode(paths, pos + 1);\n              }\n              siblingPos++;\n            }\n          }\n          return node.searchNode(paths, pos + 1);\n        }\n      }\n      if (node.childNodes?.length > 0) {\n        stack.push([node, 0]);\n        node = node.childNodes[0];\n      } else if (stack.length === 0) {\n        return null;\n      } else {\n        while (stack.length !== 0) {\n          const [parent, currentPos] = stack.pop();\n          const newPos = currentPos + 1;\n          if (newPos < parent.childNodes.length) {\n            stack.push([parent, newPos]);\n            node = parent.childNodes[newPos];\n            break;\n          }\n        }\n        if (stack.length === 0) {\n          return null;\n        }\n      }\n    }\n  }\n  dump(buffer) {\n    if (this.nodeName === \"#text\") {\n      buffer.push(encodeToXmlString(this.nodeValue));\n      return;\n    }\n    buffer.push(`<${this.nodeName}`);\n    if (this.attributes) {\n      for (const attribute of this.attributes) {\n        buffer.push(` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`);\n      }\n    }\n    if (this.hasChildNodes()) {\n      buffer.push(\">\");\n      for (const child of this.childNodes) {\n        child.dump(buffer);\n      }\n      buffer.push(`</${this.nodeName}>`);\n    } else if (this.nodeValue) {\n      buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n    } else {\n      buffer.push(\"/>\");\n    }\n  }\n}\nclass SimpleXMLParser extends XMLParserBase {\n  constructor({\n    hasAttributes = false,\n    lowerCaseName = false\n  }) {\n    super();\n    this._currentFragment = null;\n    this._stack = null;\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._hasAttributes = hasAttributes;\n    this._lowerCaseName = lowerCaseName;\n  }\n  parseFromString(data) {\n    this._currentFragment = [];\n    this._stack = [];\n    this._errorCode = XMLParserErrorCode.NoError;\n    this.parseXml(data);\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined;\n    }\n    const [documentElement] = this._currentFragment;\n    if (!documentElement) {\n      return undefined;\n    }\n    return {\n      documentElement\n    };\n  }\n  onText(text) {\n    if (isWhitespaceString(text)) {\n      return;\n    }\n    const node = new SimpleDOMNode(\"#text\", text);\n    this._currentFragment.push(node);\n  }\n  onCdata(text) {\n    const node = new SimpleDOMNode(\"#text\", text);\n    this._currentFragment.push(node);\n  }\n  onBeginElement(name, attributes, isEmpty) {\n    if (this._lowerCaseName) {\n      name = name.toLowerCase();\n    }\n    const node = new SimpleDOMNode(name);\n    node.childNodes = [];\n    if (this._hasAttributes) {\n      node.attributes = attributes;\n    }\n    this._currentFragment.push(node);\n    if (isEmpty) {\n      return;\n    }\n    this._stack.push(this._currentFragment);\n    this._currentFragment = node.childNodes;\n  }\n  onEndElement(name) {\n    this._currentFragment = this._stack.pop() || [];\n    const lastElement = this._currentFragment.at(-1);\n    if (!lastElement) {\n      return null;\n    }\n    for (const childNode of lastElement.childNodes) {\n      childNode.parentNode = lastElement;\n    }\n    return lastElement;\n  }\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\n;// ./src/core/metadata_parser.js\n\nclass MetadataParser {\n  constructor(data) {\n    data = this._repair(data);\n    const parser = new SimpleXMLParser({\n      lowerCaseName: true\n    });\n    const xmlDocument = parser.parseFromString(data);\n    this._metadataMap = new Map();\n    this._data = data;\n    if (xmlDocument) {\n      this._parse(xmlDocument);\n    }\n  }\n  _repair(data) {\n    return data.replace(/^[^<]+/, \"\").replaceAll(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n      const bytes = codes.replaceAll(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n      }).replaceAll(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n        switch (name) {\n          case \"amp\":\n            return \"&\";\n          case \"apos\":\n            return \"'\";\n          case \"gt\":\n            return \">\";\n          case \"lt\":\n            return \"<\";\n          case \"quot\":\n            return '\"';\n        }\n        throw new Error(`_repair: ${name} isn't defined.`);\n      });\n      const charBuf = [\">\"];\n      for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n        const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n        if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n          charBuf.push(String.fromCharCode(code));\n        } else {\n          charBuf.push(\"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\");\n        }\n      }\n      return charBuf.join(\"\");\n    });\n  }\n  _getSequence(entry) {\n    const name = entry.nodeName;\n    if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n      return null;\n    }\n    return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n  }\n  _parseArray(entry) {\n    if (!entry.hasChildNodes()) {\n      return;\n    }\n    const [seqNode] = entry.childNodes;\n    const sequence = this._getSequence(seqNode) || [];\n    this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim()));\n  }\n  _parse(xmlDocument) {\n    let rdf = xmlDocument.documentElement;\n    if (rdf.nodeName !== \"rdf:rdf\") {\n      rdf = rdf.firstChild;\n      while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n        rdf = rdf.nextSibling;\n      }\n    }\n    if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n      return;\n    }\n    for (const desc of rdf.childNodes) {\n      if (desc.nodeName !== \"rdf:description\") {\n        continue;\n      }\n      for (const entry of desc.childNodes) {\n        const name = entry.nodeName;\n        switch (name) {\n          case \"#text\":\n            continue;\n          case \"dc:creator\":\n          case \"dc:subject\":\n            this._parseArray(entry);\n            continue;\n        }\n        this._metadataMap.set(name, entry.textContent.trim());\n      }\n    }\n  }\n  get serializable() {\n    return {\n      parsedData: this._metadataMap,\n      rawData: this._data\n    };\n  }\n}\n\n;// ./src/core/struct_tree.js\n\n\n\n\nconst MAX_DEPTH = 40;\nconst StructElementType = {\n  PAGE_CONTENT: 1,\n  STREAM_CONTENT: 2,\n  OBJECT: 3,\n  ANNOTATION: 4,\n  ELEMENT: 5\n};\nclass StructTreeRoot {\n  constructor(rootDict, rootRef) {\n    this.dict = rootDict;\n    this.ref = rootRef instanceof Ref ? rootRef : null;\n    this.roleMap = new Map();\n    this.structParentIds = null;\n  }\n  init() {\n    this.readRoleMap();\n  }\n  #addIdToPage(pageRef, id, type) {\n    if (!(pageRef instanceof Ref) || id < 0) {\n      return;\n    }\n    this.structParentIds ||= new RefSetCache();\n    let ids = this.structParentIds.get(pageRef);\n    if (!ids) {\n      ids = [];\n      this.structParentIds.put(pageRef, ids);\n    }\n    ids.push([id, type]);\n  }\n  addAnnotationIdToPage(pageRef, id) {\n    this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION);\n  }\n  readRoleMap() {\n    const roleMapDict = this.dict.get(\"RoleMap\");\n    if (!(roleMapDict instanceof Dict)) {\n      return;\n    }\n    for (const [key, value] of roleMapDict) {\n      if (value instanceof Name) {\n        this.roleMap.set(key, value.name);\n      }\n    }\n  }\n  static async canCreateStructureTree({\n    catalogRef,\n    pdfManager,\n    newAnnotationsByPage\n  }) {\n    if (!(catalogRef instanceof Ref)) {\n      warn(\"Cannot save the struct tree: no catalog reference.\");\n      return false;\n    }\n    let nextKey = 0;\n    let hasNothingToUpdate = true;\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\n      const {\n        ref: pageRef\n      } = await pdfManager.getPage(pageIndex);\n      if (!(pageRef instanceof Ref)) {\n        warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`);\n        hasNothingToUpdate = true;\n        break;\n      }\n      for (const element of elements) {\n        if (element.accessibilityData?.type) {\n          element.parentTreeId = nextKey++;\n          hasNothingToUpdate = false;\n        }\n      }\n    }\n    if (hasNothingToUpdate) {\n      for (const elements of newAnnotationsByPage.values()) {\n        for (const element of elements) {\n          delete element.parentTreeId;\n        }\n      }\n      return false;\n    }\n    return true;\n  }\n  static async createStructureTree({\n    newAnnotationsByPage,\n    xref,\n    catalogRef,\n    pdfManager,\n    changes\n  }) {\n    const root = pdfManager.catalog.cloneDict();\n    const cache = new RefSetCache();\n    cache.put(catalogRef, root);\n    const structTreeRootRef = xref.getNewTemporaryRef();\n    root.set(\"StructTreeRoot\", structTreeRootRef);\n    const structTreeRoot = new Dict(xref);\n    structTreeRoot.set(\"Type\", Name.get(\"StructTreeRoot\"));\n    const parentTreeRef = xref.getNewTemporaryRef();\n    structTreeRoot.set(\"ParentTree\", parentTreeRef);\n    const kids = [];\n    structTreeRoot.set(\"K\", kids);\n    cache.put(structTreeRootRef, structTreeRoot);\n    const parentTree = new Dict(xref);\n    const nums = [];\n    parentTree.set(\"Nums\", nums);\n    const nextKey = await this.#writeKids({\n      newAnnotationsByPage,\n      structTreeRootRef,\n      structTreeRoot: null,\n      kids,\n      nums,\n      xref,\n      pdfManager,\n      changes,\n      cache\n    });\n    structTreeRoot.set(\"ParentTreeNextKey\", nextKey);\n    cache.put(parentTreeRef, parentTree);\n    for (const [ref, obj] of cache.items()) {\n      changes.put(ref, {\n        data: obj\n      });\n    }\n  }\n  async canUpdateStructTree({\n    pdfManager,\n    xref,\n    newAnnotationsByPage\n  }) {\n    if (!this.ref) {\n      warn(\"Cannot update the struct tree: no root reference.\");\n      return false;\n    }\n    let nextKey = this.dict.get(\"ParentTreeNextKey\");\n    if (!Number.isInteger(nextKey) || nextKey < 0) {\n      warn(\"Cannot update the struct tree: invalid next key.\");\n      return false;\n    }\n    const parentTree = this.dict.get(\"ParentTree\");\n    if (!(parentTree instanceof Dict)) {\n      warn(\"Cannot update the struct tree: ParentTree isn't a dict.\");\n      return false;\n    }\n    const nums = parentTree.get(\"Nums\");\n    if (!Array.isArray(nums)) {\n      warn(\"Cannot update the struct tree: nums isn't an array.\");\n      return false;\n    }\n    const numberTree = new NumberTree(parentTree, xref);\n    for (const pageIndex of newAnnotationsByPage.keys()) {\n      const {\n        pageDict\n      } = await pdfManager.getPage(pageIndex);\n      if (!pageDict.has(\"StructParents\")) {\n        continue;\n      }\n      const id = pageDict.get(\"StructParents\");\n      if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) {\n        warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`);\n        return false;\n      }\n    }\n    let hasNothingToUpdate = true;\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\n      const {\n        pageDict\n      } = await pdfManager.getPage(pageIndex);\n      StructTreeRoot.#collectParents({\n        elements,\n        xref: this.dict.xref,\n        pageDict,\n        numberTree\n      });\n      for (const element of elements) {\n        if (element.accessibilityData?.type) {\n          if (!(element.accessibilityData.structParent >= 0)) {\n            element.parentTreeId = nextKey++;\n          }\n          hasNothingToUpdate = false;\n        }\n      }\n    }\n    if (hasNothingToUpdate) {\n      for (const elements of newAnnotationsByPage.values()) {\n        for (const element of elements) {\n          delete element.parentTreeId;\n          delete element.structTreeParent;\n        }\n      }\n      return false;\n    }\n    return true;\n  }\n  async updateStructureTree({\n    newAnnotationsByPage,\n    pdfManager,\n    changes\n  }) {\n    const xref = this.dict.xref;\n    const structTreeRoot = this.dict.clone();\n    const structTreeRootRef = this.ref;\n    const cache = new RefSetCache();\n    cache.put(structTreeRootRef, structTreeRoot);\n    let parentTreeRef = structTreeRoot.getRaw(\"ParentTree\");\n    let parentTree;\n    if (parentTreeRef instanceof Ref) {\n      parentTree = xref.fetch(parentTreeRef);\n    } else {\n      parentTree = parentTreeRef;\n      parentTreeRef = xref.getNewTemporaryRef();\n      structTreeRoot.set(\"ParentTree\", parentTreeRef);\n    }\n    parentTree = parentTree.clone();\n    cache.put(parentTreeRef, parentTree);\n    let nums = parentTree.getRaw(\"Nums\");\n    let numsRef = null;\n    if (nums instanceof Ref) {\n      numsRef = nums;\n      nums = xref.fetch(numsRef);\n    }\n    nums = nums.slice();\n    if (!numsRef) {\n      parentTree.set(\"Nums\", nums);\n    }\n    const newNextKey = await StructTreeRoot.#writeKids({\n      newAnnotationsByPage,\n      structTreeRootRef,\n      structTreeRoot: this,\n      kids: null,\n      nums,\n      xref,\n      pdfManager,\n      changes,\n      cache\n    });\n    if (newNextKey === -1) {\n      return;\n    }\n    structTreeRoot.set(\"ParentTreeNextKey\", newNextKey);\n    if (numsRef) {\n      cache.put(numsRef, nums);\n    }\n    for (const [ref, obj] of cache.items()) {\n      changes.put(ref, {\n        data: obj\n      });\n    }\n  }\n  static async #writeKids({\n    newAnnotationsByPage,\n    structTreeRootRef,\n    structTreeRoot,\n    kids,\n    nums,\n    xref,\n    pdfManager,\n    changes,\n    cache\n  }) {\n    const objr = Name.get(\"OBJR\");\n    let nextKey = -1;\n    let structTreePageObjs;\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\n      const page = await pdfManager.getPage(pageIndex);\n      const {\n        ref: pageRef\n      } = page;\n      const isPageRef = pageRef instanceof Ref;\n      for (const {\n        accessibilityData,\n        ref,\n        parentTreeId,\n        structTreeParent\n      } of elements) {\n        if (!accessibilityData?.type) {\n          continue;\n        }\n        const {\n          structParent\n        } = accessibilityData;\n        if (structTreeRoot && Number.isInteger(structParent) && structParent >= 0) {\n          let objs = (structTreePageObjs ||= new Map()).get(pageIndex);\n          if (objs === undefined) {\n            const structTreePage = new StructTreePage(structTreeRoot, page.pageDict);\n            objs = structTreePage.collectObjects(pageRef);\n            structTreePageObjs.set(pageIndex, objs);\n          }\n          const objRef = objs?.get(structParent);\n          if (objRef) {\n            const tagDict = xref.fetch(objRef).clone();\n            StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n            changes.put(objRef, {\n              data: tagDict\n            });\n            continue;\n          }\n        }\n        nextKey = Math.max(nextKey, parentTreeId);\n        const tagRef = xref.getNewTemporaryRef();\n        const tagDict = new Dict(xref);\n        StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n        await this.#updateParentTag({\n          structTreeParent,\n          tagDict,\n          newTagRef: tagRef,\n          structTreeRootRef,\n          fallbackKids: kids,\n          xref,\n          cache\n        });\n        const objDict = new Dict(xref);\n        tagDict.set(\"K\", objDict);\n        objDict.set(\"Type\", objr);\n        if (isPageRef) {\n          objDict.set(\"Pg\", pageRef);\n        }\n        objDict.set(\"Obj\", ref);\n        cache.put(tagRef, tagDict);\n        nums.push(parentTreeId, tagRef);\n      }\n    }\n    return nextKey + 1;\n  }\n  static #writeProperties(tagDict, {\n    type,\n    title,\n    lang,\n    alt,\n    expanded,\n    actualText\n  }) {\n    tagDict.set(\"S\", Name.get(type));\n    if (title) {\n      tagDict.set(\"T\", stringToAsciiOrUTF16BE(title));\n    }\n    if (lang) {\n      tagDict.set(\"Lang\", stringToAsciiOrUTF16BE(lang));\n    }\n    if (alt) {\n      tagDict.set(\"Alt\", stringToAsciiOrUTF16BE(alt));\n    }\n    if (expanded) {\n      tagDict.set(\"E\", stringToAsciiOrUTF16BE(expanded));\n    }\n    if (actualText) {\n      tagDict.set(\"ActualText\", stringToAsciiOrUTF16BE(actualText));\n    }\n  }\n  static #collectParents({\n    elements,\n    xref,\n    pageDict,\n    numberTree\n  }) {\n    const idToElements = new Map();\n    for (const element of elements) {\n      if (element.structTreeParentId) {\n        const id = parseInt(element.structTreeParentId.split(\"_mc\")[1], 10);\n        let elems = idToElements.get(id);\n        if (!elems) {\n          elems = [];\n          idToElements.set(id, elems);\n        }\n        elems.push(element);\n      }\n    }\n    const id = pageDict.get(\"StructParents\");\n    if (!Number.isInteger(id)) {\n      return;\n    }\n    const parentArray = numberTree.get(id);\n    const updateElement = (kid, pageKid, kidRef) => {\n      const elems = idToElements.get(kid);\n      if (elems) {\n        const parentRef = pageKid.getRaw(\"P\");\n        const parentDict = xref.fetchIfRef(parentRef);\n        if (parentRef instanceof Ref && parentDict instanceof Dict) {\n          const params = {\n            ref: kidRef,\n            dict: pageKid\n          };\n          for (const element of elems) {\n            element.structTreeParent = params;\n          }\n        }\n        return true;\n      }\n      return false;\n    };\n    for (const kidRef of parentArray) {\n      if (!(kidRef instanceof Ref)) {\n        continue;\n      }\n      const pageKid = xref.fetch(kidRef);\n      const k = pageKid.get(\"K\");\n      if (Number.isInteger(k)) {\n        updateElement(k, pageKid, kidRef);\n        continue;\n      }\n      if (!Array.isArray(k)) {\n        continue;\n      }\n      for (let kid of k) {\n        kid = xref.fetchIfRef(kid);\n        if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) {\n          break;\n        }\n        if (!(kid instanceof Dict)) {\n          continue;\n        }\n        if (!isName(kid.get(\"Type\"), \"MCR\")) {\n          break;\n        }\n        const mcid = kid.get(\"MCID\");\n        if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) {\n          break;\n        }\n      }\n    }\n  }\n  static async #updateParentTag({\n    structTreeParent,\n    tagDict,\n    newTagRef,\n    structTreeRootRef,\n    fallbackKids,\n    xref,\n    cache\n  }) {\n    let ref = null;\n    let parentRef;\n    if (structTreeParent) {\n      ({\n        ref\n      } = structTreeParent);\n      parentRef = structTreeParent.dict.getRaw(\"P\") || structTreeRootRef;\n    } else {\n      parentRef = structTreeRootRef;\n    }\n    tagDict.set(\"P\", parentRef);\n    const parentDict = xref.fetchIfRef(parentRef);\n    if (!parentDict) {\n      fallbackKids.push(newTagRef);\n      return;\n    }\n    let cachedParentDict = cache.get(parentRef);\n    if (!cachedParentDict) {\n      cachedParentDict = parentDict.clone();\n      cache.put(parentRef, cachedParentDict);\n    }\n    const parentKidsRaw = cachedParentDict.getRaw(\"K\");\n    let cachedParentKids = parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null;\n    if (!cachedParentKids) {\n      cachedParentKids = xref.fetchIfRef(parentKidsRaw);\n      cachedParentKids = Array.isArray(cachedParentKids) ? cachedParentKids.slice() : [parentKidsRaw];\n      const parentKidsRef = xref.getNewTemporaryRef();\n      cachedParentDict.set(\"K\", parentKidsRef);\n      cache.put(parentKidsRef, cachedParentKids);\n    }\n    const index = cachedParentKids.indexOf(ref);\n    cachedParentKids.splice(index >= 0 ? index + 1 : cachedParentKids.length, 0, newTagRef);\n  }\n}\nclass StructElementNode {\n  constructor(tree, dict) {\n    this.tree = tree;\n    this.dict = dict;\n    this.kids = [];\n    this.parseKids();\n  }\n  get role() {\n    const nameObj = this.dict.get(\"S\");\n    const name = nameObj instanceof Name ? nameObj.name : \"\";\n    const {\n      root\n    } = this.tree;\n    if (root.roleMap.has(name)) {\n      return root.roleMap.get(name);\n    }\n    return name;\n  }\n  parseKids() {\n    let pageObjId = null;\n    const objRef = this.dict.getRaw(\"Pg\");\n    if (objRef instanceof Ref) {\n      pageObjId = objRef.toString();\n    }\n    const kids = this.dict.get(\"K\");\n    if (Array.isArray(kids)) {\n      for (const kid of kids) {\n        const element = this.parseKid(pageObjId, kid);\n        if (element) {\n          this.kids.push(element);\n        }\n      }\n    } else {\n      const element = this.parseKid(pageObjId, kids);\n      if (element) {\n        this.kids.push(element);\n      }\n    }\n  }\n  parseKid(pageObjId, kid) {\n    if (Number.isInteger(kid)) {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      return new StructElement({\n        type: StructElementType.PAGE_CONTENT,\n        mcid: kid,\n        pageObjId\n      });\n    }\n    let kidDict = null;\n    if (kid instanceof Ref) {\n      kidDict = this.dict.xref.fetch(kid);\n    } else if (kid instanceof Dict) {\n      kidDict = kid;\n    }\n    if (!kidDict) {\n      return null;\n    }\n    const pageRef = kidDict.getRaw(\"Pg\");\n    if (pageRef instanceof Ref) {\n      pageObjId = pageRef.toString();\n    }\n    const type = kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n    if (type === \"MCR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      const kidRef = kidDict.getRaw(\"Stm\");\n      return new StructElement({\n        type: StructElementType.STREAM_CONTENT,\n        refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n        pageObjId,\n        mcid: kidDict.get(\"MCID\")\n      });\n    }\n    if (type === \"OBJR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      const kidRef = kidDict.getRaw(\"Obj\");\n      return new StructElement({\n        type: StructElementType.OBJECT,\n        refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n        pageObjId\n      });\n    }\n    return new StructElement({\n      type: StructElementType.ELEMENT,\n      dict: kidDict\n    });\n  }\n}\nclass StructElement {\n  constructor({\n    type,\n    dict = null,\n    mcid = null,\n    pageObjId = null,\n    refObjId = null\n  }) {\n    this.type = type;\n    this.dict = dict;\n    this.mcid = mcid;\n    this.pageObjId = pageObjId;\n    this.refObjId = refObjId;\n    this.parentNode = null;\n  }\n}\nclass StructTreePage {\n  constructor(structTreeRoot, pageDict) {\n    this.root = structTreeRoot;\n    this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n    this.pageDict = pageDict;\n    this.nodes = [];\n  }\n  collectObjects(pageRef) {\n    if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n      return null;\n    }\n    const parentTree = this.rootDict.get(\"ParentTree\");\n    if (!parentTree) {\n      return null;\n    }\n    const ids = this.root.structParentIds?.get(pageRef);\n    if (!ids) {\n      return null;\n    }\n    const map = new Map();\n    const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n    for (const [elemId] of ids) {\n      const obj = numberTree.getRaw(elemId);\n      if (obj instanceof Ref) {\n        map.set(elemId, obj);\n      }\n    }\n    return map;\n  }\n  parse(pageRef) {\n    if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n      return;\n    }\n    const parentTree = this.rootDict.get(\"ParentTree\");\n    if (!parentTree) {\n      return;\n    }\n    const id = this.pageDict.get(\"StructParents\");\n    const ids = this.root.structParentIds?.get(pageRef);\n    if (!Number.isInteger(id) && !ids) {\n      return;\n    }\n    const map = new Map();\n    const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n    if (Number.isInteger(id)) {\n      const parentArray = numberTree.get(id);\n      if (Array.isArray(parentArray)) {\n        for (const ref of parentArray) {\n          if (ref instanceof Ref) {\n            this.addNode(this.rootDict.xref.fetch(ref), map);\n          }\n        }\n      }\n    }\n    if (!ids) {\n      return;\n    }\n    for (const [elemId, type] of ids) {\n      const obj = numberTree.get(elemId);\n      if (obj) {\n        const elem = this.addNode(this.rootDict.xref.fetchIfRef(obj), map);\n        if (elem?.kids?.length === 1 && elem.kids[0].type === StructElementType.OBJECT) {\n          elem.kids[0].type = type;\n        }\n      }\n    }\n  }\n  addNode(dict, map, level = 0) {\n    if (level > MAX_DEPTH) {\n      warn(\"StructTree MAX_DEPTH reached.\");\n      return null;\n    }\n    if (!(dict instanceof Dict)) {\n      return null;\n    }\n    if (map.has(dict)) {\n      return map.get(dict);\n    }\n    const element = new StructElementNode(this, dict);\n    map.set(dict, element);\n    const parent = dict.get(\"P\");\n    if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n      if (!this.addTopLevelNode(dict, element)) {\n        map.delete(dict);\n      }\n      return element;\n    }\n    const parentNode = this.addNode(parent, map, level + 1);\n    if (!parentNode) {\n      return element;\n    }\n    let save = false;\n    for (const kid of parentNode.kids) {\n      if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n        kid.parentNode = element;\n        save = true;\n      }\n    }\n    if (!save) {\n      map.delete(dict);\n    }\n    return element;\n  }\n  addTopLevelNode(dict, element) {\n    const obj = this.rootDict.get(\"K\");\n    if (!obj) {\n      return false;\n    }\n    if (obj instanceof Dict) {\n      if (obj.objId !== dict.objId) {\n        return false;\n      }\n      this.nodes[0] = element;\n      return true;\n    }\n    if (!Array.isArray(obj)) {\n      return true;\n    }\n    let save = false;\n    for (let i = 0; i < obj.length; i++) {\n      const kidRef = obj[i];\n      if (kidRef?.toString() === dict.objId) {\n        this.nodes[i] = element;\n        save = true;\n      }\n    }\n    return save;\n  }\n  get serializable() {\n    function nodeToSerializable(node, parent, level = 0) {\n      if (level > MAX_DEPTH) {\n        warn(\"StructTree too deep to be fully serialized.\");\n        return;\n      }\n      const obj = Object.create(null);\n      obj.role = node.role;\n      obj.children = [];\n      parent.children.push(obj);\n      let alt = node.dict.get(\"Alt\");\n      if (typeof alt !== \"string\") {\n        alt = node.dict.get(\"ActualText\");\n      }\n      if (typeof alt === \"string\") {\n        obj.alt = stringToPDFString(alt);\n      }\n      const a = node.dict.get(\"A\");\n      if (a instanceof Dict) {\n        const bbox = lookupNormalRect(a.getArray(\"BBox\"), null);\n        if (bbox) {\n          obj.bbox = bbox;\n        } else {\n          const width = a.get(\"Width\");\n          const height = a.get(\"Height\");\n          if (typeof width === \"number\" && width > 0 && typeof height === \"number\" && height > 0) {\n            obj.bbox = [0, 0, width, height];\n          }\n        }\n      }\n      const lang = node.dict.get(\"Lang\");\n      if (typeof lang === \"string\") {\n        obj.lang = stringToPDFString(lang);\n      }\n      for (const kid of node.kids) {\n        const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n        if (kidElement) {\n          nodeToSerializable(kidElement, obj, level + 1);\n          continue;\n        } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) {\n          obj.children.push({\n            type: \"content\",\n            id: `p${kid.pageObjId}_mc${kid.mcid}`\n          });\n        } else if (kid.type === StructElementType.OBJECT) {\n          obj.children.push({\n            type: \"object\",\n            id: kid.refObjId\n          });\n        } else if (kid.type === StructElementType.ANNOTATION) {\n          obj.children.push({\n            type: \"annotation\",\n            id: `${AnnotationPrefix}${kid.refObjId}`\n          });\n        }\n      }\n    }\n    const root = Object.create(null);\n    root.children = [];\n    root.role = \"Root\";\n    for (const child of this.nodes) {\n      if (!child) {\n        continue;\n      }\n      nodeToSerializable(child, root);\n    }\n    return root;\n  }\n}\n\n;// ./src/core/catalog.js\n\n\n\n\n\n\n\n\n\n\n\nfunction isValidExplicitDest(dest) {\n  if (!Array.isArray(dest) || dest.length < 2) {\n    return false;\n  }\n  const [page, zoom, ...args] = dest;\n  if (!(page instanceof Ref) && !Number.isInteger(page)) {\n    return false;\n  }\n  if (!(zoom instanceof Name)) {\n    return false;\n  }\n  const argsLen = args.length;\n  let allowNull = true;\n  switch (zoom.name) {\n    case \"XYZ\":\n      if (argsLen < 2 || argsLen > 3) {\n        return false;\n      }\n      break;\n    case \"Fit\":\n    case \"FitB\":\n      return argsLen === 0;\n    case \"FitH\":\n    case \"FitBH\":\n    case \"FitV\":\n    case \"FitBV\":\n      if (argsLen > 1) {\n        return false;\n      }\n      break;\n    case \"FitR\":\n      if (argsLen !== 4) {\n        return false;\n      }\n      allowNull = false;\n      break;\n    default:\n      return false;\n  }\n  for (const arg of args) {\n    if (!(typeof arg === \"number\" || allowNull && arg === null)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction fetchDest(dest) {\n  if (dest instanceof Dict) {\n    dest = dest.get(\"D\");\n  }\n  return isValidExplicitDest(dest) ? dest : null;\n}\nfunction fetchRemoteDest(action) {\n  let dest = action.get(\"D\");\n  if (dest) {\n    if (dest instanceof Name) {\n      dest = dest.name;\n    }\n    if (typeof dest === \"string\") {\n      return stringToPDFString(dest);\n    } else if (isValidExplicitDest(dest)) {\n      return JSON.stringify(dest);\n    }\n  }\n  return null;\n}\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n    this._catDict = xref.getCatalogObj();\n    if (!(this._catDict instanceof Dict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n    this.toplevelPagesDict;\n    this._actualNumPages = null;\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.standardFontDataCache = new Map();\n    this.globalImageCache = new GlobalImageCache();\n    this.pageKidsCountCache = new RefSetCache();\n    this.pageIndexCache = new RefSetCache();\n    this.pageDictCache = new RefSetCache();\n    this.nonBlendModesSet = new RefSet();\n    this.systemFontCache = new Map();\n  }\n  cloneDict() {\n    return this._catDict.clone();\n  }\n  get version() {\n    const version = this._catDict.get(\"Version\");\n    if (version instanceof Name) {\n      if (PDF_VERSION_REGEXP.test(version.name)) {\n        return shadow(this, \"version\", version.name);\n      }\n      warn(`Invalid PDF catalog version: ${version.name}`);\n    }\n    return shadow(this, \"version\", null);\n  }\n  get lang() {\n    const lang = this._catDict.get(\"Lang\");\n    return shadow(this, \"lang\", lang && typeof lang === \"string\" ? stringToPDFString(lang) : null);\n  }\n  get needsRendering() {\n    const needsRendering = this._catDict.get(\"NeedsRendering\");\n    return shadow(this, \"needsRendering\", typeof needsRendering === \"boolean\" ? needsRendering : false);\n  }\n  get collection() {\n    let collection = null;\n    try {\n      const obj = this._catDict.get(\"Collection\");\n      if (obj instanceof Dict && obj.size > 0) {\n        collection = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n    }\n    return shadow(this, \"collection\", collection);\n  }\n  get acroForm() {\n    let acroForm = null;\n    try {\n      const obj = this._catDict.get(\"AcroForm\");\n      if (obj instanceof Dict && obj.size > 0) {\n        acroForm = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n    }\n    return shadow(this, \"acroForm\", acroForm);\n  }\n  get acroFormRef() {\n    const value = this._catDict.getRaw(\"AcroForm\");\n    return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n  }\n  get metadata() {\n    const streamRef = this._catDict.getRaw(\"Metadata\");\n    if (!(streamRef instanceof Ref)) {\n      return shadow(this, \"metadata\", null);\n    }\n    let metadata = null;\n    try {\n      const stream = this.xref.fetch(streamRef, !this.xref.encrypt?.encryptMetadata);\n      if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n        const type = stream.dict.get(\"Type\");\n        const subtype = stream.dict.get(\"Subtype\");\n        if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n          const data = stringToUTF8String(stream.getString());\n          if (data) {\n            metadata = new MetadataParser(data).serializable;\n          }\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(`Skipping invalid Metadata: \"${ex}\".`);\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n  get markInfo() {\n    let markInfo = null;\n    try {\n      markInfo = this._readMarkInfo();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read mark info.\");\n    }\n    return shadow(this, \"markInfo\", markInfo);\n  }\n  _readMarkInfo() {\n    const obj = this._catDict.get(\"MarkInfo\");\n    if (!(obj instanceof Dict)) {\n      return null;\n    }\n    const markInfo = {\n      Marked: false,\n      UserProperties: false,\n      Suspects: false\n    };\n    for (const key in markInfo) {\n      const value = obj.get(key);\n      if (typeof value === \"boolean\") {\n        markInfo[key] = value;\n      }\n    }\n    return markInfo;\n  }\n  get structTreeRoot() {\n    let structTree = null;\n    try {\n      structTree = this._readStructTreeRoot();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable read to structTreeRoot info.\");\n    }\n    return shadow(this, \"structTreeRoot\", structTree);\n  }\n  _readStructTreeRoot() {\n    const rawObj = this._catDict.getRaw(\"StructTreeRoot\");\n    const obj = this.xref.fetchIfRef(rawObj);\n    if (!(obj instanceof Dict)) {\n      return null;\n    }\n    const root = new StructTreeRoot(obj, rawObj);\n    root.init();\n    return root;\n  }\n  get toplevelPagesDict() {\n    const pagesObj = this._catDict.get(\"Pages\");\n    if (!(pagesObj instanceof Dict)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n  _readDocumentOutline() {\n    let obj = this._catDict.get(\"Outlines\");\n    if (!(obj instanceof Dict)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!(obj instanceof Ref)) {\n      return null;\n    }\n    const root = {\n      items: []\n    };\n    const queue = [{\n      obj,\n      parent: root\n    }];\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        warn(\"Invalid outline item encountered.\");\n      }\n      const data = {\n        url: null,\n        dest: null,\n        action: null\n      };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.baseUrl,\n        docAttachments: this.attachments\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n      if (isNumberArray(color, 3) && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n      const outlineItem = {\n        action: data.action,\n        attachment: data.attachment,\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        setOCGState: data.setOCGState,\n        title: typeof title === \"string\" ? stringToPDFString(title) : \"\",\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: []\n      };\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (obj instanceof Ref && !processed.has(obj)) {\n        queue.push({\n          obj,\n          parent: outlineItem\n        });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (obj instanceof Ref && !processed.has(obj)) {\n        queue.push({\n          obj,\n          parent: i.parent\n        });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!(encrypt instanceof Dict)) {\n      return null;\n    }\n    let flags = encrypt.get(\"P\");\n    if (typeof flags !== \"number\") {\n      return null;\n    }\n    flags += 2 ** 32;\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n  get optionalContentConfig() {\n    let config = null;\n    try {\n      const properties = this._catDict.get(\"OCProperties\");\n      if (!properties) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const defaultConfig = properties.get(\"D\");\n      if (!defaultConfig) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groupsData = properties.get(\"OCGs\");\n      if (!Array.isArray(groupsData)) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groupRefCache = new RefSetCache();\n      for (const groupRef of groupsData) {\n        if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) {\n          continue;\n        }\n        groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef));\n      }\n      config = this.#readOptionalContentConfig(defaultConfig, groupRefCache);\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Unable to read optional content config: ${ex}`);\n    }\n    return shadow(this, \"optionalContentConfig\", config);\n  }\n  #readOptionalContentGroup(groupRef) {\n    const group = this.xref.fetch(groupRef);\n    const obj = {\n      id: groupRef.toString(),\n      name: null,\n      intent: null,\n      usage: {\n        print: null,\n        view: null\n      },\n      rbGroups: []\n    };\n    const name = group.get(\"Name\");\n    if (typeof name === \"string\") {\n      obj.name = stringToPDFString(name);\n    }\n    let intent = group.getArray(\"Intent\");\n    if (!Array.isArray(intent)) {\n      intent = [intent];\n    }\n    if (intent.every(i => i instanceof Name)) {\n      obj.intent = intent.map(i => i.name);\n    }\n    const usage = group.get(\"Usage\");\n    if (!(usage instanceof Dict)) {\n      return obj;\n    }\n    const usageObj = obj.usage;\n    const print = usage.get(\"Print\");\n    if (print instanceof Dict) {\n      const printState = print.get(\"PrintState\");\n      if (printState instanceof Name) {\n        switch (printState.name) {\n          case \"ON\":\n          case \"OFF\":\n            usageObj.print = {\n              printState: printState.name\n            };\n        }\n      }\n    }\n    const view = usage.get(\"View\");\n    if (view instanceof Dict) {\n      const viewState = view.get(\"ViewState\");\n      if (viewState instanceof Name) {\n        switch (viewState.name) {\n          case \"ON\":\n          case \"OFF\":\n            usageObj.view = {\n              viewState: viewState.name\n            };\n        }\n      }\n    }\n    return obj;\n  }\n  #readOptionalContentConfig(config, groupRefCache) {\n    function parseOnOff(refs) {\n      const onParsed = [];\n      if (Array.isArray(refs)) {\n        for (const value of refs) {\n          if (!(value instanceof Ref)) {\n            continue;\n          }\n          if (groupRefCache.has(value)) {\n            onParsed.push(value.toString());\n          }\n        }\n      }\n      return onParsed;\n    }\n    function parseOrder(refs, nestedLevels = 0) {\n      if (!Array.isArray(refs)) {\n        return null;\n      }\n      const order = [];\n      for (const value of refs) {\n        if (value instanceof Ref && groupRefCache.has(value)) {\n          parsedOrderRefs.put(value);\n          order.push(value.toString());\n          continue;\n        }\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\n        if (nestedOrder) {\n          order.push(nestedOrder);\n        }\n      }\n      if (nestedLevels > 0) {\n        return order;\n      }\n      const hiddenGroups = [];\n      for (const [groupRef] of groupRefCache.items()) {\n        if (parsedOrderRefs.has(groupRef)) {\n          continue;\n        }\n        hiddenGroups.push(groupRef.toString());\n      }\n      if (hiddenGroups.length) {\n        order.push({\n          name: null,\n          order: hiddenGroups\n        });\n      }\n      return order;\n    }\n    function parseNestedOrder(ref, nestedLevels) {\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\n        warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n        return null;\n      }\n      const value = xref.fetchIfRef(ref);\n      if (!Array.isArray(value)) {\n        return null;\n      }\n      const nestedName = xref.fetchIfRef(value[0]);\n      if (typeof nestedName !== \"string\") {\n        return null;\n      }\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n      if (!nestedOrder || !nestedOrder.length) {\n        return null;\n      }\n      return {\n        name: stringToPDFString(nestedName),\n        order: nestedOrder\n      };\n    }\n    function parseRBGroups(rbGroups) {\n      if (!Array.isArray(rbGroups)) {\n        return;\n      }\n      for (const value of rbGroups) {\n        const rbGroup = xref.fetchIfRef(value);\n        if (!Array.isArray(rbGroup) || !rbGroup.length) {\n          continue;\n        }\n        const parsedRbGroup = new Set();\n        for (const ref of rbGroup) {\n          if (ref instanceof Ref && groupRefCache.has(ref) && !parsedRbGroup.has(ref.toString())) {\n            parsedRbGroup.add(ref.toString());\n            groupRefCache.get(ref).rbGroups.push(parsedRbGroup);\n          }\n        }\n      }\n    }\n    const xref = this.xref,\n      parsedOrderRefs = new RefSet(),\n      MAX_NESTED_LEVELS = 10;\n    parseRBGroups(config.get(\"RBGroups\"));\n    return {\n      name: typeof config.get(\"Name\") === \"string\" ? stringToPDFString(config.get(\"Name\")) : null,\n      creator: typeof config.get(\"Creator\") === \"string\" ? stringToPDFString(config.get(\"Creator\")) : null,\n      baseState: config.get(\"BaseState\") instanceof Name ? config.get(\"BaseState\").name : null,\n      on: parseOnOff(config.get(\"ON\")),\n      off: parseOnOff(config.get(\"OFF\")),\n      order: parseOrder(config.get(\"Order\")),\n      groups: [...groupRefCache]\n    };\n  }\n  setActualNumPages(num = null) {\n    this._actualNumPages = num;\n  }\n  get hasActualNumPages() {\n    return this._actualNumPages !== null;\n  }\n  get _pagesCount() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n    }\n    return shadow(this, \"_pagesCount\", obj);\n  }\n  get numPages() {\n    return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n  }\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      for (const [key, value] of obj.getAll()) {\n        const dest = fetchDest(value);\n        if (dest) {\n          dests[stringToPDFString(key)] = dest;\n        }\n      }\n    } else if (obj instanceof Dict) {\n      for (const [key, value] of obj) {\n        const dest = fetchDest(value);\n        if (dest) {\n          dests[key] = dest;\n        }\n      }\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n  getDestination(id) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree) {\n      const dest = fetchDest(obj.get(id));\n      if (dest) {\n        return dest;\n      }\n      const allDest = this.destinations[id];\n      if (allDest) {\n        warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n        return allDest;\n      }\n    } else if (obj instanceof Dict) {\n      const dest = fetchDest(obj.get(id));\n      if (dest) {\n        return dest;\n      }\n    }\n    return null;\n  }\n  _readDests() {\n    const obj = this._catDict.get(\"Names\");\n    if (obj?.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this._catDict.has(\"Dests\")) {\n      return this._catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n  _readPageLabels() {\n    const obj = this._catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      const labelDict = nums.get(i);\n      if (labelDict !== undefined) {\n        if (!(labelDict instanceof Dict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n        if (labelDict.has(\"Type\") && !isName(labelDict.get(\"Type\"), \"PageLabel\")) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!(s instanceof Name)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (typeof p !== \"string\") {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26;\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);\n          currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);\n          break;\n        default:\n          if (style) {\n            throw new FormatError(`Invalid style \"${style}\" in PageLabel dictionary.`);\n          }\n          currentLabel = \"\";\n      }\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n  get pageLayout() {\n    const obj = this._catDict.get(\"PageLayout\");\n    let pageLayout = \"\";\n    if (obj instanceof Name) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n  get pageMode() {\n    const obj = this._catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\";\n    if (obj instanceof Name) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n  get viewerPreferences() {\n    const obj = this._catDict.get(\"ViewerPreferences\");\n    if (!(obj instanceof Dict)) {\n      return shadow(this, \"viewerPreferences\", null);\n    }\n    let prefs = null;\n    for (const key of obj.getKeys()) {\n      const value = obj.get(key);\n      let prefValue;\n      switch (key) {\n        case \"HideToolbar\":\n        case \"HideMenubar\":\n        case \"HideWindowUI\":\n        case \"FitWindow\":\n        case \"CenterWindow\":\n        case \"DisplayDocTitle\":\n        case \"PickTrayByPDFSize\":\n          if (typeof value === \"boolean\") {\n            prefValue = value;\n          }\n          break;\n        case \"NonFullScreenPageMode\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n          }\n          break;\n        case \"Direction\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n          }\n          break;\n        case \"ViewArea\":\n        case \"ViewClip\":\n        case \"PrintArea\":\n        case \"PrintClip\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n          }\n          break;\n        case \"PrintScaling\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n          }\n          break;\n        case \"Duplex\":\n          if (value instanceof Name) {\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n          }\n          break;\n        case \"PrintPageRange\":\n          if (Array.isArray(value) && value.length % 2 === 0) {\n            const isValid = value.every((page, i, arr) => Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages);\n            if (isValid) {\n              prefValue = value;\n            }\n          }\n          break;\n        case \"NumCopies\":\n          if (Number.isInteger(value) && value > 0) {\n            prefValue = value;\n          }\n          break;\n        default:\n          warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n          continue;\n      }\n      if (prefValue === undefined) {\n        warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n        continue;\n      }\n      if (!prefs) {\n        prefs = Object.create(null);\n      }\n      prefs[key] = prefValue;\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n  get openAction() {\n    const obj = this._catDict.get(\"OpenAction\");\n    const openAction = Object.create(null);\n    if (obj instanceof Dict) {\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n      const resultObj = {\n        url: null,\n        dest: null,\n        action: null\n      };\n      Catalog.parseDestDictionary({\n        destDict,\n        resultObj\n      });\n      if (Array.isArray(resultObj.dest)) {\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      openAction.dest = obj;\n    }\n    return shadow(this, \"openAction\", objectSize(openAction) > 0 ? openAction : null);\n  }\n  get attachments() {\n    const obj = this._catDict.get(\"Names\");\n    let attachments = null;\n    if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        const fs = new FileSpec(value, this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(key)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n  get xfaImages() {\n    const obj = this._catDict.get(\"Names\");\n    let xfaImages = null;\n    if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n      const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        if (!xfaImages) {\n          xfaImages = new Dict(this.xref);\n        }\n        xfaImages.set(stringToPDFString(key), value);\n      }\n    }\n    return shadow(this, \"xfaImages\", xfaImages);\n  }\n  _collectJavaScript() {\n    const obj = this._catDict.get(\"Names\");\n    let javaScript = null;\n    function appendIfJavaScriptDict(name, jsDict) {\n      if (!(jsDict instanceof Dict)) {\n        return;\n      }\n      if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n        return;\n      }\n      let js = jsDict.get(\"JS\");\n      if (js instanceof BaseStream) {\n        js = js.getString();\n      } else if (typeof js !== \"string\") {\n        return;\n      }\n      js = stringToPDFString(js).replaceAll(\"\\x00\", \"\");\n      if (js) {\n        (javaScript ||= new Map()).set(name, js);\n      }\n    }\n    if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        appendIfJavaScriptDict(stringToPDFString(key), value);\n      }\n    }\n    const openAction = this._catDict.get(\"OpenAction\");\n    if (openAction) {\n      appendIfJavaScriptDict(\"OpenAction\", openAction);\n    }\n    return javaScript;\n  }\n  get jsActions() {\n    const javaScript = this._collectJavaScript();\n    let actions = collectActions(this.xref, this._catDict, DocumentActionEventType);\n    if (javaScript) {\n      actions ||= Object.create(null);\n      for (const [key, val] of javaScript) {\n        if (key in actions) {\n          actions[key].push(val);\n        } else {\n          actions[key] = [val];\n        }\n      }\n    }\n    return shadow(this, \"jsActions\", actions);\n  }\n  async fontFallback(id, handler) {\n    const translatedFonts = await Promise.all(this.fontCache);\n    for (const translatedFont of translatedFonts) {\n      if (translatedFont.loadedName === id) {\n        translatedFont.fallback(handler);\n        return;\n      }\n    }\n  }\n  async cleanup(manuallyTriggered = false) {\n    clearGlobalCaches();\n    this.globalImageCache.clear(manuallyTriggered);\n    this.pageKidsCountCache.clear();\n    this.pageIndexCache.clear();\n    this.pageDictCache.clear();\n    this.nonBlendModesSet.clear();\n    const translatedFonts = await Promise.all(this.fontCache);\n    for (const {\n      dict\n    } of translatedFonts) {\n      delete dict.cacheKey;\n    }\n    this.fontCache.clear();\n    this.builtInCMapCache.clear();\n    this.standardFontDataCache.clear();\n    this.systemFontCache.clear();\n  }\n  async getPageDict(pageIndex) {\n    const nodesToVisit = [this.toplevelPagesDict];\n    const visitedNodes = new RefSet();\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n    if (pagesRef instanceof Ref) {\n      visitedNodes.put(pagesRef);\n    }\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache,\n      pageIndexCache = this.pageIndexCache,\n      pageDictCache = this.pageDictCache;\n    let currentPageIndex = 0;\n    while (nodesToVisit.length) {\n      const currentNode = nodesToVisit.pop();\n      if (currentNode instanceof Ref) {\n        const count = pageKidsCountCache.get(currentNode);\n        if (count >= 0 && currentPageIndex + count <= pageIndex) {\n          currentPageIndex += count;\n          continue;\n        }\n        if (visitedNodes.has(currentNode)) {\n          throw new FormatError(\"Pages tree contains circular reference.\");\n        }\n        visitedNodes.put(currentNode);\n        const obj = await (pageDictCache.get(currentNode) || xref.fetchAsync(currentNode));\n        if (obj instanceof Dict) {\n          let type = obj.getRaw(\"Type\");\n          if (type instanceof Ref) {\n            type = await xref.fetchAsync(type);\n          }\n          if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n            if (!pageKidsCountCache.has(currentNode)) {\n              pageKidsCountCache.put(currentNode, 1);\n            }\n            if (!pageIndexCache.has(currentNode)) {\n              pageIndexCache.put(currentNode, currentPageIndex);\n            }\n            if (currentPageIndex === pageIndex) {\n              return [obj, currentNode];\n            }\n            currentPageIndex++;\n            continue;\n          }\n        }\n        nodesToVisit.push(obj);\n        continue;\n      }\n      if (!(currentNode instanceof Dict)) {\n        throw new FormatError(\"Page dictionary kid reference points to wrong type of object.\");\n      }\n      const {\n        objId\n      } = currentNode;\n      let count = currentNode.getRaw(\"Count\");\n      if (count instanceof Ref) {\n        count = await xref.fetchAsync(count);\n      }\n      if (Number.isInteger(count) && count >= 0) {\n        if (objId && !pageKidsCountCache.has(objId)) {\n          pageKidsCountCache.put(objId, count);\n        }\n        if (currentPageIndex + count <= pageIndex) {\n          currentPageIndex += count;\n          continue;\n        }\n      }\n      let kids = currentNode.getRaw(\"Kids\");\n      if (kids instanceof Ref) {\n        kids = await xref.fetchAsync(kids);\n      }\n      if (!Array.isArray(kids)) {\n        let type = currentNode.getRaw(\"Type\");\n        if (type instanceof Ref) {\n          type = await xref.fetchAsync(type);\n        }\n        if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n          if (currentPageIndex === pageIndex) {\n            return [currentNode, null];\n          }\n          currentPageIndex++;\n          continue;\n        }\n        throw new FormatError(\"Page dictionary kids object is not an array.\");\n      }\n      for (let last = kids.length - 1; last >= 0; last--) {\n        const lastKid = kids[last];\n        nodesToVisit.push(lastKid);\n        if (currentNode === this.toplevelPagesDict && lastKid instanceof Ref && !pageDictCache.has(lastKid)) {\n          pageDictCache.put(lastKid, xref.fetchAsync(lastKid));\n        }\n      }\n    }\n    throw new Error(`Page index ${pageIndex} not found.`);\n  }\n  async getAllPageDicts(recoveryMode = false) {\n    const {\n      ignoreErrors\n    } = this.pdfManager.evaluatorOptions;\n    const queue = [{\n      currentNode: this.toplevelPagesDict,\n      posInKids: 0\n    }];\n    const visitedNodes = new RefSet();\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n    if (pagesRef instanceof Ref) {\n      visitedNodes.put(pagesRef);\n    }\n    const map = new Map(),\n      xref = this.xref,\n      pageIndexCache = this.pageIndexCache;\n    let pageIndex = 0;\n    function addPageDict(pageDict, pageRef) {\n      if (pageRef && !pageIndexCache.has(pageRef)) {\n        pageIndexCache.put(pageRef, pageIndex);\n      }\n      map.set(pageIndex++, [pageDict, pageRef]);\n    }\n    function addPageError(error) {\n      if (error instanceof XRefEntryException && !recoveryMode) {\n        throw error;\n      }\n      if (recoveryMode && ignoreErrors && pageIndex === 0) {\n        warn(`getAllPageDicts - Skipping invalid first page: \"${error}\".`);\n        error = Dict.empty;\n      }\n      map.set(pageIndex++, [error, null]);\n    }\n    while (queue.length > 0) {\n      const queueItem = queue.at(-1);\n      const {\n        currentNode,\n        posInKids\n      } = queueItem;\n      let kids = currentNode.getRaw(\"Kids\");\n      if (kids instanceof Ref) {\n        try {\n          kids = await xref.fetchAsync(kids);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      }\n      if (!Array.isArray(kids)) {\n        addPageError(new FormatError(\"Page dictionary kids object is not an array.\"));\n        break;\n      }\n      if (posInKids >= kids.length) {\n        queue.pop();\n        continue;\n      }\n      const kidObj = kids[posInKids];\n      let obj;\n      if (kidObj instanceof Ref) {\n        if (visitedNodes.has(kidObj)) {\n          addPageError(new FormatError(\"Pages tree contains circular reference.\"));\n          break;\n        }\n        visitedNodes.put(kidObj);\n        try {\n          obj = await xref.fetchAsync(kidObj);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      } else {\n        obj = kidObj;\n      }\n      if (!(obj instanceof Dict)) {\n        addPageError(new FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n        break;\n      }\n      let type = obj.getRaw(\"Type\");\n      if (type instanceof Ref) {\n        try {\n          type = await xref.fetchAsync(type);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      }\n      if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n        addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n      } else {\n        queue.push({\n          currentNode: obj,\n          posInKids: 0\n        });\n      }\n      queueItem.posInKids++;\n    }\n    return map;\n  }\n  getPageIndex(pageRef) {\n    const cachedPageIndex = this.pageIndexCache.get(pageRef);\n    if (cachedPageIndex !== undefined) {\n      return Promise.resolve(cachedPageIndex);\n    }\n    const xref = this.xref;\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n      return xref.fetchAsync(kidRef).then(function (node) {\n        if (isRefsEqual(kidRef, pageRef) && !isDict(node, \"Page\") && !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))) {\n          throw new FormatError(\"The reference does not point to a /Page dictionary.\");\n        }\n        if (!node) {\n          return null;\n        }\n        if (!(node instanceof Dict)) {\n          throw new FormatError(\"Node must be a dictionary.\");\n        }\n        parentRef = node.getRaw(\"Parent\");\n        return node.getAsync(\"Parent\");\n      }).then(function (parent) {\n        if (!parent) {\n          return null;\n        }\n        if (!(parent instanceof Dict)) {\n          throw new FormatError(\"Parent must be a dictionary.\");\n        }\n        return parent.getAsync(\"Kids\");\n      }).then(function (kids) {\n        if (!kids) {\n          return null;\n        }\n        const kidPromises = [];\n        let found = false;\n        for (const kid of kids) {\n          if (!(kid instanceof Ref)) {\n            throw new FormatError(\"Kid must be a reference.\");\n          }\n          if (isRefsEqual(kid, kidRef)) {\n            found = true;\n            break;\n          }\n          kidPromises.push(xref.fetchAsync(kid).then(function (obj) {\n            if (!(obj instanceof Dict)) {\n              throw new FormatError(\"Kid node must be a dictionary.\");\n            }\n            if (obj.has(\"Count\")) {\n              total += obj.get(\"Count\");\n            } else {\n              total++;\n            }\n          }));\n        }\n        if (!found) {\n          throw new FormatError(\"Kid reference not found in parent's kids.\");\n        }\n        return Promise.all(kidPromises).then(function () {\n          return [total, parentRef];\n        });\n      });\n    }\n    let total = 0;\n    const next = ref => pagesBeforeRef(ref).then(args => {\n      if (!args) {\n        this.pageIndexCache.put(pageRef, total);\n        return total;\n      }\n      const [count, parentRef] = args;\n      total += count;\n      return next(parentRef);\n    });\n    return next(pageRef);\n  }\n  get baseUrl() {\n    const uri = this._catDict.get(\"URI\");\n    if (uri instanceof Dict) {\n      const base = uri.get(\"Base\");\n      if (typeof base === \"string\") {\n        const absoluteUrl = createValidAbsoluteUrl(base, null, {\n          tryConvertEncoding: true\n        });\n        if (absoluteUrl) {\n          return shadow(this, \"baseUrl\", absoluteUrl.href);\n        }\n      }\n    }\n    return shadow(this, \"baseUrl\", this.pdfManager.docBaseUrl);\n  }\n  static parseDestDictionary({\n    destDict,\n    resultObj,\n    docBaseUrl = null,\n    docAttachments = null\n  }) {\n    if (!(destDict instanceof Dict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!(action instanceof Dict)) {\n      if (destDict.has(\"Dest\")) {\n        action = destDict.get(\"Dest\");\n      } else {\n        action = destDict.get(\"AA\");\n        if (action instanceof Dict) {\n          if (action.has(\"D\")) {\n            action = action.get(\"D\");\n          } else if (action.has(\"U\")) {\n            action = action.get(\"U\");\n          }\n        }\n      }\n    }\n    if (action instanceof Dict) {\n      const actionType = action.get(\"S\");\n      if (!(actionType instanceof Name)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n      switch (actionName) {\n        case \"ResetForm\":\n          const flags = action.get(\"Flags\");\n          const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n          const fields = [];\n          const refs = [];\n          for (const obj of action.get(\"Fields\") || []) {\n            if (obj instanceof Ref) {\n              refs.push(obj.toString());\n            } else if (typeof obj === \"string\") {\n              fields.push(stringToPDFString(obj));\n            }\n          }\n          resultObj.resetForm = {\n            fields,\n            refs,\n            include\n          };\n          break;\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (url instanceof Name) {\n            url = \"/\" + url.name;\n          }\n          break;\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n        case \"Launch\":\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (urlDict instanceof Dict) {\n            const fs = new FileSpec(urlDict, null, true);\n            const {\n              rawFilename\n            } = fs.serializable;\n            url = rawFilename;\n          } else if (typeof urlDict === \"string\") {\n            url = urlDict;\n          }\n          const remoteDest = fetchRemoteDest(action);\n          if (remoteDest && typeof url === \"string\") {\n            url = url.split(\"#\", 1)[0] + \"#\" + remoteDest;\n          }\n          const newWindow = action.get(\"NewWindow\");\n          if (typeof newWindow === \"boolean\") {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n        case \"GoToE\":\n          const target = action.get(\"T\");\n          let attachment;\n          if (docAttachments && target instanceof Dict) {\n            const relationship = target.get(\"R\");\n            const name = target.get(\"N\");\n            if (isName(relationship, \"C\") && typeof name === \"string\") {\n              attachment = docAttachments[stringToPDFString(name)];\n            }\n          }\n          if (attachment) {\n            resultObj.attachment = attachment;\n            const attachmentDest = fetchRemoteDest(action);\n            if (attachmentDest) {\n              resultObj.attachmentDest = attachmentDest;\n            }\n          } else {\n            warn(`parseDestDictionary - unimplemented \"GoToE\" action.`);\n          }\n          break;\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (namedAction instanceof Name) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n        case \"SetOCGState\":\n          const state = action.get(\"State\");\n          const preserveRB = action.get(\"PreserveRB\");\n          if (!Array.isArray(state) || state.length === 0) {\n            break;\n          }\n          const stateArr = [];\n          for (const elem of state) {\n            if (elem instanceof Name) {\n              switch (elem.name) {\n                case \"ON\":\n                case \"OFF\":\n                case \"Toggle\":\n                  stateArr.push(elem.name);\n                  break;\n              }\n            } else if (elem instanceof Ref) {\n              stateArr.push(elem.toString());\n            }\n          }\n          if (stateArr.length !== state.length) {\n            break;\n          }\n          resultObj.setOCGState = {\n            state: stateArr,\n            preserveRB: typeof preserveRB === \"boolean\" ? preserveRB : true\n          };\n          break;\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n          if (jsAction instanceof BaseStream) {\n            js = jsAction.getString();\n          } else if (typeof jsAction === \"string\") {\n            js = jsAction;\n          }\n          const jsURL = js && recoverJsURL(stringToPDFString(js));\n          if (jsURL) {\n            url = jsURL.url;\n            resultObj.newWindow = jsURL.newWindow;\n            break;\n          }\n        default:\n          if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n            break;\n          }\n          warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      dest = destDict.get(\"Dest\");\n    }\n    if (typeof url === \"string\") {\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n        addDefaultProtocol: true,\n        tryConvertEncoding: true\n      });\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (dest instanceof Name) {\n        dest = dest.name;\n      }\n      if (typeof dest === \"string\") {\n        resultObj.dest = stringToPDFString(dest);\n      } else if (isValidExplicitDest(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\n;// ./src/core/object_loader.js\n\n\n\n\nfunction mayHaveChildren(value) {\n  return value instanceof Ref || value instanceof Dict || value instanceof BaseStream || Array.isArray(value);\n}\nfunction addChildren(node, nodesToVisit) {\n  if (node instanceof Dict) {\n    node = node.getRawValues();\n  } else if (node instanceof BaseStream) {\n    node = node.dict.getRawValues();\n  } else if (!Array.isArray(node)) {\n    return;\n  }\n  for (const rawValue of node) {\n    if (mayHaveChildren(rawValue)) {\n      nodesToVisit.push(rawValue);\n    }\n  }\n}\nclass ObjectLoader {\n  constructor(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n  async load() {\n    if (this.xref.stream.isDataLoaded) {\n      return undefined;\n    }\n    const {\n      keys,\n      dict\n    } = this;\n    this.refSet = new RefSet();\n    const nodesToVisit = [];\n    for (const key of keys) {\n      const rawValue = dict.getRaw(key);\n      if (rawValue !== undefined) {\n        nodesToVisit.push(rawValue);\n      }\n    }\n    return this._walk(nodesToVisit);\n  }\n  async _walk(nodesToVisit) {\n    const nodesToRevisit = [];\n    const pendingRequests = [];\n    while (nodesToVisit.length) {\n      let currentNode = nodesToVisit.pop();\n      if (currentNode instanceof Ref) {\n        if (this.refSet.has(currentNode)) {\n          continue;\n        }\n        try {\n          this.refSet.put(currentNode);\n          currentNode = this.xref.fetch(currentNode);\n        } catch (ex) {\n          if (!(ex instanceof MissingDataException)) {\n            warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n            this.refSet = null;\n            const {\n              manager\n            } = this.xref.stream;\n            return manager.requestAllChunks();\n          }\n          nodesToRevisit.push(currentNode);\n          pendingRequests.push({\n            begin: ex.begin,\n            end: ex.end\n          });\n        }\n      }\n      if (currentNode instanceof BaseStream) {\n        const baseStreams = currentNode.getBaseStreams();\n        if (baseStreams) {\n          let foundMissingData = false;\n          for (const stream of baseStreams) {\n            if (stream.isDataLoaded) {\n              continue;\n            }\n            foundMissingData = true;\n            pendingRequests.push({\n              begin: stream.start,\n              end: stream.end\n            });\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n      }\n      addChildren(currentNode, nodesToVisit);\n    }\n    if (pendingRequests.length) {\n      await this.xref.stream.manager.requestRanges(pendingRequests);\n      for (const node of nodesToRevisit) {\n        if (node instanceof Ref) {\n          this.refSet.remove(node);\n        }\n      }\n      return this._walk(nodesToRevisit);\n    }\n    this.refSet = null;\n    return undefined;\n  }\n}\n\n;// ./src/core/xfa/symbol_utils.js\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\n;// ./src/core/xfa/namespaces.js\nconst $buildXFAObject = Symbol();\nconst NamespaceIds = {\n  config: {\n    id: 0,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\")\n  },\n  connectionSet: {\n    id: 1,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\")\n  },\n  datasets: {\n    id: 2,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\")\n  },\n  form: {\n    id: 3,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\")\n  },\n  localeSet: {\n    id: 4,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\")\n  },\n  pdf: {\n    id: 5,\n    check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\"\n  },\n  signature: {\n    id: 6,\n    check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\"\n  },\n  sourceSet: {\n    id: 7,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\")\n  },\n  stylesheet: {\n    id: 8,\n    check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\"\n  },\n  template: {\n    id: 9,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\")\n  },\n  xdc: {\n    id: 10,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\")\n  },\n  xdp: {\n    id: 11,\n    check: ns => ns === \"http://ns.adobe.com/xdp/\"\n  },\n  xfdf: {\n    id: 12,\n    check: ns => ns === \"http://ns.adobe.com/xfdf/\"\n  },\n  xhtml: {\n    id: 13,\n    check: ns => ns === \"http://www.w3.org/1999/xhtml\"\n  },\n  xmpmeta: {\n    id: 14,\n    check: ns => ns === \"http://ns.adobe.com/xmpmeta/\"\n  }\n};\n\n;// ./src/core/xfa/utils.js\n\nconst dimConverters = {\n  pt: x => x,\n  cm: x => x / 2.54 * 72,\n  mm: x => x / (10 * 2.54) * 72,\n  in: x => x * 72,\n  px: x => x\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\nfunction stripQuotes(str) {\n  if (str.startsWith(\"'\") || str.startsWith('\"')) {\n    return str.slice(1, -1);\n  }\n  return str;\n}\nfunction getInteger({\n  data,\n  defaultValue,\n  validate\n}) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  const n = parseInt(data, 10);\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n  return defaultValue;\n}\nfunction getFloat({\n  data,\n  defaultValue,\n  validate\n}) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  const n = parseFloat(data);\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n  return defaultValue;\n}\nfunction getKeyword({\n  data,\n  defaultValue,\n  validate\n}) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  if (validate(data)) {\n    return data;\n  }\n  return defaultValue;\n}\nfunction getStringOption(data, options) {\n  return getKeyword({\n    data,\n    defaultValue: options[0],\n    validate: k => options.includes(k)\n  });\n}\nfunction getMeasurement(str, def = \"0\") {\n  def ||= \"0\";\n  if (!str) {\n    return getMeasurement(def);\n  }\n  const match = str.trim().match(measurementPattern);\n  if (!match) {\n    return getMeasurement(def);\n  }\n  const [, valueStr, unit] = match;\n  const value = parseFloat(valueStr);\n  if (isNaN(value)) {\n    return getMeasurement(def);\n  }\n  if (value === 0) {\n    return 0;\n  }\n  const conv = dimConverters[unit];\n  if (conv) {\n    return conv(value);\n  }\n  return value;\n}\nfunction getRatio(data) {\n  if (!data) {\n    return {\n      num: 1,\n      den: 1\n    };\n  }\n  const ratio = data.trim().split(/\\s*:\\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x));\n  if (ratio.length === 1) {\n    ratio.push(1);\n  }\n  if (ratio.length === 0) {\n    return {\n      num: 1,\n      den: 1\n    };\n  }\n  const [num, den] = ratio;\n  return {\n    num,\n    den\n  };\n}\nfunction getRelevant(data) {\n  if (!data) {\n    return [];\n  }\n  return data.trim().split(/\\s+/).map(e => ({\n    excluded: e[0] === \"-\",\n    viewname: e.substring(1)\n  }));\n}\nfunction getColor(data, def = [0, 0, 0]) {\n  let [r, g, b] = def;\n  if (!data) {\n    return {\n      r,\n      g,\n      b\n    };\n  }\n  const color = data.trim().split(/\\s*,\\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c);\n  if (color.length < 3) {\n    return {\n      r,\n      g,\n      b\n    };\n  }\n  [r, g, b] = color;\n  return {\n    r,\n    g,\n    b\n  };\n}\nfunction getBBox(data) {\n  const def = -1;\n  if (!data) {\n    return {\n      x: def,\n      y: def,\n      width: def,\n      height: def\n    };\n  }\n  const bbox = data.trim().split(/\\s*,\\s*/).map(m => getMeasurement(m, \"-1\"));\n  if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n    return {\n      x: def,\n      y: def,\n      width: def,\n      height: def\n    };\n  }\n  const [x, y, width, height] = bbox;\n  return {\n    x,\n    y,\n    width,\n    height\n  };\n}\nclass HTMLResult {\n  static get FAILURE() {\n    return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n  }\n  static get EMPTY() {\n    return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n  }\n  constructor(success, html, bbox, breakNode) {\n    this.success = success;\n    this.html = html;\n    this.bbox = bbox;\n    this.breakNode = breakNode;\n  }\n  isBreak() {\n    return !!this.breakNode;\n  }\n  static breakNode(node) {\n    return new HTMLResult(false, null, null, node);\n  }\n  static success(html, bbox = null) {\n    return new HTMLResult(true, html, bbox, null);\n  }\n}\n\n;// ./src/core/xfa/fonts.js\n\n\n\nclass FontFinder {\n  constructor(pdfFonts) {\n    this.fonts = new Map();\n    this.cache = new Map();\n    this.warned = new Set();\n    this.defaultFont = null;\n    this.add(pdfFonts);\n  }\n  add(pdfFonts, reallyMissingFonts = null) {\n    for (const pdfFont of pdfFonts) {\n      this.addPdfFont(pdfFont);\n    }\n    for (const pdfFont of this.fonts.values()) {\n      if (!pdfFont.regular) {\n        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n      }\n    }\n    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n      return;\n    }\n    const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n    for (const missing of reallyMissingFonts) {\n      this.fonts.set(missing, myriad);\n    }\n  }\n  addPdfFont(pdfFont) {\n    const cssFontInfo = pdfFont.cssFontInfo;\n    const name = cssFontInfo.fontFamily;\n    let font = this.fonts.get(name);\n    if (!font) {\n      font = Object.create(null);\n      this.fonts.set(name, font);\n      if (!this.defaultFont) {\n        this.defaultFont = font;\n      }\n    }\n    let property = \"\";\n    const fontWeight = parseFloat(cssFontInfo.fontWeight);\n    if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n      property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n    } else if (fontWeight >= 700) {\n      property = \"bold\";\n    }\n    if (!property) {\n      if (pdfFont.name.includes(\"Bold\") || pdfFont.psName?.includes(\"Bold\")) {\n        property = \"bold\";\n      }\n      if (pdfFont.name.includes(\"Italic\") || pdfFont.name.endsWith(\"It\") || pdfFont.psName?.includes(\"Italic\") || pdfFont.psName?.endsWith(\"It\")) {\n        property += \"italic\";\n      }\n    }\n    if (!property) {\n      property = \"regular\";\n    }\n    font[property] = pdfFont;\n  }\n  getDefault() {\n    return this.defaultFont;\n  }\n  find(fontName, mustWarn = true) {\n    let font = this.fonts.get(fontName) || this.cache.get(fontName);\n    if (font) {\n      return font;\n    }\n    const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n    let name = fontName.replaceAll(pattern, \"\");\n    font = this.fonts.get(name);\n    if (font) {\n      this.cache.set(fontName, font);\n      return font;\n    }\n    name = name.toLowerCase();\n    const maybe = [];\n    for (const [family, pdfFont] of this.fonts.entries()) {\n      if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n        maybe.push(pdfFont);\n      }\n    }\n    if (maybe.length === 0) {\n      for (const [, pdfFont] of this.fonts.entries()) {\n        if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n    if (maybe.length === 0) {\n      name = name.replaceAll(/psmt|mt/gi, \"\");\n      for (const [family, pdfFont] of this.fonts.entries()) {\n        if (family.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n    if (maybe.length === 0) {\n      for (const pdfFont of this.fonts.values()) {\n        if (pdfFont.regular.name?.replaceAll(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n    if (maybe.length >= 1) {\n      if (maybe.length !== 1 && mustWarn) {\n        warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n      }\n      this.cache.set(fontName, maybe[0]);\n      return maybe[0];\n    }\n    if (mustWarn && !this.warned.has(fontName)) {\n      this.warned.add(fontName);\n      warn(`XFA - Cannot find the font: ${fontName}`);\n    }\n    return null;\n  }\n}\nfunction selectFont(xfaFont, typeface) {\n  if (xfaFont.posture === \"italic\") {\n    if (xfaFont.weight === \"bold\") {\n      return typeface.bolditalic;\n    }\n    return typeface.italic;\n  } else if (xfaFont.weight === \"bold\") {\n    return typeface.bold;\n  }\n  return typeface.regular;\n}\nfunction fonts_getMetrics(xfaFont, real = false) {\n  let pdfFont = null;\n  if (xfaFont) {\n    const name = stripQuotes(xfaFont.typeface);\n    const typeface = xfaFont[$globalData].fontFinder.find(name);\n    pdfFont = selectFont(xfaFont, typeface);\n  }\n  if (!pdfFont) {\n    return {\n      lineHeight: 12,\n      lineGap: 2,\n      lineNoGap: 10\n    };\n  }\n  const size = xfaFont.size || 10;\n  const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2;\n  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n  return {\n    lineHeight: lineHeight * size,\n    lineGap: lineGap * size,\n    lineNoGap: Math.max(1, lineHeight - lineGap) * size\n  };\n}\n\n;// ./src/core/xfa/text.js\n\nconst WIDTH_FACTOR = 1.02;\nclass FontInfo {\n  constructor(xfaFont, margin, lineHeight, fontFinder) {\n    this.lineHeight = lineHeight;\n    this.paraMargin = margin || {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0\n    };\n    if (!xfaFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n    this.xfaFont = {\n      typeface: xfaFont.typeface,\n      posture: xfaFont.posture,\n      weight: xfaFont.weight,\n      size: xfaFont.size,\n      letterSpacing: xfaFont.letterSpacing\n    };\n    const typeface = fontFinder.find(xfaFont.typeface);\n    if (!typeface) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n    this.pdfFont = selectFont(xfaFont, typeface);\n    if (!this.pdfFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n    }\n  }\n  defaultFont(fontFinder) {\n    const font = fontFinder.find(\"Helvetica\", false) || fontFinder.find(\"Myriad Pro\", false) || fontFinder.find(\"Arial\", false) || fontFinder.getDefault();\n    if (font?.regular) {\n      const pdfFont = font.regular;\n      const info = pdfFont.cssFontInfo;\n      const xfaFont = {\n        typeface: info.fontFamily,\n        posture: \"normal\",\n        weight: \"normal\",\n        size: 10,\n        letterSpacing: 0\n      };\n      return [pdfFont, xfaFont];\n    }\n    const xfaFont = {\n      typeface: \"Courier\",\n      posture: \"normal\",\n      weight: \"normal\",\n      size: 10,\n      letterSpacing: 0\n    };\n    return [null, xfaFont];\n  }\n}\nclass FontSelector {\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) {\n    this.fontFinder = fontFinder;\n    this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)];\n  }\n  pushData(xfaFont, margin, lineHeight) {\n    const lastFont = this.stack.at(-1);\n    for (const name of [\"typeface\", \"posture\", \"weight\", \"size\", \"letterSpacing\"]) {\n      if (!xfaFont[name]) {\n        xfaFont[name] = lastFont.xfaFont[name];\n      }\n    }\n    for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n      if (isNaN(margin[name])) {\n        margin[name] = lastFont.paraMargin[name];\n      }\n    }\n    const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder);\n    if (!fontInfo.pdfFont) {\n      fontInfo.pdfFont = lastFont.pdfFont;\n    }\n    this.stack.push(fontInfo);\n  }\n  popFont() {\n    this.stack.pop();\n  }\n  topFont() {\n    return this.stack.at(-1);\n  }\n}\nclass TextMeasure {\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n    this.glyphs = [];\n    this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts);\n    this.extraHeight = 0;\n  }\n  pushData(xfaFont, margin, lineHeight) {\n    this.fontSelector.pushData(xfaFont, margin, lineHeight);\n  }\n  popFont(xfaFont) {\n    return this.fontSelector.popFont();\n  }\n  addPara() {\n    const lastFont = this.fontSelector.topFont();\n    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n  }\n  addString(str) {\n    if (!str) {\n      return;\n    }\n    const lastFont = this.fontSelector.topFont();\n    const fontSize = lastFont.xfaFont.size;\n    if (lastFont.pdfFont) {\n      const letterSpacing = lastFont.xfaFont.letterSpacing;\n      const pdfFont = lastFont.pdfFont;\n      const fontLineHeight = pdfFont.lineHeight || 1.2;\n      const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n      const noGap = fontLineHeight - lineGap;\n      const firstLineHeight = Math.max(1, noGap) * fontSize;\n      const scale = fontSize / 1000;\n      const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n      for (const line of str.split(/[\\u2029\\n]/)) {\n        const encodedLine = pdfFont.encodeString(line).join(\"\");\n        const glyphs = pdfFont.charsToGlyphs(encodedLine);\n        for (const glyph of glyphs) {\n          const width = glyph.width || fallbackWidth;\n          this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]);\n        }\n        this.glyphs.push([0, 0, 0, \"\\n\", true]);\n      }\n      this.glyphs.pop();\n      return;\n    }\n    for (const line of str.split(/[\\u2029\\n]/)) {\n      for (const char of line.split(\"\")) {\n        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n      }\n      this.glyphs.push([0, 0, 0, \"\\n\", true]);\n    }\n    this.glyphs.pop();\n  }\n  compute(maxWidth) {\n    let lastSpacePos = -1,\n      lastSpaceWidth = 0,\n      width = 0,\n      height = 0,\n      currentLineWidth = 0,\n      currentLineHeight = 0;\n    let isBroken = false;\n    let isFirstLine = true;\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i];\n      const isSpace = char === \" \";\n      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n      if (isEOL) {\n        width = Math.max(width, currentLineWidth);\n        currentLineWidth = 0;\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        lastSpacePos = -1;\n        lastSpaceWidth = 0;\n        isFirstLine = false;\n        continue;\n      }\n      if (isSpace) {\n        if (currentLineWidth + glyphWidth > maxWidth) {\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = 0;\n          height += currentLineHeight;\n          currentLineHeight = glyphHeight;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n          isBroken = true;\n          isFirstLine = false;\n        } else {\n          currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n          lastSpaceWidth = currentLineWidth;\n          currentLineWidth += glyphWidth;\n          lastSpacePos = i;\n        }\n        continue;\n      }\n      if (currentLineWidth + glyphWidth > maxWidth) {\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        if (lastSpacePos !== -1) {\n          i = lastSpacePos;\n          width = Math.max(width, lastSpaceWidth);\n          currentLineWidth = 0;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n        } else {\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = glyphWidth;\n        }\n        isBroken = true;\n        isFirstLine = false;\n        continue;\n      }\n      currentLineWidth += glyphWidth;\n      currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n    }\n    width = Math.max(width, currentLineWidth);\n    height += currentLineHeight + this.extraHeight;\n    return {\n      width: WIDTH_FACTOR * width,\n      height,\n      isBroken\n    };\n  }\n}\n\n;// ./src/core/xfa/som.js\n\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n  dot: 0,\n  dotDot: 1,\n  dotHash: 2,\n  dotBracket: 3,\n  dotParen: 4\n};\nconst shortcuts = new Map([[\"$data\", (root, current) => root.datasets ? root.datasets.data : root], [\"$record\", (root, current) => (root.datasets ? root.datasets.data : root)[$getChildren]()[0]], [\"$template\", (root, current) => root.template], [\"$connectionSet\", (root, current) => root.connectionSet], [\"$form\", (root, current) => root.form], [\"$layout\", (root, current) => root.layout], [\"$host\", (root, current) => root.host], [\"$dataWindow\", (root, current) => root.dataWindow], [\"$event\", (root, current) => root.event], [\"!\", (root, current) => root.datasets], [\"$xfa\", (root, current) => root], [\"xfa\", (root, current) => root], [\"$\", (root, current) => current]]);\nconst somCache = new WeakMap();\nfunction parseIndex(index) {\n  index = index.trim();\n  if (index === \"*\") {\n    return Infinity;\n  }\n  return parseInt(index, 10) || 0;\n}\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n  let match = expr.match(namePattern);\n  if (!match) {\n    return null;\n  }\n  let [name] = match;\n  const parsed = [{\n    name,\n    cacheName: \".\" + name,\n    index: 0,\n    js: null,\n    formCalc: null,\n    operator: operators.dot\n  }];\n  let pos = name.length;\n  while (pos < expr.length) {\n    const spos = pos;\n    const char = expr.charAt(pos++);\n    if (char === \"[\") {\n      match = expr.slice(pos).match(indexPattern);\n      if (!match) {\n        warn(\"XFA - Invalid index in SOM expression\");\n        return null;\n      }\n      parsed.at(-1).index = parseIndex(match[0]);\n      pos += match[0].length + 1;\n      continue;\n    }\n    let operator;\n    switch (expr.charAt(pos)) {\n      case \".\":\n        if (!dotDotAllowed) {\n          return null;\n        }\n        pos++;\n        operator = operators.dotDot;\n        break;\n      case \"#\":\n        pos++;\n        operator = operators.dotHash;\n        break;\n      case \"[\":\n        if (noExpr) {\n          warn(\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\");\n          return null;\n        }\n        operator = operators.dotBracket;\n        break;\n      case \"(\":\n        if (noExpr) {\n          warn(\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\");\n          return null;\n        }\n        operator = operators.dotParen;\n        break;\n      default:\n        operator = operators.dot;\n        break;\n    }\n    match = expr.slice(pos).match(namePattern);\n    if (!match) {\n      break;\n    }\n    [name] = match;\n    pos += name.length;\n    parsed.push({\n      name,\n      cacheName: expr.slice(spos, pos),\n      operator,\n      index: 0,\n      js: null,\n      formCalc: null\n    });\n  }\n  return parsed;\n}\nfunction searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {\n  const parsed = parseExpression(expr, dotDotAllowed);\n  if (!parsed) {\n    return null;\n  }\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  let isQualified;\n  if (fn) {\n    isQualified = true;\n    root = [fn(root, container)];\n    i = 1;\n  } else {\n    isQualified = container === null;\n    root = [container || root];\n  }\n  for (let ii = parsed.length; i < ii; i++) {\n    const {\n      name,\n      cacheName,\n      operator,\n      index\n    } = parsed[i];\n    const nodes = [];\n    for (const node of root) {\n      if (!node.isXFAObject) {\n        continue;\n      }\n      let children, cached;\n      if (useCache) {\n        cached = somCache.get(node);\n        if (!cached) {\n          cached = new Map();\n          somCache.set(node, cached);\n        }\n        children = cached.get(cacheName);\n      }\n      if (!children) {\n        switch (operator) {\n          case operators.dot:\n            children = node[$getChildrenByName](name, false);\n            break;\n          case operators.dotDot:\n            children = node[$getChildrenByName](name, true);\n            break;\n          case operators.dotHash:\n            children = node[$getChildrenByClass](name);\n            children = children.isXFAObjectArray ? children.children : [children];\n            break;\n          default:\n            break;\n        }\n        if (useCache) {\n          cached.set(cacheName, children);\n        }\n      }\n      if (children.length > 0) {\n        nodes.push(children);\n      }\n    }\n    if (nodes.length === 0 && !isQualified && i === 0) {\n      const parent = container[$getParent]();\n      container = parent;\n      if (!container) {\n        return null;\n      }\n      i = -1;\n      root = [container];\n      continue;\n    }\n    root = isFinite(index) ? nodes.filter(node => index < node.length).map(node => node[index]) : nodes.flat();\n  }\n  if (root.length === 0) {\n    return null;\n  }\n  return root;\n}\nfunction createDataNode(root, container, expr) {\n  const parsed = parseExpression(expr);\n  if (!parsed) {\n    return null;\n  }\n  if (parsed.some(x => x.operator === operators.dotDot)) {\n    return null;\n  }\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  if (fn) {\n    root = fn(root, container);\n    i = 1;\n  } else {\n    root = container || root;\n  }\n  for (let ii = parsed.length; i < ii; i++) {\n    const {\n      name,\n      operator,\n      index\n    } = parsed[i];\n    if (!isFinite(index)) {\n      parsed[i].index = 0;\n      return root.createNodes(parsed.slice(i));\n    }\n    let children;\n    switch (operator) {\n      case operators.dot:\n        children = root[$getChildrenByName](name, false);\n        break;\n      case operators.dotDot:\n        children = root[$getChildrenByName](name, true);\n        break;\n      case operators.dotHash:\n        children = root[$getChildrenByClass](name);\n        children = children.isXFAObjectArray ? children.children : [children];\n        break;\n      default:\n        break;\n    }\n    if (children.length === 0) {\n      return root.createNodes(parsed.slice(i));\n    }\n    if (index < children.length) {\n      const child = children[index];\n      if (!child.isXFAObject) {\n        warn(`XFA - Cannot create a node.`);\n        return null;\n      }\n      root = child;\n    } else {\n      parsed[i].index = index - children.length;\n      return root.createNodes(parsed.slice(i));\n    }\n  }\n  return null;\n}\n\n;// ./src/core/xfa/xfa_object.js\n\n\n\n\n\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\nlet uid = 0;\nconst NS_DATASETS = NamespaceIds.datasets.id;\nclass XFAObject {\n  constructor(nsId, name, hasChildren = false) {\n    this[$namespaceId] = nsId;\n    this[$nodeName] = name;\n    this[_hasChildren] = hasChildren;\n    this[_parent] = null;\n    this[_children] = [];\n    this[$uid] = `${name}${uid++}`;\n    this[$globalData] = null;\n  }\n  get isXFAObject() {\n    return true;\n  }\n  get isXFAObjectArray() {\n    return false;\n  }\n  createNodes(path) {\n    let root = this,\n      node = null;\n    for (const {\n      name,\n      index\n    } of path) {\n      for (let i = 0, ii = isFinite(index) ? index : 0; i <= ii; i++) {\n        const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n        node = new XmlObject(nsId, name);\n        root[$appendChild](node);\n      }\n      root = node;\n    }\n    return node;\n  }\n  [$onChild](child) {\n    if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n      return false;\n    }\n    const name = child[$nodeName];\n    const node = this[name];\n    if (node instanceof XFAObjectArray) {\n      if (node.push(child)) {\n        this[$appendChild](child);\n        return true;\n      }\n    } else {\n      if (node !== null) {\n        this[$removeChild](node);\n      }\n      this[name] = child;\n      this[$appendChild](child);\n      return true;\n    }\n    let id = \"\";\n    if (this.id) {\n      id = ` (id: ${this.id})`;\n    } else if (this.name) {\n      id = ` (name: ${this.name} ${this.h.value})`;\n    }\n    warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n    return false;\n  }\n  [$onChildCheck](child) {\n    return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId];\n  }\n  [$isNsAgnostic]() {\n    return false;\n  }\n  [$acceptWhitespace]() {\n    return false;\n  }\n  [$isCDATAXml]() {\n    return false;\n  }\n  [$isBindable]() {\n    return false;\n  }\n  [$popPara]() {\n    if (this.para) {\n      this[$getTemplateRoot]()[$extra].paraStack.pop();\n    }\n  }\n  [$pushPara]() {\n    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n  }\n  [$setId](ids) {\n    if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n      ids.set(this.id, this);\n    }\n  }\n  [$getTemplateRoot]() {\n    return this[$globalData].template;\n  }\n  [$isSplittable]() {\n    return false;\n  }\n  [$isThereMoreWidth]() {\n    return false;\n  }\n  [$appendChild](child) {\n    child[_parent] = this;\n    this[_children].push(child);\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n  [$removeChild](child) {\n    const i = this[_children].indexOf(child);\n    this[_children].splice(i, 1);\n  }\n  [$hasSettableValue]() {\n    return this.hasOwnProperty(\"value\");\n  }\n  [$setValue](_) {}\n  [$onText](_) {}\n  [$finalize]() {}\n  [$clean](builder) {\n    delete this[_hasChildren];\n    if (this[$cleanup]) {\n      builder.clean(this[$cleanup]);\n      delete this[$cleanup];\n    }\n  }\n  [$indexOf](child) {\n    return this[_children].indexOf(child);\n  }\n  [$insertAt](i, child) {\n    child[_parent] = this;\n    this[_children].splice(i, 0, child);\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n  [$isTransparent]() {\n    return !this.name;\n  }\n  [$lastAttribute]() {\n    return \"\";\n  }\n  [$text]() {\n    if (this[_children].length === 0) {\n      return this[$content];\n    }\n    return this[_children].map(c => c[$text]()).join(\"\");\n  }\n  get [_attributeNames]() {\n    const proto = Object.getPrototypeOf(this);\n    if (!proto._attributes) {\n      const attributes = proto._attributes = new Set();\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) {\n          break;\n        }\n        attributes.add(name);\n      }\n    }\n    return shadow(this, _attributeNames, proto._attributes);\n  }\n  [$isDescendent](parent) {\n    let node = this;\n    while (node) {\n      if (node === parent) {\n        return true;\n      }\n      node = node[$getParent]();\n    }\n    return false;\n  }\n  [$getParent]() {\n    return this[_parent];\n  }\n  [$getSubformParent]() {\n    return this[$getParent]();\n  }\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n    return this[name];\n  }\n  [$dump]() {\n    const dumped = Object.create(null);\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const value = this[name];\n      if (value === null) {\n        continue;\n      }\n      if (value instanceof XFAObject) {\n        dumped[name] = value[$dump]();\n      } else if (value instanceof XFAObjectArray) {\n        if (!value.isEmpty()) {\n          dumped[name] = value.dump();\n        }\n      } else {\n        dumped[name] = value;\n      }\n    }\n    return dumped;\n  }\n  [$toStyle]() {\n    return null;\n  }\n  [$toHTML]() {\n    return HTMLResult.EMPTY;\n  }\n  *[$getContainedChildren]() {\n    for (const node of this[$getChildren]()) {\n      yield node;\n    }\n  }\n  *[_filteredChildrenGenerator](filter, include) {\n    for (const node of this[$getContainedChildren]()) {\n      if (!filter || include === filter.has(node[$nodeName])) {\n        const availableSpace = this[$getAvailableSpace]();\n        const res = node[$toHTML](availableSpace);\n        if (!res.success) {\n          this[$extra].failingNode = node;\n        }\n        yield res;\n      }\n    }\n  }\n  [$flushHTML]() {\n    return null;\n  }\n  [$addHTML](html, bbox) {\n    this[$extra].children.push(html);\n  }\n  [$getAvailableSpace]() {}\n  [$childrenToHTML]({\n    filter = null,\n    include = true\n  }) {\n    if (!this[$extra].generator) {\n      this[$extra].generator = this[_filteredChildrenGenerator](filter, include);\n    } else {\n      const availableSpace = this[$getAvailableSpace]();\n      const res = this[$extra].failingNode[$toHTML](availableSpace);\n      if (!res.success) {\n        return res;\n      }\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n      delete this[$extra].failingNode;\n    }\n    while (true) {\n      const gen = this[$extra].generator.next();\n      if (gen.done) {\n        break;\n      }\n      const res = gen.value;\n      if (!res.success) {\n        return res;\n      }\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n    }\n    this[$extra].generator = null;\n    return HTMLResult.EMPTY;\n  }\n  [$setSetAttributes](attributes) {\n    this[_setAttributes] = new Set(Object.keys(attributes));\n  }\n  [_getUnsetAttributes](protoAttributes) {\n    const allAttr = this[_attributeNames];\n    const setAttr = this[_setAttributes];\n    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n  }\n  [$resolvePrototypes](ids, ancestors = new Set()) {\n    for (const child of this[_children]) {\n      child[_resolvePrototypesHelper](ids, ancestors);\n    }\n  }\n  [_resolvePrototypesHelper](ids, ancestors) {\n    const proto = this[_getPrototype](ids, ancestors);\n    if (proto) {\n      this[_applyPrototype](proto, ids, ancestors);\n    } else {\n      this[$resolvePrototypes](ids, ancestors);\n    }\n  }\n  [_getPrototype](ids, ancestors) {\n    const {\n      use,\n      usehref\n    } = this;\n    if (!use && !usehref) {\n      return null;\n    }\n    let proto = null;\n    let somExpression = null;\n    let id = null;\n    let ref = use;\n    if (usehref) {\n      ref = usehref;\n      if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\"#som(\".length, -1);\n      } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\".#som(\".length, -1);\n      } else if (usehref.startsWith(\"#\")) {\n        id = usehref.slice(1);\n      } else if (usehref.startsWith(\".#\")) {\n        id = usehref.slice(2);\n      }\n    } else if (use.startsWith(\"#\")) {\n      id = use.slice(1);\n    } else {\n      somExpression = use;\n    }\n    this.use = this.usehref = \"\";\n    if (id) {\n      proto = ids.get(id);\n    } else {\n      proto = searchNode(ids.get($root), this, somExpression, true, false);\n      if (proto) {\n        proto = proto[0];\n      }\n    }\n    if (!proto) {\n      warn(`XFA - Invalid prototype reference: ${ref}.`);\n      return null;\n    }\n    if (proto[$nodeName] !== this[$nodeName]) {\n      warn(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);\n      return null;\n    }\n    if (ancestors.has(proto)) {\n      warn(`XFA - Cycle detected in prototypes use.`);\n      return null;\n    }\n    ancestors.add(proto);\n    const protoProto = proto[_getPrototype](ids, ancestors);\n    if (protoProto) {\n      proto[_applyPrototype](protoProto, ids, ancestors);\n    }\n    proto[$resolvePrototypes](ids, ancestors);\n    ancestors.delete(proto);\n    return proto;\n  }\n  [_applyPrototype](proto, ids, ancestors) {\n    if (ancestors.has(proto)) {\n      warn(`XFA - Cycle detected in prototypes use.`);\n      return;\n    }\n    if (!this[$content] && proto[$content]) {\n      this[$content] = proto[$content];\n    }\n    const newAncestors = new Set(ancestors);\n    newAncestors.add(proto);\n    for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) {\n      this[unsetAttrName] = proto[unsetAttrName];\n      if (this[_setAttributes]) {\n        this[_setAttributes].add(unsetAttrName);\n      }\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        continue;\n      }\n      const value = this[name];\n      const protoValue = proto[name];\n      if (value instanceof XFAObjectArray) {\n        for (const child of value[_children]) {\n          child[_resolvePrototypesHelper](ids, ancestors);\n        }\n        for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {\n          const child = proto[_children][i][$clone]();\n          if (value.push(child)) {\n            child[_parent] = this;\n            this[_children].push(child);\n            child[_resolvePrototypesHelper](ids, ancestors);\n          } else {\n            break;\n          }\n        }\n        continue;\n      }\n      if (value !== null) {\n        value[$resolvePrototypes](ids, ancestors);\n        if (protoValue) {\n          value[_applyPrototype](protoValue, ids, ancestors);\n        }\n        continue;\n      }\n      if (protoValue !== null) {\n        const child = protoValue[$clone]();\n        child[_parent] = this;\n        this[name] = child;\n        this[_children].push(child);\n        child[_resolvePrototypesHelper](ids, ancestors);\n      }\n    }\n  }\n  static [_cloneAttribute](obj) {\n    if (Array.isArray(obj)) {\n      return obj.map(x => XFAObject[_cloneAttribute](x));\n    }\n    if (typeof obj === \"object\" && obj !== null) {\n      return Object.assign({}, obj);\n    }\n    return obj;\n  }\n  [$clone]() {\n    const clone = Object.create(Object.getPrototypeOf(this));\n    for (const $symbol of Object.getOwnPropertySymbols(this)) {\n      try {\n        clone[$symbol] = this[$symbol];\n      } catch {\n        shadow(clone, $symbol, this[$symbol]);\n      }\n    }\n    clone[$uid] = `${clone[$nodeName]}${uid++}`;\n    clone[_children] = [];\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        clone[name] = XFAObject[_cloneAttribute](this[name]);\n        continue;\n      }\n      const value = this[name];\n      clone[name] = value instanceof XFAObjectArray ? new XFAObjectArray(value[_max]) : null;\n    }\n    for (const child of this[_children]) {\n      const name = child[$nodeName];\n      const clonedChild = child[$clone]();\n      clone[_children].push(clonedChild);\n      clonedChild[_parent] = clone;\n      if (clone[name] === null) {\n        clone[name] = clonedChild;\n      } else {\n        clone[name][_children].push(clonedChild);\n      }\n    }\n    return clone;\n  }\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n  [$getChildrenByClass](name) {\n    return this[name];\n  }\n  [$getChildrenByName](name, allTransparent, first = true) {\n    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n  }\n  *[$getChildrenByNameIt](name, allTransparent, first = true) {\n    if (name === \"parent\") {\n      yield this[_parent];\n      return;\n    }\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n      if (child.name === name) {\n        yield child;\n      }\n      if (allTransparent || child[$isTransparent]()) {\n        yield* child[$getChildrenByNameIt](name, allTransparent, false);\n      }\n    }\n    if (first && this[_attributeNames].has(name)) {\n      yield new XFAAttribute(this, name, this[name]);\n    }\n  }\n}\nclass XFAObjectArray {\n  constructor(max = Infinity) {\n    this[_max] = max;\n    this[_children] = [];\n  }\n  get isXFAObject() {\n    return false;\n  }\n  get isXFAObjectArray() {\n    return true;\n  }\n  push(child) {\n    const len = this[_children].length;\n    if (len <= this[_max]) {\n      this[_children].push(child);\n      return true;\n    }\n    warn(`XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`);\n    return false;\n  }\n  isEmpty() {\n    return this[_children].length === 0;\n  }\n  dump() {\n    return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]());\n  }\n  [$clone]() {\n    const clone = new XFAObjectArray(this[_max]);\n    clone[_children] = this[_children].map(c => c[$clone]());\n    return clone;\n  }\n  get children() {\n    return this[_children];\n  }\n  clear() {\n    this[_children].length = 0;\n  }\n}\nclass XFAAttribute {\n  constructor(node, name, value) {\n    this[_parent] = node;\n    this[$nodeName] = name;\n    this[$content] = value;\n    this[$consumed] = false;\n    this[$uid] = `attribute${uid++}`;\n  }\n  [$getParent]() {\n    return this[_parent];\n  }\n  [$isDataValue]() {\n    return true;\n  }\n  [$getDataValue]() {\n    return this[$content].trim();\n  }\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n  [$text]() {\n    return this[$content];\n  }\n  [$isDescendent](parent) {\n    return this[_parent] === parent || this[_parent][$isDescendent](parent);\n  }\n}\nclass XmlObject extends XFAObject {\n  constructor(nsId, name, attributes = {}) {\n    super(nsId, name);\n    this[$content] = \"\";\n    this[_dataValue] = null;\n    if (name !== \"#text\") {\n      const map = new Map();\n      this[_attributes] = map;\n      for (const [attrName, value] of Object.entries(attributes)) {\n        map.set(attrName, new XFAAttribute(this, attrName, value));\n      }\n      if (attributes.hasOwnProperty($nsAttributes)) {\n        const dataNode = attributes[$nsAttributes].xfa.dataNode;\n        if (dataNode !== undefined) {\n          if (dataNode === \"dataGroup\") {\n            this[_dataValue] = false;\n          } else if (dataNode === \"dataValue\") {\n            this[_dataValue] = true;\n          }\n        }\n      }\n    }\n    this[$consumed] = false;\n  }\n  [$toString](buf) {\n    const tagName = this[$nodeName];\n    if (tagName === \"#text\") {\n      buf.push(encodeToXmlString(this[$content]));\n      return;\n    }\n    const utf8TagName = utf8StringToString(tagName);\n    const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n    buf.push(`<${prefix}${utf8TagName}`);\n    for (const [name, value] of this[_attributes].entries()) {\n      const utf8Name = utf8StringToString(name);\n      buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n    }\n    if (this[_dataValue] !== null) {\n      if (this[_dataValue]) {\n        buf.push(` xfa:dataNode=\"dataValue\"`);\n      } else {\n        buf.push(` xfa:dataNode=\"dataGroup\"`);\n      }\n    }\n    if (!this[$content] && this[_children].length === 0) {\n      buf.push(\"/>\");\n      return;\n    }\n    buf.push(\">\");\n    if (this[$content]) {\n      if (typeof this[$content] === \"string\") {\n        buf.push(encodeToXmlString(this[$content]));\n      } else {\n        this[$content][$toString](buf);\n      }\n    } else {\n      for (const child of this[_children]) {\n        child[$toString](buf);\n      }\n    }\n    buf.push(`</${prefix}${utf8TagName}>`);\n  }\n  [$onChild](child) {\n    if (this[$content]) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      this[$content] = \"\";\n    }\n    this[$appendChild](child);\n    return true;\n  }\n  [$onText](str) {\n    this[$content] += str;\n  }\n  [$finalize]() {\n    if (this[$content] && this[_children].length > 0) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      delete this[$content];\n    }\n  }\n  [$toHTML]() {\n    if (this[$nodeName] === \"#text\") {\n      return HTMLResult.success({\n        name: \"#text\",\n        value: this[$content]\n      });\n    }\n    return HTMLResult.EMPTY;\n  }\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n  [$getAttributes]() {\n    return this[_attributes];\n  }\n  [$getChildrenByClass](name) {\n    const value = this[_attributes].get(name);\n    if (value !== undefined) {\n      return value;\n    }\n    return this[$getChildren](name);\n  }\n  *[$getChildrenByNameIt](name, allTransparent) {\n    const value = this[_attributes].get(name);\n    if (value) {\n      yield value;\n    }\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n      if (allTransparent) {\n        yield* child[$getChildrenByNameIt](name, allTransparent);\n      }\n    }\n  }\n  *[$getAttributeIt](name, skipConsumed) {\n    const value = this[_attributes].get(name);\n    if (value && (!skipConsumed || !value[$consumed])) {\n      yield value;\n    }\n    for (const child of this[_children]) {\n      yield* child[$getAttributeIt](name, skipConsumed);\n    }\n  }\n  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n        yield child;\n      }\n      if (allTransparent) {\n        yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed);\n      }\n    }\n  }\n  [$isDataValue]() {\n    if (this[_dataValue] === null) {\n      return this[_children].length === 0 || this[_children][0][$namespaceId] === NamespaceIds.xhtml.id;\n    }\n    return this[_dataValue];\n  }\n  [$getDataValue]() {\n    if (this[_dataValue] === null) {\n      if (this[_children].length === 0) {\n        return this[$content].trim();\n      }\n      if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n        return this[_children][0][$text]().trim();\n      }\n      return null;\n    }\n    return this[$content].trim();\n  }\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n  [$dump](hasNS = false) {\n    const dumped = Object.create(null);\n    if (hasNS) {\n      dumped.$ns = this[$namespaceId];\n    }\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n    dumped.$name = this[$nodeName];\n    dumped.children = [];\n    for (const child of this[_children]) {\n      dumped.children.push(child[$dump](hasNS));\n    }\n    dumped.attributes = Object.create(null);\n    for (const [name, value] of this[_attributes]) {\n      dumped.attributes[name] = value[$content];\n    }\n    return dumped;\n  }\n}\nclass ContentObject extends XFAObject {\n  constructor(nsId, name) {\n    super(nsId, name);\n    this[$content] = \"\";\n  }\n  [$onText](text) {\n    this[$content] += text;\n  }\n  [$finalize]() {}\n}\nclass OptionObject extends ContentObject {\n  constructor(nsId, name, options) {\n    super(nsId, name);\n    this[_options] = options;\n  }\n  [$finalize]() {\n    this[$content] = getKeyword({\n      data: this[$content],\n      defaultValue: this[_options][0],\n      validate: k => this[_options].includes(k)\n    });\n  }\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_options];\n  }\n}\nclass StringObject extends ContentObject {\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n  }\n}\nclass IntegerObject extends ContentObject {\n  constructor(nsId, name, defaultValue, validator) {\n    super(nsId, name);\n    this[_defaultValue] = defaultValue;\n    this[_validator] = validator;\n  }\n  [$finalize]() {\n    this[$content] = getInteger({\n      data: this[$content],\n      defaultValue: this[_defaultValue],\n      validate: this[_validator]\n    });\n  }\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_defaultValue];\n    delete this[_validator];\n  }\n}\nclass Option01 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 0, n => n === 1);\n  }\n}\nclass Option10 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 1, n => n === 0);\n  }\n}\n\n;// ./src/core/xfa/html_utils.js\n\n\n\n\n\n\nfunction measureToString(m) {\n  if (typeof m === \"string\") {\n    return \"0px\";\n  }\n  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\nconst converters = {\n  anchorType(node, style) {\n    const parent = node[$getSubformParent]();\n    if (!parent || parent.layout && parent.layout !== \"position\") {\n      return;\n    }\n    if (!(\"transform\" in style)) {\n      style.transform = \"\";\n    }\n    switch (node.anchorType) {\n      case \"bottomCenter\":\n        style.transform += \"translate(-50%, -100%)\";\n        break;\n      case \"bottomLeft\":\n        style.transform += \"translate(0,-100%)\";\n        break;\n      case \"bottomRight\":\n        style.transform += \"translate(-100%,-100%)\";\n        break;\n      case \"middleCenter\":\n        style.transform += \"translate(-50%,-50%)\";\n        break;\n      case \"middleLeft\":\n        style.transform += \"translate(0,-50%)\";\n        break;\n      case \"middleRight\":\n        style.transform += \"translate(-100%,-50%)\";\n        break;\n      case \"topCenter\":\n        style.transform += \"translate(-50%,0)\";\n        break;\n      case \"topRight\":\n        style.transform += \"translate(-100%,0)\";\n        break;\n    }\n  },\n  dimensions(node, style) {\n    const parent = node[$getSubformParent]();\n    let width = node.w;\n    const height = node.h;\n    if (parent.layout?.includes(\"row\")) {\n      const extra = parent[$extra];\n      const colSpan = node.colSpan;\n      let w;\n      if (colSpan === -1) {\n        w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0);\n        extra.currentColumn = 0;\n      } else {\n        w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0);\n        extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n      }\n      if (!isNaN(w)) {\n        width = node.w = w;\n      }\n    }\n    style.width = width !== \"\" ? measureToString(width) : \"auto\";\n    style.height = height !== \"\" ? measureToString(height) : \"auto\";\n  },\n  position(node, style) {\n    const parent = node[$getSubformParent]();\n    if (parent?.layout && parent.layout !== \"position\") {\n      return;\n    }\n    style.position = \"absolute\";\n    style.left = measureToString(node.x);\n    style.top = measureToString(node.y);\n  },\n  rotate(node, style) {\n    if (node.rotate) {\n      if (!(\"transform\" in style)) {\n        style.transform = \"\";\n      }\n      style.transform += `rotate(-${node.rotate}deg)`;\n      style.transformOrigin = \"top left\";\n    }\n  },\n  presence(node, style) {\n    switch (node.presence) {\n      case \"invisible\":\n        style.visibility = \"hidden\";\n        break;\n      case \"hidden\":\n      case \"inactive\":\n        style.display = \"none\";\n        break;\n    }\n  },\n  hAlign(node, style) {\n    if (node[$nodeName] === \"para\") {\n      switch (node.hAlign) {\n        case \"justifyAll\":\n          style.textAlign = \"justify-all\";\n          break;\n        case \"radix\":\n          style.textAlign = \"left\";\n          break;\n        default:\n          style.textAlign = node.hAlign;\n      }\n    } else {\n      switch (node.hAlign) {\n        case \"left\":\n          style.alignSelf = \"start\";\n          break;\n        case \"center\":\n          style.alignSelf = \"center\";\n          break;\n        case \"right\":\n          style.alignSelf = \"end\";\n          break;\n      }\n    }\n  },\n  margin(node, style) {\n    if (node.margin) {\n      style.margin = node.margin[$toStyle]().margin;\n    }\n  }\n};\nfunction setMinMaxDimensions(node, style) {\n  const parent = node[$getSubformParent]();\n  if (parent.layout === \"position\") {\n    if (node.minW > 0) {\n      style.minWidth = measureToString(node.minW);\n    }\n    if (node.maxW > 0) {\n      style.maxWidth = measureToString(node.maxW);\n    }\n    if (node.minH > 0) {\n      style.minHeight = measureToString(node.minH);\n    }\n    if (node.maxH > 0) {\n      style.maxHeight = measureToString(node.maxH);\n    }\n  }\n}\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n  const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n  if (typeof text === \"string\") {\n    measure.addString(text);\n  } else {\n    text[$pushGlyphs](measure);\n  }\n  return measure.compute(width);\n}\nfunction layoutNode(node, availableSpace) {\n  let height = null;\n  let width = null;\n  let isBroken = false;\n  if ((!node.w || !node.h) && node.value) {\n    let marginH = 0;\n    let marginV = 0;\n    if (node.margin) {\n      marginH = node.margin.leftInset + node.margin.rightInset;\n      marginV = node.margin.topInset + node.margin.bottomInset;\n    }\n    let lineHeight = null;\n    let margin = null;\n    if (node.para) {\n      margin = Object.create(null);\n      lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n      margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n      margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n      margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n      margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n    }\n    let font = node.font;\n    if (!font) {\n      const root = node[$getTemplateRoot]();\n      let parent = node[$getParent]();\n      while (parent && parent !== root) {\n        if (parent.font) {\n          font = parent.font;\n          break;\n        }\n        parent = parent[$getParent]();\n      }\n    }\n    const maxWidth = (node.w || availableSpace.width) - marginH;\n    const fontFinder = node[$globalData].fontFinder;\n    if (node.value.exData && node.value.exData[$content] && node.value.exData.contentType === \"text/html\") {\n      const res = layoutText(node.value.exData[$content], font, margin, lineHeight, fontFinder, maxWidth);\n      width = res.width;\n      height = res.height;\n      isBroken = res.isBroken;\n    } else {\n      const text = node.value[$text]();\n      if (text) {\n        const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth);\n        width = res.width;\n        height = res.height;\n        isBroken = res.isBroken;\n      }\n    }\n    if (width !== null && !node.w) {\n      width += marginH;\n    }\n    if (height !== null && !node.h) {\n      height += marginV;\n    }\n  }\n  return {\n    w: width,\n    h: height,\n    isBroken\n  };\n}\nfunction computeBbox(node, html, availableSpace) {\n  let bbox;\n  if (node.w !== \"\" && node.h !== \"\") {\n    bbox = [node.x, node.y, node.w, node.h];\n  } else {\n    if (!availableSpace) {\n      return null;\n    }\n    let width = node.w;\n    if (width === \"\") {\n      if (node.maxW === 0) {\n        const parent = node[$getSubformParent]();\n        width = parent.layout === \"position\" && parent.w !== \"\" ? 0 : node.minW;\n      } else {\n        width = Math.min(node.maxW, availableSpace.width);\n      }\n      html.attributes.style.width = measureToString(width);\n    }\n    let height = node.h;\n    if (height === \"\") {\n      if (node.maxH === 0) {\n        const parent = node[$getSubformParent]();\n        height = parent.layout === \"position\" && parent.h !== \"\" ? 0 : node.minH;\n      } else {\n        height = Math.min(node.maxH, availableSpace.height);\n      }\n      html.attributes.style.height = measureToString(height);\n    }\n    bbox = [node.x, node.y, width, height];\n  }\n  return bbox;\n}\nfunction fixDimensions(node) {\n  const parent = node[$getSubformParent]();\n  if (parent.layout?.includes(\"row\")) {\n    const extra = parent[$extra];\n    const colSpan = node.colSpan;\n    let width;\n    if (colSpan === -1) {\n      width = extra.columnWidths.slice(extra.currentColumn).reduce((a, w) => a + w, 0);\n    } else {\n      width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0);\n    }\n    if (!isNaN(width)) {\n      node.w = width;\n    }\n  }\n  if (parent.layout && parent.layout !== \"position\") {\n    node.x = node.y = 0;\n  }\n  if (node.layout === \"table\") {\n    if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n      node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n    }\n  }\n}\nfunction layoutClass(node) {\n  switch (node.layout) {\n    case \"position\":\n      return \"xfaPosition\";\n    case \"lr-tb\":\n      return \"xfaLrTb\";\n    case \"rl-row\":\n      return \"xfaRlRow\";\n    case \"rl-tb\":\n      return \"xfaRlTb\";\n    case \"row\":\n      return \"xfaRow\";\n    case \"table\":\n      return \"xfaTable\";\n    case \"tb\":\n      return \"xfaTb\";\n    default:\n      return \"xfaPosition\";\n  }\n}\nfunction toStyle(node, ...names) {\n  const style = Object.create(null);\n  for (const name of names) {\n    const value = node[name];\n    if (value === null) {\n      continue;\n    }\n    if (converters.hasOwnProperty(name)) {\n      converters[name](node, style);\n      continue;\n    }\n    if (value instanceof XFAObject) {\n      const newStyle = value[$toStyle]();\n      if (newStyle) {\n        Object.assign(style, newStyle);\n      } else {\n        warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n      }\n    }\n  }\n  return style;\n}\nfunction createWrapper(node, html) {\n  const {\n    attributes\n  } = html;\n  const {\n    style\n  } = attributes;\n  const wrapper = {\n    name: \"div\",\n    attributes: {\n      class: [\"xfaWrapper\"],\n      style: Object.create(null)\n    },\n    children: []\n  };\n  attributes.class.push(\"xfaWrapped\");\n  if (node.border) {\n    const {\n      widths,\n      insets\n    } = node.border[$extra];\n    let width, height;\n    let top = insets[0];\n    let left = insets[3];\n    const insetsH = insets[0] + insets[2];\n    const insetsW = insets[1] + insets[3];\n    switch (node.border.hand) {\n      case \"even\":\n        top -= widths[0] / 2;\n        left -= widths[3] / 2;\n        width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n        height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n        break;\n      case \"left\":\n        top -= widths[0];\n        left -= widths[3];\n        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n        break;\n      case \"right\":\n        width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n        height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n        break;\n    }\n    const classNames = [\"xfaBorder\"];\n    if (isPrintOnly(node.border)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n    const border = {\n      name: \"div\",\n      attributes: {\n        class: classNames,\n        style: {\n          top: `${top}px`,\n          left: `${left}px`,\n          width,\n          height\n        }\n      },\n      children: []\n    };\n    for (const key of [\"border\", \"borderWidth\", \"borderColor\", \"borderRadius\", \"borderStyle\"]) {\n      if (style[key] !== undefined) {\n        border.attributes.style[key] = style[key];\n        delete style[key];\n      }\n    }\n    wrapper.children.push(border, html);\n  } else {\n    wrapper.children.push(html);\n  }\n  for (const key of [\"background\", \"backgroundClip\", \"top\", \"left\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"transform\", \"transformOrigin\", \"visibility\"]) {\n    if (style[key] !== undefined) {\n      wrapper.attributes.style[key] = style[key];\n      delete style[key];\n    }\n  }\n  wrapper.attributes.style.position = style.position === \"absolute\" ? \"absolute\" : \"relative\";\n  delete style.position;\n  if (style.alignSelf) {\n    wrapper.attributes.style.alignSelf = style.alignSelf;\n    delete style.alignSelf;\n  }\n  return wrapper;\n}\nfunction fixTextIndent(styles) {\n  const indent = getMeasurement(styles.textIndent, \"0px\");\n  if (indent >= 0) {\n    return;\n  }\n  const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n  const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n  const padding = getMeasurement(styles[name], \"0px\");\n  styles[name] = `${padding - indent}px`;\n}\nfunction setAccess(node, classNames) {\n  switch (node.access) {\n    case \"nonInteractive\":\n      classNames.push(\"xfaNonInteractive\");\n      break;\n    case \"readOnly\":\n      classNames.push(\"xfaReadOnly\");\n      break;\n    case \"protected\":\n      classNames.push(\"xfaDisabled\");\n      break;\n  }\n}\nfunction isPrintOnly(node) {\n  return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === \"print\";\n}\nfunction getCurrentPara(node) {\n  const stack = node[$getTemplateRoot]()[$extra].paraStack;\n  return stack.length ? stack.at(-1) : null;\n}\nfunction setPara(node, nodeStyle, value) {\n  if (value.attributes.class?.includes(\"xfaRich\")) {\n    if (nodeStyle) {\n      if (node.h === \"\") {\n        nodeStyle.height = \"auto\";\n      }\n      if (node.w === \"\") {\n        nodeStyle.width = \"auto\";\n      }\n    }\n    const para = getCurrentPara(node);\n    if (para) {\n      const valueStyle = value.attributes.style;\n      valueStyle.display = \"flex\";\n      valueStyle.flexDirection = \"column\";\n      switch (para.vAlign) {\n        case \"top\":\n          valueStyle.justifyContent = \"start\";\n          break;\n        case \"bottom\":\n          valueStyle.justifyContent = \"end\";\n          break;\n        case \"middle\":\n          valueStyle.justifyContent = \"center\";\n          break;\n      }\n      const paraStyle = para[$toStyle]();\n      for (const [key, val] of Object.entries(paraStyle)) {\n        if (!(key in valueStyle)) {\n          valueStyle[key] = val;\n        }\n      }\n    }\n  }\n}\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n  if (!fontFinder) {\n    delete style.fontFamily;\n    return;\n  }\n  const name = stripQuotes(xfaFont.typeface);\n  style.fontFamily = `\"${name}\"`;\n  const typeface = fontFinder.find(name);\n  if (typeface) {\n    const {\n      fontFamily\n    } = typeface.regular.cssFontInfo;\n    if (fontFamily !== name) {\n      style.fontFamily = `\"${fontFamily}\"`;\n    }\n    const para = getCurrentPara(node);\n    if (para && para.lineHeight !== \"\") {\n      return;\n    }\n    if (style.lineHeight) {\n      return;\n    }\n    const pdfFont = selectFont(xfaFont, typeface);\n    if (pdfFont) {\n      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n    }\n  }\n}\nfunction fixURL(str) {\n  const absoluteUrl = createValidAbsoluteUrl(str, null, {\n    addDefaultProtocol: true,\n    tryConvertEncoding: true\n  });\n  return absoluteUrl ? absoluteUrl.href : null;\n}\n\n;// ./src/core/xfa/layout.js\n\n\nfunction createLine(node, children) {\n  return {\n    name: \"div\",\n    attributes: {\n      class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"]\n    },\n    children\n  };\n}\nfunction flushHTML(node) {\n  if (!node[$extra]) {\n    return null;\n  }\n  const attributes = node[$extra].attributes;\n  const html = {\n    name: \"div\",\n    attributes,\n    children: node[$extra].children\n  };\n  if (node[$extra].failingNode) {\n    const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n    if (htmlFromFailing) {\n      if (node.layout.endsWith(\"-tb\")) {\n        html.children.push(createLine(node, [htmlFromFailing]));\n      } else {\n        html.children.push(htmlFromFailing);\n      }\n    }\n  }\n  if (html.children.length === 0) {\n    return null;\n  }\n  return html;\n}\nfunction addHTML(node, html, bbox) {\n  const extra = node[$extra];\n  const availableSpace = extra.availableSpace;\n  const [x, y, w, h] = bbox;\n  switch (node.layout) {\n    case \"position\":\n      {\n        extra.width = Math.max(extra.width, x + w);\n        extra.height = Math.max(extra.height, y + h);\n        extra.children.push(html);\n        break;\n      }\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (!extra.line || extra.attempt === 1) {\n        extra.line = createLine(node, []);\n        extra.children.push(extra.line);\n        extra.numberInLine = 0;\n      }\n      extra.numberInLine += 1;\n      extra.line.children.push(html);\n      if (extra.attempt === 0) {\n        extra.currentWidth += w;\n        extra.height = Math.max(extra.height, extra.prevHeight + h);\n      } else {\n        extra.currentWidth = w;\n        extra.prevHeight = extra.height;\n        extra.height += h;\n        extra.attempt = 0;\n      }\n      extra.width = Math.max(extra.width, extra.currentWidth);\n      break;\n    case \"rl-row\":\n    case \"row\":\n      {\n        extra.children.push(html);\n        extra.width += w;\n        extra.height = Math.max(extra.height, h);\n        const height = measureToString(extra.height);\n        for (const child of extra.children) {\n          child.attributes.style.height = height;\n        }\n        break;\n      }\n    case \"table\":\n      {\n        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n        extra.height += h;\n        extra.children.push(html);\n        break;\n      }\n    case \"tb\":\n      {\n        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n        extra.height += h;\n        extra.children.push(html);\n        break;\n      }\n  }\n}\nfunction getAvailableSpace(node) {\n  const availableSpace = node[$extra].availableSpace;\n  const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0;\n  const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0;\n  switch (node.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (node[$extra].attempt === 0) {\n        return {\n          width: availableSpace.width - marginH - node[$extra].currentWidth,\n          height: availableSpace.height - marginV - node[$extra].prevHeight\n        };\n      }\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[$extra].height\n      };\n    case \"rl-row\":\n    case \"row\":\n      const width = node[$extra].columnWidths.slice(node[$extra].currentColumn).reduce((a, x) => a + x);\n      return {\n        width,\n        height: availableSpace.height - marginH\n      };\n    case \"table\":\n    case \"tb\":\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[$extra].height\n      };\n    case \"position\":\n    default:\n      return availableSpace;\n  }\n}\nfunction getTransformedBBox(node) {\n  let w = node.w === \"\" ? NaN : node.w;\n  let h = node.h === \"\" ? NaN : node.h;\n  let [centerX, centerY] = [0, 0];\n  switch (node.anchorType || \"\") {\n    case \"bottomCenter\":\n      [centerX, centerY] = [w / 2, h];\n      break;\n    case \"bottomLeft\":\n      [centerX, centerY] = [0, h];\n      break;\n    case \"bottomRight\":\n      [centerX, centerY] = [w, h];\n      break;\n    case \"middleCenter\":\n      [centerX, centerY] = [w / 2, h / 2];\n      break;\n    case \"middleLeft\":\n      [centerX, centerY] = [0, h / 2];\n      break;\n    case \"middleRight\":\n      [centerX, centerY] = [w, h / 2];\n      break;\n    case \"topCenter\":\n      [centerX, centerY] = [w / 2, 0];\n      break;\n    case \"topRight\":\n      [centerX, centerY] = [w, 0];\n      break;\n  }\n  let x, y;\n  switch (node.rotate || 0) {\n    case 0:\n      [x, y] = [-centerX, -centerY];\n      break;\n    case 90:\n      [x, y] = [-centerY, centerX];\n      [w, h] = [h, -w];\n      break;\n    case 180:\n      [x, y] = [centerX, centerY];\n      [w, h] = [-w, -h];\n      break;\n    case 270:\n      [x, y] = [centerY, -centerX];\n      [w, h] = [-h, w];\n      break;\n  }\n  return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)];\n}\nfunction checkDimensions(node, space) {\n  if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n    return true;\n  }\n  if (node.w === 0 || node.h === 0) {\n    return true;\n  }\n  const ERROR = 2;\n  const parent = node[$getSubformParent]();\n  const attempt = parent[$extra]?.attempt || 0;\n  const [, y, w, h] = getTransformedBBox(node);\n  switch (parent.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (attempt === 0) {\n        if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n          if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n            return false;\n          }\n          if (node.w !== \"\") {\n            if (Math.round(w - space.width) <= ERROR) {\n              return true;\n            }\n            if (parent[$extra].numberInLine === 0) {\n              return space.height > ERROR;\n            }\n            return false;\n          }\n          return space.width > ERROR;\n        }\n        if (node.w !== \"\") {\n          return Math.round(w - space.width) <= ERROR;\n        }\n        return space.width > ERROR;\n      }\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n      if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n        return false;\n      }\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n      if (parent[$isThereMoreWidth]()) {\n        return false;\n      }\n      return space.height > ERROR;\n    case \"table\":\n    case \"tb\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n      if (node.h !== \"\" && !node[$isSplittable]()) {\n        return Math.round(h - space.height) <= ERROR;\n      }\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n      if (parent[$isThereMoreWidth]()) {\n        return false;\n      }\n      return space.height > ERROR;\n    case \"position\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n      if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n        return true;\n      }\n      const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n      return h + y > area.h;\n    case \"rl-row\":\n    case \"row\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n      if (node.h !== \"\") {\n        return Math.round(h - space.height) <= ERROR;\n      }\n      return true;\n    default:\n      return true;\n  }\n}\n\n;// ./src/core/xfa/template.js\n\n\n\n\n\n\n\n\n\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\nconst MAX_EMPTY_PAGES = 3;\nconst DEFAULT_TAB_INDEX = 5000;\nconst HEADING_PATTERN = /^H(\\d+)$/;\nconst MIMES = new Set([\"image/gif\", \"image/jpeg\", \"image/jpg\", \"image/pjpeg\", \"image/png\", \"image/apng\", \"image/x-png\", \"image/bmp\", \"image/x-ms-bmp\", \"image/tiff\", \"image/tif\", \"application/octet-stream\"]);\nconst IMAGES_HEADERS = [[[0x42, 0x4d], \"image/bmp\"], [[0xff, 0xd8, 0xff], \"image/jpeg\"], [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"], [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"]];\nfunction getBorderDims(node) {\n  if (!node || !node.border) {\n    return {\n      w: 0,\n      h: 0\n    };\n  }\n  const borderExtra = node.border[$getExtra]();\n  if (!borderExtra) {\n    return {\n      w: 0,\n      h: 0\n    };\n  }\n  return {\n    w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2],\n    h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3]\n  };\n}\nfunction hasMargin(node) {\n  return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset);\n}\nfunction _setValue(templateNode, value) {\n  if (!templateNode.value) {\n    const nodeValue = new Value({});\n    templateNode[$appendChild](nodeValue);\n    templateNode.value = nodeValue;\n  }\n  templateNode.value[$setValue](value);\n}\nfunction* getContainedChildren(node) {\n  for (const child of node[$getChildren]()) {\n    if (child instanceof SubformSet) {\n      yield* child[$getContainedChildren]();\n      continue;\n    }\n    yield child;\n  }\n}\nfunction isRequired(node) {\n  return node.validate?.nullTest === \"error\";\n}\nfunction setTabIndex(node) {\n  while (node) {\n    if (!node.traversal) {\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\n      return;\n    }\n    if (node[$tabIndex]) {\n      return;\n    }\n    let next = null;\n    for (const child of node.traversal[$getChildren]()) {\n      if (child.operation === \"next\") {\n        next = child;\n        break;\n      }\n    }\n    if (!next || !next.ref) {\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\n      return;\n    }\n    const root = node[$getTemplateRoot]();\n    node[$tabIndex] = ++root[$tabIndex];\n    const ref = root[$searchNode](next.ref, node);\n    if (!ref) {\n      return;\n    }\n    node = ref[0];\n  }\n}\nfunction applyAssist(obj, attributes) {\n  const assist = obj.assist;\n  if (assist) {\n    const assistTitle = assist[$toHTML]();\n    if (assistTitle) {\n      attributes.title = assistTitle;\n    }\n    const role = assist.role;\n    const match = role.match(HEADING_PATTERN);\n    if (match) {\n      const ariaRole = \"heading\";\n      const ariaLevel = match[1];\n      attributes.role = ariaRole;\n      attributes[\"aria-level\"] = ariaLevel;\n    }\n  }\n  if (obj.layout === \"table\") {\n    attributes.role = \"table\";\n  } else if (obj.layout === \"row\") {\n    attributes.role = \"row\";\n  } else {\n    const parent = obj[$getParent]();\n    if (parent.layout === \"row\") {\n      attributes.role = parent.assist?.role === \"TH\" ? \"columnheader\" : \"cell\";\n    }\n  }\n}\nfunction ariaLabel(obj) {\n  if (!obj.assist) {\n    return null;\n  }\n  const assist = obj.assist;\n  if (assist.speak && assist.speak[$content] !== \"\") {\n    return assist.speak[$content];\n  }\n  if (assist.toolTip) {\n    return assist.toolTip[$content];\n  }\n  return null;\n}\nfunction valueToHtml(value) {\n  return HTMLResult.success({\n    name: \"div\",\n    attributes: {\n      class: [\"xfaRich\"],\n      style: Object.create(null)\n    },\n    children: [{\n      name: \"span\",\n      attributes: {\n        style: Object.create(null)\n      },\n      value\n    }]\n  });\n}\nfunction setFirstUnsplittable(node) {\n  const root = node[$getTemplateRoot]();\n  if (root[$extra].firstUnsplittable === null) {\n    root[$extra].firstUnsplittable = node;\n    root[$extra].noLayoutFailure = true;\n  }\n}\nfunction unsetFirstUnsplittable(node) {\n  const root = node[$getTemplateRoot]();\n  if (root[$extra].firstUnsplittable === node) {\n    root[$extra].noLayoutFailure = false;\n  }\n}\nfunction handleBreak(node) {\n  if (node[$extra]) {\n    return false;\n  }\n  node[$extra] = Object.create(null);\n  if (node.targetType === \"auto\") {\n    return false;\n  }\n  const root = node[$getTemplateRoot]();\n  let target = null;\n  if (node.target) {\n    target = root[$searchNode](node.target, node[$getParent]());\n    if (!target) {\n      return false;\n    }\n    target = target[0];\n  }\n  const {\n    currentPageArea,\n    currentContentArea\n  } = root[$extra];\n  if (node.targetType === \"pageArea\") {\n    if (!(target instanceof PageArea)) {\n      target = null;\n    }\n    if (node.startNew) {\n      node[$extra].target = target || currentPageArea;\n      return true;\n    } else if (target && target !== currentPageArea) {\n      node[$extra].target = target;\n      return true;\n    }\n    return false;\n  }\n  if (!(target instanceof ContentArea)) {\n    target = null;\n  }\n  const pageArea = target && target[$getParent]();\n  let index;\n  let nextPageArea = pageArea;\n  if (node.startNew) {\n    if (target) {\n      const contentAreas = pageArea.contentArea.children;\n      const indexForCurrent = contentAreas.indexOf(currentContentArea);\n      const indexForTarget = contentAreas.indexOf(target);\n      if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n        nextPageArea = null;\n      }\n      index = indexForTarget - 1;\n    } else {\n      index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n    }\n  } else if (target && target !== currentContentArea) {\n    const contentAreas = pageArea.contentArea.children;\n    index = contentAreas.indexOf(target) - 1;\n    nextPageArea = pageArea === currentPageArea ? null : pageArea;\n  } else {\n    return false;\n  }\n  node[$extra].target = nextPageArea;\n  node[$extra].index = index;\n  return true;\n}\nfunction handleOverflow(node, extraNode, space) {\n  const root = node[$getTemplateRoot]();\n  const saved = root[$extra].noLayoutFailure;\n  const savedMethod = extraNode[$getSubformParent];\n  extraNode[$getSubformParent] = () => node;\n  root[$extra].noLayoutFailure = true;\n  const res = extraNode[$toHTML](space);\n  node[$addHTML](res.html, res.bbox);\n  root[$extra].noLayoutFailure = saved;\n  extraNode[$getSubformParent] = savedMethod;\n}\nclass AppearanceFilter extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"appearanceFilter\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Arc extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"arc\", true);\n    this.circular = getInteger({\n      data: attributes.circular,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.startAngle = getFloat({\n      data: attributes.startAngle,\n      defaultValue: 0,\n      validate: x => true\n    });\n    this.sweepAngle = getFloat({\n      data: attributes.sweepAngle,\n      defaultValue: 360,\n      validate: x => true\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n    this.fill = null;\n  }\n  [$toHTML]() {\n    const edge = this.edge || new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    if (this.fill?.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n    style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n    style.stroke = edgeStyle.color;\n    let arc;\n    const attributes = {\n      xmlns: SVG_NS,\n      style: {\n        width: \"100%\",\n        height: \"100%\",\n        overflow: \"visible\"\n      }\n    };\n    if (this.sweepAngle === 360) {\n      arc = {\n        name: \"ellipse\",\n        attributes: {\n          xmlns: SVG_NS,\n          cx: \"50%\",\n          cy: \"50%\",\n          rx: \"50%\",\n          ry: \"50%\",\n          style\n        }\n      };\n    } else {\n      const startAngle = this.startAngle * Math.PI / 180;\n      const sweepAngle = this.sweepAngle * Math.PI / 180;\n      const largeArc = this.sweepAngle > 180 ? 1 : 0;\n      const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))];\n      arc = {\n        name: \"path\",\n        attributes: {\n          xmlns: SVG_NS,\n          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n          vectorEffect: \"non-scaling-stroke\",\n          style\n        }\n      };\n      Object.assign(attributes, {\n        viewBox: \"0 0 100 100\",\n        preserveAspectRatio: \"none\"\n      });\n    }\n    const svg = {\n      name: \"svg\",\n      children: [arc],\n      attributes\n    };\n    const parent = this[$getParent]()[$getParent]();\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\"\n          }\n        },\n        children: [svg]\n      });\n    }\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\nclass Area extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"area\", true);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n    this.area = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n  *[$getContainedChildren]() {\n    yield* getContainedChildren(this);\n  }\n  [$isTransparent]() {\n    return true;\n  }\n  [$isBindable]() {\n    return true;\n  }\n  [$addHTML](html, bbox) {\n    const [x, y, w, h] = bbox;\n    this[$extra].width = Math.max(this[$extra].width, x + w);\n    this[$extra].height = Math.max(this[$extra].height, y + h);\n    this[$extra].children.push(html);\n  }\n  [$getAvailableSpace]() {\n    return this[$extra].availableSpace;\n  }\n  [$toHTML](availableSpace) {\n    const style = toStyle(this, \"position\");\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: [\"xfaArea\"]\n    };\n    if (isPrintOnly(this)) {\n      attributes.class.push(\"xfaPrintOnly\");\n    }\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n    const children = [];\n    this[$extra] = {\n      children,\n      width: 0,\n      height: 0,\n      availableSpace\n    };\n    const result = this[$childrenToHTML]({\n      filter: new Set([\"area\", \"draw\", \"field\", \"exclGroup\", \"subform\", \"subformSet\"]),\n      include: true\n    });\n    if (!result.success) {\n      if (result.isBreak()) {\n        return result;\n      }\n      delete this[$extra];\n      return HTMLResult.FAILURE;\n    }\n    style.width = measureToString(this[$extra].width);\n    style.height = measureToString(this[$extra].height);\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n    delete this[$extra];\n    return HTMLResult.success(html, bbox);\n  }\n}\nclass Assist extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"assist\", true);\n    this.id = attributes.id || \"\";\n    this.role = attributes.role || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.speak = null;\n    this.toolTip = null;\n  }\n  [$toHTML]() {\n    return this.toolTip?.[$content] || null;\n  }\n}\nclass Barcode extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"barcode\", true);\n    this.charEncoding = getKeyword({\n      data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : \"\",\n      defaultValue: \"\",\n      validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n    });\n    this.checksum = getStringOption(attributes.checksum, [\"none\", \"1mod10\", \"1mod10_1mod11\", \"2mod10\", \"auto\"]);\n    this.dataColumnCount = getInteger({\n      data: attributes.dataColumnCount,\n      defaultValue: -1,\n      validate: x => x >= 0\n    });\n    this.dataLength = getInteger({\n      data: attributes.dataLength,\n      defaultValue: -1,\n      validate: x => x >= 0\n    });\n    this.dataPrep = getStringOption(attributes.dataPrep, [\"none\", \"flateCompress\"]);\n    this.dataRowCount = getInteger({\n      data: attributes.dataRowCount,\n      defaultValue: -1,\n      validate: x => x >= 0\n    });\n    this.endChar = attributes.endChar || \"\";\n    this.errorCorrectionLevel = getInteger({\n      data: attributes.errorCorrectionLevel,\n      defaultValue: -1,\n      validate: x => x >= 0 && x <= 8\n    });\n    this.id = attributes.id || \"\";\n    this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n    this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n    this.printCheckDigit = getInteger({\n      data: attributes.printCheckDigit,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n    this.startChar = attributes.startChar || \"\";\n    this.textLocation = getStringOption(attributes.textLocation, [\"below\", \"above\", \"aboveEmbedded\", \"belowEmbedded\", \"none\"]);\n    this.truncate = getInteger({\n      data: attributes.truncate,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.type = getStringOption(attributes.type ? attributes.type.toLowerCase() : \"\", [\"aztec\", \"codabar\", \"code2of5industrial\", \"code2of5interleaved\", \"code2of5matrix\", \"code2of5standard\", \"code3of9\", \"code3of9extended\", \"code11\", \"code49\", \"code93\", \"code128\", \"code128a\", \"code128b\", \"code128c\", \"code128sscc\", \"datamatrix\", \"ean8\", \"ean8add2\", \"ean8add5\", \"ean13\", \"ean13add2\", \"ean13add5\", \"ean13pwcd\", \"fim\", \"logmars\", \"maxicode\", \"msi\", \"pdf417\", \"pdf417macro\", \"plessey\", \"postauscust2\", \"postauscust3\", \"postausreplypaid\", \"postausstandard\", \"postukrm4scc\", \"postusdpbc\", \"postusimb\", \"postusstandard\", \"postus5zip\", \"qrcode\", \"rfid\", \"rss14\", \"rss14expanded\", \"rss14limited\", \"rss14stacked\", \"rss14stackedomni\", \"rss14truncated\", \"telepen\", \"ucc128\", \"ucc128random\", \"ucc128sscc\", \"upca\", \"upcaadd2\", \"upcaadd5\", \"upcapwcd\", \"upce\", \"upceadd2\", \"upceadd5\", \"upcean2\", \"upcean5\", \"upsmaxicode\"]);\n    this.upsMode = getStringOption(attributes.upsMode, [\"usCarrier\", \"internationalCarrier\", \"secureSymbol\", \"standardSymbol\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n    this.encrypt = null;\n    this.extras = null;\n  }\n}\nclass Bind extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bind\", true);\n    this.match = getStringOption(attributes.match, [\"once\", \"dataRef\", \"global\", \"none\"]);\n    this.ref = attributes.ref || \"\";\n    this.picture = null;\n  }\n}\nclass BindItems extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bindItems\");\n    this.connection = attributes.connection || \"\";\n    this.labelRef = attributes.labelRef || \"\";\n    this.ref = attributes.ref || \"\";\n    this.valueRef = attributes.valueRef || \"\";\n  }\n}\nclass Bookend extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bookend\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass BooleanElement extends Option01 {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"boolean\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n  }\n}\nclass Border extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"border\", true);\n    this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new XFAObjectArray(4);\n    this.edge = new XFAObjectArray(4);\n    this.extras = null;\n    this.fill = null;\n    this.margin = null;\n  }\n  [$getExtra]() {\n    if (!this[$extra]) {\n      const edges = this.edge.children.slice();\n      if (edges.length < 4) {\n        const defaultEdge = edges.at(-1) || new Edge({});\n        for (let i = edges.length; i < 4; i++) {\n          edges.push(defaultEdge);\n        }\n      }\n      const widths = edges.map(edge => edge.thickness);\n      const insets = [0, 0, 0, 0];\n      if (this.margin) {\n        insets[0] = this.margin.topInset;\n        insets[1] = this.margin.rightInset;\n        insets[2] = this.margin.bottomInset;\n        insets[3] = this.margin.leftInset;\n      }\n      this[$extra] = {\n        widths,\n        insets,\n        edges\n      };\n    }\n    return this[$extra];\n  }\n  [$toStyle]() {\n    const {\n      edges\n    } = this[$getExtra]();\n    const edgeStyles = edges.map(node => {\n      const style = node[$toStyle]();\n      style.color ||= \"#000000\";\n      return style;\n    });\n    const style = Object.create(null);\n    if (this.margin) {\n      Object.assign(style, this.margin[$toStyle]());\n    }\n    if (this.fill?.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    }\n    if (this.corner.children.some(node => node.radius !== 0)) {\n      const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n      if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n        const last = cornerStyles.at(-1);\n        for (let i = cornerStyles.length; i < 4; i++) {\n          cornerStyles.push(last);\n        }\n      }\n      style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n    }\n    switch (this.presence) {\n      case \"invisible\":\n      case \"hidden\":\n        style.borderStyle = \"\";\n        break;\n      case \"inactive\":\n        style.borderStyle = \"none\";\n        break;\n      default:\n        style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n        break;\n    }\n    style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n    style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n    return style;\n  }\n}\nclass Break extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"break\", true);\n    this.after = getStringOption(attributes.after, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n    this.afterTarget = attributes.afterTarget || \"\";\n    this.before = getStringOption(attributes.before, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n    this.beforeTarget = attributes.beforeTarget || \"\";\n    this.bookendLeader = attributes.bookendLeader || \"\";\n    this.bookendTrailer = attributes.bookendTrailer || \"\";\n    this.id = attributes.id || \"\";\n    this.overflowLeader = attributes.overflowLeader || \"\";\n    this.overflowTarget = attributes.overflowTarget || \"\";\n    this.overflowTrailer = attributes.overflowTrailer || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\nclass BreakAfter extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakAfter\", true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = getStringOption(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n}\nclass BreakBefore extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakBefore\", true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = getStringOption(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n  [$toHTML](availableSpace) {\n    this[$extra] = {};\n    return HTMLResult.FAILURE;\n  }\n}\nclass Button extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"button\", true);\n    this.highlight = getStringOption(attributes.highlight, [\"inverted\", \"none\", \"outline\", \"push\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n  [$toHTML](availableSpace) {\n    const parent = this[$getParent]();\n    const grandpa = parent[$getParent]();\n    const htmlButton = {\n      name: \"button\",\n      attributes: {\n        id: this[$uid],\n        class: [\"xfaButton\"],\n        style: {}\n      },\n      children: []\n    };\n    for (const event of grandpa.event.children) {\n      if (event.activity !== \"click\" || !event.script) {\n        continue;\n      }\n      const jsURL = recoverJsURL(event.script[$content]);\n      if (!jsURL) {\n        continue;\n      }\n      const href = fixURL(jsURL.url);\n      if (!href) {\n        continue;\n      }\n      htmlButton.children.push({\n        name: \"a\",\n        attributes: {\n          id: \"link\" + this[$uid],\n          href,\n          newWindow: jsURL.newWindow,\n          class: [\"xfaLink\"],\n          style: {}\n        },\n        children: []\n      });\n    }\n    return HTMLResult.success(htmlButton);\n  }\n}\nclass Calculate extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"calculate\", true);\n    this.id = attributes.id || \"\";\n    this.override = getStringOption(attributes.override, [\"disabled\", \"error\", \"ignore\", \"warning\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.script = null;\n  }\n}\nclass Caption extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"caption\", true);\n    this.id = attributes.id || \"\";\n    this.placement = getStringOption(attributes.placement, [\"left\", \"bottom\", \"inline\", \"right\", \"top\"]);\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.font = null;\n    this.margin = null;\n    this.para = null;\n    this.value = null;\n  }\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n  [$getExtra](availableSpace) {\n    if (!this[$extra]) {\n      let {\n        width,\n        height\n      } = availableSpace;\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          width = this.reserve <= 0 ? width : this.reserve;\n          break;\n        case \"top\":\n        case \"bottom\":\n          height = this.reserve <= 0 ? height : this.reserve;\n          break;\n      }\n      this[$extra] = layoutNode(this, {\n        width,\n        height\n      });\n    }\n    return this[$extra];\n  }\n  [$toHTML](availableSpace) {\n    if (!this.value) {\n      return HTMLResult.EMPTY;\n    }\n    this[$pushPara]();\n    const value = this.value[$toHTML](availableSpace).html;\n    if (!value) {\n      this[$popPara]();\n      return HTMLResult.EMPTY;\n    }\n    const savedReserve = this.reserve;\n    if (this.reserve <= 0) {\n      const {\n        w,\n        h\n      } = this[$getExtra](availableSpace);\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          this.reserve = w;\n          break;\n        case \"top\":\n        case \"bottom\":\n          this.reserve = h;\n          break;\n      }\n    }\n    const children = [];\n    if (typeof value === \"string\") {\n      children.push({\n        name: \"#text\",\n        value\n      });\n    } else {\n      children.push(value);\n    }\n    const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n    switch (this.placement) {\n      case \"left\":\n      case \"right\":\n        if (this.reserve > 0) {\n          style.width = measureToString(this.reserve);\n        }\n        break;\n      case \"top\":\n      case \"bottom\":\n        if (this.reserve > 0) {\n          style.height = measureToString(this.reserve);\n        }\n        break;\n    }\n    setPara(this, null, value);\n    this[$popPara]();\n    this.reserve = savedReserve;\n    return HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        style,\n        class: [\"xfaCaption\"]\n      },\n      children\n    });\n  }\n}\nclass Certificate extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificate\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Certificates extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificates\", true);\n    this.credentialServerPolicy = getStringOption(attributes.credentialServerPolicy, [\"optional\", \"required\"]);\n    this.id = attributes.id || \"\";\n    this.url = attributes.url || \"\";\n    this.urlPolicy = attributes.urlPolicy || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryption = null;\n    this.issuers = null;\n    this.keyUsage = null;\n    this.oids = null;\n    this.signing = null;\n    this.subjectDNs = null;\n  }\n}\nclass CheckButton extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"checkButton\", true);\n    this.id = attributes.id || \"\";\n    this.mark = getStringOption(attributes.mark, [\"default\", \"check\", \"circle\", \"cross\", \"diamond\", \"square\", \"star\"]);\n    this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n    this.size = getMeasurement(attributes.size, \"10pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n  [$toHTML](availableSpace) {\n    const style = toStyle(\"margin\");\n    const size = measureToString(this.size);\n    style.width = style.height = size;\n    let type;\n    let className;\n    let groupId;\n    const field = this[$getParent]()[$getParent]();\n    const items = field.items.children.length && field.items.children[0][$toHTML]().html || [];\n    const exportedValue = {\n      on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n      off: (items[1] !== undefined ? items[1] : \"off\").toString()\n    };\n    const value = field.value?.[$text]() || \"off\";\n    const checked = value === exportedValue.on || undefined;\n    const container = field[$getSubformParent]();\n    const fieldId = field[$uid];\n    let dataId;\n    if (container instanceof ExclGroup) {\n      groupId = container[$uid];\n      type = \"radio\";\n      className = \"xfaRadio\";\n      dataId = container[$data]?.[$uid] || container[$uid];\n    } else {\n      type = \"checkbox\";\n      className = \"xfaCheckbox\";\n      dataId = field[$data]?.[$uid] || field[$uid];\n    }\n    const input = {\n      name: \"input\",\n      attributes: {\n        class: [className],\n        style,\n        fieldId,\n        dataId,\n        type,\n        checked,\n        xfaOn: exportedValue.on,\n        xfaOff: exportedValue.off,\n        \"aria-label\": ariaLabel(field),\n        \"aria-required\": false\n      }\n    };\n    if (groupId) {\n      input.attributes.name = groupId;\n    }\n    if (isRequired(field)) {\n      input.attributes[\"aria-required\"] = true;\n      input.attributes.required = true;\n    }\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [input]\n    });\n  }\n}\nclass ChoiceList extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"choiceList\", true);\n    this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n    this.id = attributes.id || \"\";\n    this.open = getStringOption(attributes.open, [\"userControl\", \"always\", \"multiSelect\", \"onEntry\"]);\n    this.textEntry = getInteger({\n      data: attributes.textEntry,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n  [$toHTML](availableSpace) {\n    const style = toStyle(this, \"border\", \"margin\");\n    const ui = this[$getParent]();\n    const field = ui[$getParent]();\n    const fontSize = field.font?.size || 10;\n    const optionStyle = {\n      fontSize: `calc(${fontSize}px * var(--scale-factor))`\n    };\n    const children = [];\n    if (field.items.children.length > 0) {\n      const items = field.items;\n      let displayedIndex = 0;\n      let saveIndex = 0;\n      if (items.children.length === 2) {\n        displayedIndex = items.children[0].save;\n        saveIndex = 1 - displayedIndex;\n      }\n      const displayed = items.children[displayedIndex][$toHTML]().html;\n      const values = items.children[saveIndex][$toHTML]().html;\n      let selected = false;\n      const value = field.value?.[$text]() || \"\";\n      for (let i = 0, ii = displayed.length; i < ii; i++) {\n        const option = {\n          name: \"option\",\n          attributes: {\n            value: values[i] || displayed[i],\n            style: optionStyle\n          },\n          value: displayed[i]\n        };\n        if (values[i] === value) {\n          option.attributes.selected = selected = true;\n        }\n        children.push(option);\n      }\n      if (!selected) {\n        children.splice(0, 0, {\n          name: \"option\",\n          attributes: {\n            hidden: true,\n            selected: true\n          },\n          value: \" \"\n        });\n      }\n    }\n    const selectAttributes = {\n      class: [\"xfaSelect\"],\n      fieldId: field[$uid],\n      dataId: field[$data]?.[$uid] || field[$uid],\n      style,\n      \"aria-label\": ariaLabel(field),\n      \"aria-required\": false\n    };\n    if (isRequired(field)) {\n      selectAttributes[\"aria-required\"] = true;\n      selectAttributes.required = true;\n    }\n    if (this.open === \"multiSelect\") {\n      selectAttributes.multiple = true;\n    }\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [{\n        name: \"select\",\n        children,\n        attributes: selectAttributes\n      }]\n    });\n  }\n}\nclass Color extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"color\", true);\n    this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.value = attributes.value ? getColor(attributes.value) : \"\";\n    this.extras = null;\n  }\n  [$hasSettableValue]() {\n    return false;\n  }\n  [$toStyle]() {\n    return this.value ? Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null;\n  }\n}\nclass Comb extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"comb\");\n    this.id = attributes.id || \"\";\n    this.numberOfCells = getInteger({\n      data: attributes.numberOfCells,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Connect extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"connect\", true);\n    this.connection = attributes.connection || \"\";\n    this.id = attributes.id || \"\";\n    this.ref = attributes.ref || \"\";\n    this.usage = getStringOption(attributes.usage, [\"exportAndImport\", \"exportOnly\", \"importOnly\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.picture = null;\n  }\n}\nclass ContentArea extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"contentArea\", true);\n    this.h = getMeasurement(attributes.h);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = getMeasurement(attributes.w);\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n  }\n  [$toHTML](availableSpace) {\n    const left = measureToString(this.x);\n    const top = measureToString(this.y);\n    const style = {\n      left,\n      top,\n      width: measureToString(this.w),\n      height: measureToString(this.h)\n    };\n    const classNames = [\"xfaContentarea\"];\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n    return HTMLResult.success({\n      name: \"div\",\n      children: [],\n      attributes: {\n        style,\n        class: classNames,\n        id: this[$uid]\n      }\n    });\n  }\n}\nclass Corner extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"corner\", true);\n    this.id = attributes.id || \"\";\n    this.inverted = getInteger({\n      data: attributes.inverted,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.radius = getMeasurement(attributes.radius);\n    this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n    this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n  [$toStyle]() {\n    const style = toStyle(this, \"visibility\");\n    style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n    return style;\n  }\n}\nclass DateElement extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"date\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\nclass DateTime extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTime\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\nclass DateTimeEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTimeEdit\", true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n  [$toHTML](availableSpace) {\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    const field = this[$getParent]()[$getParent]();\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[$uid],\n        dataId: field[$data]?.[$uid] || field[$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field),\n        \"aria-required\": false\n      }\n    };\n    if (isRequired(field)) {\n      html.attributes[\"aria-required\"] = true;\n      html.attributes.required = true;\n    }\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [html]\n    });\n  }\n}\nclass Decimal extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"decimal\");\n    this.fracDigits = getInteger({\n      data: attributes.fracDigits,\n      defaultValue: 2,\n      validate: x => true\n    });\n    this.id = attributes.id || \"\";\n    this.leadDigits = getInteger({\n      data: attributes.leadDigits,\n      defaultValue: -1,\n      validate: x => true\n    });\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    const number = parseFloat(this[$content].trim());\n    this[$content] = isNaN(number) ? null : number;\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n  }\n}\nclass DefaultUi extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"defaultUi\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\nclass Desc extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"desc\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\nclass DigestMethod extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethod\", [\"\", \"SHA1\", \"SHA256\", \"SHA512\", \"RIPEMD160\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass DigestMethods extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethods\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.digestMethod = new XFAObjectArray();\n  }\n}\nclass Draw extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"draw\", true);\n    this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.rotate = getInteger({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.border = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.value = null;\n    this.setProperty = new XFAObjectArray();\n  }\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return HTMLResult.EMPTY;\n    }\n    fixDimensions(this);\n    this[$pushPara]();\n    const savedW = this.w;\n    const savedH = this.h;\n    const {\n      w,\n      h,\n      isBroken\n    } = layoutNode(this, availableSpace);\n    if (w && this.w === \"\") {\n      if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n        this[$popPara]();\n        return HTMLResult.FAILURE;\n      }\n      this.w = w;\n    }\n    if (h && this.h === \"\") {\n      this.h = h;\n    }\n    setFirstUnsplittable(this);\n    if (!checkDimensions(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.FAILURE;\n    }\n    unsetFirstUnsplittable(this);\n    const style = toStyle(this, \"font\", \"hAlign\", \"dimensions\", \"position\", \"presence\", \"rotate\", \"anchorType\", \"border\", \"margin\");\n    setMinMaxDimensions(this, style);\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n    const classNames = [\"xfaDraw\"];\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: classNames\n    };\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n    const html = {\n      name: \"div\",\n      attributes,\n      children: []\n    };\n    applyAssist(this, attributes);\n    const bbox = computeBbox(this, html, availableSpace);\n    const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n    if (value === null) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n    html.children.push(value);\n    setPara(this, style, value);\n    this.w = savedW;\n    this.h = savedH;\n    this[$popPara]();\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\nclass Edge extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"edge\", true);\n    this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.stroke = getStringOption(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n    this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n  [$toStyle]() {\n    const style = toStyle(this, \"visibility\");\n    Object.assign(style, {\n      linecap: this.cap,\n      width: measureToString(this.thickness),\n      color: this.color ? this.color[$toStyle]() : \"#000000\",\n      style: \"\"\n    });\n    if (this.presence !== \"visible\") {\n      style.style = \"none\";\n    } else {\n      switch (this.stroke) {\n        case \"solid\":\n          style.style = \"solid\";\n          break;\n        case \"dashDot\":\n          style.style = \"dashed\";\n          break;\n        case \"dashDotDot\":\n          style.style = \"dashed\";\n          break;\n        case \"dashed\":\n          style.style = \"dashed\";\n          break;\n        case \"dotted\":\n          style.style = \"dotted\";\n          break;\n        case \"embossed\":\n          style.style = \"ridge\";\n          break;\n        case \"etched\":\n          style.style = \"groove\";\n          break;\n        case \"lowered\":\n          style.style = \"inset\";\n          break;\n        case \"raised\":\n          style.style = \"outset\";\n          break;\n      }\n    }\n    return style;\n  }\n}\nclass Encoding extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encoding\", [\"adbe.x509.rsa_sha1\", \"adbe.pkcs7.detached\", \"adbe.pkcs7.sha1\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Encodings extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encodings\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encoding = new XFAObjectArray();\n  }\n}\nclass Encrypt extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encrypt\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = null;\n  }\n}\nclass EncryptData extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptData\", true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\"encrypt\", \"decrypt\"]);\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n}\nclass Encryption extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryption\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\nclass EncryptionMethod extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethod\", [\"\", \"AES256-CBC\", \"TRIPLEDES-CBC\", \"AES128-CBC\", \"AES192-CBC\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass EncryptionMethods extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethods\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryptionMethod = new XFAObjectArray();\n  }\n}\nclass Event extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"event\", true);\n    this.activity = getStringOption(attributes.activity, [\"click\", \"change\", \"docClose\", \"docReady\", \"enter\", \"exit\", \"full\", \"indexChange\", \"initialize\", \"mouseDown\", \"mouseEnter\", \"mouseExit\", \"mouseUp\", \"postExecute\", \"postOpen\", \"postPrint\", \"postSave\", \"postSign\", \"postSubmit\", \"preExecute\", \"preOpen\", \"prePrint\", \"preSave\", \"preSign\", \"preSubmit\", \"ready\", \"validationState\"]);\n    this.id = attributes.id || \"\";\n    this.listen = getStringOption(attributes.listen, [\"refOnly\", \"refAndDescendents\"]);\n    this.name = attributes.name || \"\";\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.encryptData = null;\n    this.execute = null;\n    this.script = null;\n    this.signData = null;\n    this.submit = null;\n  }\n}\nclass ExData extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exData\");\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.maxLength = getInteger({\n      data: attributes.maxLength,\n      defaultValue: -1,\n      validate: x => x >= -1\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\"none\", \"base64\", \"package\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$isCDATAXml]() {\n    return this.contentType === \"text/html\";\n  }\n  [$onChild](child) {\n    if (this.contentType === \"text/html\" && child[$namespaceId] === NamespaceIds.xhtml.id) {\n      this[$content] = child;\n      return true;\n    }\n    if (this.contentType === \"text/xml\") {\n      this[$content] = child;\n      return true;\n    }\n    return false;\n  }\n  [$toHTML](availableSpace) {\n    if (this.contentType !== \"text/html\" || !this[$content]) {\n      return HTMLResult.EMPTY;\n    }\n    return this[$content][$toHTML](availableSpace);\n  }\n}\nclass ExObject extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exObject\", true);\n    this.archive = attributes.archive || \"\";\n    this.classId = attributes.classId || \"\";\n    this.codeBase = attributes.codeBase || \"\";\n    this.codeType = attributes.codeType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\nclass ExclGroup extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exclGroup\", true);\n    this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.connect = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n  }\n  [$isBindable]() {\n    return true;\n  }\n  [$hasSettableValue]() {\n    return true;\n  }\n  [$setValue](value) {\n    for (const field of this.field.children) {\n      if (!field.value) {\n        const nodeValue = new Value({});\n        field[$appendChild](nodeValue);\n        field.value = nodeValue;\n      }\n      field.value[$setValue](value);\n    }\n  }\n  [$isThereMoreWidth]() {\n    return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n  }\n  [$isSplittable]() {\n    const parent = this[$getSubformParent]();\n    if (!parent[$isSplittable]()) {\n      return false;\n    }\n    if (this[$extra]._isSplittable !== undefined) {\n      return this[$extra]._isSplittable;\n    }\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n    if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n      return false;\n    }\n    this[$extra]._isSplittable = true;\n    return true;\n  }\n  [$flushHTML]() {\n    return flushHTML(this);\n  }\n  [$addHTML](html, bbox) {\n    addHTML(this, html, bbox);\n  }\n  [$getAvailableSpace]() {\n    return getAvailableSpace(this);\n  }\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n    if (this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n      return HTMLResult.EMPTY;\n    }\n    fixDimensions(this);\n    const children = [];\n    const attributes = {\n      id: this[$uid],\n      class: []\n    };\n    setAccess(this, attributes.class);\n    if (!this[$extra]) {\n      this[$extra] = Object.create(null);\n    }\n    Object.assign(this[$extra], {\n      children,\n      attributes,\n      attempt: 0,\n      line: null,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height)\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0\n    });\n    const isSplittable = this[$isSplittable]();\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n    if (!checkDimensions(this, availableSpace)) {\n      return HTMLResult.FAILURE;\n    }\n    const filter = new Set([\"field\"]);\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[$getSubformParent]().columnWidths;\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[$extra].columnWidths = columnWidths;\n        this[$extra].currentColumn = 0;\n      }\n    }\n    const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n    const classNames = [\"xfaExclgroup\"];\n    const cl = layoutClass(this);\n    if (cl) {\n      classNames.push(cl);\n    }\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n    attributes.style = style;\n    attributes.class = classNames;\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n    this[$pushPara]();\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n    for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        this[$extra].numberInLine = 0;\n      }\n      const result = this[$childrenToHTML]({\n        filter,\n        include: true\n      });\n      if (result.success) {\n        break;\n      }\n      if (result.isBreak()) {\n        this[$popPara]();\n        return result;\n      }\n      if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !this[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        this[$extra].attempt = maxRun;\n        break;\n      }\n    }\n    this[$popPara]();\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n    if (this[$extra].attempt === maxRun) {\n      if (!isSplittable) {\n        delete this[$extra];\n      }\n      return HTMLResult.FAILURE;\n    }\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n    if (this.w === \"\") {\n      style.width = measureToString(width);\n    }\n    if (this.h === \"\") {\n      style.height = measureToString(height);\n    }\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    applyAssist(this, attributes);\n    delete this[$extra];\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\nclass Execute extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"execute\");\n    this.connection = attributes.connection || \"\";\n    this.executeType = getStringOption(attributes.executeType, [\"import\", \"remerge\"]);\n    this.id = attributes.id || \"\";\n    this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Extras extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"extras\", true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.extras = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\nclass Field extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"field\", true);\n    this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.rotate = getInteger({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.format = null;\n    this.items = new XFAObjectArray(2);\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.validate = null;\n    this.value = null;\n    this.bindItems = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n  }\n  [$isBindable]() {\n    return true;\n  }\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n    if (!this.ui) {\n      this.ui = new Ui({});\n      this.ui[$globalData] = this[$globalData];\n      this[$appendChild](this.ui);\n      let node;\n      switch (this.items.children.length) {\n        case 0:\n          node = new TextEdit({});\n          this.ui.textEdit = node;\n          break;\n        case 1:\n          node = new CheckButton({});\n          this.ui.checkButton = node;\n          break;\n        case 2:\n          node = new ChoiceList({});\n          this.ui.choiceList = node;\n          break;\n      }\n      this.ui[$appendChild](node);\n    }\n    if (!this.ui || this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n      return HTMLResult.EMPTY;\n    }\n    if (this.caption) {\n      delete this.caption[$extra];\n    }\n    this[$pushPara]();\n    const caption = this.caption ? this.caption[$toHTML](availableSpace).html : null;\n    const savedW = this.w;\n    const savedH = this.h;\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n    let borderDims = null;\n    if (this.w === \"\" || this.h === \"\") {\n      let width = null;\n      let height = null;\n      let uiW = 0;\n      let uiH = 0;\n      if (this.ui.checkButton) {\n        uiW = uiH = this.ui.checkButton.size;\n      } else {\n        const {\n          w,\n          h\n        } = layoutNode(this, availableSpace);\n        if (w !== null) {\n          uiW = w;\n          uiH = h;\n        } else {\n          uiH = fonts_getMetrics(this.font, true).lineNoGap;\n        }\n      }\n      borderDims = getBorderDims(this.ui[$getExtra]());\n      uiW += borderDims.w;\n      uiH += borderDims.h;\n      if (this.caption) {\n        const {\n          w,\n          h,\n          isBroken\n        } = this.caption[$getExtra](availableSpace);\n        if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n          this[$popPara]();\n          return HTMLResult.FAILURE;\n        }\n        width = w;\n        height = h;\n        switch (this.caption.placement) {\n          case \"left\":\n          case \"right\":\n          case \"inline\":\n            width += uiW;\n            break;\n          case \"top\":\n          case \"bottom\":\n            height += uiH;\n            break;\n        }\n      } else {\n        width = uiW;\n        height = uiH;\n      }\n      if (width && this.w === \"\") {\n        width += marginH;\n        this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW);\n      }\n      if (height && this.h === \"\") {\n        height += marginV;\n        this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH);\n      }\n    }\n    this[$popPara]();\n    fixDimensions(this);\n    setFirstUnsplittable(this);\n    if (!checkDimensions(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.FAILURE;\n    }\n    unsetFirstUnsplittable(this);\n    const style = toStyle(this, \"font\", \"dimensions\", \"position\", \"rotate\", \"anchorType\", \"presence\", \"margin\", \"hAlign\");\n    setMinMaxDimensions(this, style);\n    const classNames = [\"xfaField\"];\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: classNames\n    };\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n    setAccess(this, classNames);\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n    const children = [];\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    applyAssist(this, attributes);\n    const borderStyle = this.border ? this.border[$toStyle]() : null;\n    const bbox = computeBbox(this, html, availableSpace);\n    const ui = this.ui[$toHTML]().html;\n    if (!ui) {\n      Object.assign(style, borderStyle);\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n    if (this[$tabIndex]) {\n      if (ui.children?.[0]) {\n        ui.children[0].attributes.tabindex = this[$tabIndex];\n      } else {\n        ui.attributes.tabindex = this[$tabIndex];\n      }\n    }\n    if (!ui.attributes.style) {\n      ui.attributes.style = Object.create(null);\n    }\n    let aElement = null;\n    if (this.ui.button) {\n      if (ui.children.length === 1) {\n        [aElement] = ui.children.splice(0, 1);\n      }\n      Object.assign(ui.attributes.style, borderStyle);\n    } else {\n      Object.assign(style, borderStyle);\n    }\n    children.push(ui);\n    if (this.value) {\n      if (this.ui.imageEdit) {\n        ui.children.push(this.value[$toHTML]().html);\n      } else if (!this.ui.button) {\n        let value = \"\";\n        if (this.value.exData) {\n          value = this.value.exData[$text]();\n        } else if (this.value.text) {\n          value = this.value.text[$getExtra]();\n        } else {\n          const htmlValue = this.value[$toHTML]().html;\n          if (htmlValue !== null) {\n            value = htmlValue.children[0].value;\n          }\n        }\n        if (this.ui.textEdit && this.value.text?.maxChars) {\n          ui.children[0].attributes.maxLength = this.value.text.maxChars;\n        }\n        if (value) {\n          if (this.ui.numericEdit) {\n            value = parseFloat(value);\n            value = isNaN(value) ? \"\" : value.toString();\n          }\n          if (ui.children[0].name === \"textarea\") {\n            ui.children[0].attributes.textContent = value;\n          } else {\n            ui.children[0].attributes.value = value;\n          }\n        }\n      }\n    }\n    if (!this.ui.imageEdit && ui.children?.[0] && this.h) {\n      borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n      let captionHeight = 0;\n      if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n        captionHeight = this.caption.reserve;\n        if (captionHeight <= 0) {\n          captionHeight = this.caption[$getExtra](availableSpace).h;\n        }\n        const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n        ui.children[0].attributes.style.height = measureToString(inputHeight);\n      } else {\n        ui.children[0].attributes.style.height = \"100%\";\n      }\n    }\n    if (aElement) {\n      ui.children.push(aElement);\n    }\n    if (!caption) {\n      if (ui.attributes.class) {\n        ui.attributes.class.push(\"xfaLeft\");\n      }\n      this.w = savedW;\n      this.h = savedH;\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n    if (this.ui.button) {\n      if (style.padding) {\n        delete style.padding;\n      }\n      if (caption.name === \"div\") {\n        caption.name = \"span\";\n      }\n      ui.children.push(caption);\n      return HTMLResult.success(html, bbox);\n    } else if (this.ui.checkButton) {\n      caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n    }\n    if (!ui.attributes.class) {\n      ui.attributes.class = [];\n    }\n    ui.children.splice(0, 0, caption);\n    switch (this.caption.placement) {\n      case \"left\":\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n      case \"right\":\n        ui.attributes.class.push(\"xfaRight\");\n        break;\n      case \"top\":\n        ui.attributes.class.push(\"xfaTop\");\n        break;\n      case \"bottom\":\n        ui.attributes.class.push(\"xfaBottom\");\n        break;\n      case \"inline\":\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n    }\n    this.w = savedW;\n    this.h = savedH;\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\nclass Fill extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"fill\", true);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n    this.linear = null;\n    this.pattern = null;\n    this.radial = null;\n    this.solid = null;\n    this.stipple = null;\n  }\n  [$toStyle]() {\n    const parent = this[$getParent]();\n    const grandpa = parent[$getParent]();\n    const ggrandpa = grandpa[$getParent]();\n    const style = Object.create(null);\n    let propName = \"color\";\n    let altPropName = propName;\n    if (parent instanceof Border) {\n      propName = \"background-color\";\n      altPropName = \"background\";\n      if (ggrandpa instanceof Ui) {\n        style.backgroundColor = \"white\";\n      }\n    }\n    if (parent instanceof Rectangle || parent instanceof Arc) {\n      propName = altPropName = \"fill\";\n      style.fill = \"white\";\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"extras\" || name === \"color\") {\n        continue;\n      }\n      const obj = this[name];\n      if (!(obj instanceof XFAObject)) {\n        continue;\n      }\n      const color = obj[$toStyle](this.color);\n      if (color) {\n        style[color.startsWith(\"#\") ? propName : altPropName] = color;\n      }\n      return style;\n    }\n    if (this.color?.value) {\n      const color = this.color[$toStyle]();\n      style[color.startsWith(\"#\") ? propName : altPropName] = color;\n    }\n    return style;\n  }\n}\nclass Filter extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"filter\", true);\n    this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\"\", \"required\", \"optional\", \"none\"]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.version = getInteger({\n      data: this.version,\n      defaultValue: 5,\n      validate: x => x >= 1 && x <= 5\n    });\n    this.appearanceFilter = null;\n    this.certificates = null;\n    this.digestMethods = null;\n    this.encodings = null;\n    this.encryptionMethods = null;\n    this.handler = null;\n    this.lockDocument = null;\n    this.mdp = null;\n    this.reasons = null;\n    this.timeStamp = null;\n  }\n}\nclass Float extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"float\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    const number = parseFloat(this[$content].trim());\n    this[$content] = isNaN(number) ? null : number;\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n  }\n}\nclass template_Font extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"font\", true);\n    this.baselineShift = getMeasurement(attributes.baselineShift);\n    this.fontHorizontalScale = getFloat({\n      data: attributes.fontHorizontalScale,\n      defaultValue: 100,\n      validate: x => x >= 0\n    });\n    this.fontVerticalScale = getFloat({\n      data: attributes.fontVerticalScale,\n      defaultValue: 100,\n      validate: x => x >= 0\n    });\n    this.id = attributes.id || \"\";\n    this.kerningMode = getStringOption(attributes.kerningMode, [\"none\", \"pair\"]);\n    this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n    this.lineThrough = getInteger({\n      data: attributes.lineThrough,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2\n    });\n    this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\"all\", \"word\"]);\n    this.overline = getInteger({\n      data: attributes.overline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2\n    });\n    this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\"all\", \"word\"]);\n    this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n    this.size = getMeasurement(attributes.size, \"10pt\");\n    this.typeface = attributes.typeface || \"Courier\";\n    this.underline = getInteger({\n      data: attributes.underline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2\n    });\n    this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\"all\", \"word\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n    this.extras = null;\n    this.fill = null;\n  }\n  [$clean](builder) {\n    super[$clean](builder);\n    this[$globalData].usedTypefaces.add(this.typeface);\n  }\n  [$toStyle]() {\n    const style = toStyle(this, \"fill\");\n    const color = style.color;\n    if (color) {\n      if (color === \"#000000\") {\n        delete style.color;\n      } else if (!color.startsWith(\"#\")) {\n        style.background = color;\n        style.backgroundClip = \"text\";\n        style.color = \"transparent\";\n      }\n    }\n    if (this.baselineShift) {\n      style.verticalAlign = measureToString(this.baselineShift);\n    }\n    style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n    style.letterSpacing = measureToString(this.letterSpacing);\n    if (this.lineThrough !== 0) {\n      style.textDecoration = \"line-through\";\n      if (this.lineThrough === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n    if (this.overline !== 0) {\n      style.textDecoration = \"overline\";\n      if (this.overline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n    style.fontStyle = this.posture;\n    style.fontSize = measureToString(0.99 * this.size);\n    setFontFamily(this, this, this[$globalData].fontFinder, style);\n    if (this.underline !== 0) {\n      style.textDecoration = \"underline\";\n      if (this.underline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n    style.fontWeight = this.weight;\n    return style;\n  }\n}\nclass Format extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"format\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n  }\n}\nclass Handler extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"handler\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Hyphenation extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"hyphenation\");\n    this.excludeAllCaps = getInteger({\n      data: attributes.excludeAllCaps,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.excludeInitialCap = getInteger({\n      data: attributes.excludeInitialCap,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.hyphenate = getInteger({\n      data: attributes.hyphenate,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.id = attributes.id || \"\";\n    this.pushCharacterCount = getInteger({\n      data: attributes.pushCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0\n    });\n    this.remainCharacterCount = getInteger({\n      data: attributes.remainCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wordCharacterCount = getInteger({\n      data: attributes.wordCharacterCount,\n      defaultValue: 7,\n      validate: x => x >= 0\n    });\n  }\n}\nclass Image extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"image\");\n    this.aspect = getStringOption(attributes.aspect, [\"fit\", \"actual\", \"height\", \"none\", \"width\"]);\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\"base64\", \"none\", \"package\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$toHTML]() {\n    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n      return HTMLResult.EMPTY;\n    }\n    let buffer = this[$globalData].images && this[$globalData].images.get(this.href);\n    if (!buffer && (this.href || !this[$content])) {\n      return HTMLResult.EMPTY;\n    }\n    if (!buffer && this.transferEncoding === \"base64\") {\n      buffer = fromBase64Util(this[$content]);\n    }\n    if (!buffer) {\n      return HTMLResult.EMPTY;\n    }\n    if (!this.contentType) {\n      for (const [header, type] of IMAGES_HEADERS) {\n        if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) {\n          this.contentType = type;\n          break;\n        }\n      }\n      if (!this.contentType) {\n        return HTMLResult.EMPTY;\n      }\n    }\n    const blob = new Blob([buffer], {\n      type: this.contentType\n    });\n    let style;\n    switch (this.aspect) {\n      case \"fit\":\n      case \"actual\":\n        break;\n      case \"height\":\n        style = {\n          height: \"100%\",\n          objectFit: \"fill\"\n        };\n        break;\n      case \"none\":\n        style = {\n          width: \"100%\",\n          height: \"100%\",\n          objectFit: \"fill\"\n        };\n        break;\n      case \"width\":\n        style = {\n          width: \"100%\",\n          objectFit: \"fill\"\n        };\n        break;\n    }\n    const parent = this[$getParent]();\n    return HTMLResult.success({\n      name: \"img\",\n      attributes: {\n        class: [\"xfaImage\"],\n        style,\n        src: URL.createObjectURL(blob),\n        alt: parent ? ariaLabel(parent[$getParent]()) : null\n      }\n    });\n  }\n}\nclass ImageEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"imageEdit\", true);\n    this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n  [$toHTML](availableSpace) {\n    if (this.data === \"embed\") {\n      return HTMLResult.success({\n        name: \"div\",\n        children: [],\n        attributes: {}\n      });\n    }\n    return HTMLResult.EMPTY;\n  }\n}\nclass Integer extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"integer\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    const number = parseInt(this[$content].trim(), 10);\n    this[$content] = isNaN(number) ? null : number;\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] !== null ? this[$content].toString() : \"\");\n  }\n}\nclass Issuers extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"issuers\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\nclass Items extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"items\", true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.ref = attributes.ref || \"\";\n    this.save = getInteger({\n      data: attributes.save,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n  [$toHTML]() {\n    const output = [];\n    for (const child of this[$getChildren]()) {\n      output.push(child[$text]());\n    }\n    return HTMLResult.success(output);\n  }\n}\nclass Keep extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keep\", true);\n    this.id = attributes.id || \"\";\n    const options = [\"none\", \"contentArea\", \"pageArea\"];\n    this.intact = getStringOption(attributes.intact, options);\n    this.next = getStringOption(attributes.next, options);\n    this.previous = getStringOption(attributes.previous, options);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\nclass KeyUsage extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keyUsage\");\n    const options = [\"\", \"yes\", \"no\"];\n    this.crlSign = getStringOption(attributes.crlSign, options);\n    this.dataEncipherment = getStringOption(attributes.dataEncipherment, options);\n    this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n    this.digitalSignature = getStringOption(attributes.digitalSignature, options);\n    this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n    this.id = attributes.id || \"\";\n    this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n    this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n    this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n    this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Line extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"line\", true);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n  }\n  [$toHTML]() {\n    const parent = this[$getParent]()[$getParent]();\n    const edge = this.edge || new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n    style.strokeWidth = measureToString(thickness);\n    style.stroke = edgeStyle.color;\n    let x1, y1, x2, y2;\n    let width = \"100%\";\n    let height = \"100%\";\n    if (parent.w <= thickness) {\n      [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n      width = style.strokeWidth;\n    } else if (parent.h <= thickness) {\n      [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n      height = style.strokeWidth;\n    } else if (this.slope === \"\\\\\") {\n      [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n    } else {\n      [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n    }\n    const line = {\n      name: \"line\",\n      attributes: {\n        xmlns: SVG_NS,\n        x1,\n        y1,\n        x2,\n        y2,\n        style\n      }\n    };\n    const svg = {\n      name: \"svg\",\n      children: [line],\n      attributes: {\n        xmlns: SVG_NS,\n        width,\n        height,\n        style: {\n          overflow: \"visible\"\n        }\n      }\n    };\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\"\n          }\n        },\n        children: [svg]\n      });\n    }\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\nclass Linear extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"linear\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"toRight\", \"toBottom\", \"toLeft\", \"toTop\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n  }\n}\nclass LockDocument extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"lockDocument\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n  }\n}\nclass Manifest extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"manifest\", true);\n    this.action = getStringOption(attributes.action, [\"include\", \"all\", \"exclude\"]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.ref = new XFAObjectArray();\n  }\n}\nclass Margin extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"margin\", true);\n    this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n    this.id = attributes.id || \"\";\n    this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n    this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n    this.topInset = getMeasurement(attributes.topInset, \"0\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n  [$toStyle]() {\n    return {\n      margin: measureToString(this.topInset) + \" \" + measureToString(this.rightInset) + \" \" + measureToString(this.bottomInset) + \" \" + measureToString(this.leftInset)\n    };\n  }\n}\nclass Mdp extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"mdp\");\n    this.id = attributes.id || \"\";\n    this.permissions = getInteger({\n      data: attributes.permissions,\n      defaultValue: 2,\n      validate: x => x === 1 || x === 3\n    });\n    this.signatureType = getStringOption(attributes.signatureType, [\"filler\", \"author\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Medium extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"medium\");\n    this.id = attributes.id || \"\";\n    this.imagingBBox = getBBox(attributes.imagingBBox);\n    this.long = getMeasurement(attributes.long);\n    this.orientation = getStringOption(attributes.orientation, [\"portrait\", \"landscape\"]);\n    this.short = getMeasurement(attributes.short);\n    this.stock = attributes.stock || \"\";\n    this.trayIn = getStringOption(attributes.trayIn, [\"auto\", \"delegate\", \"pageFront\"]);\n    this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Message extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"message\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.text = new XFAObjectArray();\n  }\n}\nclass NumericEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"numericEdit\", true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n  [$toHTML](availableSpace) {\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    const field = this[$getParent]()[$getParent]();\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[$uid],\n        dataId: field[$data]?.[$uid] || field[$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field),\n        \"aria-required\": false\n      }\n    };\n    if (isRequired(field)) {\n      html.attributes[\"aria-required\"] = true;\n      html.attributes.required = true;\n    }\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [html]\n    });\n  }\n}\nclass Occur extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"occur\", true);\n    this.id = attributes.id || \"\";\n    this.initial = attributes.initial !== \"\" ? getInteger({\n      data: attributes.initial,\n      defaultValue: \"\",\n      validate: x => true\n    }) : \"\";\n    this.max = attributes.max !== \"\" ? getInteger({\n      data: attributes.max,\n      defaultValue: 1,\n      validate: x => true\n    }) : \"\";\n    this.min = attributes.min !== \"\" ? getInteger({\n      data: attributes.min,\n      defaultValue: 1,\n      validate: x => true\n    }) : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n  [$clean]() {\n    const parent = this[$getParent]();\n    const originalMin = this.min;\n    if (this.min === \"\") {\n      this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n    }\n    if (this.max === \"\") {\n      if (originalMin === \"\") {\n        this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n      } else {\n        this.max = this.min;\n      }\n    }\n    if (this.max !== -1 && this.max < this.min) {\n      this.max = this.min;\n    }\n    if (this.initial === \"\") {\n      this.initial = parent instanceof Template ? 1 : this.min;\n    }\n  }\n}\nclass Oid extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oid\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Oids extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oids\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.oid = new XFAObjectArray();\n  }\n}\nclass Overflow extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"overflow\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.target = attributes.target || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$getExtra]() {\n    if (!this[$extra]) {\n      const parent = this[$getParent]();\n      const root = this[$getTemplateRoot]();\n      const target = root[$searchNode](this.target, parent);\n      const leader = root[$searchNode](this.leader, parent);\n      const trailer = root[$searchNode](this.trailer, parent);\n      this[$extra] = {\n        target: target?.[0] || null,\n        leader: leader?.[0] || null,\n        trailer: trailer?.[0] || null,\n        addLeader: false,\n        addTrailer: false\n      };\n    }\n    return this[$extra];\n  }\n}\nclass PageArea extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageArea\", true);\n    this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\"any\", \"blank\", \"notBlank\"]);\n    this.id = attributes.id || \"\";\n    this.initialNumber = getInteger({\n      data: attributes.initialNumber,\n      defaultValue: 1,\n      validate: x => true\n    });\n    this.name = attributes.name || \"\";\n    this.numbered = getInteger({\n      data: attributes.numbered,\n      defaultValue: 1,\n      validate: x => true\n    });\n    this.oddOrEven = getStringOption(attributes.oddOrEven, [\"any\", \"even\", \"odd\"]);\n    this.pagePosition = getStringOption(attributes.pagePosition, [\"any\", \"first\", \"last\", \"only\", \"rest\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.desc = null;\n    this.extras = null;\n    this.medium = null;\n    this.occur = null;\n    this.area = new XFAObjectArray();\n    this.contentArea = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n  }\n  [$isUsable]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 0\n      };\n      return true;\n    }\n    return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n  }\n  [$cleanPage]() {\n    delete this[$extra];\n  }\n  [$getNextPage]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 0\n      };\n    }\n    const parent = this[$getParent]();\n    if (parent.relation === \"orderedOccurrence\") {\n      if (this[$isUsable]()) {\n        this[$extra].numberOfUse += 1;\n        return this;\n      }\n    }\n    return parent[$getNextPage]();\n  }\n  [$getAvailableSpace]() {\n    return this[$extra].space || {\n      width: 0,\n      height: 0\n    };\n  }\n  [$toHTML]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 1\n      };\n    }\n    const children = [];\n    this[$extra].children = children;\n    const style = Object.create(null);\n    if (this.medium && this.medium.short && this.medium.long) {\n      style.width = measureToString(this.medium.short);\n      style.height = measureToString(this.medium.long);\n      this[$extra].space = {\n        width: this.medium.short,\n        height: this.medium.long\n      };\n      if (this.medium.orientation === \"landscape\") {\n        const x = style.width;\n        style.width = style.height;\n        style.height = x;\n        this[$extra].space = {\n          width: this.medium.long,\n          height: this.medium.short\n        };\n      }\n    } else {\n      warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n    }\n    this[$childrenToHTML]({\n      filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n      include: true\n    });\n    this[$childrenToHTML]({\n      filter: new Set([\"contentArea\"]),\n      include: true\n    });\n    return HTMLResult.success({\n      name: \"div\",\n      children,\n      attributes: {\n        class: [\"xfaPage\"],\n        id: this[$uid],\n        style,\n        xfaName: this.name\n      }\n    });\n  }\n}\nclass PageSet extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageSet\", true);\n    this.duplexImposition = getStringOption(attributes.duplexImposition, [\"longEdge\", \"shortEdge\"]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = getStringOption(attributes.relation, [\"orderedOccurrence\", \"duplexPaginated\", \"simplexPaginated\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.occur = null;\n    this.pageArea = new XFAObjectArray();\n    this.pageSet = new XFAObjectArray();\n  }\n  [$cleanPage]() {\n    for (const page of this.pageArea.children) {\n      page[$cleanPage]();\n    }\n    for (const page of this.pageSet.children) {\n      page[$cleanPage]();\n    }\n  }\n  [$isUsable]() {\n    return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse < this.occur.max;\n  }\n  [$getNextPage]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 1,\n        pageIndex: -1,\n        pageSetIndex: -1\n      };\n    }\n    if (this.relation === \"orderedOccurrence\") {\n      if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n        this[$extra].pageIndex += 1;\n        const pageArea = this.pageArea.children[this[$extra].pageIndex];\n        return pageArea[$getNextPage]();\n      }\n      if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n        this[$extra].pageSetIndex += 1;\n        return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n      }\n      if (this[$isUsable]()) {\n        this[$extra].numberOfUse += 1;\n        this[$extra].pageIndex = -1;\n        this[$extra].pageSetIndex = -1;\n        return this[$getNextPage]();\n      }\n      const parent = this[$getParent]();\n      if (parent instanceof PageSet) {\n        return parent[$getNextPage]();\n      }\n      this[$cleanPage]();\n      return this[$getNextPage]();\n    }\n    const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n    const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n    const position = pageNumber === 0 ? \"first\" : \"rest\";\n    let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position);\n    if (page) {\n      return page;\n    }\n    page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === position);\n    if (page) {\n      return page;\n    }\n    page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === \"any\");\n    if (page) {\n      return page;\n    }\n    return this.pageArea.children[0];\n  }\n}\nclass Para extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"para\", true);\n    this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.lineHeight = attributes.lineHeight ? getMeasurement(attributes.lineHeight, \"0pt\") : \"\";\n    this.marginLeft = attributes.marginLeft ? getMeasurement(attributes.marginLeft, \"0pt\") : \"\";\n    this.marginRight = attributes.marginRight ? getMeasurement(attributes.marginRight, \"0pt\") : \"\";\n    this.orphans = getInteger({\n      data: attributes.orphans,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.preserve = attributes.preserve || \"\";\n    this.radixOffset = attributes.radixOffset ? getMeasurement(attributes.radixOffset, \"0pt\") : \"\";\n    this.spaceAbove = attributes.spaceAbove ? getMeasurement(attributes.spaceAbove, \"0pt\") : \"\";\n    this.spaceBelow = attributes.spaceBelow ? getMeasurement(attributes.spaceBelow, \"0pt\") : \"\";\n    this.tabDefault = attributes.tabDefault ? getMeasurement(this.tabDefault) : \"\";\n    this.tabStops = (attributes.tabStops || \"\").trim().split(/\\s+/).map((x, i) => i % 2 === 1 ? getMeasurement(x) : x);\n    this.textIndent = attributes.textIndent ? getMeasurement(attributes.textIndent, \"0pt\") : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vAlign = getStringOption(attributes.vAlign, [\"top\", \"bottom\", \"middle\"]);\n    this.widows = getInteger({\n      data: attributes.widows,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.hyphenation = null;\n  }\n  [$toStyle]() {\n    const style = toStyle(this, \"hAlign\");\n    if (this.marginLeft !== \"\") {\n      style.paddingLeft = measureToString(this.marginLeft);\n    }\n    if (this.marginRight !== \"\") {\n      style.paddingRight = measureToString(this.marginRight);\n    }\n    if (this.spaceAbove !== \"\") {\n      style.paddingTop = measureToString(this.spaceAbove);\n    }\n    if (this.spaceBelow !== \"\") {\n      style.paddingBottom = measureToString(this.spaceBelow);\n    }\n    if (this.textIndent !== \"\") {\n      style.textIndent = measureToString(this.textIndent);\n      fixTextIndent(style);\n    }\n    if (this.lineHeight > 0) {\n      style.lineHeight = measureToString(this.lineHeight);\n    }\n    if (this.tabDefault !== \"\") {\n      style.tabSize = measureToString(this.tabDefault);\n    }\n    if (this.tabStops.length > 0) {}\n    if (this.hyphenatation) {\n      Object.assign(style, this.hyphenatation[$toStyle]());\n    }\n    return style;\n  }\n}\nclass PasswordEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"passwordEdit\", true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.passwordChar = attributes.passwordChar || \"*\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n}\nclass template_Pattern extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pattern\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"crossHatch\", \"crossDiagonal\", \"diagonalLeft\", \"diagonalRight\", \"horizontal\", \"vertical\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    const width = 5;\n    const cmd = \"repeating-linear-gradient\";\n    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`;\n    switch (this.type) {\n      case \"crossHatch\":\n        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n      case \"crossDiagonal\":\n        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n      case \"diagonalLeft\":\n        return `${cmd}(45deg,${colors})`;\n      case \"diagonalRight\":\n        return `${cmd}(-45deg,${colors})`;\n      case \"horizontal\":\n        return `${cmd}(to top,${colors})`;\n      case \"vertical\":\n        return `${cmd}(to right,${colors})`;\n    }\n    return \"\";\n  }\n}\nclass Picture extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"picture\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Proto extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"proto\", true);\n    this.appearanceFilter = new XFAObjectArray();\n    this.arc = new XFAObjectArray();\n    this.area = new XFAObjectArray();\n    this.assist = new XFAObjectArray();\n    this.barcode = new XFAObjectArray();\n    this.bindItems = new XFAObjectArray();\n    this.bookend = new XFAObjectArray();\n    this.boolean = new XFAObjectArray();\n    this.border = new XFAObjectArray();\n    this.break = new XFAObjectArray();\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.button = new XFAObjectArray();\n    this.calculate = new XFAObjectArray();\n    this.caption = new XFAObjectArray();\n    this.certificate = new XFAObjectArray();\n    this.certificates = new XFAObjectArray();\n    this.checkButton = new XFAObjectArray();\n    this.choiceList = new XFAObjectArray();\n    this.color = new XFAObjectArray();\n    this.comb = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.contentArea = new XFAObjectArray();\n    this.corner = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.dateTimeEdit = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.defaultUi = new XFAObjectArray();\n    this.desc = new XFAObjectArray();\n    this.digestMethod = new XFAObjectArray();\n    this.digestMethods = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.edge = new XFAObjectArray();\n    this.encoding = new XFAObjectArray();\n    this.encodings = new XFAObjectArray();\n    this.encrypt = new XFAObjectArray();\n    this.encryptData = new XFAObjectArray();\n    this.encryption = new XFAObjectArray();\n    this.encryptionMethod = new XFAObjectArray();\n    this.encryptionMethods = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.execute = new XFAObjectArray();\n    this.extras = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.fill = new XFAObjectArray();\n    this.filter = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.font = new XFAObjectArray();\n    this.format = new XFAObjectArray();\n    this.handler = new XFAObjectArray();\n    this.hyphenation = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.imageEdit = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.issuers = new XFAObjectArray();\n    this.items = new XFAObjectArray();\n    this.keep = new XFAObjectArray();\n    this.keyUsage = new XFAObjectArray();\n    this.line = new XFAObjectArray();\n    this.linear = new XFAObjectArray();\n    this.lockDocument = new XFAObjectArray();\n    this.manifest = new XFAObjectArray();\n    this.margin = new XFAObjectArray();\n    this.mdp = new XFAObjectArray();\n    this.medium = new XFAObjectArray();\n    this.message = new XFAObjectArray();\n    this.numericEdit = new XFAObjectArray();\n    this.occur = new XFAObjectArray();\n    this.oid = new XFAObjectArray();\n    this.oids = new XFAObjectArray();\n    this.overflow = new XFAObjectArray();\n    this.pageArea = new XFAObjectArray();\n    this.pageSet = new XFAObjectArray();\n    this.para = new XFAObjectArray();\n    this.passwordEdit = new XFAObjectArray();\n    this.pattern = new XFAObjectArray();\n    this.picture = new XFAObjectArray();\n    this.radial = new XFAObjectArray();\n    this.reason = new XFAObjectArray();\n    this.reasons = new XFAObjectArray();\n    this.rectangle = new XFAObjectArray();\n    this.ref = new XFAObjectArray();\n    this.script = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n    this.signData = new XFAObjectArray();\n    this.signature = new XFAObjectArray();\n    this.signing = new XFAObjectArray();\n    this.solid = new XFAObjectArray();\n    this.speak = new XFAObjectArray();\n    this.stipple = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n    this.subjectDN = new XFAObjectArray();\n    this.subjectDNs = new XFAObjectArray();\n    this.submit = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.textEdit = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n    this.timeStamp = new XFAObjectArray();\n    this.toolTip = new XFAObjectArray();\n    this.traversal = new XFAObjectArray();\n    this.traverse = new XFAObjectArray();\n    this.ui = new XFAObjectArray();\n    this.validate = new XFAObjectArray();\n    this.value = new XFAObjectArray();\n    this.variables = new XFAObjectArray();\n  }\n}\nclass Radial extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"radial\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    const colors = this.type === \"toEdge\" ? `${startColor},${endColor}` : `${endColor},${startColor}`;\n    return `radial-gradient(circle at center, ${colors})`;\n  }\n}\nclass Reason extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reason\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Reasons extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reasons\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.reason = new XFAObjectArray();\n  }\n}\nclass Rectangle extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"rectangle\", true);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new XFAObjectArray(4);\n    this.edge = new XFAObjectArray(4);\n    this.fill = null;\n  }\n  [$toHTML]() {\n    const edge = this.edge.children.length ? this.edge.children[0] : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    if (this.fill?.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n    style.strokeWidth = measureToString(edge.presence === \"visible\" ? edge.thickness : 0);\n    style.stroke = edgeStyle.color;\n    const corner = this.corner.children.length ? this.corner.children[0] : new Corner({});\n    const cornerStyle = corner[$toStyle]();\n    const rect = {\n      name: \"rect\",\n      attributes: {\n        xmlns: SVG_NS,\n        width: \"100%\",\n        height: \"100%\",\n        x: 0,\n        y: 0,\n        rx: cornerStyle.radius,\n        ry: cornerStyle.radius,\n        style\n      }\n    };\n    const svg = {\n      name: \"svg\",\n      children: [rect],\n      attributes: {\n        xmlns: SVG_NS,\n        style: {\n          overflow: \"visible\"\n        },\n        width: \"100%\",\n        height: \"100%\"\n      }\n    };\n    const parent = this[$getParent]()[$getParent]();\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\"\n          }\n        },\n        children: [svg]\n      });\n    }\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\nclass RefElement extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ref\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Script extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"script\");\n    this.binding = attributes.binding || \"\";\n    this.contentType = attributes.contentType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.runAt = getStringOption(attributes.runAt, [\"client\", \"both\", \"server\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass SetProperty extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"setProperty\");\n    this.connection = attributes.connection || \"\";\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n  }\n}\nclass SignData extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signData\", true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\"sign\", \"clear\", \"verify\"]);\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n}\nclass Signature extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signature\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.filter = null;\n    this.manifest = null;\n    this.margin = null;\n  }\n}\nclass Signing extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signing\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\nclass Solid extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"solid\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n  [$toStyle](startColor) {\n    return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n  }\n}\nclass Speak extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"speak\");\n    this.disable = getInteger({\n      data: attributes.disable,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.id = attributes.id || \"\";\n    this.priority = getStringOption(attributes.priority, [\"custom\", \"caption\", \"name\", \"toolTip\"]);\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Stipple extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"stipple\", true);\n    this.id = attributes.id || \"\";\n    this.rate = getInteger({\n      data: attributes.rate,\n      defaultValue: 50,\n      validate: x => x >= 0 && x <= 100\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n  [$toStyle](bgColor) {\n    const alpha = this.rate / 100;\n    return Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha));\n  }\n}\nclass Subform extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subform\", true);\n    this.access = getStringOption(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n    this.allowMacro = getInteger({\n      data: attributes.allowMacro,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.anchorType = getStringOption(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.columnWidths = (attributes.columnWidths || \"\").trim().split(/\\s+/).map(x => x === \"-1\" ? -1 : getMeasurement(x));\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.layout = getStringOption(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.mergeMode = getStringOption(attributes.mergeMode, [\"consumeData\", \"matchTemplate\"]);\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.restoreState = getStringOption(attributes.restoreState, [\"manual\", \"auto\"]);\n    this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.bookend = null;\n    this.border = null;\n    this.break = null;\n    this.calculate = null;\n    this.desc = null;\n    this.extras = null;\n    this.keep = null;\n    this.margin = null;\n    this.occur = null;\n    this.overflow = null;\n    this.pageSet = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.variables = null;\n    this.area = new XFAObjectArray();\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.proto = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n  [$getSubformParent]() {\n    const parent = this[$getParent]();\n    if (parent instanceof SubformSet) {\n      return parent[$getSubformParent]();\n    }\n    return parent;\n  }\n  [$isBindable]() {\n    return true;\n  }\n  [$isThereMoreWidth]() {\n    return this.layout.endsWith(\"-tb\") && this[$extra].attempt === 0 && this[$extra].numberInLine > 0 || this[$getParent]()[$isThereMoreWidth]();\n  }\n  *[$getContainedChildren]() {\n    yield* getContainedChildren(this);\n  }\n  [$flushHTML]() {\n    return flushHTML(this);\n  }\n  [$addHTML](html, bbox) {\n    addHTML(this, html, bbox);\n  }\n  [$getAvailableSpace]() {\n    return getAvailableSpace(this);\n  }\n  [$isSplittable]() {\n    const parent = this[$getSubformParent]();\n    if (!parent[$isSplittable]()) {\n      return false;\n    }\n    if (this[$extra]._isSplittable !== undefined) {\n      return this[$extra]._isSplittable;\n    }\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n    if (this.keep && this.keep.intact !== \"none\") {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n    if (parent.layout?.endsWith(\"-tb\") && parent[$extra].numberInLine !== 0) {\n      return false;\n    }\n    this[$extra]._isSplittable = true;\n    return true;\n  }\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n    if (this.break) {\n      if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n        const node = new BreakAfter({\n          targetType: this.break.after,\n          target: this.break.afterTarget,\n          startNew: this.break.startNew.toString()\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.breakAfter.push(node);\n      }\n      if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n        const node = new BreakBefore({\n          targetType: this.break.before,\n          target: this.break.beforeTarget,\n          startNew: this.break.startNew.toString()\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.breakBefore.push(node);\n      }\n      if (this.break.overflowTarget !== \"\") {\n        const node = new Overflow({\n          target: this.break.overflowTarget,\n          leader: this.break.overflowLeader,\n          trailer: this.break.overflowTrailer\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.overflow.push(node);\n      }\n      this[$removeChild](this.break);\n      this.break = null;\n    }\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return HTMLResult.EMPTY;\n    }\n    if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) {\n      warn(\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\");\n    }\n    if (this.breakBefore.children.length >= 1) {\n      const breakBefore = this.breakBefore.children[0];\n      if (handleBreak(breakBefore)) {\n        return HTMLResult.breakNode(breakBefore);\n      }\n    }\n    if (this[$extra]?.afterBreakAfter) {\n      return HTMLResult.EMPTY;\n    }\n    fixDimensions(this);\n    const children = [];\n    const attributes = {\n      id: this[$uid],\n      class: []\n    };\n    setAccess(this, attributes.class);\n    if (!this[$extra]) {\n      this[$extra] = Object.create(null);\n    }\n    Object.assign(this[$extra], {\n      children,\n      line: null,\n      attributes,\n      attempt: 0,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height)\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0\n    });\n    const root = this[$getTemplateRoot]();\n    const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n    const isSplittable = this[$isSplittable]();\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n    if (!checkDimensions(this, availableSpace)) {\n      return HTMLResult.FAILURE;\n    }\n    const filter = new Set([\"area\", \"draw\", \"exclGroup\", \"field\", \"subform\", \"subformSet\"]);\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[$getSubformParent]().columnWidths;\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[$extra].columnWidths = columnWidths;\n        this[$extra].currentColumn = 0;\n      }\n    }\n    const style = toStyle(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n    const classNames = [\"xfaSubform\"];\n    const cl = layoutClass(this);\n    if (cl) {\n      classNames.push(cl);\n    }\n    attributes.style = style;\n    attributes.class = classNames;\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n    if (this.overflow) {\n      const overflowExtra = this.overflow[$getExtra]();\n      if (overflowExtra.addLeader) {\n        overflowExtra.addLeader = false;\n        handleOverflow(this, overflowExtra.leader, availableSpace);\n      }\n    }\n    this[$pushPara]();\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n    for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        this[$extra].numberInLine = 0;\n      }\n      const result = this[$childrenToHTML]({\n        filter,\n        include: true\n      });\n      if (result.success) {\n        break;\n      }\n      if (result.isBreak()) {\n        this[$popPara]();\n        return result;\n      }\n      if (isLrTb && this[$extra].attempt === 0 && this[$extra].numberInLine === 0 && !root[$extra].noLayoutFailure) {\n        this[$extra].attempt = maxRun;\n        break;\n      }\n    }\n    this[$popPara]();\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n    root[$extra].noLayoutFailure = savedNoLayoutFailure;\n    if (this[$extra].attempt === maxRun) {\n      if (this.overflow) {\n        this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n      }\n      if (!isSplittable) {\n        delete this[$extra];\n      }\n      return HTMLResult.FAILURE;\n    }\n    if (this.overflow) {\n      const overflowExtra = this.overflow[$getExtra]();\n      if (overflowExtra.addTrailer) {\n        overflowExtra.addTrailer = false;\n        handleOverflow(this, overflowExtra.trailer, availableSpace);\n      }\n    }\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n    if (this.w === \"\") {\n      style.width = measureToString(width);\n    }\n    if (this.h === \"\") {\n      style.height = measureToString(height);\n    }\n    if ((style.width === \"0px\" || style.height === \"0px\") && children.length === 0) {\n      return HTMLResult.EMPTY;\n    }\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    applyAssist(this, attributes);\n    const result = HTMLResult.success(createWrapper(this, html), bbox);\n    if (this.breakAfter.children.length >= 1) {\n      const breakAfter = this.breakAfter.children[0];\n      if (handleBreak(breakAfter)) {\n        this[$extra].afterBreakAfter = result;\n        return HTMLResult.breakNode(breakAfter);\n      }\n    }\n    delete this[$extra];\n    return result;\n  }\n}\nclass SubformSet extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subformSet\", true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = getStringOption(attributes.relation, [\"ordered\", \"choice\", \"unordered\"]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.bookend = null;\n    this.break = null;\n    this.desc = null;\n    this.extras = null;\n    this.occur = null;\n    this.overflow = null;\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n  *[$getContainedChildren]() {\n    yield* getContainedChildren(this);\n  }\n  [$getSubformParent]() {\n    let parent = this[$getParent]();\n    while (!(parent instanceof Subform)) {\n      parent = parent[$getParent]();\n    }\n    return parent;\n  }\n  [$isBindable]() {\n    return true;\n  }\n}\nclass SubjectDN extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDN\");\n    this.delimiter = attributes.delimiter || \",\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    this[$content] = new Map(this[$content].split(this.delimiter).map(kv => {\n      kv = kv.split(\"=\", 2);\n      kv[0] = kv[0].trim();\n      return kv;\n    }));\n  }\n}\nclass SubjectDNs extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDNs\", true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.subjectDN = new XFAObjectArray();\n  }\n}\nclass Submit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"submit\", true);\n    this.embedPDF = getInteger({\n      data: attributes.embedPDF,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.format = getStringOption(attributes.format, [\"xdp\", \"formdata\", \"pdf\", \"urlencoded\", \"xfd\", \"xml\"]);\n    this.id = attributes.id || \"\";\n    this.target = attributes.target || \"\";\n    this.textEncoding = getKeyword({\n      data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : \"\",\n      defaultValue: \"\",\n      validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.xdpContent = attributes.xdpContent || \"\";\n    this.encrypt = null;\n    this.encryptData = new XFAObjectArray();\n    this.signData = new XFAObjectArray();\n  }\n}\nclass Template extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"template\", true);\n    this.baseProfile = getStringOption(attributes.baseProfile, [\"full\", \"interactiveForms\"]);\n    this.extras = null;\n    this.subform = new XFAObjectArray();\n  }\n  [$finalize]() {\n    if (this.subform.children.length === 0) {\n      warn(\"XFA - No subforms in template node.\");\n    }\n    if (this.subform.children.length >= 2) {\n      warn(\"XFA - Several subforms in template node: please file a bug.\");\n    }\n    this[$tabIndex] = DEFAULT_TAB_INDEX;\n  }\n  [$isSplittable]() {\n    return true;\n  }\n  [$searchNode](expr, container) {\n    if (expr.startsWith(\"#\")) {\n      return [this[$ids].get(expr.slice(1))];\n    }\n    return searchNode(this, container, expr, true, true);\n  }\n  *[$toPages]() {\n    if (!this.subform.children.length) {\n      return HTMLResult.success({\n        name: \"div\",\n        children: []\n      });\n    }\n    this[$extra] = {\n      overflowNode: null,\n      firstUnsplittable: null,\n      currentContentArea: null,\n      currentPageArea: null,\n      noLayoutFailure: false,\n      pageNumber: 1,\n      pagePosition: \"first\",\n      oddOrEven: \"odd\",\n      blankOrNotBlank: \"nonBlank\",\n      paraStack: []\n    };\n    const root = this.subform.children[0];\n    root.pageSet[$cleanPage]();\n    const pageAreas = root.pageSet.pageArea.children;\n    const mainHtml = {\n      name: \"div\",\n      children: []\n    };\n    let pageArea = null;\n    let breakBefore = null;\n    let breakBeforeTarget = null;\n    if (root.breakBefore.children.length >= 1) {\n      breakBefore = root.breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) {\n      breakBefore = root.subform.children[0].breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (root.break?.beforeTarget) {\n      breakBefore = root.break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    } else if (root.subform.children.length >= 1 && root.subform.children[0].break?.beforeTarget) {\n      breakBefore = root.subform.children[0].break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    }\n    if (breakBefore) {\n      const target = this[$searchNode](breakBeforeTarget, breakBefore[$getParent]());\n      if (target instanceof PageArea) {\n        pageArea = target;\n        breakBefore[$extra] = {};\n      }\n    }\n    if (!pageArea) {\n      pageArea = pageAreas[0];\n    }\n    pageArea[$extra] = {\n      numberOfUse: 1\n    };\n    const pageAreaParent = pageArea[$getParent]();\n    pageAreaParent[$extra] = {\n      numberOfUse: 1,\n      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n      pageSetIndex: 0\n    };\n    let targetPageArea;\n    let leader = null;\n    let trailer = null;\n    let hasSomething = true;\n    let hasSomethingCounter = 0;\n    let startIndex = 0;\n    while (true) {\n      if (!hasSomething) {\n        mainHtml.children.pop();\n        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n          warn(\"XFA - Something goes wrong: please file a bug.\");\n          return mainHtml;\n        }\n      } else {\n        hasSomethingCounter = 0;\n      }\n      targetPageArea = null;\n      this[$extra].currentPageArea = pageArea;\n      const page = pageArea[$toHTML]().html;\n      mainHtml.children.push(page);\n      if (leader) {\n        this[$extra].noLayoutFailure = true;\n        page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n        leader = null;\n      }\n      if (trailer) {\n        this[$extra].noLayoutFailure = true;\n        page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n        trailer = null;\n      }\n      const contentAreas = pageArea.contentArea.children;\n      const htmlContentAreas = page.children.filter(node => node.attributes.class.includes(\"xfaContentarea\"));\n      hasSomething = false;\n      this[$extra].firstUnsplittable = null;\n      this[$extra].noLayoutFailure = false;\n      const flush = index => {\n        const html = root[$flushHTML]();\n        if (html) {\n          hasSomething ||= html.children?.length > 0;\n          htmlContentAreas[index].children.push(html);\n        }\n      };\n      for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n        const contentArea = this[$extra].currentContentArea = contentAreas[i];\n        const space = {\n          width: contentArea.w,\n          height: contentArea.h\n        };\n        startIndex = 0;\n        if (leader) {\n          htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n          leader = null;\n        }\n        if (trailer) {\n          htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n          trailer = null;\n        }\n        const html = root[$toHTML](space);\n        if (html.success) {\n          if (html.html) {\n            hasSomething ||= html.html.children?.length > 0;\n            htmlContentAreas[i].children.push(html.html);\n          } else if (!hasSomething && mainHtml.children.length > 1) {\n            mainHtml.children.pop();\n          }\n          return mainHtml;\n        }\n        if (html.isBreak()) {\n          const node = html.breakNode;\n          flush(i);\n          if (node.targetType === \"auto\") {\n            continue;\n          }\n          if (node.leader) {\n            leader = this[$searchNode](node.leader, node[$getParent]());\n            leader = leader ? leader[0] : null;\n          }\n          if (node.trailer) {\n            trailer = this[$searchNode](node.trailer, node[$getParent]());\n            trailer = trailer ? trailer[0] : null;\n          }\n          if (node.targetType === \"pageArea\") {\n            targetPageArea = node[$extra].target;\n            i = Infinity;\n          } else if (!node[$extra].target) {\n            i = node[$extra].index;\n          } else {\n            targetPageArea = node[$extra].target;\n            startIndex = node[$extra].index + 1;\n            i = Infinity;\n          }\n          continue;\n        }\n        if (this[$extra].overflowNode) {\n          const node = this[$extra].overflowNode;\n          this[$extra].overflowNode = null;\n          const overflowExtra = node[$getExtra]();\n          const target = overflowExtra.target;\n          overflowExtra.addLeader = overflowExtra.leader !== null;\n          overflowExtra.addTrailer = overflowExtra.trailer !== null;\n          flush(i);\n          const currentIndex = i;\n          i = Infinity;\n          if (target instanceof PageArea) {\n            targetPageArea = target;\n          } else if (target instanceof ContentArea) {\n            const index = contentAreas.indexOf(target);\n            if (index !== -1) {\n              if (index > currentIndex) {\n                i = index - 1;\n              } else {\n                startIndex = index;\n              }\n            } else {\n              targetPageArea = target[$getParent]();\n              startIndex = targetPageArea.contentArea.children.indexOf(target);\n            }\n          }\n          continue;\n        }\n        flush(i);\n      }\n      this[$extra].pageNumber += 1;\n      if (targetPageArea) {\n        if (targetPageArea[$isUsable]()) {\n          targetPageArea[$extra].numberOfUse += 1;\n        } else {\n          targetPageArea = null;\n        }\n      }\n      pageArea = targetPageArea || pageArea[$getNextPage]();\n      yield null;\n    }\n  }\n}\nclass Text extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"text\");\n    this.id = attributes.id || \"\";\n    this.maxChars = getInteger({\n      data: attributes.maxChars,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$acceptWhitespace]() {\n    return true;\n  }\n  [$onChild](child) {\n    if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n      this[$content] = child;\n      return true;\n    }\n    warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n    return false;\n  }\n  [$onText](str) {\n    if (this[$content] instanceof XFAObject) {\n      return;\n    }\n    super[$onText](str);\n  }\n  [$finalize]() {\n    if (typeof this[$content] === \"string\") {\n      this[$content] = this[$content].replaceAll(\"\\r\\n\", \"\\n\");\n    }\n  }\n  [$getExtra]() {\n    if (typeof this[$content] === \"string\") {\n      return this[$content].split(/[\\u2029\\u2028\\n]/).reduce((acc, line) => {\n        if (line) {\n          acc.push(line);\n        }\n        return acc;\n      }, []).join(\"\\n\");\n    }\n    return this[$content][$text]();\n  }\n  [$toHTML](availableSpace) {\n    if (typeof this[$content] === \"string\") {\n      const html = valueToHtml(this[$content]).html;\n      if (this[$content].includes(\"\\u2029\")) {\n        html.name = \"div\";\n        html.children = [];\n        this[$content].split(\"\\u2029\").map(para => para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n          acc.push({\n            name: \"span\",\n            value: line\n          }, {\n            name: \"br\"\n          });\n          return acc;\n        }, [])).forEach(lines => {\n          html.children.push({\n            name: \"p\",\n            children: lines\n          });\n        });\n      } else if (/[\\u2028\\n]/.test(this[$content])) {\n        html.name = \"div\";\n        html.children = [];\n        this[$content].split(/[\\u2028\\n]/).forEach(line => {\n          html.children.push({\n            name: \"span\",\n            value: line\n          }, {\n            name: \"br\"\n          });\n        });\n      }\n      return HTMLResult.success(html);\n    }\n    return this[$content][$toHTML](availableSpace);\n  }\n}\nclass TextEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"textEdit\", true);\n    this.allowRichText = getInteger({\n      data: attributes.allowRichText,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.multiLine = getInteger({\n      data: attributes.multiLine,\n      defaultValue: \"\",\n      validate: x => x === 0 || x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n  [$toHTML](availableSpace) {\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    let html;\n    const field = this[$getParent]()[$getParent]();\n    if (this.multiLine === \"\") {\n      this.multiLine = field instanceof Draw ? 1 : 0;\n    }\n    if (this.multiLine === 1) {\n      html = {\n        name: \"textarea\",\n        attributes: {\n          dataId: field[$data]?.[$uid] || field[$uid],\n          fieldId: field[$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field),\n          \"aria-required\": false\n        }\n      };\n    } else {\n      html = {\n        name: \"input\",\n        attributes: {\n          type: \"text\",\n          dataId: field[$data]?.[$uid] || field[$uid],\n          fieldId: field[$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field),\n          \"aria-required\": false\n        }\n      };\n    }\n    if (isRequired(field)) {\n      html.attributes[\"aria-required\"] = true;\n      html.attributes.required = true;\n    }\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [html]\n    });\n  }\n}\nclass Time extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"time\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\nclass TimeStamp extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"timeStamp\");\n    this.id = attributes.id || \"\";\n    this.server = attributes.server || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass ToolTip extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"toolTip\");\n    this.id = attributes.id || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Traversal extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traversal\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.traverse = new XFAObjectArray();\n  }\n}\nclass Traverse extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traverse\", true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\"next\", \"back\", \"down\", \"first\", \"left\", \"right\", \"up\"]);\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.script = null;\n  }\n  get name() {\n    return this.operation;\n  }\n  [$isTransparent]() {\n    return false;\n  }\n}\nclass Ui extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ui\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n    this.barcode = null;\n    this.button = null;\n    this.checkButton = null;\n    this.choiceList = null;\n    this.dateTimeEdit = null;\n    this.defaultUi = null;\n    this.imageEdit = null;\n    this.numericEdit = null;\n    this.passwordEdit = null;\n    this.signature = null;\n    this.textEdit = null;\n  }\n  [$getExtra]() {\n    if (this[$extra] === undefined) {\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (name === \"extras\" || name === \"picture\") {\n          continue;\n        }\n        const obj = this[name];\n        if (!(obj instanceof XFAObject)) {\n          continue;\n        }\n        this[$extra] = obj;\n        return obj;\n      }\n      this[$extra] = null;\n    }\n    return this[$extra];\n  }\n  [$toHTML](availableSpace) {\n    const obj = this[$getExtra]();\n    if (obj) {\n      return obj[$toHTML](availableSpace);\n    }\n    return HTMLResult.EMPTY;\n  }\n}\nclass Validate extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"validate\", true);\n    this.formatTest = getStringOption(attributes.formatTest, [\"warning\", \"disabled\", \"error\"]);\n    this.id = attributes.id || \"\";\n    this.nullTest = getStringOption(attributes.nullTest, [\"disabled\", \"error\", \"warning\"]);\n    this.scriptTest = getStringOption(attributes.scriptTest, [\"error\", \"disabled\", \"warning\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.picture = null;\n    this.script = null;\n  }\n}\nclass Value extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"value\", true);\n    this.id = attributes.id || \"\";\n    this.override = getInteger({\n      data: attributes.override,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.arc = null;\n    this.boolean = null;\n    this.date = null;\n    this.dateTime = null;\n    this.decimal = null;\n    this.exData = null;\n    this.float = null;\n    this.image = null;\n    this.integer = null;\n    this.line = null;\n    this.rectangle = null;\n    this.text = null;\n    this.time = null;\n  }\n  [$setValue](value) {\n    const parent = this[$getParent]();\n    if (parent instanceof Field) {\n      if (parent.ui?.imageEdit) {\n        if (!this.image) {\n          this.image = new Image({});\n          this[$appendChild](this.image);\n        }\n        this.image[$content] = value[$content];\n        return;\n      }\n    }\n    const valueName = value[$nodeName];\n    if (this[valueName] !== null) {\n      this[valueName][$content] = value[$content];\n      return;\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n      if (obj instanceof XFAObject) {\n        this[name] = null;\n        this[$removeChild](obj);\n      }\n    }\n    this[value[$nodeName]] = value;\n    this[$appendChild](value);\n  }\n  [$text]() {\n    if (this.exData) {\n      if (typeof this.exData[$content] === \"string\") {\n        return this.exData[$content].trim();\n      }\n      return this.exData[$content][$text]().trim();\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"image\") {\n        continue;\n      }\n      const obj = this[name];\n      if (obj instanceof XFAObject) {\n        return (obj[$content] || \"\").toString().trim();\n      }\n    }\n    return null;\n  }\n  [$toHTML](availableSpace) {\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n      if (!(obj instanceof XFAObject)) {\n        continue;\n      }\n      return obj[$toHTML](availableSpace);\n    }\n    return HTMLResult.EMPTY;\n  }\n}\nclass Variables extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"variables\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.manifest = new XFAObjectArray();\n    this.script = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n  [$isTransparent]() {\n    return true;\n  }\n}\nclass TemplateNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (TemplateNamespace.hasOwnProperty(name)) {\n      const node = TemplateNamespace[name](attributes);\n      node[$setSetAttributes](attributes);\n      return node;\n    }\n    return undefined;\n  }\n  static appearanceFilter(attrs) {\n    return new AppearanceFilter(attrs);\n  }\n  static arc(attrs) {\n    return new Arc(attrs);\n  }\n  static area(attrs) {\n    return new Area(attrs);\n  }\n  static assist(attrs) {\n    return new Assist(attrs);\n  }\n  static barcode(attrs) {\n    return new Barcode(attrs);\n  }\n  static bind(attrs) {\n    return new Bind(attrs);\n  }\n  static bindItems(attrs) {\n    return new BindItems(attrs);\n  }\n  static bookend(attrs) {\n    return new Bookend(attrs);\n  }\n  static boolean(attrs) {\n    return new BooleanElement(attrs);\n  }\n  static border(attrs) {\n    return new Border(attrs);\n  }\n  static break(attrs) {\n    return new Break(attrs);\n  }\n  static breakAfter(attrs) {\n    return new BreakAfter(attrs);\n  }\n  static breakBefore(attrs) {\n    return new BreakBefore(attrs);\n  }\n  static button(attrs) {\n    return new Button(attrs);\n  }\n  static calculate(attrs) {\n    return new Calculate(attrs);\n  }\n  static caption(attrs) {\n    return new Caption(attrs);\n  }\n  static certificate(attrs) {\n    return new Certificate(attrs);\n  }\n  static certificates(attrs) {\n    return new Certificates(attrs);\n  }\n  static checkButton(attrs) {\n    return new CheckButton(attrs);\n  }\n  static choiceList(attrs) {\n    return new ChoiceList(attrs);\n  }\n  static color(attrs) {\n    return new Color(attrs);\n  }\n  static comb(attrs) {\n    return new Comb(attrs);\n  }\n  static connect(attrs) {\n    return new Connect(attrs);\n  }\n  static contentArea(attrs) {\n    return new ContentArea(attrs);\n  }\n  static corner(attrs) {\n    return new Corner(attrs);\n  }\n  static date(attrs) {\n    return new DateElement(attrs);\n  }\n  static dateTime(attrs) {\n    return new DateTime(attrs);\n  }\n  static dateTimeEdit(attrs) {\n    return new DateTimeEdit(attrs);\n  }\n  static decimal(attrs) {\n    return new Decimal(attrs);\n  }\n  static defaultUi(attrs) {\n    return new DefaultUi(attrs);\n  }\n  static desc(attrs) {\n    return new Desc(attrs);\n  }\n  static digestMethod(attrs) {\n    return new DigestMethod(attrs);\n  }\n  static digestMethods(attrs) {\n    return new DigestMethods(attrs);\n  }\n  static draw(attrs) {\n    return new Draw(attrs);\n  }\n  static edge(attrs) {\n    return new Edge(attrs);\n  }\n  static encoding(attrs) {\n    return new Encoding(attrs);\n  }\n  static encodings(attrs) {\n    return new Encodings(attrs);\n  }\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n  static encryptData(attrs) {\n    return new EncryptData(attrs);\n  }\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n  static encryptionMethod(attrs) {\n    return new EncryptionMethod(attrs);\n  }\n  static encryptionMethods(attrs) {\n    return new EncryptionMethods(attrs);\n  }\n  static event(attrs) {\n    return new Event(attrs);\n  }\n  static exData(attrs) {\n    return new ExData(attrs);\n  }\n  static exObject(attrs) {\n    return new ExObject(attrs);\n  }\n  static exclGroup(attrs) {\n    return new ExclGroup(attrs);\n  }\n  static execute(attrs) {\n    return new Execute(attrs);\n  }\n  static extras(attrs) {\n    return new Extras(attrs);\n  }\n  static field(attrs) {\n    return new Field(attrs);\n  }\n  static fill(attrs) {\n    return new Fill(attrs);\n  }\n  static filter(attrs) {\n    return new Filter(attrs);\n  }\n  static float(attrs) {\n    return new Float(attrs);\n  }\n  static font(attrs) {\n    return new template_Font(attrs);\n  }\n  static format(attrs) {\n    return new Format(attrs);\n  }\n  static handler(attrs) {\n    return new Handler(attrs);\n  }\n  static hyphenation(attrs) {\n    return new Hyphenation(attrs);\n  }\n  static image(attrs) {\n    return new Image(attrs);\n  }\n  static imageEdit(attrs) {\n    return new ImageEdit(attrs);\n  }\n  static integer(attrs) {\n    return new Integer(attrs);\n  }\n  static issuers(attrs) {\n    return new Issuers(attrs);\n  }\n  static items(attrs) {\n    return new Items(attrs);\n  }\n  static keep(attrs) {\n    return new Keep(attrs);\n  }\n  static keyUsage(attrs) {\n    return new KeyUsage(attrs);\n  }\n  static line(attrs) {\n    return new Line(attrs);\n  }\n  static linear(attrs) {\n    return new Linear(attrs);\n  }\n  static lockDocument(attrs) {\n    return new LockDocument(attrs);\n  }\n  static manifest(attrs) {\n    return new Manifest(attrs);\n  }\n  static margin(attrs) {\n    return new Margin(attrs);\n  }\n  static mdp(attrs) {\n    return new Mdp(attrs);\n  }\n  static medium(attrs) {\n    return new Medium(attrs);\n  }\n  static message(attrs) {\n    return new Message(attrs);\n  }\n  static numericEdit(attrs) {\n    return new NumericEdit(attrs);\n  }\n  static occur(attrs) {\n    return new Occur(attrs);\n  }\n  static oid(attrs) {\n    return new Oid(attrs);\n  }\n  static oids(attrs) {\n    return new Oids(attrs);\n  }\n  static overflow(attrs) {\n    return new Overflow(attrs);\n  }\n  static pageArea(attrs) {\n    return new PageArea(attrs);\n  }\n  static pageSet(attrs) {\n    return new PageSet(attrs);\n  }\n  static para(attrs) {\n    return new Para(attrs);\n  }\n  static passwordEdit(attrs) {\n    return new PasswordEdit(attrs);\n  }\n  static pattern(attrs) {\n    return new template_Pattern(attrs);\n  }\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n  static proto(attrs) {\n    return new Proto(attrs);\n  }\n  static radial(attrs) {\n    return new Radial(attrs);\n  }\n  static reason(attrs) {\n    return new Reason(attrs);\n  }\n  static reasons(attrs) {\n    return new Reasons(attrs);\n  }\n  static rectangle(attrs) {\n    return new Rectangle(attrs);\n  }\n  static ref(attrs) {\n    return new RefElement(attrs);\n  }\n  static script(attrs) {\n    return new Script(attrs);\n  }\n  static setProperty(attrs) {\n    return new SetProperty(attrs);\n  }\n  static signData(attrs) {\n    return new SignData(attrs);\n  }\n  static signature(attrs) {\n    return new Signature(attrs);\n  }\n  static signing(attrs) {\n    return new Signing(attrs);\n  }\n  static solid(attrs) {\n    return new Solid(attrs);\n  }\n  static speak(attrs) {\n    return new Speak(attrs);\n  }\n  static stipple(attrs) {\n    return new Stipple(attrs);\n  }\n  static subform(attrs) {\n    return new Subform(attrs);\n  }\n  static subformSet(attrs) {\n    return new SubformSet(attrs);\n  }\n  static subjectDN(attrs) {\n    return new SubjectDN(attrs);\n  }\n  static subjectDNs(attrs) {\n    return new SubjectDNs(attrs);\n  }\n  static submit(attrs) {\n    return new Submit(attrs);\n  }\n  static template(attrs) {\n    return new Template(attrs);\n  }\n  static text(attrs) {\n    return new Text(attrs);\n  }\n  static textEdit(attrs) {\n    return new TextEdit(attrs);\n  }\n  static time(attrs) {\n    return new Time(attrs);\n  }\n  static timeStamp(attrs) {\n    return new TimeStamp(attrs);\n  }\n  static toolTip(attrs) {\n    return new ToolTip(attrs);\n  }\n  static traversal(attrs) {\n    return new Traversal(attrs);\n  }\n  static traverse(attrs) {\n    return new Traverse(attrs);\n  }\n  static ui(attrs) {\n    return new Ui(attrs);\n  }\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n  static value(attrs) {\n    return new Value(attrs);\n  }\n  static variables(attrs) {\n    return new Variables(attrs);\n  }\n}\n\n;// ./src/core/xfa/bind.js\n\n\n\n\n\n\nconst bind_NS_DATASETS = NamespaceIds.datasets.id;\nfunction createText(content) {\n  const node = new Text({});\n  node[$content] = content;\n  return node;\n}\nclass Binder {\n  constructor(root) {\n    this.root = root;\n    this.datasets = root.datasets;\n    this.data = root.datasets?.data || new XmlObject(NamespaceIds.datasets.id, \"data\");\n    this.emptyMerge = this.data[$getChildren]().length === 0;\n    this.root.form = this.form = root.template[$clone]();\n  }\n  _isConsumeData() {\n    return !this.emptyMerge && this._mergeMode;\n  }\n  _isMatchTemplate() {\n    return !this._isConsumeData();\n  }\n  bind() {\n    this._bindElement(this.form, this.data);\n    return this.form;\n  }\n  getData() {\n    return this.data;\n  }\n  _bindValue(formNode, data, picture) {\n    formNode[$data] = data;\n    if (formNode[$hasSettableValue]()) {\n      if (data[$isDataValue]()) {\n        const value = data[$getDataValue]();\n        formNode[$setValue](createText(value));\n      } else if (formNode instanceof Field && formNode.ui?.choiceList?.open === \"multiSelect\") {\n        const value = data[$getChildren]().map(child => child[$content].trim()).join(\"\\n\");\n        formNode[$setValue](createText(value));\n      } else if (this._isConsumeData()) {\n        warn(`XFA - Nodes haven't the same type.`);\n      }\n    } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n      this._bindElement(formNode, data);\n    } else {\n      warn(`XFA - Nodes haven't the same type.`);\n    }\n  }\n  _findDataByNameToConsume(name, isValue, dataNode, global) {\n    if (!name) {\n      return null;\n    }\n    let generator, match;\n    for (let i = 0; i < 3; i++) {\n      generator = dataNode[$getRealChildrenByNameIt](name, false, true);\n      while (true) {\n        match = generator.next().value;\n        if (!match) {\n          break;\n        }\n        if (isValue === match[$isDataValue]()) {\n          return match;\n        }\n      }\n      if (dataNode[$namespaceId] === NamespaceIds.datasets.id && dataNode[$nodeName] === \"data\") {\n        break;\n      }\n      dataNode = dataNode[$getParent]();\n    }\n    if (!global) {\n      return null;\n    }\n    generator = this.data[$getRealChildrenByNameIt](name, true, false);\n    match = generator.next().value;\n    if (match) {\n      return match;\n    }\n    generator = this.data[$getAttributeIt](name, true);\n    match = generator.next().value;\n    if (match?.[$isDataValue]()) {\n      return match;\n    }\n    return null;\n  }\n  _setProperties(formNode, dataNode) {\n    if (!formNode.hasOwnProperty(\"setProperty\")) {\n      return;\n    }\n    for (const {\n      ref,\n      target,\n      connection\n    } of formNode.setProperty.children) {\n      if (connection) {\n        continue;\n      }\n      if (!ref) {\n        continue;\n      }\n      const nodes = searchNode(this.root, dataNode, ref, false, false);\n      if (!nodes) {\n        warn(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n      const [node] = nodes;\n      if (!node[$isDescendent](this.data)) {\n        warn(`XFA - Invalid node: must be a data node.`);\n        continue;\n      }\n      const targetNodes = searchNode(this.root, formNode, target, false, false);\n      if (!targetNodes) {\n        warn(`XFA - Invalid target: ${target}.`);\n        continue;\n      }\n      const [targetNode] = targetNodes;\n      if (!targetNode[$isDescendent](formNode)) {\n        warn(`XFA - Invalid target: must be a property or subproperty.`);\n        continue;\n      }\n      const targetParent = targetNode[$getParent]();\n      if (targetNode instanceof SetProperty || targetParent instanceof SetProperty) {\n        warn(`XFA - Invalid target: cannot be a setProperty or one of its properties.`);\n        continue;\n      }\n      if (targetNode instanceof BindItems || targetParent instanceof BindItems) {\n        warn(`XFA - Invalid target: cannot be a bindItems or one of its properties.`);\n        continue;\n      }\n      const content = node[$text]();\n      const name = targetNode[$nodeName];\n      if (targetNode instanceof XFAAttribute) {\n        const attrs = Object.create(null);\n        attrs[name] = content;\n        const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]);\n        targetParent[name] = obj[name];\n        continue;\n      }\n      if (!targetNode.hasOwnProperty($content)) {\n        warn(`XFA - Invalid node to use in setProperty`);\n        continue;\n      }\n      targetNode[$data] = node;\n      targetNode[$content] = content;\n      targetNode[$finalize]();\n    }\n  }\n  _bindItems(formNode, dataNode) {\n    if (!formNode.hasOwnProperty(\"items\") || !formNode.hasOwnProperty(\"bindItems\") || formNode.bindItems.isEmpty()) {\n      return;\n    }\n    for (const item of formNode.items.children) {\n      formNode[$removeChild](item);\n    }\n    formNode.items.clear();\n    const labels = new Items({});\n    const values = new Items({});\n    formNode[$appendChild](labels);\n    formNode.items.push(labels);\n    formNode[$appendChild](values);\n    formNode.items.push(values);\n    for (const {\n      ref,\n      labelRef,\n      valueRef,\n      connection\n    } of formNode.bindItems.children) {\n      if (connection) {\n        continue;\n      }\n      if (!ref) {\n        continue;\n      }\n      const nodes = searchNode(this.root, dataNode, ref, false, false);\n      if (!nodes) {\n        warn(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n      for (const node of nodes) {\n        if (!node[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n          continue;\n        }\n        const labelNodes = searchNode(this.root, node, labelRef, true, false);\n        if (!labelNodes) {\n          warn(`XFA - Invalid label: ${labelRef}.`);\n          continue;\n        }\n        const [labelNode] = labelNodes;\n        if (!labelNode[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid label: must be a datasets child.`);\n          continue;\n        }\n        const valueNodes = searchNode(this.root, node, valueRef, true, false);\n        if (!valueNodes) {\n          warn(`XFA - Invalid value: ${valueRef}.`);\n          continue;\n        }\n        const [valueNode] = valueNodes;\n        if (!valueNode[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid value: must be a datasets child.`);\n          continue;\n        }\n        const label = createText(labelNode[$text]());\n        const value = createText(valueNode[$text]());\n        labels[$appendChild](label);\n        labels.text.push(label);\n        values[$appendChild](value);\n        values.text.push(value);\n      }\n    }\n  }\n  _bindOccurrences(formNode, matches, picture) {\n    let baseClone;\n    if (matches.length > 1) {\n      baseClone = formNode[$clone]();\n      baseClone[$removeChild](baseClone.occur);\n      baseClone.occur = null;\n    }\n    this._bindValue(formNode, matches[0], picture);\n    this._setProperties(formNode, matches[0]);\n    this._bindItems(formNode, matches[0]);\n    if (matches.length === 1) {\n      return;\n    }\n    const parent = formNode[$getParent]();\n    const name = formNode[$nodeName];\n    const pos = parent[$indexOf](formNode);\n    for (let i = 1, ii = matches.length; i < ii; i++) {\n      const match = matches[i];\n      const clone = baseClone[$clone]();\n      parent[name].push(clone);\n      parent[$insertAt](pos + i, clone);\n      this._bindValue(clone, match, picture);\n      this._setProperties(clone, match);\n      this._bindItems(clone, match);\n    }\n  }\n  _createOccurrences(formNode) {\n    if (!this.emptyMerge) {\n      return;\n    }\n    const {\n      occur\n    } = formNode;\n    if (!occur || occur.initial <= 1) {\n      return;\n    }\n    const parent = formNode[$getParent]();\n    const name = formNode[$nodeName];\n    if (!(parent[name] instanceof XFAObjectArray)) {\n      return;\n    }\n    let currentNumber;\n    if (formNode.name) {\n      currentNumber = parent[name].children.filter(e => e.name === formNode.name).length;\n    } else {\n      currentNumber = parent[name].children.length;\n    }\n    const pos = parent[$indexOf](formNode) + 1;\n    const ii = occur.initial - currentNumber;\n    if (ii) {\n      const nodeClone = formNode[$clone]();\n      nodeClone[$removeChild](nodeClone.occur);\n      nodeClone.occur = null;\n      parent[name].push(nodeClone);\n      parent[$insertAt](pos, nodeClone);\n      for (let i = 1; i < ii; i++) {\n        const clone = nodeClone[$clone]();\n        parent[name].push(clone);\n        parent[$insertAt](pos + i, clone);\n      }\n    }\n  }\n  _getOccurInfo(formNode) {\n    const {\n      name,\n      occur\n    } = formNode;\n    if (!occur || !name) {\n      return [1, 1];\n    }\n    const max = occur.max === -1 ? Infinity : occur.max;\n    return [occur.min, max];\n  }\n  _setAndBind(formNode, dataNode) {\n    this._setProperties(formNode, dataNode);\n    this._bindItems(formNode, dataNode);\n    this._bindElement(formNode, dataNode);\n  }\n  _bindElement(formNode, dataNode) {\n    const uselessNodes = [];\n    this._createOccurrences(formNode);\n    for (const child of formNode[$getChildren]()) {\n      if (child[$data]) {\n        continue;\n      }\n      if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n        this._mergeMode = child.mergeMode === \"consumeData\";\n        const dataChildren = dataNode[$getChildren]();\n        if (dataChildren.length > 0) {\n          this._bindOccurrences(child, [dataChildren[0]], null);\n        } else if (this.emptyMerge) {\n          const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n          const dataChild = child[$data] = new XmlObject(nsId, child.name || \"root\");\n          dataNode[$appendChild](dataChild);\n          this._bindElement(child, dataChild);\n        }\n        continue;\n      }\n      if (!child[$isBindable]()) {\n        continue;\n      }\n      let global = false;\n      let picture = null;\n      let ref = null;\n      let match = null;\n      if (child.bind) {\n        switch (child.bind.match) {\n          case \"none\":\n            this._setAndBind(child, dataNode);\n            continue;\n          case \"global\":\n            global = true;\n            break;\n          case \"dataRef\":\n            if (!child.bind.ref) {\n              warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n              this._setAndBind(child, dataNode);\n              continue;\n            }\n            ref = child.bind.ref;\n            break;\n          default:\n            break;\n        }\n        if (child.bind.picture) {\n          picture = child.bind.picture[$content];\n        }\n      }\n      const [min, max] = this._getOccurInfo(child);\n      if (ref) {\n        match = searchNode(this.root, dataNode, ref, true, false);\n        if (match === null) {\n          match = createDataNode(this.data, dataNode, ref);\n          if (!match) {\n            continue;\n          }\n          if (this._isConsumeData()) {\n            match[$consumed] = true;\n          }\n          this._setAndBind(child, match);\n          continue;\n        } else {\n          if (this._isConsumeData()) {\n            match = match.filter(node => !node[$consumed]);\n          }\n          if (match.length > max) {\n            match = match.slice(0, max);\n          } else if (match.length === 0) {\n            match = null;\n          }\n          if (match && this._isConsumeData()) {\n            match.forEach(node => {\n              node[$consumed] = true;\n            });\n          }\n        }\n      } else {\n        if (!child.name) {\n          this._setAndBind(child, dataNode);\n          continue;\n        }\n        if (this._isConsumeData()) {\n          const matches = [];\n          while (matches.length < max) {\n            const found = this._findDataByNameToConsume(child.name, child[$hasSettableValue](), dataNode, global);\n            if (!found) {\n              break;\n            }\n            found[$consumed] = true;\n            matches.push(found);\n          }\n          match = matches.length > 0 ? matches : null;\n        } else {\n          match = dataNode[$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value;\n          if (!match) {\n            if (min === 0) {\n              uselessNodes.push(child);\n              continue;\n            }\n            const nsId = dataNode[$namespaceId] === bind_NS_DATASETS ? -1 : dataNode[$namespaceId];\n            match = child[$data] = new XmlObject(nsId, child.name);\n            if (this.emptyMerge) {\n              match[$consumed] = true;\n            }\n            dataNode[$appendChild](match);\n            this._setAndBind(child, match);\n            continue;\n          }\n          if (this.emptyMerge) {\n            match[$consumed] = true;\n          }\n          match = [match];\n        }\n      }\n      if (match) {\n        this._bindOccurrences(child, match, picture);\n      } else if (min > 0) {\n        this._setAndBind(child, dataNode);\n      } else {\n        uselessNodes.push(child);\n      }\n    }\n    uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n  }\n}\n\n;// ./src/core/xfa/data.js\n\nclass DataHandler {\n  constructor(root, data) {\n    this.data = data;\n    this.dataset = root.datasets || null;\n  }\n  serialize(storage) {\n    const stack = [[-1, this.data[$getChildren]()]];\n    while (stack.length > 0) {\n      const last = stack.at(-1);\n      const [i, children] = last;\n      if (i + 1 === children.length) {\n        stack.pop();\n        continue;\n      }\n      const child = children[++last[0]];\n      const storageEntry = storage.get(child[$uid]);\n      if (storageEntry) {\n        child[$setValue](storageEntry);\n      } else {\n        const attributes = child[$getAttributes]();\n        for (const value of attributes.values()) {\n          const entry = storage.get(value[$uid]);\n          if (entry) {\n            value[$setValue](entry);\n            break;\n          }\n        }\n      }\n      const nodes = child[$getChildren]();\n      if (nodes.length > 0) {\n        stack.push([-1, nodes]);\n      }\n    }\n    const buf = [`<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`];\n    if (this.dataset) {\n      for (const child of this.dataset[$getChildren]()) {\n        if (child[$nodeName] !== \"data\") {\n          child[$toString](buf);\n        }\n      }\n    }\n    this.data[$toString](buf);\n    buf.push(\"</xfa:datasets>\");\n    return buf.join(\"\");\n  }\n}\n\n;// ./src/core/xfa/config.js\n\n\n\n\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\nclass Acrobat extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat\", true);\n    this.acrobat7 = null;\n    this.autoSave = null;\n    this.common = null;\n    this.validate = null;\n    this.validateApprovalSignatures = null;\n    this.submitUrl = new XFAObjectArray();\n  }\n}\nclass Acrobat7 extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat7\", true);\n    this.dynamicRender = null;\n  }\n}\nclass ADBE_JSConsole extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n}\nclass ADBE_JSDebugger extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n}\nclass AddSilentPrint extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addSilentPrint\");\n  }\n}\nclass AddViewerPreferences extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addViewerPreferences\");\n  }\n}\nclass AdjustData extends Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adjustData\");\n  }\n}\nclass AdobeExtensionLevel extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n  }\n}\nclass Agent extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"agent\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.common = new XFAObjectArray();\n  }\n}\nclass AlwaysEmbed extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"alwaysEmbed\");\n  }\n}\nclass Amd extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"amd\");\n  }\n}\nclass config_Area extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"area\");\n    this.level = getInteger({\n      data: attributes.level,\n      defaultValue: 0,\n      validate: n => n >= 1 && n <= 3\n    });\n    this.name = getStringOption(attributes.name, [\"\", \"barcode\", \"coreinit\", \"deviceDriver\", \"font\", \"general\", \"layout\", \"merge\", \"script\", \"signature\", \"sourceSet\", \"templateCache\"]);\n  }\n}\nclass Attributes extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n  }\n}\nclass AutoSave extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n  }\n}\nclass Base extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"base\");\n  }\n}\nclass BatchOutput extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"batchOutput\");\n    this.format = getStringOption(attributes.format, [\"none\", \"concat\", \"zip\", \"zipCompress\"]);\n  }\n}\nclass BehaviorOverride extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"behaviorOverride\");\n  }\n  [$finalize]() {\n    this[$content] = new Map(this[$content].trim().split(/\\s+/).filter(x => x.includes(\":\")).map(x => x.split(\":\", 2)));\n  }\n}\nclass Cache extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"cache\", true);\n    this.templateCache = null;\n  }\n}\nclass Change extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"change\");\n  }\n}\nclass Common extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"common\", true);\n    this.data = null;\n    this.locale = null;\n    this.localeSet = null;\n    this.messaging = null;\n    this.suppressBanner = null;\n    this.template = null;\n    this.validationMessaging = null;\n    this.versionControl = null;\n    this.log = new XFAObjectArray();\n  }\n}\nclass Compress extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compress\");\n    this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n  }\n}\nclass CompressLogicalStructure extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressLogicalStructure\");\n  }\n}\nclass CompressObjectStream extends Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressObjectStream\");\n  }\n}\nclass Compression extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compression\", true);\n    this.compressLogicalStructure = null;\n    this.compressObjectStream = null;\n    this.level = null;\n    this.type = null;\n  }\n}\nclass Config extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"config\", true);\n    this.acrobat = null;\n    this.present = null;\n    this.trace = null;\n    this.agent = new XFAObjectArray();\n  }\n}\nclass Conformance extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n  }\n}\nclass ContentCopy extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"contentCopy\");\n  }\n}\nclass Copies extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n  }\n}\nclass Creator extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"creator\");\n  }\n}\nclass CurrentPage extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n  }\n}\nclass Data extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"data\", true);\n    this.adjustData = null;\n    this.attributes = null;\n    this.incrementalLoad = null;\n    this.outputXSL = null;\n    this.range = null;\n    this.record = null;\n    this.startNode = null;\n    this.uri = null;\n    this.window = null;\n    this.xsl = null;\n    this.excludeNS = new XFAObjectArray();\n    this.transform = new XFAObjectArray();\n  }\n}\nclass Debug extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"debug\", true);\n    this.uri = null;\n  }\n}\nclass DefaultTypeface extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"defaultTypeface\");\n    this.writingScript = getStringOption(attributes.writingScript, [\"*\", \"Arabic\", \"Cyrillic\", \"EastEuropeanRoman\", \"Greek\", \"Hebrew\", \"Japanese\", \"Korean\", \"Roman\", \"SimplifiedChinese\", \"Thai\", \"TraditionalChinese\", \"Vietnamese\"]);\n  }\n}\nclass Destination extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"destination\", [\"pdf\", \"pcl\", \"ps\", \"webClient\", \"zpl\"]);\n  }\n}\nclass DocumentAssembly extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"documentAssembly\");\n  }\n}\nclass Driver extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"driver\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\nclass DuplexOption extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"duplexOption\", [\"simplex\", \"duplexFlipLongEdge\", \"duplexFlipShortEdge\"]);\n  }\n}\nclass DynamicRender extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n  }\n}\nclass Embed extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"embed\");\n  }\n}\nclass config_Encrypt extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encrypt\");\n  }\n}\nclass config_Encryption extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryption\", true);\n    this.encrypt = null;\n    this.encryptionLevel = null;\n    this.permissions = null;\n  }\n}\nclass EncryptionLevel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n  }\n}\nclass Enforce extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"enforce\");\n  }\n}\nclass Equate extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equate\");\n    this.force = getInteger({\n      data: attributes.force,\n      defaultValue: 1,\n      validate: n => n === 0\n    });\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n  }\n}\nclass EquateRange extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equateRange\");\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n    this._unicodeRange = attributes.unicodeRange || \"\";\n  }\n  get unicodeRange() {\n    const ranges = [];\n    const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n    const unicodeRange = this._unicodeRange;\n    for (let range of unicodeRange.split(\",\").map(x => x.trim()).filter(x => !!x)) {\n      range = range.split(\"-\", 2).map(x => {\n        const found = x.match(unicodeRegex);\n        if (!found) {\n          return 0;\n        }\n        return parseInt(found[1], 16);\n      });\n      if (range.length === 1) {\n        range.push(range[0]);\n      }\n      ranges.push(range);\n    }\n    return shadow(this, \"unicodeRange\", ranges);\n  }\n}\nclass Exclude extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"exclude\");\n  }\n  [$finalize]() {\n    this[$content] = this[$content].trim().split(/\\s+/).filter(x => x && [\"calculate\", \"close\", \"enter\", \"exit\", \"initialize\", \"ready\", \"validate\"].includes(x));\n  }\n}\nclass ExcludeNS extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"excludeNS\");\n  }\n}\nclass FlipLabel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n  }\n}\nclass config_FontInfo extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"fontInfo\", true);\n    this.embed = null;\n    this.map = null;\n    this.subsetBelow = null;\n    this.alwaysEmbed = new XFAObjectArray();\n    this.defaultTypeface = new XFAObjectArray();\n    this.neverEmbed = new XFAObjectArray();\n  }\n}\nclass FormFieldFilling extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"formFieldFilling\");\n  }\n}\nclass GroupParent extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"groupParent\");\n  }\n}\nclass IfEmpty extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ifEmpty\", [\"dataValue\", \"dataGroup\", \"ignore\", \"remove\"]);\n  }\n}\nclass IncludeXDPContent extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"includeXDPContent\");\n  }\n}\nclass IncrementalLoad extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n  }\n}\nclass IncrementalMerge extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalMerge\");\n  }\n}\nclass Interactive extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"interactive\");\n  }\n}\nclass Jog extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n  }\n}\nclass LabelPrinter extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"labelPrinter\", true);\n    this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\nclass Layout extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n  }\n}\nclass Level extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n  }\n}\nclass Linearized extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"linearized\");\n  }\n}\nclass Locale extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"locale\");\n  }\n}\nclass LocaleSet extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"localeSet\");\n  }\n}\nclass Log extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"log\", true);\n    this.mode = null;\n    this.threshold = null;\n    this.to = null;\n    this.uri = null;\n  }\n}\nclass MapElement extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"map\", true);\n    this.equate = new XFAObjectArray();\n    this.equateRange = new XFAObjectArray();\n  }\n}\nclass MediumInfo extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mediumInfo\", true);\n    this.map = null;\n  }\n}\nclass config_Message extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"message\", true);\n    this.msgId = null;\n    this.severity = null;\n  }\n}\nclass Messaging extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"messaging\", true);\n    this.message = new XFAObjectArray();\n  }\n}\nclass Mode extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n  }\n}\nclass ModifyAnnots extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"modifyAnnots\");\n  }\n}\nclass MsgId extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n  }\n}\nclass NameAttr extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"nameAttr\");\n  }\n}\nclass NeverEmbed extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"neverEmbed\");\n  }\n}\nclass NumberOfCopies extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n  }\n}\nclass OpenAction extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"openAction\", true);\n    this.destination = null;\n  }\n}\nclass Output extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"output\", true);\n    this.to = null;\n    this.type = null;\n    this.uri = null;\n  }\n}\nclass OutputBin extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputBin\");\n  }\n}\nclass OutputXSL extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputXSL\", true);\n    this.uri = null;\n  }\n}\nclass Overprint extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n  }\n}\nclass Packets extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"packets\");\n  }\n  [$finalize]() {\n    if (this[$content] === \"*\") {\n      return;\n    }\n    this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x));\n  }\n}\nclass PageOffset extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageOffset\");\n    this.x = getInteger({\n      data: attributes.x,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true\n    });\n    this.y = getInteger({\n      data: attributes.y,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true\n    });\n  }\n}\nclass PageRange extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageRange\");\n  }\n  [$finalize]() {\n    const numbers = this[$content].trim().split(/\\s+/).map(x => parseInt(x, 10));\n    const ranges = [];\n    for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n      ranges.push(numbers.slice(i, i + 2));\n    }\n    this[$content] = ranges;\n  }\n}\nclass Pagination extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pagination\", [\"simplex\", \"duplexShortEdge\", \"duplexLongEdge\"]);\n  }\n}\nclass PaginationOverride extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"paginationOverride\", [\"none\", \"forceDuplex\", \"forceDuplexLongEdge\", \"forceDuplexShortEdge\", \"forceSimplex\"]);\n  }\n}\nclass Part extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"part\", 1, n => false);\n  }\n}\nclass Pcl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pcl\", true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.pageOffset = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n}\nclass Pdf extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdf\", true);\n    this.name = attributes.name || \"\";\n    this.adobeExtensionLevel = null;\n    this.batchOutput = null;\n    this.compression = null;\n    this.creator = null;\n    this.encryption = null;\n    this.fontInfo = null;\n    this.interactive = null;\n    this.linearized = null;\n    this.openAction = null;\n    this.pdfa = null;\n    this.producer = null;\n    this.renderPolicy = null;\n    this.scriptModel = null;\n    this.silentPrint = null;\n    this.submitFormat = null;\n    this.tagged = null;\n    this.version = null;\n    this.viewerPreferences = null;\n    this.xdc = null;\n  }\n}\nclass Pdfa extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdfa\", true);\n    this.amd = null;\n    this.conformance = null;\n    this.includeXDPContent = null;\n    this.part = null;\n  }\n}\nclass Permissions extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"permissions\", true);\n    this.accessibleContent = null;\n    this.change = null;\n    this.contentCopy = null;\n    this.documentAssembly = null;\n    this.formFieldFilling = null;\n    this.modifyAnnots = null;\n    this.plaintextMetadata = null;\n    this.print = null;\n    this.printHighQuality = null;\n  }\n}\nclass PickTrayByPDFSize extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n  }\n}\nclass config_Picture extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"picture\");\n  }\n}\nclass PlaintextMetadata extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"plaintextMetadata\");\n  }\n}\nclass Presence extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"presence\", [\"preserve\", \"dissolve\", \"dissolveStructure\", \"ignore\", \"remove\"]);\n  }\n}\nclass Present extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"present\", true);\n    this.behaviorOverride = null;\n    this.cache = null;\n    this.common = null;\n    this.copies = null;\n    this.destination = null;\n    this.incrementalMerge = null;\n    this.layout = null;\n    this.output = null;\n    this.overprint = null;\n    this.pagination = null;\n    this.paginationOverride = null;\n    this.script = null;\n    this.validate = null;\n    this.xdp = null;\n    this.driver = new XFAObjectArray();\n    this.labelPrinter = new XFAObjectArray();\n    this.pcl = new XFAObjectArray();\n    this.pdf = new XFAObjectArray();\n    this.ps = new XFAObjectArray();\n    this.submitUrl = new XFAObjectArray();\n    this.webClient = new XFAObjectArray();\n    this.zpl = new XFAObjectArray();\n  }\n}\nclass Print extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"print\");\n  }\n}\nclass PrintHighQuality extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printHighQuality\");\n  }\n}\nclass PrintScaling extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n  }\n}\nclass PrinterName extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printerName\");\n  }\n}\nclass Producer extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"producer\");\n  }\n}\nclass Ps extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ps\", true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n}\nclass Range extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"range\");\n  }\n  [$finalize]() {\n    this[$content] = this[$content].trim().split(/\\s*,\\s*/, 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n      if (range.length === 1) {\n        range.push(range[0]);\n      }\n      return range;\n    });\n  }\n}\nclass Record extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"record\");\n  }\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n    const n = parseInt(this[$content], 10);\n    if (!isNaN(n) && n >= 0) {\n      this[$content] = n;\n    }\n  }\n}\nclass Relevant extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"relevant\");\n  }\n  [$finalize]() {\n    this[$content] = this[$content].trim().split(/\\s+/);\n  }\n}\nclass Rename extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"rename\");\n  }\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n    if (this[$content].toLowerCase().startsWith(\"xml\") || new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\").test(this[$content])) {\n      warn(\"XFA - Rename: invalid XFA name\");\n    }\n  }\n}\nclass RenderPolicy extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n  }\n}\nclass RunScripts extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n  }\n}\nclass config_Script extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"script\", true);\n    this.currentPage = null;\n    this.exclude = null;\n    this.runScripts = null;\n  }\n}\nclass ScriptModel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n  }\n}\nclass Severity extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"severity\", [\"ignore\", \"error\", \"information\", \"trace\", \"warning\"]);\n  }\n}\nclass SilentPrint extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"silentPrint\", true);\n    this.addSilentPrint = null;\n    this.printerName = null;\n  }\n}\nclass Staple extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"staple\");\n    this.mode = getStringOption(attributes.mode, [\"usePrinterSetting\", \"on\", \"off\"]);\n  }\n}\nclass StartNode extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startNode\");\n  }\n}\nclass StartPage extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n  }\n}\nclass SubmitFormat extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitFormat\", [\"html\", \"delegate\", \"fdf\", \"xml\", \"pdf\"]);\n  }\n}\nclass SubmitUrl extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitUrl\");\n  }\n}\nclass SubsetBelow extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n  }\n}\nclass SuppressBanner extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"suppressBanner\");\n  }\n}\nclass Tagged extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"tagged\");\n  }\n}\nclass config_Template extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"template\", true);\n    this.base = null;\n    this.relevant = null;\n    this.startPage = null;\n    this.uri = null;\n    this.xsl = null;\n  }\n}\nclass Threshold extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"threshold\", [\"trace\", \"error\", \"information\", \"warning\"]);\n  }\n}\nclass To extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"to\", [\"null\", \"memory\", \"stderr\", \"stdout\", \"system\", \"uri\"]);\n  }\n}\nclass TemplateCache extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"templateCache\");\n    this.maxEntries = getInteger({\n      data: attributes.maxEntries,\n      defaultValue: 5,\n      validate: n => n >= 0\n    });\n  }\n}\nclass Trace extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"trace\", true);\n    this.area = new XFAObjectArray();\n  }\n}\nclass Transform extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"transform\", true);\n    this.groupParent = null;\n    this.ifEmpty = null;\n    this.nameAttr = null;\n    this.picture = null;\n    this.presence = null;\n    this.rename = null;\n    this.whitespace = null;\n  }\n}\nclass Type extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"type\", [\"none\", \"ascii85\", \"asciiHex\", \"ccittfax\", \"flate\", \"lzw\", \"runLength\", \"native\", \"xdp\", \"mergedXDP\"]);\n  }\n}\nclass Uri extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"uri\");\n  }\n}\nclass config_Validate extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validate\", [\"preSubmit\", \"prePrint\", \"preExecute\", \"preSave\"]);\n  }\n}\nclass ValidateApprovalSignatures extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n  }\n  [$finalize]() {\n    this[$content] = this[$content].trim().split(/\\s+/).filter(x => [\"docReady\", \"postSign\"].includes(x));\n  }\n}\nclass ValidationMessaging extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validationMessaging\", [\"allMessagesIndividually\", \"allMessagesTogether\", \"firstMessageOnly\", \"noMessages\"]);\n  }\n}\nclass Version extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n  }\n}\nclass VersionControl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"VersionControl\");\n    this.outputBelow = getStringOption(attributes.outputBelow, [\"warn\", \"error\", \"update\"]);\n    this.sourceAbove = getStringOption(attributes.sourceAbove, [\"warn\", \"error\"]);\n    this.sourceBelow = getStringOption(attributes.sourceBelow, [\"update\", \"maintain\"]);\n  }\n}\nclass ViewerPreferences extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"viewerPreferences\", true);\n    this.ADBE_JSConsole = null;\n    this.ADBE_JSDebugger = null;\n    this.addViewerPreferences = null;\n    this.duplexOption = null;\n    this.enforce = null;\n    this.numberOfCopies = null;\n    this.pageRange = null;\n    this.pickTrayByPDFSize = null;\n    this.printScaling = null;\n  }\n}\nclass WebClient extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"webClient\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\nclass Whitespace extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"whitespace\", [\"preserve\", \"ltrim\", \"normalize\", \"rtrim\", \"trim\"]);\n  }\n}\nclass Window extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"window\");\n  }\n  [$finalize]() {\n    const pair = this[$content].trim().split(/\\s*,\\s*/, 2).map(x => parseInt(x, 10));\n    if (pair.some(x => isNaN(x))) {\n      this[$content] = [0, 0];\n      return;\n    }\n    if (pair.length === 1) {\n      pair.push(pair[0]);\n    }\n    this[$content] = pair;\n  }\n}\nclass Xdc extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdc\", true);\n    this.uri = new XFAObjectArray();\n    this.xsl = new XFAObjectArray();\n  }\n}\nclass Xdp extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdp\", true);\n    this.packets = null;\n  }\n}\nclass Xsl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xsl\", true);\n    this.debug = null;\n    this.uri = null;\n  }\n}\nclass Zpl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"zpl\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\nclass ConfigNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (ConfigNamespace.hasOwnProperty(name)) {\n      return ConfigNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static acrobat(attrs) {\n    return new Acrobat(attrs);\n  }\n  static acrobat7(attrs) {\n    return new Acrobat7(attrs);\n  }\n  static ADBE_JSConsole(attrs) {\n    return new ADBE_JSConsole(attrs);\n  }\n  static ADBE_JSDebugger(attrs) {\n    return new ADBE_JSDebugger(attrs);\n  }\n  static addSilentPrint(attrs) {\n    return new AddSilentPrint(attrs);\n  }\n  static addViewerPreferences(attrs) {\n    return new AddViewerPreferences(attrs);\n  }\n  static adjustData(attrs) {\n    return new AdjustData(attrs);\n  }\n  static adobeExtensionLevel(attrs) {\n    return new AdobeExtensionLevel(attrs);\n  }\n  static agent(attrs) {\n    return new Agent(attrs);\n  }\n  static alwaysEmbed(attrs) {\n    return new AlwaysEmbed(attrs);\n  }\n  static amd(attrs) {\n    return new Amd(attrs);\n  }\n  static area(attrs) {\n    return new config_Area(attrs);\n  }\n  static attributes(attrs) {\n    return new Attributes(attrs);\n  }\n  static autoSave(attrs) {\n    return new AutoSave(attrs);\n  }\n  static base(attrs) {\n    return new Base(attrs);\n  }\n  static batchOutput(attrs) {\n    return new BatchOutput(attrs);\n  }\n  static behaviorOverride(attrs) {\n    return new BehaviorOverride(attrs);\n  }\n  static cache(attrs) {\n    return new Cache(attrs);\n  }\n  static change(attrs) {\n    return new Change(attrs);\n  }\n  static common(attrs) {\n    return new Common(attrs);\n  }\n  static compress(attrs) {\n    return new Compress(attrs);\n  }\n  static compressLogicalStructure(attrs) {\n    return new CompressLogicalStructure(attrs);\n  }\n  static compressObjectStream(attrs) {\n    return new CompressObjectStream(attrs);\n  }\n  static compression(attrs) {\n    return new Compression(attrs);\n  }\n  static config(attrs) {\n    return new Config(attrs);\n  }\n  static conformance(attrs) {\n    return new Conformance(attrs);\n  }\n  static contentCopy(attrs) {\n    return new ContentCopy(attrs);\n  }\n  static copies(attrs) {\n    return new Copies(attrs);\n  }\n  static creator(attrs) {\n    return new Creator(attrs);\n  }\n  static currentPage(attrs) {\n    return new CurrentPage(attrs);\n  }\n  static data(attrs) {\n    return new Data(attrs);\n  }\n  static debug(attrs) {\n    return new Debug(attrs);\n  }\n  static defaultTypeface(attrs) {\n    return new DefaultTypeface(attrs);\n  }\n  static destination(attrs) {\n    return new Destination(attrs);\n  }\n  static documentAssembly(attrs) {\n    return new DocumentAssembly(attrs);\n  }\n  static driver(attrs) {\n    return new Driver(attrs);\n  }\n  static duplexOption(attrs) {\n    return new DuplexOption(attrs);\n  }\n  static dynamicRender(attrs) {\n    return new DynamicRender(attrs);\n  }\n  static embed(attrs) {\n    return new Embed(attrs);\n  }\n  static encrypt(attrs) {\n    return new config_Encrypt(attrs);\n  }\n  static encryption(attrs) {\n    return new config_Encryption(attrs);\n  }\n  static encryptionLevel(attrs) {\n    return new EncryptionLevel(attrs);\n  }\n  static enforce(attrs) {\n    return new Enforce(attrs);\n  }\n  static equate(attrs) {\n    return new Equate(attrs);\n  }\n  static equateRange(attrs) {\n    return new EquateRange(attrs);\n  }\n  static exclude(attrs) {\n    return new Exclude(attrs);\n  }\n  static excludeNS(attrs) {\n    return new ExcludeNS(attrs);\n  }\n  static flipLabel(attrs) {\n    return new FlipLabel(attrs);\n  }\n  static fontInfo(attrs) {\n    return new config_FontInfo(attrs);\n  }\n  static formFieldFilling(attrs) {\n    return new FormFieldFilling(attrs);\n  }\n  static groupParent(attrs) {\n    return new GroupParent(attrs);\n  }\n  static ifEmpty(attrs) {\n    return new IfEmpty(attrs);\n  }\n  static includeXDPContent(attrs) {\n    return new IncludeXDPContent(attrs);\n  }\n  static incrementalLoad(attrs) {\n    return new IncrementalLoad(attrs);\n  }\n  static incrementalMerge(attrs) {\n    return new IncrementalMerge(attrs);\n  }\n  static interactive(attrs) {\n    return new Interactive(attrs);\n  }\n  static jog(attrs) {\n    return new Jog(attrs);\n  }\n  static labelPrinter(attrs) {\n    return new LabelPrinter(attrs);\n  }\n  static layout(attrs) {\n    return new Layout(attrs);\n  }\n  static level(attrs) {\n    return new Level(attrs);\n  }\n  static linearized(attrs) {\n    return new Linearized(attrs);\n  }\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n  static log(attrs) {\n    return new Log(attrs);\n  }\n  static map(attrs) {\n    return new MapElement(attrs);\n  }\n  static mediumInfo(attrs) {\n    return new MediumInfo(attrs);\n  }\n  static message(attrs) {\n    return new config_Message(attrs);\n  }\n  static messaging(attrs) {\n    return new Messaging(attrs);\n  }\n  static mode(attrs) {\n    return new Mode(attrs);\n  }\n  static modifyAnnots(attrs) {\n    return new ModifyAnnots(attrs);\n  }\n  static msgId(attrs) {\n    return new MsgId(attrs);\n  }\n  static nameAttr(attrs) {\n    return new NameAttr(attrs);\n  }\n  static neverEmbed(attrs) {\n    return new NeverEmbed(attrs);\n  }\n  static numberOfCopies(attrs) {\n    return new NumberOfCopies(attrs);\n  }\n  static openAction(attrs) {\n    return new OpenAction(attrs);\n  }\n  static output(attrs) {\n    return new Output(attrs);\n  }\n  static outputBin(attrs) {\n    return new OutputBin(attrs);\n  }\n  static outputXSL(attrs) {\n    return new OutputXSL(attrs);\n  }\n  static overprint(attrs) {\n    return new Overprint(attrs);\n  }\n  static packets(attrs) {\n    return new Packets(attrs);\n  }\n  static pageOffset(attrs) {\n    return new PageOffset(attrs);\n  }\n  static pageRange(attrs) {\n    return new PageRange(attrs);\n  }\n  static pagination(attrs) {\n    return new Pagination(attrs);\n  }\n  static paginationOverride(attrs) {\n    return new PaginationOverride(attrs);\n  }\n  static part(attrs) {\n    return new Part(attrs);\n  }\n  static pcl(attrs) {\n    return new Pcl(attrs);\n  }\n  static pdf(attrs) {\n    return new Pdf(attrs);\n  }\n  static pdfa(attrs) {\n    return new Pdfa(attrs);\n  }\n  static permissions(attrs) {\n    return new Permissions(attrs);\n  }\n  static pickTrayByPDFSize(attrs) {\n    return new PickTrayByPDFSize(attrs);\n  }\n  static picture(attrs) {\n    return new config_Picture(attrs);\n  }\n  static plaintextMetadata(attrs) {\n    return new PlaintextMetadata(attrs);\n  }\n  static presence(attrs) {\n    return new Presence(attrs);\n  }\n  static present(attrs) {\n    return new Present(attrs);\n  }\n  static print(attrs) {\n    return new Print(attrs);\n  }\n  static printHighQuality(attrs) {\n    return new PrintHighQuality(attrs);\n  }\n  static printScaling(attrs) {\n    return new PrintScaling(attrs);\n  }\n  static printerName(attrs) {\n    return new PrinterName(attrs);\n  }\n  static producer(attrs) {\n    return new Producer(attrs);\n  }\n  static ps(attrs) {\n    return new Ps(attrs);\n  }\n  static range(attrs) {\n    return new Range(attrs);\n  }\n  static record(attrs) {\n    return new Record(attrs);\n  }\n  static relevant(attrs) {\n    return new Relevant(attrs);\n  }\n  static rename(attrs) {\n    return new Rename(attrs);\n  }\n  static renderPolicy(attrs) {\n    return new RenderPolicy(attrs);\n  }\n  static runScripts(attrs) {\n    return new RunScripts(attrs);\n  }\n  static script(attrs) {\n    return new config_Script(attrs);\n  }\n  static scriptModel(attrs) {\n    return new ScriptModel(attrs);\n  }\n  static severity(attrs) {\n    return new Severity(attrs);\n  }\n  static silentPrint(attrs) {\n    return new SilentPrint(attrs);\n  }\n  static staple(attrs) {\n    return new Staple(attrs);\n  }\n  static startNode(attrs) {\n    return new StartNode(attrs);\n  }\n  static startPage(attrs) {\n    return new StartPage(attrs);\n  }\n  static submitFormat(attrs) {\n    return new SubmitFormat(attrs);\n  }\n  static submitUrl(attrs) {\n    return new SubmitUrl(attrs);\n  }\n  static subsetBelow(attrs) {\n    return new SubsetBelow(attrs);\n  }\n  static suppressBanner(attrs) {\n    return new SuppressBanner(attrs);\n  }\n  static tagged(attrs) {\n    return new Tagged(attrs);\n  }\n  static template(attrs) {\n    return new config_Template(attrs);\n  }\n  static templateCache(attrs) {\n    return new TemplateCache(attrs);\n  }\n  static threshold(attrs) {\n    return new Threshold(attrs);\n  }\n  static to(attrs) {\n    return new To(attrs);\n  }\n  static trace(attrs) {\n    return new Trace(attrs);\n  }\n  static transform(attrs) {\n    return new Transform(attrs);\n  }\n  static type(attrs) {\n    return new Type(attrs);\n  }\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n  static validate(attrs) {\n    return new config_Validate(attrs);\n  }\n  static validateApprovalSignatures(attrs) {\n    return new ValidateApprovalSignatures(attrs);\n  }\n  static validationMessaging(attrs) {\n    return new ValidationMessaging(attrs);\n  }\n  static version(attrs) {\n    return new Version(attrs);\n  }\n  static versionControl(attrs) {\n    return new VersionControl(attrs);\n  }\n  static viewerPreferences(attrs) {\n    return new ViewerPreferences(attrs);\n  }\n  static webClient(attrs) {\n    return new WebClient(attrs);\n  }\n  static whitespace(attrs) {\n    return new Whitespace(attrs);\n  }\n  static window(attrs) {\n    return new Window(attrs);\n  }\n  static xdc(attrs) {\n    return new Xdc(attrs);\n  }\n  static xdp(attrs) {\n    return new Xdp(attrs);\n  }\n  static xsl(attrs) {\n    return new Xsl(attrs);\n  }\n  static zpl(attrs) {\n    return new Zpl(attrs);\n  }\n}\n\n;// ./src/core/xfa/connection_set.js\n\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\nclass ConnectionSet extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"connectionSet\", true);\n    this.wsdlConnection = new XFAObjectArray();\n    this.xmlConnection = new XFAObjectArray();\n    this.xsdConnection = new XFAObjectArray();\n  }\n}\nclass EffectiveInputPolicy extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass EffectiveOutputPolicy extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass Operation extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"operation\");\n    this.id = attributes.id || \"\";\n    this.input = attributes.input || \"\";\n    this.name = attributes.name || \"\";\n    this.output = attributes.output || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass RootElement extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"rootElement\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass SoapAction extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAction\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass SoapAddress extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass connection_set_Uri extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"uri\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass WsdlAddress extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\nclass WsdlConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlConnection\", true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.effectiveInputPolicy = null;\n    this.effectiveOutputPolicy = null;\n    this.operation = null;\n    this.soapAction = null;\n    this.soapAddress = null;\n    this.wsdlAddress = null;\n  }\n}\nclass XmlConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xmlConnection\", true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.uri = null;\n  }\n}\nclass XsdConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xsdConnection\", true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.rootElement = null;\n    this.uri = null;\n  }\n}\nclass ConnectionSetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (ConnectionSetNamespace.hasOwnProperty(name)) {\n      return ConnectionSetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static connectionSet(attrs) {\n    return new ConnectionSet(attrs);\n  }\n  static effectiveInputPolicy(attrs) {\n    return new EffectiveInputPolicy(attrs);\n  }\n  static effectiveOutputPolicy(attrs) {\n    return new EffectiveOutputPolicy(attrs);\n  }\n  static operation(attrs) {\n    return new Operation(attrs);\n  }\n  static rootElement(attrs) {\n    return new RootElement(attrs);\n  }\n  static soapAction(attrs) {\n    return new SoapAction(attrs);\n  }\n  static soapAddress(attrs) {\n    return new SoapAddress(attrs);\n  }\n  static uri(attrs) {\n    return new connection_set_Uri(attrs);\n  }\n  static wsdlAddress(attrs) {\n    return new WsdlAddress(attrs);\n  }\n  static wsdlConnection(attrs) {\n    return new WsdlConnection(attrs);\n  }\n  static xmlConnection(attrs) {\n    return new XmlConnection(attrs);\n  }\n  static xsdConnection(attrs) {\n    return new XsdConnection(attrs);\n  }\n}\n\n;// ./src/core/xfa/datasets.js\n\n\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\nclass datasets_Data extends XmlObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"data\", attributes);\n  }\n  [$isNsAgnostic]() {\n    return true;\n  }\n}\nclass Datasets extends XFAObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"datasets\", true);\n    this.data = null;\n    this.Signature = null;\n  }\n  [$onChild](child) {\n    const name = child[$nodeName];\n    if (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID || name === \"Signature\" && child[$namespaceId] === NamespaceIds.signature.id) {\n      this[name] = child;\n    }\n    this[$appendChild](child);\n  }\n}\nclass DatasetsNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (DatasetsNamespace.hasOwnProperty(name)) {\n      return DatasetsNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static datasets(attributes) {\n    return new Datasets(attributes);\n  }\n  static data(attributes) {\n    return new datasets_Data(attributes);\n  }\n}\n\n;// ./src/core/xfa/locale_set.js\n\n\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\nclass CalendarSymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"calendarSymbols\", true);\n    this.name = \"gregorian\";\n    this.dayNames = new XFAObjectArray(2);\n    this.eraNames = null;\n    this.meridiemNames = null;\n    this.monthNames = new XFAObjectArray(2);\n  }\n}\nclass CurrencySymbol extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbol\");\n    this.name = getStringOption(attributes.name, [\"symbol\", \"isoname\", \"decimal\"]);\n  }\n}\nclass CurrencySymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbols\", true);\n    this.currencySymbol = new XFAObjectArray(3);\n  }\n}\nclass DatePattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePattern\");\n    this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n  }\n}\nclass DatePatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePatterns\", true);\n    this.datePattern = new XFAObjectArray(4);\n  }\n}\nclass DateTimeSymbols extends ContentObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n  }\n}\nclass Day extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"day\");\n  }\n}\nclass DayNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dayNames\", true);\n    this.abbr = getInteger({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.day = new XFAObjectArray(7);\n  }\n}\nclass Era extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"era\");\n  }\n}\nclass EraNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"eraNames\", true);\n    this.era = new XFAObjectArray(2);\n  }\n}\nclass locale_set_Locale extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"locale\", true);\n    this.desc = attributes.desc || \"\";\n    this.name = \"isoname\";\n    this.calendarSymbols = null;\n    this.currencySymbols = null;\n    this.datePatterns = null;\n    this.dateTimeSymbols = null;\n    this.numberPatterns = null;\n    this.numberSymbols = null;\n    this.timePatterns = null;\n    this.typeFaces = null;\n  }\n}\nclass locale_set_LocaleSet extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"localeSet\", true);\n    this.locale = new XFAObjectArray();\n  }\n}\nclass Meridiem extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiem\");\n  }\n}\nclass MeridiemNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiemNames\", true);\n    this.meridiem = new XFAObjectArray(2);\n  }\n}\nclass Month extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"month\");\n  }\n}\nclass MonthNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"monthNames\", true);\n    this.abbr = getInteger({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.month = new XFAObjectArray(12);\n  }\n}\nclass NumberPattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPattern\");\n    this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n  }\n}\nclass NumberPatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPatterns\", true);\n    this.numberPattern = new XFAObjectArray(4);\n  }\n}\nclass NumberSymbol extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbol\");\n    this.name = getStringOption(attributes.name, [\"decimal\", \"grouping\", \"percent\", \"minus\", \"zero\"]);\n  }\n}\nclass NumberSymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbols\", true);\n    this.numberSymbol = new XFAObjectArray(5);\n  }\n}\nclass TimePattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePattern\");\n    this.name = getStringOption(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n  }\n}\nclass TimePatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePatterns\", true);\n    this.timePattern = new XFAObjectArray(4);\n  }\n}\nclass TypeFace extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFace\", true);\n    this.name = attributes.name | \"\";\n  }\n}\nclass TypeFaces extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFaces\", true);\n    this.typeFace = new XFAObjectArray();\n  }\n}\nclass LocaleSetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (LocaleSetNamespace.hasOwnProperty(name)) {\n      return LocaleSetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static calendarSymbols(attrs) {\n    return new CalendarSymbols(attrs);\n  }\n  static currencySymbol(attrs) {\n    return new CurrencySymbol(attrs);\n  }\n  static currencySymbols(attrs) {\n    return new CurrencySymbols(attrs);\n  }\n  static datePattern(attrs) {\n    return new DatePattern(attrs);\n  }\n  static datePatterns(attrs) {\n    return new DatePatterns(attrs);\n  }\n  static dateTimeSymbols(attrs) {\n    return new DateTimeSymbols(attrs);\n  }\n  static day(attrs) {\n    return new Day(attrs);\n  }\n  static dayNames(attrs) {\n    return new DayNames(attrs);\n  }\n  static era(attrs) {\n    return new Era(attrs);\n  }\n  static eraNames(attrs) {\n    return new EraNames(attrs);\n  }\n  static locale(attrs) {\n    return new locale_set_Locale(attrs);\n  }\n  static localeSet(attrs) {\n    return new locale_set_LocaleSet(attrs);\n  }\n  static meridiem(attrs) {\n    return new Meridiem(attrs);\n  }\n  static meridiemNames(attrs) {\n    return new MeridiemNames(attrs);\n  }\n  static month(attrs) {\n    return new Month(attrs);\n  }\n  static monthNames(attrs) {\n    return new MonthNames(attrs);\n  }\n  static numberPattern(attrs) {\n    return new NumberPattern(attrs);\n  }\n  static numberPatterns(attrs) {\n    return new NumberPatterns(attrs);\n  }\n  static numberSymbol(attrs) {\n    return new NumberSymbol(attrs);\n  }\n  static numberSymbols(attrs) {\n    return new NumberSymbols(attrs);\n  }\n  static timePattern(attrs) {\n    return new TimePattern(attrs);\n  }\n  static timePatterns(attrs) {\n    return new TimePatterns(attrs);\n  }\n  static typeFace(attrs) {\n    return new TypeFace(attrs);\n  }\n  static typeFaces(attrs) {\n    return new TypeFaces(attrs);\n  }\n}\n\n;// ./src/core/xfa/signature.js\n\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\nclass signature_Signature extends XFAObject {\n  constructor(attributes) {\n    super(SIGNATURE_NS_ID, \"signature\", true);\n  }\n}\nclass SignatureNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (SignatureNamespace.hasOwnProperty(name)) {\n      return SignatureNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static signature(attributes) {\n    return new signature_Signature(attributes);\n  }\n}\n\n;// ./src/core/xfa/stylesheet.js\n\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\nclass Stylesheet extends XFAObject {\n  constructor(attributes) {\n    super(STYLESHEET_NS_ID, \"stylesheet\", true);\n  }\n}\nclass StylesheetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (StylesheetNamespace.hasOwnProperty(name)) {\n      return StylesheetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static stylesheet(attributes) {\n    return new Stylesheet(attributes);\n  }\n}\n\n;// ./src/core/xfa/xdp.js\n\n\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\nclass xdp_Xdp extends XFAObject {\n  constructor(attributes) {\n    super(XDP_NS_ID, \"xdp\", true);\n    this.uuid = attributes.uuid || \"\";\n    this.timeStamp = attributes.timeStamp || \"\";\n    this.config = null;\n    this.connectionSet = null;\n    this.datasets = null;\n    this.localeSet = null;\n    this.stylesheet = new XFAObjectArray();\n    this.template = null;\n  }\n  [$onChildCheck](child) {\n    const ns = NamespaceIds[child[$nodeName]];\n    return ns && child[$namespaceId] === ns.id;\n  }\n}\nclass XdpNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (XdpNamespace.hasOwnProperty(name)) {\n      return XdpNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static xdp(attributes) {\n    return new xdp_Xdp(attributes);\n  }\n}\n\n;// ./src/core/xfa/xhtml.js\n\n\n\n\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\nconst VALID_STYLES = new Set([\"color\", \"font\", \"font-family\", \"font-size\", \"font-stretch\", \"font-style\", \"font-weight\", \"margin\", \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"letter-spacing\", \"line-height\", \"orphans\", \"page-break-after\", \"page-break-before\", \"page-break-inside\", \"tab-interval\", \"tab-stop\", \"text-align\", \"text-decoration\", \"text-indent\", \"vertical-align\", \"widows\", \"kerning-mode\", \"xfa-font-horizontal-scale\", \"xfa-font-vertical-scale\", \"xfa-spacerun\", \"xfa-tab-stops\"]);\nconst StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n  value = original.fontSize = getMeasurement(value);\n  return measureToString(0.99 * value);\n}], [\"letter-spacing\", value => measureToString(getMeasurement(value))], [\"line-height\", value => measureToString(getMeasurement(value))], [\"margin\", value => measureToString(getMeasurement(value))], [\"margin-bottom\", value => measureToString(getMeasurement(value))], [\"margin-left\", value => measureToString(getMeasurement(value))], [\"margin-right\", value => measureToString(getMeasurement(value))], [\"margin-top\", value => measureToString(getMeasurement(value))], [\"text-indent\", value => measureToString(getMeasurement(value))], [\"font-family\", value => value], [\"vertical-align\", value => measureToString(getMeasurement(value))]]);\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\nfunction mapStyle(styleStr, node, richText) {\n  const style = Object.create(null);\n  if (!styleStr) {\n    return style;\n  }\n  const original = Object.create(null);\n  for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n    const mapping = StyleMapping.get(key);\n    if (mapping === \"\") {\n      continue;\n    }\n    let newValue = value;\n    if (mapping) {\n      newValue = typeof mapping === \"string\" ? mapping : mapping(value, original);\n    }\n    if (key.endsWith(\"scale\")) {\n      style.transform = style.transform ? `${style[key]} ${newValue}` : newValue;\n    } else {\n      style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue;\n    }\n  }\n  if (style.fontFamily) {\n    setFontFamily({\n      typeface: style.fontFamily,\n      weight: style.fontWeight || \"normal\",\n      posture: style.fontStyle || \"normal\",\n      size: original.fontSize || 0\n    }, node, node[$globalData].fontFinder, style);\n  }\n  if (richText && style.verticalAlign && style.verticalAlign !== \"0px\" && style.fontSize) {\n    const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n    const VERTICAL_FACTOR = 0.333;\n    const fontSize = getMeasurement(style.fontSize);\n    style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n    style.verticalAlign = measureToString(Math.sign(getMeasurement(style.verticalAlign)) * fontSize * VERTICAL_FACTOR);\n  }\n  if (richText && style.fontSize) {\n    style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`;\n  }\n  fixTextIndent(style);\n  return style;\n}\nfunction checkStyle(node) {\n  if (!node.style) {\n    return \"\";\n  }\n  return node.style.trim().split(/\\s*;\\s*/).filter(s => !!s).map(s => s.split(/\\s*:\\s*/, 2)).filter(([key, value]) => {\n    if (key === \"font-family\") {\n      node[$globalData].usedTypefaces.add(value);\n    }\n    return VALID_STYLES.has(key);\n  }).map(kv => kv.join(\":\")).join(\";\");\n}\nconst NoWhites = new Set([\"body\", \"html\"]);\nclass XhtmlObject extends XmlObject {\n  constructor(attributes, name) {\n    super(XHTML_NS_ID, name);\n    this[$richText] = false;\n    this.style = attributes.style || \"\";\n  }\n  [$clean](builder) {\n    super[$clean](builder);\n    this.style = checkStyle(this);\n  }\n  [$acceptWhitespace]() {\n    return !NoWhites.has(this[$nodeName]);\n  }\n  [$onText](str, richText = false) {\n    if (!richText) {\n      str = str.replaceAll(crlfRegExp, \"\");\n      if (!this.style.includes(\"xfa-spacerun:yes\")) {\n        str = str.replaceAll(spacesRegExp, \" \");\n      }\n    } else {\n      this[$richText] = true;\n    }\n    if (str) {\n      this[$content] += str;\n    }\n  }\n  [$pushGlyphs](measure, mustPop = true) {\n    const xfaFont = Object.create(null);\n    const margin = {\n      top: NaN,\n      bottom: NaN,\n      left: NaN,\n      right: NaN\n    };\n    let lineHeight = null;\n    for (const [key, value] of this.style.split(\";\").map(s => s.split(\":\", 2))) {\n      switch (key) {\n        case \"font-family\":\n          xfaFont.typeface = stripQuotes(value);\n          break;\n        case \"font-size\":\n          xfaFont.size = getMeasurement(value);\n          break;\n        case \"font-weight\":\n          xfaFont.weight = value;\n          break;\n        case \"font-style\":\n          xfaFont.posture = value;\n          break;\n        case \"letter-spacing\":\n          xfaFont.letterSpacing = getMeasurement(value);\n          break;\n        case \"margin\":\n          const values = value.split(/ \\t/).map(x => getMeasurement(x));\n          switch (values.length) {\n            case 1:\n              margin.top = margin.bottom = margin.left = margin.right = values[0];\n              break;\n            case 2:\n              margin.top = margin.bottom = values[0];\n              margin.left = margin.right = values[1];\n              break;\n            case 3:\n              margin.top = values[0];\n              margin.bottom = values[2];\n              margin.left = margin.right = values[1];\n              break;\n            case 4:\n              margin.top = values[0];\n              margin.left = values[1];\n              margin.bottom = values[2];\n              margin.right = values[3];\n              break;\n          }\n          break;\n        case \"margin-top\":\n          margin.top = getMeasurement(value);\n          break;\n        case \"margin-bottom\":\n          margin.bottom = getMeasurement(value);\n          break;\n        case \"margin-left\":\n          margin.left = getMeasurement(value);\n          break;\n        case \"margin-right\":\n          margin.right = getMeasurement(value);\n          break;\n        case \"line-height\":\n          lineHeight = getMeasurement(value);\n          break;\n      }\n    }\n    measure.pushData(xfaFont, margin, lineHeight);\n    if (this[$content]) {\n      measure.addString(this[$content]);\n    } else {\n      for (const child of this[$getChildren]()) {\n        if (child[$nodeName] === \"#text\") {\n          measure.addString(child[$content]);\n          continue;\n        }\n        child[$pushGlyphs](measure);\n      }\n    }\n    if (mustPop) {\n      measure.popFont();\n    }\n  }\n  [$toHTML](availableSpace) {\n    const children = [];\n    this[$extra] = {\n      children\n    };\n    this[$childrenToHTML]({});\n    if (children.length === 0 && !this[$content]) {\n      return HTMLResult.EMPTY;\n    }\n    let value;\n    if (this[$richText]) {\n      value = this[$content] ? this[$content].replaceAll(crlfForRichTextRegExp, \"\\n\") : undefined;\n    } else {\n      value = this[$content] || undefined;\n    }\n    return HTMLResult.success({\n      name: this[$nodeName],\n      attributes: {\n        href: this.href,\n        style: mapStyle(this.style, this, this[$richText])\n      },\n      children,\n      value\n    });\n  }\n}\nclass A extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"a\");\n    this.href = fixURL(attributes.href) || \"\";\n  }\n}\nclass B extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"b\");\n  }\n  [$pushGlyphs](measure) {\n    measure.pushFont({\n      weight: \"bold\"\n    });\n    super[$pushGlyphs](measure);\n    measure.popFont();\n  }\n}\nclass Body extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"body\");\n  }\n  [$toHTML](availableSpace) {\n    const res = super[$toHTML](availableSpace);\n    const {\n      html\n    } = res;\n    if (!html) {\n      return HTMLResult.EMPTY;\n    }\n    html.name = \"div\";\n    html.attributes.class = [\"xfaRich\"];\n    return res;\n  }\n}\nclass Br extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"br\");\n  }\n  [$text]() {\n    return \"\\n\";\n  }\n  [$pushGlyphs](measure) {\n    measure.addString(\"\\n\");\n  }\n  [$toHTML](availableSpace) {\n    return HTMLResult.success({\n      name: \"br\"\n    });\n  }\n}\nclass Html extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"html\");\n  }\n  [$toHTML](availableSpace) {\n    const children = [];\n    this[$extra] = {\n      children\n    };\n    this[$childrenToHTML]({});\n    if (children.length === 0) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          class: [\"xfaRich\"],\n          style: {}\n        },\n        value: this[$content] || \"\"\n      });\n    }\n    if (children.length === 1) {\n      const child = children[0];\n      if (child.attributes?.class.includes(\"xfaRich\")) {\n        return HTMLResult.success(child);\n      }\n    }\n    return HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        class: [\"xfaRich\"],\n        style: {}\n      },\n      children\n    });\n  }\n}\nclass I extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"i\");\n  }\n  [$pushGlyphs](measure) {\n    measure.pushFont({\n      posture: \"italic\"\n    });\n    super[$pushGlyphs](measure);\n    measure.popFont();\n  }\n}\nclass Li extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"li\");\n  }\n}\nclass Ol extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ol\");\n  }\n}\nclass P extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"p\");\n  }\n  [$pushGlyphs](measure) {\n    super[$pushGlyphs](measure, false);\n    measure.addString(\"\\n\");\n    measure.addPara();\n    measure.popFont();\n  }\n  [$text]() {\n    const siblings = this[$getParent]()[$getChildren]();\n    if (siblings.at(-1) === this) {\n      return super[$text]();\n    }\n    return super[$text]() + \"\\n\";\n  }\n}\nclass Span extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"span\");\n  }\n}\nclass Sub extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sub\");\n  }\n}\nclass Sup extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sup\");\n  }\n}\nclass Ul extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ul\");\n  }\n}\nclass XhtmlNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (XhtmlNamespace.hasOwnProperty(name)) {\n      return XhtmlNamespace[name](attributes);\n    }\n    return undefined;\n  }\n  static a(attributes) {\n    return new A(attributes);\n  }\n  static b(attributes) {\n    return new B(attributes);\n  }\n  static body(attributes) {\n    return new Body(attributes);\n  }\n  static br(attributes) {\n    return new Br(attributes);\n  }\n  static html(attributes) {\n    return new Html(attributes);\n  }\n  static i(attributes) {\n    return new I(attributes);\n  }\n  static li(attributes) {\n    return new Li(attributes);\n  }\n  static ol(attributes) {\n    return new Ol(attributes);\n  }\n  static p(attributes) {\n    return new P(attributes);\n  }\n  static span(attributes) {\n    return new Span(attributes);\n  }\n  static sub(attributes) {\n    return new Sub(attributes);\n  }\n  static sup(attributes) {\n    return new Sup(attributes);\n  }\n  static ul(attributes) {\n    return new Ul(attributes);\n  }\n}\n\n;// ./src/core/xfa/setup.js\n\n\n\n\n\n\n\n\n\nconst NamespaceSetUp = {\n  config: ConfigNamespace,\n  connection: ConnectionSetNamespace,\n  datasets: DatasetsNamespace,\n  localeSet: LocaleSetNamespace,\n  signature: SignatureNamespace,\n  stylesheet: StylesheetNamespace,\n  template: TemplateNamespace,\n  xdp: XdpNamespace,\n  xhtml: XhtmlNamespace\n};\n\n;// ./src/core/xfa/unknown.js\n\n\nclass UnknownNamespace {\n  constructor(nsId) {\n    this.namespaceId = nsId;\n  }\n  [$buildXFAObject](name, attributes) {\n    return new XmlObject(this.namespaceId, name, attributes);\n  }\n}\n\n;// ./src/core/xfa/builder.js\n\n\n\n\n\n\n\nclass Root extends XFAObject {\n  constructor(ids) {\n    super(-1, \"root\", Object.create(null));\n    this.element = null;\n    this[$ids] = ids;\n  }\n  [$onChild](child) {\n    this.element = child;\n    return true;\n  }\n  [$finalize]() {\n    super[$finalize]();\n    if (this.element.template instanceof Template) {\n      this[$ids].set($root, this.element);\n      this.element.template[$resolvePrototypes](this[$ids]);\n      this.element.template[$ids] = this[$ids];\n    }\n  }\n}\nclass Empty extends XFAObject {\n  constructor() {\n    super(-1, \"\", Object.create(null));\n  }\n  [$onChild](_) {\n    return false;\n  }\n}\nclass Builder {\n  constructor(rootNameSpace = null) {\n    this._namespaceStack = [];\n    this._nsAgnosticLevel = 0;\n    this._namespacePrefixes = new Map();\n    this._namespaces = new Map();\n    this._nextNsId = Math.max(...Object.values(NamespaceIds).map(({\n      id\n    }) => id));\n    this._currentNamespace = rootNameSpace || new UnknownNamespace(++this._nextNsId);\n  }\n  buildRoot(ids) {\n    return new Root(ids);\n  }\n  build({\n    nsPrefix,\n    name,\n    attributes,\n    namespace,\n    prefixes\n  }) {\n    const hasNamespaceDef = namespace !== null;\n    if (hasNamespaceDef) {\n      this._namespaceStack.push(this._currentNamespace);\n      this._currentNamespace = this._searchNamespace(namespace);\n    }\n    if (prefixes) {\n      this._addNamespacePrefix(prefixes);\n    }\n    if (attributes.hasOwnProperty($nsAttributes)) {\n      const dataTemplate = NamespaceSetUp.datasets;\n      const nsAttrs = attributes[$nsAttributes];\n      let xfaAttrs = null;\n      for (const [ns, attrs] of Object.entries(nsAttrs)) {\n        const nsToUse = this._getNamespaceToUse(ns);\n        if (nsToUse === dataTemplate) {\n          xfaAttrs = {\n            xfa: attrs\n          };\n          break;\n        }\n      }\n      if (xfaAttrs) {\n        attributes[$nsAttributes] = xfaAttrs;\n      } else {\n        delete attributes[$nsAttributes];\n      }\n    }\n    const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n    const node = namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty();\n    if (node[$isNsAgnostic]()) {\n      this._nsAgnosticLevel++;\n    }\n    if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n      node[$cleanup] = {\n        hasNamespace: hasNamespaceDef,\n        prefixes,\n        nsAgnostic: node[$isNsAgnostic]()\n      };\n    }\n    return node;\n  }\n  isNsAgnostic() {\n    return this._nsAgnosticLevel > 0;\n  }\n  _searchNamespace(nsName) {\n    let ns = this._namespaces.get(nsName);\n    if (ns) {\n      return ns;\n    }\n    for (const [name, {\n      check\n    }] of Object.entries(NamespaceIds)) {\n      if (check(nsName)) {\n        ns = NamespaceSetUp[name];\n        if (ns) {\n          this._namespaces.set(nsName, ns);\n          return ns;\n        }\n        break;\n      }\n    }\n    ns = new UnknownNamespace(++this._nextNsId);\n    this._namespaces.set(nsName, ns);\n    return ns;\n  }\n  _addNamespacePrefix(prefixes) {\n    for (const {\n      prefix,\n      value\n    } of prefixes) {\n      const namespace = this._searchNamespace(value);\n      let prefixStack = this._namespacePrefixes.get(prefix);\n      if (!prefixStack) {\n        prefixStack = [];\n        this._namespacePrefixes.set(prefix, prefixStack);\n      }\n      prefixStack.push(namespace);\n    }\n  }\n  _getNamespaceToUse(prefix) {\n    if (!prefix) {\n      return this._currentNamespace;\n    }\n    const prefixStack = this._namespacePrefixes.get(prefix);\n    if (prefixStack?.length > 0) {\n      return prefixStack.at(-1);\n    }\n    warn(`Unknown namespace prefix: ${prefix}.`);\n    return null;\n  }\n  clean(data) {\n    const {\n      hasNamespace,\n      prefixes,\n      nsAgnostic\n    } = data;\n    if (hasNamespace) {\n      this._currentNamespace = this._namespaceStack.pop();\n    }\n    if (prefixes) {\n      prefixes.forEach(({\n        prefix\n      }) => {\n        this._namespacePrefixes.get(prefix).pop();\n      });\n    }\n    if (nsAgnostic) {\n      this._nsAgnosticLevel--;\n    }\n  }\n}\n\n;// ./src/core/xfa/parser.js\n\n\n\n\nclass XFAParser extends XMLParserBase {\n  constructor(rootNameSpace = null, richText = false) {\n    super();\n    this._builder = new Builder(rootNameSpace);\n    this._stack = [];\n    this._globalData = {\n      usedTypefaces: new Set()\n    };\n    this._ids = new Map();\n    this._current = this._builder.buildRoot(this._ids);\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._whiteRegex = /^\\s+$/;\n    this._nbsps = /\\xa0+/g;\n    this._richText = richText;\n  }\n  parse(data) {\n    this.parseXml(data);\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined;\n    }\n    this._current[$finalize]();\n    return this._current.element;\n  }\n  onText(text) {\n    text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n    if (this._richText || this._current[$acceptWhitespace]()) {\n      this._current[$onText](text, this._richText);\n      return;\n    }\n    if (this._whiteRegex.test(text)) {\n      return;\n    }\n    this._current[$onText](text.trim());\n  }\n  onCdata(text) {\n    this._current[$onText](text);\n  }\n  _mkAttributes(attributes, tagName) {\n    let namespace = null;\n    let prefixes = null;\n    const attributeObj = Object.create({});\n    for (const {\n      name,\n      value\n    } of attributes) {\n      if (name === \"xmlns\") {\n        if (!namespace) {\n          namespace = value;\n        } else {\n          warn(`XFA - multiple namespace definition in <${tagName}>`);\n        }\n      } else if (name.startsWith(\"xmlns:\")) {\n        const prefix = name.substring(\"xmlns:\".length);\n        if (!prefixes) {\n          prefixes = [];\n        }\n        prefixes.push({\n          prefix,\n          value\n        });\n      } else {\n        const i = name.indexOf(\":\");\n        if (i === -1) {\n          attributeObj[name] = value;\n        } else {\n          let nsAttrs = attributeObj[$nsAttributes];\n          if (!nsAttrs) {\n            nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n          }\n          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n          const attrs = nsAttrs[ns] ||= Object.create(null);\n          attrs[attrName] = value;\n        }\n      }\n    }\n    return [namespace, prefixes, attributeObj];\n  }\n  _getNameAndPrefix(name, nsAgnostic) {\n    const i = name.indexOf(\":\");\n    if (i === -1) {\n      return [name, null];\n    }\n    return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n  }\n  onBeginElement(tagName, attributes, isEmpty) {\n    const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);\n    const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic());\n    const node = this._builder.build({\n      nsPrefix,\n      name,\n      attributes: attributesObj,\n      namespace,\n      prefixes\n    });\n    node[$globalData] = this._globalData;\n    if (isEmpty) {\n      node[$finalize]();\n      if (this._current[$onChild](node)) {\n        node[$setId](this._ids);\n      }\n      node[$clean](this._builder);\n      return;\n    }\n    this._stack.push(this._current);\n    this._current = node;\n  }\n  onEndElement(name) {\n    const node = this._current;\n    if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n      const parser = new XFAParser();\n      parser._globalData = this._globalData;\n      const root = parser.parse(node[$content]);\n      node[$content] = null;\n      node[$onChild](root);\n    }\n    node[$finalize]();\n    this._current = this._stack.pop();\n    if (this._current[$onChild](node)) {\n      node[$setId](this._ids);\n    }\n    node[$clean](this._builder);\n  }\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\n;// ./src/core/xfa/factory.js\n\n\n\n\n\n\n\n\nclass XFAFactory {\n  constructor(data) {\n    try {\n      this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n      const binder = new Binder(this.root);\n      this.form = binder.bind();\n      this.dataHandler = new DataHandler(this.root, binder.getData());\n      this.form[$globalData].template = this.form;\n    } catch (e) {\n      warn(`XFA - an error occurred during parsing and binding: ${e}`);\n    }\n  }\n  isValid() {\n    return this.root && this.form;\n  }\n  _createPagesHelper() {\n    const iterator = this.form[$toPages]();\n    return new Promise((resolve, reject) => {\n      const nextIteration = () => {\n        try {\n          const value = iterator.next();\n          if (value.done) {\n            resolve(value.value);\n          } else {\n            setTimeout(nextIteration, 0);\n          }\n        } catch (e) {\n          reject(e);\n        }\n      };\n      setTimeout(nextIteration, 0);\n    });\n  }\n  async _createPages() {\n    try {\n      this.pages = await this._createPagesHelper();\n      this.dims = this.pages.children.map(c => {\n        const {\n          width,\n          height\n        } = c.attributes.style;\n        return [0, 0, parseInt(width), parseInt(height)];\n      });\n    } catch (e) {\n      warn(`XFA - an error occurred during layout: ${e}`);\n    }\n  }\n  getBoundingBox(pageIndex) {\n    return this.dims[pageIndex];\n  }\n  async getNumPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n    return this.dims.length;\n  }\n  setImages(images) {\n    this.form[$globalData].images = images;\n  }\n  setFonts(fonts) {\n    this.form[$globalData].fontFinder = new FontFinder(fonts);\n    const missingFonts = [];\n    for (let typeface of this.form[$globalData].usedTypefaces) {\n      typeface = stripQuotes(typeface);\n      const font = this.form[$globalData].fontFinder.find(typeface);\n      if (!font) {\n        missingFonts.push(typeface);\n      }\n    }\n    if (missingFonts.length > 0) {\n      return missingFonts;\n    }\n    return null;\n  }\n  appendFonts(fonts, reallyMissingFonts) {\n    this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n  }\n  async getPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n    const pages = this.pages;\n    this.pages = null;\n    return pages;\n  }\n  serializeData(storage) {\n    return this.dataHandler.serialize(storage);\n  }\n  static _createDocument(data) {\n    if (!data[\"/xdp:xdp\"]) {\n      return data[\"xdp:xdp\"];\n    }\n    return Object.values(data).join(\"\");\n  }\n  static getRichTextAsHtml(rc) {\n    if (!rc || typeof rc !== \"string\") {\n      return null;\n    }\n    try {\n      let root = new XFAParser(XhtmlNamespace, true).parse(rc);\n      if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n        const newRoot = XhtmlNamespace.body({});\n        newRoot[$appendChild](root);\n        root = newRoot;\n      }\n      const result = root[$toHTML]();\n      if (!result.success) {\n        return null;\n      }\n      const {\n        html\n      } = result;\n      const {\n        attributes\n      } = html;\n      if (attributes) {\n        if (attributes.class) {\n          attributes.class = attributes.class.filter(attr => !attr.startsWith(\"xfa\"));\n        }\n        attributes.dir = \"auto\";\n      }\n      return {\n        html,\n        str: root[$text]()\n      };\n    } catch (e) {\n      warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n    }\n    return null;\n  }\n}\n\n;// ./src/core/annotation.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationFactory {\n  static createGlobals(pdfManager) {\n    return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureDoc(\"xfaDatasets\"), pdfManager.ensureCatalog(\"structTreeRoot\"), pdfManager.ensureCatalog(\"baseUrl\"), pdfManager.ensureCatalog(\"attachments\")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => {\n      return {\n        pdfManager,\n        acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n        xfaDatasets,\n        structTreeRoot,\n        baseUrl,\n        attachments\n      };\n    }, reason => {\n      warn(`createGlobals: \"${reason}\".`);\n      return null;\n    });\n  }\n  static async create(xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, pageRef) {\n    const pageIndex = collectFields ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager) : null;\n    return annotationGlobals.pdfManager.ensure(this, \"_create\", [xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, pageIndex, pageRef]);\n  }\n  static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, orphanFields = null, pageIndex = null, pageRef = null) {\n    const dict = xref.fetchIfRef(ref);\n    if (!(dict instanceof Dict)) {\n      return undefined;\n    }\n    const {\n      acroForm,\n      pdfManager\n    } = annotationGlobals;\n    const id = ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n    let subtype = dict.get(\"Subtype\");\n    subtype = subtype instanceof Name ? subtype.name : null;\n    const parameters = {\n      xref,\n      ref,\n      dict,\n      subtype,\n      id,\n      annotationGlobals,\n      collectFields,\n      orphanFields,\n      needAppearances: !collectFields && acroForm.get(\"NeedAppearances\") === true,\n      pageIndex,\n      evaluatorOptions: pdfManager.evaluatorOptions,\n      pageRef\n    };\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n      case \"Text\":\n        return new TextAnnotation(parameters);\n      case \"Widget\":\n        let fieldType = getInheritableProperty({\n          dict,\n          key: \"FT\"\n        });\n        fieldType = fieldType instanceof Name ? fieldType.name : null;\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotation(parameters);\n        }\n        warn(`Unimplemented widget field type \"${fieldType}\", ` + \"falling back to base field type.\");\n        return new WidgetAnnotation(parameters);\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n      case \"Line\":\n        return new LineAnnotation(parameters);\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n      default:\n        if (!collectFields) {\n          if (!subtype) {\n            warn(\"Annotation is missing the required /Subtype.\");\n          } else {\n            warn(`Unimplemented annotation type \"${subtype}\", ` + \"falling back to base annotation.\");\n          }\n        }\n        return new Annotation(parameters);\n    }\n  }\n  static async _getPageIndex(xref, ref, pdfManager) {\n    try {\n      const annotDict = await xref.fetchIfRefAsync(ref);\n      if (!(annotDict instanceof Dict)) {\n        return -1;\n      }\n      const pageRef = annotDict.getRaw(\"P\");\n      if (pageRef instanceof Ref) {\n        try {\n          const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n          return pageIndex;\n        } catch (ex) {\n          info(`_getPageIndex -- not a valid page reference: \"${ex}\".`);\n        }\n      }\n      if (annotDict.has(\"Kids\")) {\n        return -1;\n      }\n      const numPages = await pdfManager.ensureDoc(\"numPages\");\n      for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n        const page = await pdfManager.getPage(pageIndex);\n        const annotations = await pdfManager.ensure(page, \"annotations\");\n        for (const annotRef of annotations) {\n          if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) {\n            return pageIndex;\n          }\n        }\n      }\n    } catch (ex) {\n      warn(`_getPageIndex: \"${ex}\".`);\n    }\n    return -1;\n  }\n  static generateImages(annotations, xref, isOffscreenCanvasSupported) {\n    if (!isOffscreenCanvasSupported) {\n      warn(\"generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.\");\n      return null;\n    }\n    let imagePromises;\n    for (const {\n      bitmapId,\n      bitmap\n    } of annotations) {\n      if (!bitmap) {\n        continue;\n      }\n      imagePromises ||= new Map();\n      imagePromises.set(bitmapId, StampAnnotation.createImage(bitmap, xref));\n    }\n    return imagePromises;\n  }\n  static async saveNewAnnotations(evaluator, task, annotations, imagePromises, changes) {\n    const xref = evaluator.xref;\n    let baseFontRef;\n    const promises = [];\n    const {\n      isOffscreenCanvasSupported\n    } = evaluator.options;\n    for (const annotation of annotations) {\n      if (annotation.deleted) {\n        continue;\n      }\n      switch (annotation.annotationType) {\n        case AnnotationEditorType.FREETEXT:\n          if (!baseFontRef) {\n            const baseFont = new Dict(xref);\n            baseFont.set(\"BaseFont\", Name.get(\"Helvetica\"));\n            baseFont.set(\"Type\", Name.get(\"Font\"));\n            baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n            baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n            baseFontRef = xref.getNewTemporaryRef();\n            changes.put(baseFontRef, {\n              data: baseFont\n            });\n          }\n          promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, {\n            evaluator,\n            task,\n            baseFontRef\n          }));\n          break;\n        case AnnotationEditorType.HIGHLIGHT:\n          if (annotation.quadPoints) {\n            promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, changes));\n          } else {\n            promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n          }\n          break;\n        case AnnotationEditorType.INK:\n          promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n          break;\n        case AnnotationEditorType.STAMP:\n          const image = isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n          if (image?.imageStream) {\n            const {\n              imageStream,\n              smaskStream\n            } = image;\n            if (smaskStream) {\n              const smaskRef = xref.getNewTemporaryRef();\n              changes.put(smaskRef, {\n                data: smaskStream\n              });\n              imageStream.dict.set(\"SMask\", smaskRef);\n            }\n            const imageRef = image.imageRef = xref.getNewTemporaryRef();\n            changes.put(imageRef, {\n              data: imageStream\n            });\n            image.imageStream = image.smaskStream = null;\n          }\n          promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {\n            image\n          }));\n          break;\n      }\n    }\n    return {\n      annotations: await Promise.all(promises)\n    };\n  }\n  static async printNewAnnotations(annotationGlobals, evaluator, task, annotations, imagePromises) {\n    if (!annotations) {\n      return null;\n    }\n    const {\n      options,\n      xref\n    } = evaluator;\n    const promises = [];\n    for (const annotation of annotations) {\n      if (annotation.deleted) {\n        continue;\n      }\n      switch (annotation.annotationType) {\n        case AnnotationEditorType.FREETEXT:\n          promises.push(FreeTextAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n            evaluator,\n            task,\n            evaluatorOptions: options\n          }));\n          break;\n        case AnnotationEditorType.HIGHLIGHT:\n          if (annotation.quadPoints) {\n            promises.push(HighlightAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n              evaluatorOptions: options\n            }));\n          } else {\n            promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n              evaluatorOptions: options\n            }));\n          }\n          break;\n        case AnnotationEditorType.INK:\n          promises.push(InkAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n            evaluatorOptions: options\n          }));\n          break;\n        case AnnotationEditorType.STAMP:\n          const image = options.isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n          if (image?.imageStream) {\n            const {\n              imageStream,\n              smaskStream\n            } = image;\n            if (smaskStream) {\n              imageStream.dict.set(\"SMask\", smaskStream);\n            }\n            image.imageRef = new JpegStream(imageStream, imageStream.length);\n            image.imageStream = image.smaskStream = null;\n          }\n          promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n            image,\n            evaluatorOptions: options\n          }));\n          break;\n      }\n    }\n    return Promise.all(promises);\n  }\n}\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n  if (!Array.isArray(color)) {\n    return defaultColor;\n  }\n  const rgbColor = defaultColor || new Uint8ClampedArray(3);\n  switch (color.length) {\n    case 0:\n      return null;\n    case 1:\n      ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n    case 3:\n      ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n    case 4:\n      ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n    default:\n      return defaultColor;\n  }\n}\nfunction getPdfColorArray(color) {\n  return Array.from(color, c => c / 255);\n}\nfunction getQuadPoints(dict, rect) {\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (!isNumberArray(quadPoints, null) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {\n    return null;\n  }\n  const newQuadPoints = new Float32Array(quadPoints.length);\n  for (let i = 0, ii = quadPoints.length; i < ii; i += 8) {\n    const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8);\n    const minX = Math.min(x1, x2, x3, x4);\n    const maxX = Math.max(x1, x2, x3, x4);\n    const minY = Math.min(y1, y2, y3, y4);\n    const maxY = Math.max(y1, y2, y3, y4);\n    if (rect !== null && (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])) {\n      return null;\n    }\n    newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i);\n  }\n  return newQuadPoints;\n}\nfunction getTransformMatrix(rect, bbox, matrix) {\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(bbox, matrix);\n  if (minX === maxX || minY === maxY) {\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\nclass Annotation {\n  constructor(params) {\n    const {\n      dict,\n      xref,\n      annotationGlobals,\n      ref,\n      orphanFields\n    } = params;\n    const parentRef = orphanFields?.get(ref);\n    if (parentRef) {\n      dict.set(\"Parent\", parentRef);\n    }\n    this.setTitle(dict.get(\"T\"));\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n    this.setOptionalContent(dict);\n    const MK = dict.get(\"MK\");\n    this.setBorderAndBackgroundColors(MK);\n    this.setRotation(MK, dict);\n    this.ref = params.ref instanceof Ref ? params.ref : null;\n    this._streams = [];\n    if (this.appearance) {\n      this._streams.push(this.appearance);\n    }\n    const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\n    const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      backgroundColor: this.backgroundColor,\n      borderColor: this.borderColor,\n      rotation: this.rotation,\n      contentsObj: this._contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n      hasOwnCanvas: false,\n      noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\n      noHTML: isLocked && isContentLocked,\n      isEditable: false,\n      structParent: -1\n    };\n    if (annotationGlobals.structTreeRoot) {\n      let structParent = dict.get(\"StructParent\");\n      this.data.structParent = structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\n      annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent);\n    }\n    if (params.collectFields) {\n      const kids = dict.get(\"Kids\");\n      if (Array.isArray(kids)) {\n        const kidIds = [];\n        for (const kid of kids) {\n          if (kid instanceof Ref) {\n            kidIds.push(kid.toString());\n          }\n        }\n        if (kidIds.length !== 0) {\n          this.data.kidIds = kidIds;\n        }\n      }\n      this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\n      this.data.fieldName = this._constructFieldName(dict);\n      this.data.pageIndex = params.pageIndex;\n    }\n    const it = dict.get(\"IT\");\n    if (it instanceof Name) {\n      this.data.it = it.name;\n    }\n    this._isOffscreenCanvasSupported = params.evaluatorOptions.isOffscreenCanvasSupported;\n    this._fallbackFontDict = null;\n    this._needAppearances = false;\n  }\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n  _buildFlags(noView, noPrint) {\n    let {\n      flags\n    } = this;\n    if (noView === undefined) {\n      if (noPrint === undefined) {\n        return undefined;\n      }\n      if (noPrint) {\n        return flags & ~AnnotationFlag.PRINT;\n      }\n      return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.PRINT;\n    }\n    if (noView) {\n      flags |= AnnotationFlag.PRINT;\n      if (noPrint) {\n        return flags & ~AnnotationFlag.NOVIEW | AnnotationFlag.HIDDEN;\n      }\n      return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW;\n    }\n    flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW);\n    if (noPrint) {\n      return flags & ~AnnotationFlag.PRINT;\n    }\n    return flags | AnnotationFlag.PRINT;\n  }\n  _isViewable(flags) {\n    return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n  }\n  _isPrintable(flags) {\n    return this._hasFlag(flags, AnnotationFlag.PRINT) && !this._hasFlag(flags, AnnotationFlag.HIDDEN) && !this._hasFlag(flags, AnnotationFlag.INVISIBLE);\n  }\n  mustBeViewed(annotationStorage, _renderForms) {\n    const noView = annotationStorage?.get(this.data.id)?.noView;\n    if (noView !== undefined) {\n      return !noView;\n    }\n    return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n  }\n  mustBePrinted(annotationStorage) {\n    const noPrint = annotationStorage?.get(this.data.id)?.noPrint;\n    if (noPrint !== undefined) {\n      return !noPrint;\n    }\n    return this.printable;\n  }\n  mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n    return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id);\n  }\n  get viewable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n  get printable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n  _parseStringHelper(data) {\n    const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n    const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n    return {\n      str,\n      dir\n    };\n  }\n  setDefaultAppearance(params) {\n    const {\n      dict,\n      annotationGlobals\n    } = params;\n    const defaultAppearance = getInheritableProperty({\n      dict,\n      key: \"DA\"\n    }) || annotationGlobals.acroForm.get(\"DA\");\n    this._defaultAppearance = typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n    this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance);\n  }\n  setTitle(title) {\n    this._title = this._parseStringHelper(title);\n  }\n  setContents(contents) {\n    this._contents = this._parseStringHelper(contents);\n  }\n  setModificationDate(modificationDate) {\n    this.modificationDate = typeof modificationDate === \"string\" ? modificationDate : null;\n  }\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n    if (this.flags & AnnotationFlag.INVISIBLE && this.constructor.name !== \"Annotation\") {\n      this.flags ^= AnnotationFlag.INVISIBLE;\n    }\n  }\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n  setRectangle(rectangle) {\n    this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]);\n  }\n  setColor(color) {\n    this.color = getRgbColor(color);\n  }\n  setLineEndings(lineEndings) {\n    this.lineEndings = [\"None\", \"None\"];\n    if (Array.isArray(lineEndings) && lineEndings.length === 2) {\n      for (let i = 0; i < 2; i++) {\n        const obj = lineEndings[i];\n        if (obj instanceof Name) {\n          switch (obj.name) {\n            case \"None\":\n              continue;\n            case \"Square\":\n            case \"Circle\":\n            case \"Diamond\":\n            case \"OpenArrow\":\n            case \"ClosedArrow\":\n            case \"Butt\":\n            case \"ROpenArrow\":\n            case \"RClosedArrow\":\n            case \"Slash\":\n              this.lineEndings[i] = obj.name;\n              continue;\n          }\n        }\n        warn(`Ignoring invalid lineEnding: ${obj}`);\n      }\n    }\n  }\n  setRotation(mk, dict) {\n    this.rotation = 0;\n    let angle = mk instanceof Dict ? mk.get(\"R\") || 0 : dict.get(\"Rotate\") || 0;\n    if (Number.isInteger(angle) && angle !== 0) {\n      angle %= 360;\n      if (angle < 0) {\n        angle += 360;\n      }\n      if (angle % 90 === 0) {\n        this.rotation = angle;\n      }\n    }\n  }\n  setBorderAndBackgroundColors(mk) {\n    if (mk instanceof Dict) {\n      this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n      this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n    } else {\n      this.borderColor = this.backgroundColor = null;\n    }\n  }\n  setBorderStyle(borderStyle) {\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!(borderStyle instanceof Dict)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      if (dict instanceof Dict) {\n        const dictType = dict.get(\"Type\");\n        if (!dictType || isName(dictType, \"Border\")) {\n          this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n          this.borderStyle.setStyle(dict.get(\"S\"));\n          this.borderStyle.setDashArray(dict.getArray(\"D\"));\n        }\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n        if (array.length === 4) {\n          this.borderStyle.setDashArray(array[3], true);\n        }\n      }\n    } else {\n      this.borderStyle.setWidth(0);\n    }\n  }\n  setAppearance(dict) {\n    this.appearance = null;\n    const appearanceStates = dict.get(\"AP\");\n    if (!(appearanceStates instanceof Dict)) {\n      return;\n    }\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (normalAppearanceState instanceof BaseStream) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!(normalAppearanceState instanceof Dict)) {\n      return;\n    }\n    const as = dict.get(\"AS\");\n    if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    const appearance = normalAppearanceState.get(as.name);\n    if (appearance instanceof BaseStream) {\n      this.appearance = appearance;\n    }\n  }\n  setOptionalContent(dict) {\n    this.oc = null;\n    const oc = dict.get(\"OC\");\n    if (oc instanceof Name) {\n      warn(\"setOptionalContent: Support for /Name-entry is not implemented.\");\n    } else if (oc instanceof Dict) {\n      this.oc = oc;\n    }\n  }\n  loadResources(keys, appearance) {\n    return appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n  async getOperatorList(evaluator, task, intent, annotationStorage) {\n    const {\n      hasOwnCanvas,\n      id,\n      rect\n    } = this.data;\n    let appearance = this.appearance;\n    const isUsingOwnCanvas = !!(hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n    if (isUsingOwnCanvas && (rect[0] === rect[2] || rect[1] === rect[3])) {\n      this.data.hasOwnCanvas = false;\n      return {\n        opList: new OperatorList(),\n        separateForm: false,\n        separateCanvas: false\n      };\n    }\n    if (!appearance) {\n      if (!isUsingOwnCanvas) {\n        return {\n          opList: new OperatorList(),\n          separateForm: false,\n          separateCanvas: false\n        };\n      }\n      appearance = new StringStream(\"\");\n      appearance.dict = new Dict();\n    }\n    const appearanceDict = appearance.dict;\n    const resources = await this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"], appearance);\n    const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), [0, 0, 1, 1]);\n    const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n    const transform = getTransformMatrix(rect, bbox, matrix);\n    const opList = new OperatorList();\n    let optionalContent;\n    if (this.oc) {\n      optionalContent = await evaluator.parseMarkedContentProps(this.oc, null);\n    }\n    if (optionalContent !== undefined) {\n      opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    opList.addOp(OPS.beginAnnotation, [id, rect, transform, matrix, isUsingOwnCanvas]);\n    await evaluator.getOperatorList({\n      stream: appearance,\n      task,\n      resources,\n      operatorList: opList,\n      fallbackFontDict: this._fallbackFontDict\n    });\n    opList.addOp(OPS.endAnnotation, []);\n    if (optionalContent !== undefined) {\n      opList.addOp(OPS.endMarkedContent, []);\n    }\n    this.reset();\n    return {\n      opList,\n      separateForm: false,\n      separateCanvas: isUsingOwnCanvas\n    };\n  }\n  async save(evaluator, task, annotationStorage, changes) {\n    return null;\n  }\n  get hasTextContent() {\n    return false;\n  }\n  async extractTextContent(evaluator, task, viewBox) {\n    if (!this.appearance) {\n      return;\n    }\n    const resources = await this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"], this.appearance);\n    const text = [];\n    const buffer = [];\n    let firstPosition = null;\n    const sink = {\n      desiredSize: Math.Infinity,\n      ready: true,\n      enqueue(chunk, size) {\n        for (const item of chunk.items) {\n          if (item.str === undefined) {\n            continue;\n          }\n          firstPosition ||= item.transform.slice(-2);\n          buffer.push(item.str);\n          if (item.hasEOL) {\n            text.push(buffer.join(\"\").trimEnd());\n            buffer.length = 0;\n          }\n        }\n      }\n    };\n    await evaluator.getTextContent({\n      stream: this.appearance,\n      task,\n      resources,\n      includeMarkedContent: true,\n      keepWhiteSpace: true,\n      sink,\n      viewBox\n    });\n    this.reset();\n    if (buffer.length) {\n      text.push(buffer.join(\"\").trimEnd());\n    }\n    if (text.length > 1 || text[0]) {\n      const appearanceDict = this.appearance.dict;\n      const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), null);\n      const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), null);\n      this.data.textPosition = this._transformPoint(firstPosition, bbox, matrix);\n      this.data.textContent = text;\n    }\n  }\n  _transformPoint(coords, bbox, matrix) {\n    const {\n      rect\n    } = this.data;\n    bbox ||= [0, 0, 1, 1];\n    matrix ||= [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(rect, bbox, matrix);\n    transform[4] -= rect[0];\n    transform[5] -= rect[1];\n    coords = Util.applyTransform(coords, transform);\n    return Util.applyTransform(coords, matrix);\n  }\n  getFieldObject() {\n    if (this.data.kidIds) {\n      return {\n        id: this.data.id,\n        actions: this.data.actions,\n        name: this.data.fieldName,\n        strokeColor: this.data.borderColor,\n        fillColor: this.data.backgroundColor,\n        type: \"\",\n        kidIds: this.data.kidIds,\n        page: this.data.pageIndex,\n        rotation: this.rotation\n      };\n    }\n    return null;\n  }\n  reset() {\n    for (const stream of this._streams) {\n      stream.reset();\n    }\n  }\n  _constructFieldName(dict) {\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n    let loopDict = dict;\n    const visited = new RefSet();\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (!(loopDict instanceof Dict) || loopDict.objId && visited.has(loopDict.objId)) {\n        break;\n      }\n      if (loopDict.objId) {\n        visited.put(loopDict.objId);\n      }\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n}\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.rawWidth = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (width instanceof Name) {\n      this.width = 0;\n      return;\n    }\n    if (typeof width === \"number\") {\n      if (width > 0) {\n        this.rawWidth = width;\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n        if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n  setStyle(style) {\n    if (!(style instanceof Name)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n      default:\n        break;\n    }\n  }\n  setDashArray(dashArray, forceStyle = false) {\n    if (Array.isArray(dashArray)) {\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (dashArray.length === 0 || isValid && !allZeros) {\n        this.dashArray = dashArray;\n        if (forceStyle) {\n          this.setStyle(Name.get(\"D\"));\n        }\n      } else {\n        this.width = 0;\n      }\n    } else if (dashArray) {\n      this.width = 0;\n    }\n  }\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\nclass MarkupAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict\n    } = params;\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n      const rt = dict.get(\"RT\");\n      this.data.replyType = rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n    }\n    let popupRef = null;\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      const parent = dict.get(\"IRT\");\n      this.setTitle(parent.get(\"T\"));\n      this.data.titleObj = this._title;\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contentsObj = this._contents;\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n      popupRef = parent.getRaw(\"Popup\");\n      if (!parent.has(\"C\")) {\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.titleObj = this._title;\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n      popupRef = dict.getRaw(\"Popup\");\n      if (!dict.has(\"C\")) {\n        this.data.color = null;\n      }\n    }\n    this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null;\n    if (dict.has(\"RC\")) {\n      this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n    }\n  }\n  setCreationDate(creationDate) {\n    this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n  }\n  _setDefaultAppearance({\n    xref,\n    extra,\n    strokeColor,\n    fillColor,\n    blendMode,\n    strokeAlpha,\n    fillAlpha,\n    pointsCallback\n  }) {\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n    const buffer = [\"q\"];\n    if (extra) {\n      buffer.push(extra);\n    }\n    if (strokeColor) {\n      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n    }\n    if (fillColor) {\n      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n    }\n    let pointsArray = this.data.quadPoints;\n    if (!pointsArray) {\n      pointsArray = Float32Array.from([this.rectangle[0], this.rectangle[3], this.rectangle[2], this.rectangle[3], this.rectangle[0], this.rectangle[1], this.rectangle[2], this.rectangle[1]]);\n    }\n    for (let i = 0, ii = pointsArray.length; i < ii; i += 8) {\n      const [mX, MX, mY, MY] = pointsCallback(buffer, pointsArray.subarray(i, i + 8));\n      minX = Math.min(minX, mX);\n      maxX = Math.max(maxX, MX);\n      minY = Math.min(minY, mY);\n      maxY = Math.max(maxY, MY);\n    }\n    buffer.push(\"Q\");\n    const formDict = new Dict(xref);\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    const appearanceStream = new StringStream(buffer.join(\" \"));\n    appearanceStream.dict = appearanceStreamDict;\n    formDict.set(\"Fm0\", appearanceStream);\n    const gsDict = new Dict(xref);\n    if (blendMode) {\n      gsDict.set(\"BM\", Name.get(blendMode));\n    }\n    if (typeof strokeAlpha === \"number\") {\n      gsDict.set(\"CA\", strokeAlpha);\n    }\n    if (typeof fillAlpha === \"number\") {\n      gsDict.set(\"ca\", fillAlpha);\n    }\n    const stateDict = new Dict(xref);\n    stateDict.set(\"GS0\", gsDict);\n    const resources = new Dict(xref);\n    resources.set(\"ExtGState\", stateDict);\n    resources.set(\"XObject\", formDict);\n    const appearanceDict = new Dict(xref);\n    appearanceDict.set(\"Resources\", resources);\n    const bbox = this.data.rect = [minX, minY, maxX, maxY];\n    appearanceDict.set(\"BBox\", bbox);\n    this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n    this.appearance.dict = appearanceDict;\n    this._streams.push(this.appearance, appearanceStream);\n  }\n  static async createNewAnnotation(xref, annotation, changes, params) {\n    if (!annotation.ref) {\n      annotation.ref = xref.getNewTemporaryRef();\n    }\n    const annotationRef = annotation.ref;\n    const ap = await this.createNewAppearanceStream(annotation, xref, params);\n    let annotationDict;\n    if (ap) {\n      const apRef = xref.getNewTemporaryRef();\n      annotationDict = this.createNewDict(annotation, xref, {\n        apRef\n      });\n      changes.put(apRef, {\n        data: ap\n      });\n    } else {\n      annotationDict = this.createNewDict(annotation, xref, {});\n    }\n    if (Number.isInteger(annotation.parentTreeId)) {\n      annotationDict.set(\"StructParent\", annotation.parentTreeId);\n    }\n    changes.put(annotationRef, {\n      data: annotationDict\n    });\n    return {\n      ref: annotationRef\n    };\n  }\n  static async createNewPrintAnnotation(annotationGlobals, xref, annotation, params) {\n    const ap = await this.createNewAppearanceStream(annotation, xref, params);\n    const annotationDict = this.createNewDict(annotation, xref, ap ? {\n      ap\n    } : {});\n    const newAnnotation = new this.prototype.constructor({\n      dict: annotationDict,\n      xref,\n      annotationGlobals,\n      evaluatorOptions: params.evaluatorOptions\n    });\n    if (annotation.ref) {\n      newAnnotation.ref = newAnnotation.refToReplace = annotation.ref;\n    }\n    return newAnnotation;\n  }\n}\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref,\n      annotationGlobals\n    } = params;\n    const data = this.data;\n    this._needAppearances = params.needAppearances;\n    data.annotationType = AnnotationType.WIDGET;\n    if (data.fieldName === undefined) {\n      data.fieldName = this._constructFieldName(dict);\n    }\n    if (data.actions === undefined) {\n      data.actions = collectActions(xref, dict, AnnotationActionEventType);\n    }\n    let fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true\n    });\n    data.fieldValue = this._decodeFormValue(fieldValue);\n    const defaultFieldValue = getInheritableProperty({\n      dict,\n      key: \"DV\",\n      getArray: true\n    });\n    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n    if (fieldValue === undefined && annotationGlobals.xfaDatasets) {\n      const path = this._title.str;\n      if (path) {\n        this._hasValueFromXFA = true;\n        data.fieldValue = fieldValue = annotationGlobals.xfaDatasets.getValue(path);\n      }\n    }\n    if (fieldValue === undefined && data.defaultFieldValue !== null) {\n      data.fieldValue = data.defaultFieldValue;\n    }\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n    this.setDefaultAppearance(params);\n    data.hasAppearance ||= this._needAppearances && data.fieldValue !== undefined && data.fieldValue !== null;\n    const fieldType = getInheritableProperty({\n      dict,\n      key: \"FT\"\n    });\n    data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n    const localResources = getInheritableProperty({\n      dict,\n      key: \"DR\"\n    });\n    const acroFormResources = annotationGlobals.acroForm.get(\"DR\");\n    const appearanceResources = this.appearance?.dict.get(\"Resources\");\n    this._fieldResources = {\n      localResources,\n      acroFormResources,\n      appearanceResources,\n      mergedResources: Dict.merge({\n        xref,\n        dictArray: [localResources, appearanceResources, acroFormResources],\n        mergeSubDicts: true\n      })\n    };\n    data.fieldFlags = getInheritableProperty({\n      dict,\n      key: \"Ff\"\n    });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n    data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\n    data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) || this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\n  }\n  _decodeFormValue(formValue) {\n    if (Array.isArray(formValue)) {\n      return formValue.filter(item => typeof item === \"string\").map(item => stringToPDFString(item));\n    } else if (formValue instanceof Name) {\n      return stringToPDFString(formValue.name);\n    } else if (typeof formValue === \"string\") {\n      return stringToPDFString(formValue);\n    }\n    return null;\n  }\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n  _isViewable(flags) {\n    return true;\n  }\n  mustBeViewed(annotationStorage, renderForms) {\n    if (renderForms) {\n      return this.viewable;\n    }\n    return super.mustBeViewed(annotationStorage, renderForms) && !this._hasFlag(this.flags, AnnotationFlag.NOVIEW);\n  }\n  getRotationMatrix(annotationStorage) {\n    let rotation = annotationStorage?.get(this.data.id)?.rotation;\n    if (rotation === undefined) {\n      rotation = this.rotation;\n    }\n    if (rotation === 0) {\n      return IDENTITY_MATRIX;\n    }\n    const width = this.data.rect[2] - this.data.rect[0];\n    const height = this.data.rect[3] - this.data.rect[1];\n    return getRotationMatrix(rotation, width, height);\n  }\n  getBorderAndBackgroundAppearances(annotationStorage) {\n    let rotation = annotationStorage?.get(this.data.id)?.rotation;\n    if (rotation === undefined) {\n      rotation = this.rotation;\n    }\n    if (!this.backgroundColor && !this.borderColor) {\n      return \"\";\n    }\n    const width = this.data.rect[2] - this.data.rect[0];\n    const height = this.data.rect[3] - this.data.rect[1];\n    const rect = rotation === 0 || rotation === 180 ? `0 0 ${width} ${height} re` : `0 0 ${height} ${width} re`;\n    let str = \"\";\n    if (this.backgroundColor) {\n      str = `${getPdfColor(this.backgroundColor, true)} ${rect} f `;\n    }\n    if (this.borderColor) {\n      const borderWidth = this.borderStyle.width || 1;\n      str += `${borderWidth} w ${getPdfColor(this.borderColor, false)} ${rect} S `;\n    }\n    return str;\n  }\n  async getOperatorList(evaluator, task, intent, annotationStorage) {\n    if (intent & RenderingIntentFlag.ANNOTATIONS_FORMS && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) {\n      return {\n        opList: new OperatorList(),\n        separateForm: true,\n        separateCanvas: false\n      };\n    }\n    if (!this._hasText) {\n      return super.getOperatorList(evaluator, task, intent, annotationStorage);\n    }\n    const content = await this._getAppearance(evaluator, task, intent, annotationStorage);\n    if (this.appearance && content === null) {\n      return super.getOperatorList(evaluator, task, intent, annotationStorage);\n    }\n    const opList = new OperatorList();\n    if (!this._defaultAppearance || content === null) {\n      return {\n        opList,\n        separateForm: false,\n        separateCanvas: false\n      };\n    }\n    const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n    const matrix = [1, 0, 0, 1, 0, 0];\n    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n    const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n    let optionalContent;\n    if (this.oc) {\n      optionalContent = await evaluator.parseMarkedContentProps(this.oc, null);\n    }\n    if (optionalContent !== undefined) {\n      opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    opList.addOp(OPS.beginAnnotation, [this.data.id, this.data.rect, transform, this.getRotationMatrix(annotationStorage), isUsingOwnCanvas]);\n    const stream = new StringStream(content);\n    await evaluator.getOperatorList({\n      stream,\n      task,\n      resources: this._fieldResources.mergedResources,\n      operatorList: opList\n    });\n    opList.addOp(OPS.endAnnotation, []);\n    if (optionalContent !== undefined) {\n      opList.addOp(OPS.endMarkedContent, []);\n    }\n    return {\n      opList,\n      separateForm: false,\n      separateCanvas: isUsingOwnCanvas\n    };\n  }\n  _getMKDict(rotation) {\n    const mk = new Dict(null);\n    if (rotation) {\n      mk.set(\"R\", rotation);\n    }\n    if (this.borderColor) {\n      mk.set(\"BC\", getPdfColorArray(this.borderColor));\n    }\n    if (this.backgroundColor) {\n      mk.set(\"BG\", getPdfColorArray(this.backgroundColor));\n    }\n    return mk.size > 0 ? mk : null;\n  }\n  amendSavedDict(annotationStorage, dict) {}\n  setValue(dict, value, xref, changes) {\n    const {\n      dict: parentDict,\n      ref: parentRef\n    } = getParentToUpdate(dict, this.ref, xref);\n    if (!parentDict) {\n      dict.set(\"V\", value);\n    } else if (!changes.has(parentRef)) {\n      const newParentDict = parentDict.clone();\n      newParentDict.set(\"V\", value);\n      changes.put(parentRef, {\n        data: newParentDict\n      });\n      return newParentDict;\n    }\n    return null;\n  }\n  async save(evaluator, task, annotationStorage, changes) {\n    const storageEntry = annotationStorage?.get(this.data.id);\n    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n    let value = storageEntry?.value,\n      rotation = storageEntry?.rotation;\n    if (value === this.data.fieldValue || value === undefined) {\n      if (!this._hasValueFromXFA && rotation === undefined && flags === undefined) {\n        return;\n      }\n      value ||= this.data.fieldValue;\n    }\n    if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && isArrayEqual(value, this.data.fieldValue) && flags === undefined) {\n      return;\n    }\n    if (rotation === undefined) {\n      rotation = this.rotation;\n    }\n    let appearance = null;\n    if (!this._needAppearances) {\n      appearance = await this._getAppearance(evaluator, task, RenderingIntentFlag.SAVE, annotationStorage);\n      if (appearance === null && flags === undefined) {\n        return;\n      }\n    } else {}\n    let needAppearances = false;\n    if (appearance?.needAppearances) {\n      needAppearances = true;\n      appearance = null;\n    }\n    const {\n      xref\n    } = evaluator;\n    const originalDict = xref.fetchIfRef(this.ref);\n    if (!(originalDict instanceof Dict)) {\n      return;\n    }\n    const dict = new Dict(xref);\n    for (const key of originalDict.getKeys()) {\n      if (key !== \"AP\") {\n        dict.set(key, originalDict.getRaw(key));\n      }\n    }\n    if (flags !== undefined) {\n      dict.set(\"F\", flags);\n      if (appearance === null && !needAppearances) {\n        const ap = originalDict.getRaw(\"AP\");\n        if (ap) {\n          dict.set(\"AP\", ap);\n        }\n      }\n    }\n    const xfa = {\n      path: this.data.fieldName,\n      value\n    };\n    const newParentDict = this.setValue(dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) : stringToAsciiOrUTF16BE(value), xref, changes);\n    this.amendSavedDict(annotationStorage, newParentDict || dict);\n    const maybeMK = this._getMKDict(rotation);\n    if (maybeMK) {\n      dict.set(\"MK\", maybeMK);\n    }\n    changes.put(this.ref, {\n      data: dict,\n      xfa,\n      needAppearances\n    });\n    if (appearance !== null) {\n      const newRef = xref.getNewTemporaryRef();\n      const AP = new Dict(xref);\n      dict.set(\"AP\", AP);\n      AP.set(\"N\", newRef);\n      const resources = this._getSaveFieldResources(xref);\n      const appearanceStream = new StringStream(appearance);\n      const appearanceDict = appearanceStream.dict = new Dict(xref);\n      appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n      appearanceDict.set(\"Resources\", resources);\n      appearanceDict.set(\"BBox\", [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]);\n      const rotationMatrix = this.getRotationMatrix(annotationStorage);\n      if (rotationMatrix !== IDENTITY_MATRIX) {\n        appearanceDict.set(\"Matrix\", rotationMatrix);\n      }\n      changes.put(newRef, {\n        data: appearanceStream,\n        xfa: null,\n        needAppearances: false\n      });\n    }\n    dict.set(\"M\", `D:${getModificationDate()}`);\n  }\n  async _getAppearance(evaluator, task, intent, annotationStorage) {\n    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n    if (isPassword) {\n      return null;\n    }\n    const storageEntry = annotationStorage?.get(this.data.id);\n    let value, rotation;\n    if (storageEntry) {\n      value = storageEntry.formattedValue || storageEntry.value;\n      rotation = storageEntry.rotation;\n    }\n    if (rotation === undefined && value === undefined && !this._needAppearances) {\n      if (!this._hasValueFromXFA || this.appearance) {\n        return null;\n      }\n    }\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n    if (value === undefined) {\n      value = this.data.fieldValue;\n      if (!value) {\n        return `/Tx BMC q ${colors}Q EMC`;\n      }\n    }\n    if (Array.isArray(value) && value.length === 1) {\n      value = value[0];\n    }\n    assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n    value = value.trimEnd();\n    if (this.data.combo) {\n      const option = this.data.options.find(({\n        exportValue\n      }) => value === exportValue);\n      value = option?.displayValue || value;\n    }\n    if (value === \"\") {\n      return `/Tx BMC q ${colors}Q EMC`;\n    }\n    if (rotation === undefined) {\n      rotation = this.rotation;\n    }\n    let lineCount = -1;\n    let lines;\n    if (this.data.multiLine) {\n      lines = value.split(/\\r\\n?|\\n/).map(line => line.normalize(\"NFC\"));\n      lineCount = lines.length;\n    } else {\n      lines = [value.replace(/\\r\\n?|\\n/, \"\").normalize(\"NFC\")];\n    }\n    const defaultPadding = 1;\n    const defaultHPadding = 2;\n    let totalHeight = this.data.rect[3] - this.data.rect[1];\n    let totalWidth = this.data.rect[2] - this.data.rect[0];\n    if (rotation === 90 || rotation === 270) {\n      [totalWidth, totalHeight] = [totalHeight, totalWidth];\n    }\n    if (!this._defaultAppearance) {\n      this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n    }\n    let font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n    let defaultAppearance, fontSize, lineHeight;\n    const encodedLines = [];\n    let encodingError = false;\n    for (const line of lines) {\n      const encodedString = font.encodeString(line);\n      if (encodedString.length > 1) {\n        encodingError = true;\n      }\n      encodedLines.push(encodedString.join(\"\"));\n    }\n    if (encodingError && intent & RenderingIntentFlag.SAVE) {\n      return {\n        needAppearances: true\n      };\n    }\n    if (encodingError && this._isOffscreenCanvasSupported) {\n      const fontFamily = this.data.comb ? \"monospace\" : \"sans-serif\";\n      const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\n      const resources = fakeUnicodeFont.createFontResources(lines.join(\"\"));\n      const newFont = resources.getRaw(\"Font\");\n      if (this._fieldResources.mergedResources.has(\"Font\")) {\n        const oldFont = this._fieldResources.mergedResources.get(\"Font\");\n        for (const key of newFont.getKeys()) {\n          oldFont.set(key, newFont.getRaw(key));\n        }\n      } else {\n        this._fieldResources.mergedResources.set(\"Font\", newFont);\n      }\n      const fontName = fakeUnicodeFont.fontName.name;\n      font = await WidgetAnnotation._getFontData(evaluator, task, {\n        fontName,\n        fontSize: 0\n      }, resources);\n      for (let i = 0, ii = encodedLines.length; i < ii; i++) {\n        encodedLines[i] = stringToUTF16String(lines[i]);\n      }\n      const savedDefaultAppearance = Object.assign(Object.create(null), this.data.defaultAppearanceData);\n      this.data.defaultAppearanceData.fontSize = 0;\n      this.data.defaultAppearanceData.fontName = fontName;\n      [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n      this.data.defaultAppearanceData = savedDefaultAppearance;\n    } else {\n      if (!this._isOffscreenCanvasSupported) {\n        warn(\"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\");\n      }\n      [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(totalHeight - 2 * defaultPadding, totalWidth - 2 * defaultHPadding, value, font, lineCount);\n    }\n    let descent = font.descent;\n    if (isNaN(descent)) {\n      descent = BASELINE_FACTOR * lineHeight;\n    } else {\n      descent = Math.max(BASELINE_FACTOR * lineHeight, Math.abs(descent) * fontSize);\n    }\n    const defaultVPadding = Math.min(Math.floor((totalHeight - fontSize) / 2), defaultPadding);\n    const alignment = this.data.textAlignment;\n    if (this.data.multiLine) {\n      return this._getMultilineAppearance(defaultAppearance, encodedLines, font, fontSize, totalWidth, totalHeight, alignment, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage);\n    }\n    if (this.data.comb) {\n      return this._getCombAppearance(defaultAppearance, font, encodedLines[0], fontSize, totalWidth, totalHeight, defaultHPadding, defaultVPadding, descent, lineHeight, annotationStorage);\n    }\n    const bottomPadding = defaultVPadding + descent;\n    if (alignment === 0 || alignment > 2) {\n      return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(bottomPadding)} Tm (${escapeString(encodedLines[0])}) Tj` + \" ET Q EMC\";\n    }\n    const prevInfo = {\n      shift: 0\n    };\n    const renderedText = this._renderText(encodedLines[0], font, fontSize, totalWidth, alignment, prevInfo, defaultHPadding, bottomPadding);\n    return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + \" ET Q EMC\";\n  }\n  static async _getFontData(evaluator, task, appearanceData, resources) {\n    const operatorList = new OperatorList();\n    const initialState = {\n      font: null,\n      clone() {\n        return this;\n      }\n    };\n    const {\n      fontName,\n      fontSize\n    } = appearanceData;\n    await evaluator.handleSetFont(resources, [fontName && Name.get(fontName), fontSize], null, operatorList, task, initialState, null);\n    return initialState.font;\n  }\n  _getTextWidth(text, font) {\n    return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000;\n  }\n  _computeFontSize(height, width, text, font, lineCount) {\n    let {\n      fontSize\n    } = this.data.defaultAppearanceData;\n    let lineHeight = (fontSize || 12) * LINE_FACTOR,\n      numberOfLines = Math.round(height / lineHeight);\n    if (!fontSize) {\n      const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n      if (lineCount === -1) {\n        const textWidth = this._getTextWidth(text, font);\n        fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth));\n        numberOfLines = 1;\n      } else {\n        const lines = text.split(/\\r\\n?|\\n/);\n        const cachedLines = [];\n        for (const line of lines) {\n          const encoded = font.encodeString(line).join(\"\");\n          const glyphs = font.charsToGlyphs(encoded);\n          const positions = font.getCharPositions(encoded);\n          cachedLines.push({\n            line: encoded,\n            glyphs,\n            positions\n          });\n        }\n        const isTooBig = fsize => {\n          let totalHeight = 0;\n          for (const cache of cachedLines) {\n            const chunks = this._splitLine(null, font, fsize, width, cache);\n            totalHeight += chunks.length * fsize;\n            if (totalHeight > height) {\n              return true;\n            }\n          }\n          return false;\n        };\n        numberOfLines = Math.max(numberOfLines, lineCount);\n        while (true) {\n          lineHeight = height / numberOfLines;\n          fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n          if (isTooBig(fontSize)) {\n            numberOfLines++;\n            continue;\n          }\n          break;\n        }\n      }\n      const {\n        fontName,\n        fontColor\n      } = this.data.defaultAppearanceData;\n      this._defaultAppearance = createDefaultAppearance({\n        fontSize,\n        fontName,\n        fontColor\n      });\n    }\n    return [this._defaultAppearance, fontSize, height / numberOfLines];\n  }\n  _renderText(text, font, fontSize, totalWidth, alignment, prevInfo, hPadding, vPadding) {\n    let shift;\n    if (alignment === 1) {\n      const width = this._getTextWidth(text, font) * fontSize;\n      shift = (totalWidth - width) / 2;\n    } else if (alignment === 2) {\n      const width = this._getTextWidth(text, font) * fontSize;\n      shift = totalWidth - width - hPadding;\n    } else {\n      shift = hPadding;\n    }\n    const shiftStr = numberToString(shift - prevInfo.shift);\n    prevInfo.shift = shift;\n    vPadding = numberToString(vPadding);\n    return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\n  }\n  _getSaveFieldResources(xref) {\n    const {\n      localResources,\n      appearanceResources,\n      acroFormResources\n    } = this._fieldResources;\n    const fontName = this.data.defaultAppearanceData?.fontName;\n    if (!fontName) {\n      return localResources || Dict.empty;\n    }\n    for (const resources of [localResources, appearanceResources]) {\n      if (resources instanceof Dict) {\n        const localFont = resources.get(\"Font\");\n        if (localFont instanceof Dict && localFont.has(fontName)) {\n          return resources;\n        }\n      }\n    }\n    if (acroFormResources instanceof Dict) {\n      const acroFormFont = acroFormResources.get(\"Font\");\n      if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n        const subFontDict = new Dict(xref);\n        subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n        const subResourcesDict = new Dict(xref);\n        subResourcesDict.set(\"Font\", subFontDict);\n        return Dict.merge({\n          xref,\n          dictArray: [subResourcesDict, localResources],\n          mergeSubDicts: true\n        });\n      }\n    }\n    return localResources || Dict.empty;\n  }\n  getFieldObject() {\n    return null;\n  }\n}\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict\n    } = params;\n    if (dict.has(\"PMD\")) {\n      this.flags |= AnnotationFlag.HIDDEN;\n      this.data.hidden = true;\n      warn(\"Barcodes are not supported\");\n    }\n    this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\n    this._hasText = true;\n    if (typeof this.data.fieldValue !== \"string\") {\n      this.data.fieldValue = \"\";\n    }\n    let alignment = getInheritableProperty({\n      dict,\n      key: \"Q\"\n    });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n    let maximumLength = getInheritableProperty({\n      dict,\n      key: \"MaxLen\"\n    });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = 0;\n    }\n    this.data.maxLen = maximumLength;\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0;\n    this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\n  }\n  get hasTextContent() {\n    return !!this.appearance && !this._needAppearances;\n  }\n  _getCombAppearance(defaultAppearance, font, text, fontSize, width, height, hPadding, vPadding, descent, lineHeight, annotationStorage) {\n    const combWidth = width / this.data.maxLen;\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n    const buf = [];\n    const positions = font.getCharPositions(text);\n    for (const [start, end] of positions) {\n      buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n    }\n    const renderedComb = buf.join(` ${numberToString(combWidth)} 0 Td `);\n    return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 ${numberToString(hPadding)} ${numberToString(vPadding + descent)} Tm ${renderedComb}` + \" ET Q EMC\";\n  }\n  _getMultilineAppearance(defaultAppearance, lines, font, fontSize, width, height, alignment, hPadding, vPadding, descent, lineHeight, annotationStorage) {\n    const buf = [];\n    const totalWidth = width - 2 * hPadding;\n    const prevInfo = {\n      shift: 0\n    };\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\n      for (let j = 0, jj = chunks.length; j < jj; j++) {\n        const chunk = chunks[j];\n        const vShift = i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\n        buf.push(this._renderText(chunk, font, fontSize, width, alignment, prevInfo, hPadding, vShift));\n      }\n    }\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n    const renderedText = buf.join(\"\\n\");\n    return `/Tx BMC q ${colors}BT ` + defaultAppearance + ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` + \" ET Q EMC\";\n  }\n  _splitLine(line, font, fontSize, width, cache = {}) {\n    line = cache.line || line;\n    const glyphs = cache.glyphs || font.charsToGlyphs(line);\n    if (glyphs.length <= 1) {\n      return [line];\n    }\n    const positions = cache.positions || font.getCharPositions(line);\n    const scale = fontSize / 1000;\n    const chunks = [];\n    let lastSpacePosInStringStart = -1,\n      lastSpacePosInStringEnd = -1,\n      lastSpacePos = -1,\n      startChunk = 0,\n      currentWidth = 0;\n    for (let i = 0, ii = glyphs.length; i < ii; i++) {\n      const [start, end] = positions[i];\n      const glyph = glyphs[i];\n      const glyphWidth = glyph.width * scale;\n      if (glyph.unicode === \" \") {\n        if (currentWidth + glyphWidth > width) {\n          chunks.push(line.substring(startChunk, start));\n          startChunk = start;\n          currentWidth = glyphWidth;\n          lastSpacePosInStringStart = -1;\n          lastSpacePos = -1;\n        } else {\n          currentWidth += glyphWidth;\n          lastSpacePosInStringStart = start;\n          lastSpacePosInStringEnd = end;\n          lastSpacePos = i;\n        }\n      } else if (currentWidth + glyphWidth > width) {\n        if (lastSpacePosInStringStart !== -1) {\n          chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n          startChunk = lastSpacePosInStringEnd;\n          i = lastSpacePos + 1;\n          lastSpacePosInStringStart = -1;\n          currentWidth = 0;\n        } else {\n          chunks.push(line.substring(startChunk, start));\n          startChunk = start;\n          currentWidth = glyphWidth;\n        }\n      } else {\n        currentWidth += glyphWidth;\n      }\n    }\n    if (startChunk < line.length) {\n      chunks.push(line.substring(startChunk, line.length));\n    }\n    return chunks;\n  }\n  async extractTextContent(evaluator, task, viewBox) {\n    await super.extractTextContent(evaluator, task, viewBox);\n    const text = this.data.textContent;\n    if (!text) {\n      return;\n    }\n    const allText = text.join(\"\\n\");\n    if (allText === this.data.fieldValue) {\n      return;\n    }\n    const regex = allText.replaceAll(/([.*+?^${}()|[\\]\\\\])|(\\s+)/g, (_m, p1) => p1 ? `\\\\${p1}` : \"\\\\s+\");\n    if (new RegExp(`^\\\\s*${regex}\\\\s*$`).test(this.data.fieldValue)) {\n      this.data.textContent = this.data.fieldValue.split(\"\\n\");\n    }\n  }\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue,\n      defaultValue: this.data.defaultFieldValue || \"\",\n      multiline: this.data.multiLine,\n      password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n      charLimit: this.data.maxLen,\n      comb: this.data.comb,\n      editable: !this.data.readOnly,\n      hidden: this.data.hidden,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      rotation: this.rotation,\n      type: \"text\"\n    };\n  }\n}\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    this.checkedAppearance = null;\n    this.uncheckedAppearance = null;\n    this.data.checkBox = !this.hasFieldFlag(AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton = this.hasFieldFlag(AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.isTooltipOnly = false;\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this.data.hasOwnCanvas = true;\n      this.data.noHTML = false;\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n  async getOperatorList(evaluator, task, intent, annotationStorage) {\n    if (this.data.pushButton) {\n      return super.getOperatorList(evaluator, task, intent, false, annotationStorage);\n    }\n    let value = null;\n    let rotation = null;\n    if (annotationStorage) {\n      const storageEntry = annotationStorage.get(this.data.id);\n      value = storageEntry ? storageEntry.value : null;\n      rotation = storageEntry ? storageEntry.rotation : null;\n    }\n    if (value === null && this.appearance) {\n      return super.getOperatorList(evaluator, task, intent, annotationStorage);\n    }\n    if (value === null || value === undefined) {\n      value = this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue;\n    }\n    const appearance = value ? this.checkedAppearance : this.uncheckedAppearance;\n    if (appearance) {\n      const savedAppearance = this.appearance;\n      const savedMatrix = lookupMatrix(appearance.dict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n      if (rotation) {\n        appearance.dict.set(\"Matrix\", this.getRotationMatrix(annotationStorage));\n      }\n      this.appearance = appearance;\n      const operatorList = super.getOperatorList(evaluator, task, intent, annotationStorage);\n      this.appearance = savedAppearance;\n      appearance.dict.set(\"Matrix\", savedMatrix);\n      return operatorList;\n    }\n    return {\n      opList: new OperatorList(),\n      separateForm: false,\n      separateCanvas: false\n    };\n  }\n  async save(evaluator, task, annotationStorage, changes) {\n    if (this.data.checkBox) {\n      this._saveCheckbox(evaluator, task, annotationStorage, changes);\n      return;\n    }\n    if (this.data.radioButton) {\n      this._saveRadioButton(evaluator, task, annotationStorage, changes);\n    }\n  }\n  async _saveCheckbox(evaluator, task, annotationStorage, changes) {\n    if (!annotationStorage) {\n      return;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n    let rotation = storageEntry?.rotation,\n      value = storageEntry?.value;\n    if (rotation === undefined && flags === undefined) {\n      if (value === undefined) {\n        return;\n      }\n      const defaultValue = this.data.fieldValue === this.data.exportValue;\n      if (defaultValue === value) {\n        return;\n      }\n    }\n    let dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!(dict instanceof Dict)) {\n      return;\n    }\n    dict = dict.clone();\n    if (rotation === undefined) {\n      rotation = this.rotation;\n    }\n    if (value === undefined) {\n      value = this.data.fieldValue === this.data.exportValue;\n    }\n    const xfa = {\n      path: this.data.fieldName,\n      value: value ? this.data.exportValue : \"\"\n    };\n    const name = Name.get(value ? this.data.exportValue : \"Off\");\n    this.setValue(dict, name, evaluator.xref, changes);\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n    if (flags !== undefined) {\n      dict.set(\"F\", flags);\n    }\n    const maybeMK = this._getMKDict(rotation);\n    if (maybeMK) {\n      dict.set(\"MK\", maybeMK);\n    }\n    changes.put(this.ref, {\n      data: dict,\n      xfa,\n      needAppearances: false\n    });\n  }\n  async _saveRadioButton(evaluator, task, annotationStorage, changes) {\n    if (!annotationStorage) {\n      return;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n    let rotation = storageEntry?.rotation,\n      value = storageEntry?.value;\n    if (rotation === undefined && flags === undefined) {\n      if (value === undefined) {\n        return;\n      }\n      const defaultValue = this.data.fieldValue === this.data.buttonValue;\n      if (defaultValue === value) {\n        return;\n      }\n    }\n    let dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!(dict instanceof Dict)) {\n      return;\n    }\n    dict = dict.clone();\n    if (value === undefined) {\n      value = this.data.fieldValue === this.data.buttonValue;\n    }\n    if (rotation === undefined) {\n      rotation = this.rotation;\n    }\n    const xfa = {\n      path: this.data.fieldName,\n      value: value ? this.data.buttonValue : \"\"\n    };\n    const name = Name.get(value ? this.data.buttonValue : \"Off\");\n    if (value) {\n      this.setValue(dict, name, evaluator.xref, changes);\n    }\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n    if (flags !== undefined) {\n      dict.set(\"F\", flags);\n    }\n    const maybeMK = this._getMKDict(rotation);\n    if (maybeMK) {\n      dict.set(\"MK\", maybeMK);\n    }\n    changes.put(this.ref, {\n      data: dict,\n      xfa,\n      needAppearances: false\n    });\n  }\n  _getDefaultCheckedAppearance(params, type) {\n    const width = this.data.rect[2] - this.data.rect[0];\n    const height = this.data.rect[3] - this.data.rect[1];\n    const bbox = [0, 0, width, height];\n    const FONT_RATIO = 0.8;\n    const fontSize = Math.min(width, height) * FONT_RATIO;\n    let metrics, char;\n    if (type === \"check\") {\n      metrics = {\n        width: 0.755 * fontSize,\n        height: 0.705 * fontSize\n      };\n      char = \"\\x33\";\n    } else if (type === \"disc\") {\n      metrics = {\n        width: 0.791 * fontSize,\n        height: 0.705 * fontSize\n      };\n      char = \"\\x6C\";\n    } else {\n      unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n    }\n    const xShift = numberToString((width - metrics.width) / 2);\n    const yShift = numberToString((height - metrics.height) / 2);\n    const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n    const appearanceStreamDict = new Dict(params.xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", bbox);\n    appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n    const resources = new Dict(params.xref);\n    const font = new Dict(params.xref);\n    font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n    resources.set(\"Font\", font);\n    appearanceStreamDict.set(\"Resources\", resources);\n    this.checkedAppearance = new StringStream(appearance);\n    this.checkedAppearance.dict = appearanceStreamDict;\n    this._streams.push(this.checkedAppearance);\n  }\n  _processCheckBox(params) {\n    const customAppearance = params.dict.get(\"AP\");\n    if (!(customAppearance instanceof Dict)) {\n      return;\n    }\n    const normalAppearance = customAppearance.get(\"N\");\n    if (!(normalAppearance instanceof Dict)) {\n      return;\n    }\n    const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n    if (typeof asValue === \"string\") {\n      this.data.fieldValue = asValue;\n    }\n    const yes = this.data.fieldValue !== null && this.data.fieldValue !== \"Off\" ? this.data.fieldValue : \"Yes\";\n    const exportValues = normalAppearance.getKeys();\n    if (exportValues.length === 0) {\n      exportValues.push(\"Off\", yes);\n    } else if (exportValues.length === 1) {\n      if (exportValues[0] === \"Off\") {\n        exportValues.push(yes);\n      } else {\n        exportValues.unshift(\"Off\");\n      }\n    } else if (exportValues.includes(yes)) {\n      exportValues.length = 0;\n      exportValues.push(\"Off\", yes);\n    } else {\n      const otherYes = exportValues.find(v => v !== \"Off\");\n      exportValues.length = 0;\n      exportValues.push(\"Off\", otherYes);\n    }\n    if (!exportValues.includes(this.data.fieldValue)) {\n      this.data.fieldValue = \"Off\";\n    }\n    this.data.exportValue = exportValues[1];\n    const checkedAppearance = normalAppearance.get(this.data.exportValue);\n    this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n    const uncheckedAppearance = normalAppearance.get(\"Off\");\n    this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"check\");\n    }\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n    this._fallbackFontDict = this.fallbackFontDict;\n    if (this.data.defaultFieldValue === null) {\n      this.data.defaultFieldValue = \"Off\";\n    }\n  }\n  _processRadioButton(params) {\n    this.data.buttonValue = null;\n    const fieldParent = params.dict.get(\"Parent\");\n    if (fieldParent instanceof Dict) {\n      this.parent = params.dict.getRaw(\"Parent\");\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (fieldParentValue instanceof Name) {\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n      }\n    }\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!(appearanceStates instanceof Dict)) {\n      return;\n    }\n    const normalAppearance = appearanceStates.get(\"N\");\n    if (!(normalAppearance instanceof Dict)) {\n      return;\n    }\n    for (const key of normalAppearance.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = this._decodeFormValue(key);\n        break;\n      }\n    }\n    const checkedAppearance = normalAppearance.get(this.data.buttonValue);\n    this.checkedAppearance = checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n    const uncheckedAppearance = normalAppearance.get(\"Off\");\n    this.uncheckedAppearance = uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"disc\");\n    }\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n    this._fallbackFontDict = this.fallbackFontDict;\n    if (this.data.defaultFieldValue === null) {\n      this.data.defaultFieldValue = \"Off\";\n    }\n  }\n  _processPushButton(params) {\n    const {\n      dict,\n      annotationGlobals\n    } = params;\n    if (!dict.has(\"A\") && !dict.has(\"AA\") && !this.data.alternativeText) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n    this.data.isTooltipOnly = !dict.has(\"A\") && !dict.has(\"AA\");\n    Catalog.parseDestDictionary({\n      destDict: dict,\n      resultObj: this.data,\n      docBaseUrl: annotationGlobals.baseUrl,\n      docAttachments: annotationGlobals.attachments\n    });\n  }\n  getFieldObject() {\n    let type = \"button\";\n    let exportValues;\n    if (this.data.checkBox) {\n      type = \"checkbox\";\n      exportValues = this.data.exportValue;\n    } else if (this.data.radioButton) {\n      type = \"radiobutton\";\n      exportValues = this.data.buttonValue;\n    }\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue || \"Off\",\n      defaultValue: this.data.defaultFieldValue,\n      exportValues,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      rotation: this.rotation,\n      type\n    };\n  }\n  get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.indices = dict.getArray(\"I\");\n    this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0;\n    this.data.options = [];\n    const options = getInheritableProperty({\n      dict,\n      key: \"Opt\"\n    });\n    if (Array.isArray(options)) {\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n        this.data.options[i] = {\n          exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),\n          displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n        };\n      }\n    }\n    if (!this.hasIndices) {\n      if (typeof this.data.fieldValue === \"string\") {\n        this.data.fieldValue = [this.data.fieldValue];\n      } else if (!this.data.fieldValue) {\n        this.data.fieldValue = [];\n      }\n    } else {\n      this.data.fieldValue = [];\n      const ii = this.data.options.length;\n      for (const i of this.indices) {\n        if (Number.isInteger(i) && i >= 0 && i < ii) {\n          this.data.fieldValue.push(this.data.options[i].exportValue);\n        }\n      }\n    }\n    if (this.data.options.length === 0 && this.data.fieldValue.length > 0) {\n      this.data.options = this.data.fieldValue.map(value => ({\n        exportValue: value,\n        displayValue: value\n      }));\n    }\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n    this._hasText = true;\n  }\n  getFieldObject() {\n    const type = this.data.combo ? \"combobox\" : \"listbox\";\n    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n    return {\n      id: this.data.id,\n      value,\n      defaultValue: this.data.defaultFieldValue,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      numItems: this.data.fieldValue.length,\n      multipleSelection: this.data.multiSelect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      items: this.data.options,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      rotation: this.rotation,\n      type\n    };\n  }\n  amendSavedDict(annotationStorage, dict) {\n    if (!this.hasIndices) {\n      return;\n    }\n    let values = annotationStorage?.get(this.data.id)?.value;\n    if (!Array.isArray(values)) {\n      values = [values];\n    }\n    const indices = [];\n    const {\n      options\n    } = this.data;\n    for (let i = 0, j = 0, ii = options.length; i < ii; i++) {\n      if (options[i].exportValue === values[j]) {\n        indices.push(i);\n        j += 1;\n      }\n    }\n    dict.set(\"I\", indices);\n  }\n  async _getAppearance(evaluator, task, intent, annotationStorage) {\n    if (this.data.combo) {\n      return super._getAppearance(evaluator, task, intent, annotationStorage);\n    }\n    let exportedValue, rotation;\n    const storageEntry = annotationStorage?.get(this.data.id);\n    if (storageEntry) {\n      rotation = storageEntry.rotation;\n      exportedValue = storageEntry.value;\n    }\n    if (rotation === undefined && exportedValue === undefined && !this._needAppearances) {\n      return null;\n    }\n    if (exportedValue === undefined) {\n      exportedValue = this.data.fieldValue;\n    } else if (!Array.isArray(exportedValue)) {\n      exportedValue = [exportedValue];\n    }\n    const defaultPadding = 1;\n    const defaultHPadding = 2;\n    let totalHeight = this.data.rect[3] - this.data.rect[1];\n    let totalWidth = this.data.rect[2] - this.data.rect[0];\n    if (rotation === 90 || rotation === 270) {\n      [totalWidth, totalHeight] = [totalHeight, totalWidth];\n    }\n    const lineCount = this.data.options.length;\n    const valueIndices = [];\n    for (let i = 0; i < lineCount; i++) {\n      const {\n        exportValue\n      } = this.data.options[i];\n      if (exportedValue.includes(exportValue)) {\n        valueIndices.push(i);\n      }\n    }\n    if (!this._defaultAppearance) {\n      this.data.defaultAppearanceData = parseDefaultAppearance(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n    }\n    const font = await WidgetAnnotation._getFontData(evaluator, task, this.data.defaultAppearanceData, this._fieldResources.mergedResources);\n    let defaultAppearance;\n    let {\n      fontSize\n    } = this.data.defaultAppearanceData;\n    if (!fontSize) {\n      const lineHeight = (totalHeight - defaultPadding) / lineCount;\n      let lineWidth = -1;\n      let value;\n      for (const {\n        displayValue\n      } of this.data.options) {\n        const width = this._getTextWidth(displayValue, font);\n        if (width > lineWidth) {\n          lineWidth = width;\n          value = displayValue;\n        }\n      }\n      [defaultAppearance, fontSize] = this._computeFontSize(lineHeight, totalWidth - 2 * defaultHPadding, value, font, -1);\n    } else {\n      defaultAppearance = this._defaultAppearance;\n    }\n    const lineHeight = fontSize * LINE_FACTOR;\n    const vPadding = (lineHeight - fontSize) / 2;\n    const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);\n    let firstIndex = 0;\n    if (valueIndices.length > 0) {\n      const minIndex = Math.min(...valueIndices);\n      const maxIndex = Math.max(...valueIndices);\n      firstIndex = Math.max(0, maxIndex - numberOfVisibleLines + 1);\n      if (firstIndex > minIndex) {\n        firstIndex = minIndex;\n      }\n    }\n    const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\n    const buf = [\"/Tx BMC q\", `1 1 ${totalWidth} ${totalHeight} re W n`];\n    if (valueIndices.length) {\n      buf.push(\"0.600006 0.756866 0.854904 rg\");\n      for (const index of valueIndices) {\n        if (firstIndex <= index && index < end) {\n          buf.push(`1 ${totalHeight - (index - firstIndex + 1) * lineHeight} ${totalWidth} ${lineHeight} re f`);\n        }\n      }\n    }\n    buf.push(\"BT\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\n    const prevInfo = {\n      shift: 0\n    };\n    for (let i = firstIndex; i < end; i++) {\n      const {\n        displayValue\n      } = this.data.options[i];\n      const vpadding = i === firstIndex ? vPadding : 0;\n      buf.push(this._renderText(displayValue, font, fontSize, totalWidth, 0, prevInfo, defaultHPadding, -lineHeight + vpadding));\n    }\n    buf.push(\"ET Q EMC\");\n    return buf.join(\"\\n\");\n  }\n}\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.fieldValue = null;\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = !this.data.hasOwnCanvas;\n  }\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: null,\n      page: this.data.pageIndex,\n      type: \"signature\"\n    };\n  }\n}\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    const DEFAULT_ICON_SIZE = 22;\n    super(params);\n    this.data.noRotate = true;\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = false;\n    const {\n      dict\n    } = params;\n    this.data.annotationType = AnnotationType.TEXT;\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      annotationGlobals\n    } = params;\n    this.data.annotationType = AnnotationType.LINK;\n    this.data.noHTML = false;\n    const quadPoints = getQuadPoints(dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n    this.data.borderColor ||= this.data.color;\n    Catalog.parseDestDictionary({\n      destDict: dict,\n      resultObj: this.data,\n      docBaseUrl: annotationGlobals.baseUrl,\n      docAttachments: annotationGlobals.attachments\n    });\n  }\n}\nclass PopupAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict\n    } = params;\n    this.data.annotationType = AnnotationType.POPUP;\n    this.data.noHTML = false;\n    if (this.data.rect[0] === this.data.rect[2] || this.data.rect[1] === this.data.rect[3]) {\n      this.data.rect = null;\n    }\n    let parentItem = dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n    this.data.parentRect = lookupNormalRect(parentItem.getArray(\"Rect\"), null);\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      parentItem = parentItem.get(\"IRT\");\n    }\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n    if (!parentItem.has(\"C\")) {\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n    this.setTitle(parentItem.get(\"T\"));\n    this.data.titleObj = this._title;\n    this.setContents(parentItem.get(\"Contents\"));\n    this.data.contentsObj = this._contents;\n    if (parentItem.has(\"RC\")) {\n      this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n    }\n    this.data.open = !!dict.get(\"Open\");\n  }\n}\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.isEditable = !this.data.noHTML;\n    this.data.noHTML = false;\n    const {\n      evaluatorOptions,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.FREETEXT;\n    this.setDefaultAppearance(params);\n    this._hasAppearance = !!this.appearance;\n    if (this._hasAppearance) {\n      const {\n        fontColor,\n        fontSize\n      } = parseAppearanceStream(this.appearance, evaluatorOptions, xref);\n      this.data.defaultAppearanceData.fontColor = fontColor;\n      this.data.defaultAppearanceData.fontSize = fontSize || 10;\n    } else {\n      this.data.defaultAppearanceData.fontSize ||= 10;\n      const {\n        fontColor,\n        fontSize\n      } = this.data.defaultAppearanceData;\n      if (this._contents.str) {\n        this.data.textContent = this._contents.str.split(/\\r\\n?|\\n/).map(line => line.trimEnd());\n        const {\n          coords,\n          bbox,\n          matrix\n        } = FakeUnicodeFont.getFirstPositionInfo(this.rectangle, this.rotation, fontSize);\n        this.data.textPosition = this._transformPoint(coords, bbox, matrix);\n      }\n      if (this._isOffscreenCanvasSupported) {\n        const strokeAlpha = params.dict.get(\"CA\");\n        const fakeUnicodeFont = new FakeUnicodeFont(xref, \"sans-serif\");\n        this.appearance = fakeUnicodeFont.createAppearance(this._contents.str, this.rectangle, this.rotation, fontSize, fontColor, strokeAlpha);\n        this._streams.push(this.appearance);\n      } else {\n        warn(\"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\");\n      }\n    }\n  }\n  get hasTextContent() {\n    return this._hasAppearance;\n  }\n  static createNewDict(annotation, xref, {\n    apRef,\n    ap\n  }) {\n    const {\n      color,\n      fontSize,\n      oldAnnotation,\n      rect,\n      rotation,\n      user,\n      value\n    } = annotation;\n    const freetext = oldAnnotation || new Dict(xref);\n    freetext.set(\"Type\", Name.get(\"Annot\"));\n    freetext.set(\"Subtype\", Name.get(\"FreeText\"));\n    if (oldAnnotation) {\n      freetext.set(\"M\", `D:${getModificationDate()}`);\n      freetext.delete(\"RC\");\n    } else {\n      freetext.set(\"CreationDate\", `D:${getModificationDate()}`);\n    }\n    freetext.set(\"Rect\", rect);\n    const da = `/Helv ${fontSize} Tf ${getPdfColor(color, true)}`;\n    freetext.set(\"DA\", da);\n    freetext.set(\"Contents\", stringToAsciiOrUTF16BE(value));\n    freetext.set(\"F\", 4);\n    freetext.set(\"Border\", [0, 0, 0]);\n    freetext.set(\"Rotate\", rotation);\n    if (user) {\n      freetext.set(\"T\", stringToAsciiOrUTF16BE(user));\n    }\n    if (apRef || ap) {\n      const n = new Dict(xref);\n      freetext.set(\"AP\", n);\n      if (apRef) {\n        n.set(\"N\", apRef);\n      } else {\n        n.set(\"N\", ap);\n      }\n    }\n    return freetext;\n  }\n  static async createNewAppearanceStream(annotation, xref, params) {\n    const {\n      baseFontRef,\n      evaluator,\n      task\n    } = params;\n    const {\n      color,\n      fontSize,\n      rect,\n      rotation,\n      value\n    } = annotation;\n    const resources = new Dict(xref);\n    const font = new Dict(xref);\n    if (baseFontRef) {\n      font.set(\"Helv\", baseFontRef);\n    } else {\n      const baseFont = new Dict(xref);\n      baseFont.set(\"BaseFont\", Name.get(\"Helvetica\"));\n      baseFont.set(\"Type\", Name.get(\"Font\"));\n      baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n      baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n      font.set(\"Helv\", baseFont);\n    }\n    resources.set(\"Font\", font);\n    const helv = await WidgetAnnotation._getFontData(evaluator, task, {\n      fontName: \"Helv\",\n      fontSize\n    }, resources);\n    const [x1, y1, x2, y2] = rect;\n    let w = x2 - x1;\n    let h = y2 - y1;\n    if (rotation % 180 !== 0) {\n      [w, h] = [h, w];\n    }\n    const lines = value.split(\"\\n\");\n    const scale = fontSize / 1000;\n    let totalWidth = -Infinity;\n    const encodedLines = [];\n    for (let line of lines) {\n      const encoded = helv.encodeString(line);\n      if (encoded.length > 1) {\n        return null;\n      }\n      line = encoded.join(\"\");\n      encodedLines.push(line);\n      let lineWidth = 0;\n      const glyphs = helv.charsToGlyphs(line);\n      for (const glyph of glyphs) {\n        lineWidth += glyph.width * scale;\n      }\n      totalWidth = Math.max(totalWidth, lineWidth);\n    }\n    let hscale = 1;\n    if (totalWidth > w) {\n      hscale = w / totalWidth;\n    }\n    let vscale = 1;\n    const lineHeight = LINE_FACTOR * fontSize;\n    const lineAscent = (LINE_FACTOR - LINE_DESCENT_FACTOR) * fontSize;\n    const totalHeight = lineHeight * lines.length;\n    if (totalHeight > h) {\n      vscale = h / totalHeight;\n    }\n    const fscale = Math.min(hscale, vscale);\n    const newFontSize = fontSize * fscale;\n    let firstPoint, clipBox, matrix;\n    switch (rotation) {\n      case 0:\n        matrix = [1, 0, 0, 1];\n        clipBox = [rect[0], rect[1], w, h];\n        firstPoint = [rect[0], rect[3] - lineAscent];\n        break;\n      case 90:\n        matrix = [0, 1, -1, 0];\n        clipBox = [rect[1], -rect[2], w, h];\n        firstPoint = [rect[1], -rect[0] - lineAscent];\n        break;\n      case 180:\n        matrix = [-1, 0, 0, -1];\n        clipBox = [-rect[2], -rect[3], w, h];\n        firstPoint = [-rect[2], -rect[1] - lineAscent];\n        break;\n      case 270:\n        matrix = [0, -1, 1, 0];\n        clipBox = [-rect[3], rect[0], w, h];\n        firstPoint = [-rect[3], rect[2] - lineAscent];\n        break;\n    }\n    const buffer = [\"q\", `${matrix.join(\" \")} 0 0 cm`, `${clipBox.join(\" \")} re W n`, `BT`, `${getPdfColor(color, true)}`, `0 Tc /Helv ${numberToString(newFontSize)} Tf`];\n    buffer.push(`${firstPoint.join(\" \")} Td (${escapeString(encodedLines[0])}) Tj`);\n    const vShift = numberToString(lineHeight);\n    for (let i = 1, ii = encodedLines.length; i < ii; i++) {\n      const line = encodedLines[i];\n      buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\n    }\n    buffer.push(\"ET\", \"Q\");\n    const appearance = buffer.join(\"\\n\");\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", rect);\n    appearanceStreamDict.set(\"Resources\", resources);\n    appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, -rect[0], -rect[1]]);\n    const ap = new StringStream(appearance);\n    ap.dict = appearanceStreamDict;\n    return ap;\n  }\n}\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.LINE;\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = false;\n    const lineCoordinates = lookupRect(dict.getArray(\"L\"), [0, 0, 0, 0]);\n    this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n    this.setLineEndings(dict.getArray(\"LE\"));\n    this.data.lineEndings = this.lineEndings;\n    if (!this.appearance) {\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n      const strokeAlpha = dict.get(\"CA\");\n      const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n      const fillAlpha = fillColor ? strokeAlpha : null;\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n      const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n      this._setDefaultAppearance({\n        xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, \"S\");\n          return [points[0] - borderWidth, points[2] + borderWidth, points[7] - borderWidth, points[3] + borderWidth];\n        }\n      });\n    }\n  }\n}\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.SQUARE;\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = false;\n    if (!this.appearance) {\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n      const strokeAlpha = dict.get(\"CA\");\n      const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n      const fillAlpha = fillColor ? strokeAlpha : null;\n      if (this.borderStyle.width === 0 && !fillColor) {\n        return;\n      }\n      this._setDefaultAppearance({\n        xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x = points[4] + this.borderStyle.width / 2;\n          const y = points[5] + this.borderStyle.width / 2;\n          const width = points[6] - points[4] - this.borderStyle.width;\n          const height = points[3] - points[7] - this.borderStyle.width;\n          buffer.push(`${x} ${y} ${width} ${height} re`);\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n          return [points[0], points[2], points[7], points[3]];\n        }\n      });\n    }\n  }\n}\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.CIRCLE;\n    if (!this.appearance) {\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n      const strokeAlpha = dict.get(\"CA\");\n      const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n      const fillAlpha = fillColor ? strokeAlpha : null;\n      if (this.borderStyle.width === 0 && !fillColor) {\n        return;\n      }\n      const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));\n      this._setDefaultAppearance({\n        xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x0 = points[0] + this.borderStyle.width / 2;\n          const y0 = points[1] - this.borderStyle.width / 2;\n          const x1 = points[6] - this.borderStyle.width / 2;\n          const y1 = points[7] + this.borderStyle.width / 2;\n          const xMid = x0 + (x1 - x0) / 2;\n          const yMid = y0 + (y1 - y0) / 2;\n          const xOffset = (x1 - x0) / 2 * controlPointsDistance;\n          const yOffset = (y1 - y0) / 2 * controlPointsDistance;\n          buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, \"h\");\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n          return [points[0], points[2], points[7], points[3]];\n        }\n      });\n    }\n  }\n}\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.POLYLINE;\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = false;\n    this.data.vertices = null;\n    if (!(this instanceof PolygonAnnotation)) {\n      this.setLineEndings(dict.getArray(\"LE\"));\n      this.data.lineEndings = this.lineEndings;\n    }\n    const rawVertices = dict.getArray(\"Vertices\");\n    if (!isNumberArray(rawVertices, null)) {\n      return;\n    }\n    const vertices = this.data.vertices = Float32Array.from(rawVertices);\n    if (!this.appearance) {\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n      const strokeAlpha = dict.get(\"CA\");\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n        bbox[0] = Math.min(bbox[0], vertices[i] - borderAdjust);\n        bbox[1] = Math.min(bbox[1], vertices[i + 1] - borderAdjust);\n        bbox[2] = Math.max(bbox[2], vertices[i] + borderAdjust);\n        bbox[3] = Math.max(bbox[3], vertices[i + 1] + borderAdjust);\n      }\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n      this._setDefaultAppearance({\n        xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n            buffer.push(`${vertices[i]} ${vertices[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n          }\n          buffer.push(\"S\");\n          return [points[0], points[2], points[7], points[3]];\n        }\n      });\n    }\n  }\n}\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = false;\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.INK;\n    this.data.inkLists = [];\n    this.data.isEditable = !this.data.noHTML;\n    this.data.noHTML = false;\n    this.data.opacity = dict.get(\"CA\") || 1;\n    const rawInkLists = dict.getArray(\"InkList\");\n    if (!Array.isArray(rawInkLists)) {\n      return;\n    }\n    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n      if (!Array.isArray(rawInkLists[i])) {\n        continue;\n      }\n      const inkList = new Float32Array(rawInkLists[i].length);\n      this.data.inkLists.push(inkList);\n      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n        const x = xref.fetchIfRef(rawInkLists[i][j]),\n          y = xref.fetchIfRef(rawInkLists[i][j + 1]);\n        if (typeof x === \"number\" && typeof y === \"number\") {\n          inkList[j] = x;\n          inkList[j + 1] = y;\n        }\n      }\n    }\n    if (!this.appearance) {\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n      const strokeAlpha = dict.get(\"CA\");\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      for (const inkList of this.data.inkLists) {\n        for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n          bbox[0] = Math.min(bbox[0], inkList[i] - borderAdjust);\n          bbox[1] = Math.min(bbox[1], inkList[i + 1] - borderAdjust);\n          bbox[2] = Math.max(bbox[2], inkList[i] + borderAdjust);\n          bbox[3] = Math.max(bbox[3], inkList[i + 1] + borderAdjust);\n        }\n      }\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n      this._setDefaultAppearance({\n        xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          for (const inkList of this.data.inkLists) {\n            for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n              buffer.push(`${inkList[i]} ${inkList[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n            }\n            buffer.push(\"S\");\n          }\n          return [points[0], points[2], points[7], points[3]];\n        }\n      });\n    }\n  }\n  static createNewDict(annotation, xref, {\n    apRef,\n    ap\n  }) {\n    const {\n      oldAnnotation,\n      color,\n      opacity,\n      paths,\n      outlines,\n      rect,\n      rotation,\n      thickness,\n      user\n    } = annotation;\n    const ink = oldAnnotation || new Dict(xref);\n    ink.set(\"Type\", Name.get(\"Annot\"));\n    ink.set(\"Subtype\", Name.get(\"Ink\"));\n    ink.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n    ink.set(\"Rect\", rect);\n    ink.set(\"InkList\", outlines?.points || paths.points);\n    ink.set(\"F\", 4);\n    ink.set(\"Rotate\", rotation);\n    if (user) {\n      ink.set(\"T\", stringToAsciiOrUTF16BE(user));\n    }\n    if (outlines) {\n      ink.set(\"IT\", Name.get(\"InkHighlight\"));\n    }\n    const bs = new Dict(xref);\n    ink.set(\"BS\", bs);\n    bs.set(\"W\", thickness);\n    ink.set(\"C\", Array.from(color, c => c / 255));\n    ink.set(\"CA\", opacity);\n    const n = new Dict(xref);\n    ink.set(\"AP\", n);\n    if (apRef) {\n      n.set(\"N\", apRef);\n    } else {\n      n.set(\"N\", ap);\n    }\n    return ink;\n  }\n  static async createNewAppearanceStream(annotation, xref, params) {\n    if (annotation.outlines) {\n      return this.createNewAppearanceStreamForHighlight(annotation, xref, params);\n    }\n    const {\n      color,\n      rect,\n      paths,\n      thickness,\n      opacity\n    } = annotation;\n    const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, false)}`];\n    if (opacity !== 1) {\n      appearanceBuffer.push(\"/R0 gs\");\n    }\n    for (const outline of paths.lines) {\n      appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`);\n      for (let i = 6, ii = outline.length; i < ii; i += 6) {\n        if (isNaN(outline[i])) {\n          appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`);\n        } else {\n          const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\n          appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n        }\n      }\n      if (outline.length === 6) {\n        appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} l`);\n      }\n    }\n    appearanceBuffer.push(\"S\");\n    const appearance = appearanceBuffer.join(\"\\n\");\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", rect);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n    if (opacity !== 1) {\n      const resources = new Dict(xref);\n      const extGState = new Dict(xref);\n      const r0 = new Dict(xref);\n      r0.set(\"CA\", opacity);\n      r0.set(\"Type\", Name.get(\"ExtGState\"));\n      extGState.set(\"R0\", r0);\n      resources.set(\"ExtGState\", extGState);\n      appearanceStreamDict.set(\"Resources\", resources);\n    }\n    const ap = new StringStream(appearance);\n    ap.dict = appearanceStreamDict;\n    return ap;\n  }\n  static async createNewAppearanceStreamForHighlight(annotation, xref, params) {\n    const {\n      color,\n      rect,\n      outlines: {\n        outline\n      },\n      opacity\n    } = annotation;\n    const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n    appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`);\n    for (let i = 6, ii = outline.length; i < ii; i += 6) {\n      if (isNaN(outline[i])) {\n        appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`);\n      } else {\n        const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\n        appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n      }\n    }\n    appearanceBuffer.push(\"h f\");\n    const appearance = appearanceBuffer.join(\"\\n\");\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", rect);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n    const resources = new Dict(xref);\n    const extGState = new Dict(xref);\n    resources.set(\"ExtGState\", extGState);\n    appearanceStreamDict.set(\"Resources\", resources);\n    const r0 = new Dict(xref);\n    extGState.set(\"R0\", r0);\n    r0.set(\"BM\", Name.get(\"Multiply\"));\n    if (opacity !== 1) {\n      r0.set(\"ca\", opacity);\n      r0.set(\"Type\", Name.get(\"ExtGState\"));\n    }\n    const ap = new StringStream(appearance);\n    ap.dict = appearanceStreamDict;\n    return ap;\n  }\n}\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n    this.data.isEditable = !this.data.noHTML;\n    this.data.noHTML = false;\n    this.data.opacity = dict.get(\"CA\") || 1;\n    const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n    if (quadPoints) {\n      const resources = this.appearance?.dict.get(\"Resources\");\n      if (!this.appearance || !resources?.has(\"ExtGState\")) {\n        if (this.appearance) {\n          warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n        }\n        const fillColor = this.color ? getPdfColorArray(this.color) : [1, 1, 0];\n        const fillAlpha = dict.get(\"CA\");\n        this._setDefaultAppearance({\n          xref,\n          fillColor,\n          blendMode: \"Multiply\",\n          fillAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(`${points[0]} ${points[1]} m`, `${points[2]} ${points[3]} l`, `${points[6]} ${points[7]} l`, `${points[4]} ${points[5]} l`, \"f\");\n            return [points[0], points[2], points[7], points[3]];\n          }\n        });\n      }\n    } else {\n      this.data.popupRef = null;\n    }\n  }\n  static createNewDict(annotation, xref, {\n    apRef,\n    ap\n  }) {\n    const {\n      color,\n      oldAnnotation,\n      opacity,\n      rect,\n      rotation,\n      user,\n      quadPoints\n    } = annotation;\n    const highlight = oldAnnotation || new Dict(xref);\n    highlight.set(\"Type\", Name.get(\"Annot\"));\n    highlight.set(\"Subtype\", Name.get(\"Highlight\"));\n    highlight.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n    highlight.set(\"CreationDate\", `D:${getModificationDate()}`);\n    highlight.set(\"Rect\", rect);\n    highlight.set(\"F\", 4);\n    highlight.set(\"Border\", [0, 0, 0]);\n    highlight.set(\"Rotate\", rotation);\n    highlight.set(\"QuadPoints\", quadPoints);\n    highlight.set(\"C\", Array.from(color, c => c / 255));\n    highlight.set(\"CA\", opacity);\n    if (user) {\n      highlight.set(\"T\", stringToAsciiOrUTF16BE(user));\n    }\n    if (apRef || ap) {\n      const n = new Dict(xref);\n      highlight.set(\"AP\", n);\n      n.set(\"N\", apRef || ap);\n    }\n    return highlight;\n  }\n  static async createNewAppearanceStream(annotation, xref, params) {\n    const {\n      color,\n      rect,\n      outlines,\n      opacity\n    } = annotation;\n    const appearanceBuffer = [`${getPdfColor(color, true)}`, \"/R0 gs\"];\n    const buffer = [];\n    for (const outline of outlines) {\n      buffer.length = 0;\n      buffer.push(`${numberToString(outline[0])} ${numberToString(outline[1])} m`);\n      for (let i = 2, ii = outline.length; i < ii; i += 2) {\n        buffer.push(`${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`);\n      }\n      buffer.push(\"h\");\n      appearanceBuffer.push(buffer.join(\"\\n\"));\n    }\n    appearanceBuffer.push(\"f*\");\n    const appearance = appearanceBuffer.join(\"\\n\");\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", rect);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n    const resources = new Dict(xref);\n    const extGState = new Dict(xref);\n    resources.set(\"ExtGState\", extGState);\n    appearanceStreamDict.set(\"Resources\", resources);\n    const r0 = new Dict(xref);\n    extGState.set(\"R0\", r0);\n    r0.set(\"BM\", Name.get(\"Multiply\"));\n    if (opacity !== 1) {\n      r0.set(\"ca\", opacity);\n      r0.set(\"Type\", Name.get(\"ExtGState\"));\n    }\n    const ap = new StringStream(appearance);\n    ap.dict = appearanceStreamDict;\n    return ap;\n  }\n}\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.UNDERLINE;\n    const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n    if (quadPoints) {\n      if (!this.appearance) {\n        const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n        const strokeAlpha = dict.get(\"CA\");\n        this._setDefaultAppearance({\n          xref,\n          extra: \"[] 0 d 0.571 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(`${points[4]} ${points[5] + 1.3} m`, `${points[6]} ${points[7] + 1.3} l`, \"S\");\n            return [points[0], points[2], points[7], points[3]];\n          }\n        });\n      }\n    } else {\n      this.data.popupRef = null;\n    }\n  }\n}\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n    const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n    if (quadPoints) {\n      if (!this.appearance) {\n        const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n        const strokeAlpha = dict.get(\"CA\");\n        this._setDefaultAppearance({\n          xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            const dy = (points[1] - points[5]) / 6;\n            let shift = dy;\n            let x = points[4];\n            const y = points[5];\n            const xEnd = points[6];\n            buffer.push(`${x} ${y + shift} m`);\n            do {\n              x += 2;\n              shift = shift === 0 ? dy : 0;\n              buffer.push(`${x} ${y + shift} l`);\n            } while (x < xEnd);\n            buffer.push(\"S\");\n            return [points[4], xEnd, y - 2 * dy, y + 2 * dy];\n          }\n        });\n      }\n    } else {\n      this.data.popupRef = null;\n    }\n  }\n}\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n    const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n    if (quadPoints) {\n      if (!this.appearance) {\n        const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n        const strokeAlpha = dict.get(\"CA\");\n        this._setDefaultAppearance({\n          xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(`${(points[0] + points[4]) / 2} ` + `${(points[1] + points[5]) / 2} m`, `${(points[2] + points[6]) / 2} ` + `${(points[3] + points[7]) / 2} l`, \"S\");\n            return [points[0], points[2], points[7], points[3]];\n          }\n        });\n      }\n    } else {\n      this.data.popupRef = null;\n    }\n  }\n}\nclass StampAnnotation extends MarkupAnnotation {\n  #savedHasOwnCanvas;\n  constructor(params) {\n    super(params);\n    this.data.annotationType = AnnotationType.STAMP;\n    this.#savedHasOwnCanvas = this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.isEditable = !this.data.noHTML;\n    this.data.noHTML = false;\n  }\n  mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n    if (isEditing) {\n      if (!this.data.isEditable) {\n        return false;\n      }\n      this.#savedHasOwnCanvas = this.data.hasOwnCanvas;\n      this.data.hasOwnCanvas = true;\n      return true;\n    }\n    this.data.hasOwnCanvas = this.#savedHasOwnCanvas;\n    return !modifiedIds?.has(this.data.id);\n  }\n  static async createImage(bitmap, xref) {\n    const {\n      width,\n      height\n    } = bitmap;\n    const canvas = new OffscreenCanvas(width, height);\n    const ctx = canvas.getContext(\"2d\", {\n      alpha: true\n    });\n    ctx.drawImage(bitmap, 0, 0);\n    const data = ctx.getImageData(0, 0, width, height).data;\n    const buf32 = new Uint32Array(data.buffer);\n    const hasAlpha = buf32.some(FeatureTest.isLittleEndian ? x => x >>> 24 !== 0xff : x => (x & 0xff) !== 0xff);\n    if (hasAlpha) {\n      ctx.fillStyle = \"white\";\n      ctx.fillRect(0, 0, width, height);\n      ctx.drawImage(bitmap, 0, 0);\n    }\n    const jpegBufferPromise = canvas.convertToBlob({\n      type: \"image/jpeg\",\n      quality: 1\n    }).then(blob => blob.arrayBuffer());\n    const xobjectName = Name.get(\"XObject\");\n    const imageName = Name.get(\"Image\");\n    const image = new Dict(xref);\n    image.set(\"Type\", xobjectName);\n    image.set(\"Subtype\", imageName);\n    image.set(\"BitsPerComponent\", 8);\n    image.set(\"ColorSpace\", Name.get(\"DeviceRGB\"));\n    image.set(\"Filter\", Name.get(\"DCTDecode\"));\n    image.set(\"BBox\", [0, 0, width, height]);\n    image.set(\"Width\", width);\n    image.set(\"Height\", height);\n    let smaskStream = null;\n    if (hasAlpha) {\n      const alphaBuffer = new Uint8Array(buf32.length);\n      if (FeatureTest.isLittleEndian) {\n        for (let i = 0, ii = buf32.length; i < ii; i++) {\n          alphaBuffer[i] = buf32[i] >>> 24;\n        }\n      } else {\n        for (let i = 0, ii = buf32.length; i < ii; i++) {\n          alphaBuffer[i] = buf32[i] & 0xff;\n        }\n      }\n      const smask = new Dict(xref);\n      smask.set(\"Type\", xobjectName);\n      smask.set(\"Subtype\", imageName);\n      smask.set(\"BitsPerComponent\", 8);\n      smask.set(\"ColorSpace\", Name.get(\"DeviceGray\"));\n      smask.set(\"Width\", width);\n      smask.set(\"Height\", height);\n      smaskStream = new Stream(alphaBuffer, 0, 0, smask);\n    }\n    const imageStream = new Stream(await jpegBufferPromise, 0, 0, image);\n    return {\n      imageStream,\n      smaskStream,\n      width,\n      height\n    };\n  }\n  static createNewDict(annotation, xref, {\n    apRef,\n    ap\n  }) {\n    const {\n      oldAnnotation,\n      rect,\n      rotation,\n      user\n    } = annotation;\n    const stamp = oldAnnotation || new Dict(xref);\n    stamp.set(\"Type\", Name.get(\"Annot\"));\n    stamp.set(\"Subtype\", Name.get(\"Stamp\"));\n    stamp.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n    stamp.set(\"Rect\", rect);\n    stamp.set(\"F\", 4);\n    stamp.set(\"Border\", [0, 0, 0]);\n    stamp.set(\"Rotate\", rotation);\n    if (user) {\n      stamp.set(\"T\", stringToAsciiOrUTF16BE(user));\n    }\n    if (apRef || ap) {\n      const n = new Dict(xref);\n      stamp.set(\"AP\", n);\n      if (apRef) {\n        n.set(\"N\", apRef);\n      } else {\n        n.set(\"N\", ap);\n      }\n    }\n    return stamp;\n  }\n  static async createNewAppearanceStream(annotation, xref, params) {\n    if (annotation.oldAnnotation) {\n      return null;\n    }\n    const {\n      rotation\n    } = annotation;\n    const {\n      imageRef,\n      width,\n      height\n    } = params.image;\n    const resources = new Dict(xref);\n    const xobject = new Dict(xref);\n    resources.set(\"XObject\", xobject);\n    xobject.set(\"Im0\", imageRef);\n    const appearance = `q ${width} 0 0 ${height} 0 0 cm /Im0 Do Q`;\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", [0, 0, width, height]);\n    appearanceStreamDict.set(\"Resources\", resources);\n    if (rotation) {\n      const matrix = getRotationMatrix(rotation, width, height);\n      appearanceStreamDict.set(\"Matrix\", matrix);\n    }\n    const ap = new StringStream(appearance);\n    ap.dict = appearanceStreamDict;\n    return ap;\n  }\n}\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(params) {\n    super(params);\n    const {\n      dict,\n      xref\n    } = params;\n    const file = new FileSpec(dict.get(\"FS\"), xref);\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.hasOwnCanvas = this.data.noRotate;\n    this.data.noHTML = false;\n    this.data.file = file.serializable;\n    const name = dict.get(\"Name\");\n    this.data.name = name instanceof Name ? stringToPDFString(name.name) : \"PushPin\";\n    const fillAlpha = dict.get(\"ca\");\n    this.data.fillAlpha = typeof fillAlpha === \"number\" && fillAlpha >= 0 && fillAlpha <= 1 ? fillAlpha : null;\n  }\n}\n\n;// ./src/core/decrypt_stream.js\n\nconst chunkSize = 512;\nclass DecryptStream extends DecodeStream {\n  constructor(str, maybeLength, decrypt) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n  }\n  readBlock() {\n    let chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    const hasMoreData = this.nextChunk?.length > 0;\n    const decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n    const bufferLength = this.bufferLength,\n      newLength = bufferLength + chunk.length,\n      buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  }\n}\n\n;// ./src/core/crypto.js\n\n\n\nclass ARCFourCipher {\n  constructor(key) {\n    this.a = 0;\n    this.b = 0;\n    const s = new Uint8Array(256);\n    const keyLength = key.length;\n    for (let i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (let i = 0, j = 0; i < 256; ++i) {\n      const tmp = s[i];\n      j = j + tmp + key[i % keyLength] & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n  encryptBlock(data) {\n    let a = this.a,\n      b = this.b;\n    const s = this.s;\n    const n = data.length;\n    const output = new Uint8Array(n);\n    for (let i = 0; i < n; ++i) {\n      a = a + 1 & 0xff;\n      const tmp = s[a];\n      b = b + tmp & 0xff;\n      const tmp2 = s[b];\n      s[a] = tmp2;\n      s[b] = tmp;\n      output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n    }\n    this.a = a;\n    this.b = b;\n    return output;\n  }\n  decryptBlock(data) {\n    return this.encryptBlock(data);\n  }\n  encrypt(data) {\n    return this.encryptBlock(data);\n  }\n}\nconst calculateMD5 = function calculateMD5Closure() {\n  const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n  const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n  function hash(data, offset, length) {\n    let h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    const paddedLength = length + 72 & ~63;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = length << 3 & 0xff;\n    padded[i++] = length >> 5 & 0xff;\n    padded[i++] = length >> 13 & 0xff;\n    padded[i++] = length >> 21 & 0xff;\n    padded[i++] = length >>> 29 & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    const w = new Int32Array(16);\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n      }\n      let a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = b & c | ~b & d;\n          g = j;\n        } else if (j < 32) {\n          f = d & b | ~d & c;\n          g = 5 * j + 1 & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = 3 * j + 5 & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = 7 * j & 15;\n        }\n        const tmp = d,\n          rotateArg = a + f + k[j] + w[g] | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n        a = tmp;\n      }\n      h0 = h0 + a | 0;\n      h1 = h1 + b | 0;\n      h2 = h2 + c | 0;\n      h3 = h3 + d | 0;\n    }\n    return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n  }\n  return hash;\n}();\nclass Word64 {\n  constructor(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  and(word) {\n    this.high &= word.high;\n    this.low &= word.low;\n  }\n  xor(word) {\n    this.high ^= word.high;\n    this.low ^= word.low;\n  }\n  or(word) {\n    this.high |= word.high;\n    this.low |= word.low;\n  }\n  shiftRight(places) {\n    if (places >= 32) {\n      this.low = this.high >>> places - 32 | 0;\n      this.high = 0;\n    } else {\n      this.low = this.low >>> places | this.high << 32 - places;\n      this.high = this.high >>> places | 0;\n    }\n  }\n  shiftLeft(places) {\n    if (places >= 32) {\n      this.high = this.low << places - 32;\n      this.low = 0;\n    } else {\n      this.high = this.high << places | this.low >>> 32 - places;\n      this.low <<= places;\n    }\n  }\n  rotateRight(places) {\n    let low, high;\n    if (places & 32) {\n      high = this.low;\n      low = this.high;\n    } else {\n      low = this.low;\n      high = this.high;\n    }\n    places &= 31;\n    this.low = low >>> places | high << 32 - places;\n    this.high = high >>> places | low << 32 - places;\n  }\n  not() {\n    this.high = ~this.high;\n    this.low = ~this.low;\n  }\n  add(word) {\n    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n    let highAdd = (this.high >>> 0) + (word.high >>> 0);\n    if (lowAdd > 0xffffffff) {\n      highAdd += 1;\n    }\n    this.low = lowAdd | 0;\n    this.high = highAdd | 0;\n  }\n  copyTo(bytes, offset) {\n    bytes[offset] = this.high >>> 24 & 0xff;\n    bytes[offset + 1] = this.high >> 16 & 0xff;\n    bytes[offset + 2] = this.high >> 8 & 0xff;\n    bytes[offset + 3] = this.high & 0xff;\n    bytes[offset + 4] = this.low >>> 24 & 0xff;\n    bytes[offset + 5] = this.low >> 16 & 0xff;\n    bytes[offset + 6] = this.low >> 8 & 0xff;\n    bytes[offset + 7] = this.low & 0xff;\n  }\n  assign(word) {\n    this.high = word.high;\n    this.low = word.low;\n  }\n}\nconst calculateSHA256 = function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return x >>> n | x << 32 - n;\n  }\n  function ch(x, y, z) {\n    return x & y ^ ~x & z;\n  }\n  function maj(x, y, z) {\n    return x & y ^ x & z ^ y & z;\n  }\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n  }\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n  }\n  const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n  function hash(data, offset, length) {\n    let h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    const paddedLength = Math.ceil((length + 9) / 64) * 64;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = length >>> 29 & 0xff;\n    padded[i++] = length >> 21 & 0xff;\n    padded[i++] = length >> 13 & 0xff;\n    padded[i++] = length >> 5 & 0xff;\n    padded[i++] = length << 3 & 0xff;\n    const w = new Uint32Array(64);\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n        i += 4;\n      }\n      for (j = 16; j < 64; ++j) {\n        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;\n      }\n      let a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = d + t1 | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = t1 + t2 | 0;\n      }\n      h0 = h0 + a | 0;\n      h1 = h1 + b | 0;\n      h2 = h2 + c | 0;\n      h3 = h3 + d | 0;\n      h4 = h4 + e | 0;\n      h5 = h5 + f | 0;\n      h6 = h6 + g | 0;\n      h7 = h7 + h | 0;\n    }\n    return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n  }\n  return hash;\n}();\nconst calculateSHA512 = function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n  const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n  function hash(data, offset, length, mode384 = false) {\n    let h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n    const paddedLength = Math.ceil((length + 17) / 128) * 128;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = length >>> 29 & 0xff;\n    padded[i++] = length >> 21 & 0xff;\n    padded[i++] = length >> 13 & 0xff;\n    padded[i++] = length >> 5 & 0xff;\n    padded[i++] = length << 3 & 0xff;\n    const w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    let a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    let d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    let g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    const t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    const tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0);\n    let tmp3;\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n        w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n    let result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n  return hash;\n}();\nfunction calculateSHA384(data, offset, length) {\n  return calculateSHA512(data, offset, length, true);\n}\nclass NullCipher {\n  decryptBlock(data) {\n    return data;\n  }\n  encrypt(data) {\n    return data;\n  }\n}\nclass AESBaseCipher {\n  constructor() {\n    this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n    this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n    this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      this._mixCol[i] = i < 128 ? i << 1 : i << 1 ^ 0x1b;\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n        state[j] = t >>> 24 & 0xff;\n        state[j + 1] = t >> 16 & 0xff;\n        state[j + 2] = t >> 8 & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      state[j] = this._inv_s[state[j]];\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n  _encrypt(input, key) {\n    const s = this._s;\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n    for (let j = 0; j < 16; ++j) {\n      state[j] ^= key[j];\n    }\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      const plain = this._decrypt(buffer, this._key);\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      const lastBlock = result.at(-1);\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160;\n    this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n    this._key = this._expandKey(key);\n  }\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n    for (let j = 16, i = 1; j < b; ++i) {\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      t1 ^= rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224;\n    this._key = this._expandKey(key);\n  }\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        t1 ^= r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\nclass PDF17 {\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerValidationSalt, password.length);\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return isArrayEqual(result, ownerPassword);\n  }\n  checkUserPassword(password, userValidationSalt, userPassword) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userValidationSalt, password.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return isArrayEqual(result, userPassword);\n  }\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerKeySalt, password.length);\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n  }\n  getUserKey(password, userKeySalt, userEncryption) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userKeySalt, password.length);\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n  }\n}\nclass PDF20 {\n  _hash(password, input, userBytes) {\n    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    let e = [0];\n    let i = 0;\n    while (i < 64 || e.at(-1) > i - 32) {\n      const combinedLength = password.length + k.length + userBytes.length,\n        combinedArray = new Uint8Array(combinedLength);\n      let writeOffset = 0;\n      combinedArray.set(password, writeOffset);\n      writeOffset += password.length;\n      combinedArray.set(k, writeOffset);\n      writeOffset += k.length;\n      combinedArray.set(userBytes, writeOffset);\n      const k1 = new Uint8Array(combinedLength * 64);\n      for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n        k1.set(combinedArray, pos);\n      }\n      const cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      const remainder = e.slice(0, 16).reduce((a, b) => a + b, 0) % 3;\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerValidationSalt, password.length);\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n    const result = this._hash(password, hashData, userBytes);\n    return isArrayEqual(result, ownerPassword);\n  }\n  checkUserPassword(password, userValidationSalt, userPassword) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userValidationSalt, password.length);\n    const result = this._hash(password, hashData, []);\n    return isArrayEqual(result, userPassword);\n  }\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerKeySalt, password.length);\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\n    const key = this._hash(password, hashData, userBytes);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n  }\n  getUserKey(password, userKeySalt, userEncryption) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userKeySalt, password.length);\n    const key = this._hash(password, hashData, []);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n  }\n}\nclass CipherTransform {\n  constructor(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n  createStream(stream, length) {\n    const cipher = new this.StreamCipherConstructor();\n    return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n      return cipher.decryptBlock(data, finalize);\n    });\n  }\n  decryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    let data = stringToBytes(s);\n    data = cipher.decryptBlock(data, true);\n    return bytesToString(data);\n  }\n  encryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    if (cipher instanceof AESBaseCipher) {\n      const strLen = s.length;\n      const pad = 16 - strLen % 16;\n      s += String.fromCharCode(pad).repeat(pad);\n      const iv = new Uint8Array(16);\n      if (typeof crypto !== \"undefined\") {\n        crypto.getRandomValues(iv);\n      } else {\n        for (let i = 0; i < 16; i++) {\n          iv[i] = Math.floor(256 * Math.random());\n        }\n      }\n      let data = stringToBytes(s);\n      data = cipher.encrypt(data, iv);\n      const buf = new Uint8Array(16 + data.length);\n      buf.set(iv);\n      buf.set(data, 16);\n      return bytesToString(buf);\n    }\n    let data = stringToBytes(s);\n    data = cipher.encrypt(data);\n    return bytesToString(data);\n  }\n}\nclass CipherTransformFactory {\n  static #defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]);\n  #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n    if (password) {\n      const passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\n    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n    }\n    return null;\n  }\n  #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n    const hashDataSize = 40 + ownerPassword.length + fileId.length;\n    const hashData = new Uint8Array(hashDataSize);\n    let i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = CipherTransformFactory.#defaultPasswordBytes[j++];\n    }\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = flags >> 8 & 0xff;\n    hashData[i++] = flags >> 16 & 0xff;\n    hashData[i++] = flags >>> 24 & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    const encryptionKey = hash.subarray(0, keyLengthInBytes);\n    let cipher, checkData;\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = CipherTransformFactory.#defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      const derivedKey = new Uint8Array(n);\n      for (j = 1; j <= 19; ++j) {\n        for (let k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(CipherTransformFactory.#defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n  #decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    const hashData = new Uint8Array(32);\n    let i = 0;\n    const n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    let j = 0;\n    while (i < 32) {\n      hashData[i++] = CipherTransformFactory.#defaultPasswordBytes[j++];\n    }\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n    let cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      const derivedKey = new Uint8Array(keyLengthInBytes);\n      for (j = 19; j >= 0; j--) {\n        for (let k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n  #buildObjectKey(num, gen, encryptionKey, isAes = false) {\n    const key = new Uint8Array(encryptionKey.length + 9);\n    const n = encryptionKey.length;\n    let i;\n    for (i = 0; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = num >> 8 & 0xff;\n    key[i++] = num >> 16 & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = gen >> 8 & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    const hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n  #buildCipherConstructor(cf, name, num, gen, key) {\n    if (!(name instanceof Name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    const self = this;\n    const cryptFilter = cf.get(name.name);\n    const cfm = cryptFilter?.get(\"CFM\");\n    if (!cfm || cfm.name === \"None\") {\n      return function () {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function () {\n        return new ARCFourCipher(self.#buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function () {\n        return new AES128Cipher(self.#buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function () {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n  constructor(dict, fileId, password) {\n    const filter = dict.get(\"Filter\");\n    if (!isName(filter, \"Standard\")) {\n      throw new FormatError(\"unknown encryption method\");\n    }\n    this.filterName = filter.name;\n    this.dict = dict;\n    const algorithm = dict.get(\"V\");\n    if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n      throw new FormatError(\"unsupported encryption algorithm\");\n    }\n    this.algorithm = algorithm;\n    let keyLength = dict.get(\"Length\");\n    if (!keyLength) {\n      if (algorithm <= 3) {\n        keyLength = 40;\n      } else {\n        const cfDict = dict.get(\"CF\");\n        const streamCryptoName = dict.get(\"StmF\");\n        if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n          cfDict.suppressEncryption = true;\n          const handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = handlerDict?.get(\"Length\") || 128;\n          if (keyLength < 40) {\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n      throw new FormatError(\"invalid key length\");\n    }\n    const ownerBytes = stringToBytes(dict.get(\"O\")),\n      userBytes = stringToBytes(dict.get(\"U\"));\n    const ownerPassword = ownerBytes.subarray(0, 32);\n    const userPassword = userBytes.subarray(0, 32);\n    const flags = dict.get(\"P\");\n    const revision = dict.get(\"R\");\n    const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n    this.encryptMetadata = encryptMetadata;\n    const fileIdBytes = stringToBytes(fileId);\n    let passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = utf8StringToString(password);\n        } catch {\n          warn(\"CipherTransformFactory: Unable to convert UTF8 encoded password.\");\n        }\n      }\n      passwordBytes = stringToBytes(password);\n    }\n    let encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n    } else {\n      const ownerValidationSalt = ownerBytes.subarray(32, 40);\n      const ownerKeySalt = ownerBytes.subarray(40, 48);\n      const uBytes = userBytes.subarray(0, 48);\n      const userValidationSalt = userBytes.subarray(32, 40);\n      const userKeySalt = userBytes.subarray(40, 48);\n      const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n      const userEncryption = stringToBytes(dict.get(\"UE\"));\n      const perms = stringToBytes(dict.get(\"Perms\"));\n      encryptionKey = this.#createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n    }\n    if (!encryptionKey && !password) {\n      throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n    } else if (!encryptionKey && password) {\n      const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n      encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n    }\n    if (!encryptionKey) {\n      throw new PasswordException(\"Incorrect Password\", PasswordResponses.INCORRECT_PASSWORD);\n    }\n    this.encryptionKey = encryptionKey;\n    if (algorithm >= 4) {\n      const cf = dict.get(\"CF\");\n      if (cf instanceof Dict) {\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get(\"StmF\") || Name.get(\"Identity\");\n      this.strf = dict.get(\"StrF\") || Name.get(\"Identity\");\n      this.eff = dict.get(\"EFF\") || this.stmf;\n    }\n  }\n  createCipherTransform(num, gen) {\n    if (this.algorithm === 4 || this.algorithm === 5) {\n      return new CipherTransform(this.#buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), this.#buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey));\n    }\n    const key = this.#buildObjectKey(num, gen, this.encryptionKey, false);\n    const cipherConstructor = function () {\n      return new ARCFourCipher(key);\n    };\n    return new CipherTransform(cipherConstructor, cipherConstructor);\n  }\n}\n\n;// ./src/core/dataset_reader.js\n\n\n\nfunction decodeString(str) {\n  try {\n    return stringToUTF8String(str);\n  } catch (ex) {\n    warn(`UTF-8 decoding failed: \"${ex}\".`);\n    return str;\n  }\n}\nclass DatasetXMLParser extends SimpleXMLParser {\n  constructor(options) {\n    super(options);\n    this.node = null;\n  }\n  onEndElement(name) {\n    const node = super.onEndElement(name);\n    if (node && name === \"xfa:datasets\") {\n      this.node = node;\n      throw new Error(\"Aborting DatasetXMLParser.\");\n    }\n  }\n}\nclass DatasetReader {\n  constructor(data) {\n    if (data.datasets) {\n      this.node = new SimpleXMLParser({\n        hasAttributes: true\n      }).parseFromString(data.datasets).documentElement;\n    } else {\n      const parser = new DatasetXMLParser({\n        hasAttributes: true\n      });\n      try {\n        parser.parseFromString(data[\"xdp:xdp\"]);\n      } catch {}\n      this.node = parser.node;\n    }\n  }\n  getValue(path) {\n    if (!this.node || !path) {\n      return \"\";\n    }\n    const node = this.node.searchNode(parseXFAPath(path), 0);\n    if (!node) {\n      return \"\";\n    }\n    const first = node.firstChild;\n    if (first?.nodeName === \"value\") {\n      return node.children.map(child => decodeString(child.textContent));\n    }\n    return decodeString(node.textContent);\n  }\n}\n\n;// ./src/core/xref.js\n\n\n\n\n\n\nclass XRef {\n  #firstXRefStmPos = null;\n  constructor(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this._xrefStms = new Set();\n    this._cacheMap = new Map();\n    this._pendingRefs = new RefSet();\n    this._newPersistentRefNum = null;\n    this._newTemporaryRefNum = null;\n    this._persistentRefsCache = null;\n  }\n  getNewPersistentRef(obj) {\n    if (this._newPersistentRefNum === null) {\n      this._newPersistentRefNum = this.entries.length || 1;\n    }\n    const num = this._newPersistentRefNum++;\n    this._cacheMap.set(num, obj);\n    return Ref.get(num, 0);\n  }\n  getNewTemporaryRef() {\n    if (this._newTemporaryRefNum === null) {\n      this._newTemporaryRefNum = this.entries.length || 1;\n      if (this._newPersistentRefNum) {\n        this._persistentRefsCache = new Map();\n        for (let i = this._newTemporaryRefNum; i < this._newPersistentRefNum; i++) {\n          this._persistentRefsCache.set(i, this._cacheMap.get(i));\n          this._cacheMap.delete(i);\n        }\n      }\n    }\n    return Ref.get(this._newTemporaryRefNum++, 0);\n  }\n  resetNewTemporaryRef() {\n    this._newTemporaryRefNum = null;\n    if (this._persistentRefsCache) {\n      for (const [num, obj] of this._persistentRefsCache) {\n        this._cacheMap.set(num, obj);\n      }\n    }\n    this._persistentRefsCache = null;\n  }\n  setStartXRef(startXRef) {\n    this.startXRefQueue = [startXRef];\n  }\n  parse(recoveryMode = false) {\n    let trailerDict;\n    if (!recoveryMode) {\n      trailerDict = this.readXRef();\n    } else {\n      warn(\"Indexing all PDF objects\");\n      trailerDict = this.indexObjects();\n    }\n    trailerDict.assignXref(this);\n    this.trailer = trailerDict;\n    let encrypt;\n    try {\n      encrypt = trailerDict.get(\"Encrypt\");\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n    }\n    if (encrypt instanceof Dict) {\n      const ids = trailerDict.get(\"ID\");\n      const fileId = ids?.length ? ids[0] : \"\";\n      encrypt.suppressEncryption = true;\n      this.encrypt = new CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n    }\n    let root;\n    try {\n      root = trailerDict.get(\"Root\");\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n    }\n    if (root instanceof Dict) {\n      try {\n        const pages = root.get(\"Pages\");\n        if (pages instanceof Dict) {\n          this.root = root;\n          return;\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n      }\n    }\n    if (!recoveryMode) {\n      throw new XRefParseException();\n    }\n    throw new InvalidPDFException(\"Invalid Root reference.\");\n  }\n  processXRefTable(parser) {\n    if (!(\"tableState\" in this)) {\n      this.tableState = {\n        entryNum: 0,\n        streamPos: parser.lexer.stream.pos,\n        parserBuf1: parser.buf1,\n        parserBuf2: parser.buf2\n      };\n    }\n    const obj = this.readXRefTable(parser);\n    if (!isCmd(obj, \"trailer\")) {\n      throw new FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n    }\n    let dict = parser.getObj();\n    if (!(dict instanceof Dict) && dict.dict) {\n      dict = dict.dict;\n    }\n    if (!(dict instanceof Dict)) {\n      throw new FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n    }\n    delete this.tableState;\n    return dict;\n  }\n  readXRefTable(parser) {\n    const stream = parser.lexer.stream;\n    const tableState = this.tableState;\n    stream.pos = tableState.streamPos;\n    parser.buf1 = tableState.parserBuf1;\n    parser.buf2 = tableState.parserBuf2;\n    let obj;\n    while (true) {\n      if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n        if (isCmd(obj = parser.getObj(), \"trailer\")) {\n          break;\n        }\n        tableState.firstEntryNum = obj;\n        tableState.entryCount = parser.getObj();\n      }\n      let first = tableState.firstEntryNum;\n      const count = tableState.entryCount;\n      if (!Number.isInteger(first) || !Number.isInteger(count)) {\n        throw new FormatError(\"Invalid XRef table: wrong types in subsection header\");\n      }\n      for (let i = tableState.entryNum; i < count; i++) {\n        tableState.streamPos = stream.pos;\n        tableState.entryNum = i;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        const entry = {};\n        entry.offset = parser.getObj();\n        entry.gen = parser.getObj();\n        const type = parser.getObj();\n        if (type instanceof Cmd) {\n          switch (type.cmd) {\n            case \"f\":\n              entry.free = true;\n              break;\n            case \"n\":\n              entry.uncompressed = true;\n              break;\n          }\n        }\n        if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n          throw new FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`);\n        }\n        if (i === 0 && entry.free && first === 1) {\n          first = 0;\n        }\n        if (!this.entries[i + first]) {\n          this.entries[i + first] = entry;\n        }\n      }\n      tableState.entryNum = 0;\n      tableState.streamPos = stream.pos;\n      tableState.parserBuf1 = parser.buf1;\n      tableState.parserBuf2 = parser.buf2;\n      delete tableState.firstEntryNum;\n      delete tableState.entryCount;\n    }\n    if (this.entries[0] && !this.entries[0].free) {\n      throw new FormatError(\"Invalid XRef table: unexpected first object\");\n    }\n    return obj;\n  }\n  processXRefStream(stream) {\n    if (!(\"streamState\" in this)) {\n      const streamParameters = stream.dict;\n      const byteWidths = streamParameters.get(\"W\");\n      let range = streamParameters.get(\"Index\");\n      if (!range) {\n        range = [0, streamParameters.get(\"Size\")];\n      }\n      this.streamState = {\n        entryRanges: range,\n        byteWidths,\n        entryNum: 0,\n        streamPos: stream.pos\n      };\n    }\n    this.readXRefStream(stream);\n    delete this.streamState;\n    return stream.dict;\n  }\n  readXRefStream(stream) {\n    const streamState = this.streamState;\n    stream.pos = streamState.streamPos;\n    const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths;\n    const entryRanges = streamState.entryRanges;\n    while (entryRanges.length > 0) {\n      const [first, n] = entryRanges;\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n      }\n      if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n        throw new FormatError(`Invalid XRef entry fields length: ${first}, ${n}`);\n      }\n      for (let i = streamState.entryNum; i < n; ++i) {\n        streamState.entryNum = i;\n        streamState.streamPos = stream.pos;\n        let type = 0,\n          offset = 0,\n          generation = 0;\n        for (let j = 0; j < typeFieldWidth; ++j) {\n          const typeByte = stream.getByte();\n          if (typeByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n          }\n          type = type << 8 | typeByte;\n        }\n        if (typeFieldWidth === 0) {\n          type = 1;\n        }\n        for (let j = 0; j < offsetFieldWidth; ++j) {\n          const offsetByte = stream.getByte();\n          if (offsetByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n          }\n          offset = offset << 8 | offsetByte;\n        }\n        for (let j = 0; j < generationFieldWidth; ++j) {\n          const generationByte = stream.getByte();\n          if (generationByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n          }\n          generation = generation << 8 | generationByte;\n        }\n        const entry = {};\n        entry.offset = offset;\n        entry.gen = generation;\n        switch (type) {\n          case 0:\n            entry.free = true;\n            break;\n          case 1:\n            entry.uncompressed = true;\n            break;\n          case 2:\n            break;\n          default:\n            throw new FormatError(`Invalid XRef entry type: ${type}`);\n        }\n        if (!this.entries[first + i]) {\n          this.entries[first + i] = entry;\n        }\n      }\n      streamState.entryNum = 0;\n      streamState.streamPos = stream.pos;\n      entryRanges.splice(0, 2);\n    }\n  }\n  indexObjects() {\n    const TAB = 0x9,\n      LF = 0xa,\n      CR = 0xd,\n      SPACE = 0x20;\n    const PERCENT = 0x25,\n      LT = 0x3c;\n    function readToken(data, offset) {\n      let token = \"\",\n        ch = data[offset];\n      while (ch !== LF && ch !== CR && ch !== LT) {\n        if (++offset >= data.length) {\n          break;\n        }\n        token += String.fromCharCode(ch);\n        ch = data[offset];\n      }\n      return token;\n    }\n    function skipUntil(data, offset, what) {\n      const length = what.length,\n        dataLength = data.length;\n      let skipped = 0;\n      while (offset < dataLength) {\n        let i = 0;\n        while (i < length && data[offset + i] === what[i]) {\n          ++i;\n        }\n        if (i >= length) {\n          break;\n        }\n        offset++;\n        skipped++;\n      }\n      return skipped;\n    }\n    const gEndobjRegExp = /\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer\\s*<<)\\b/g;\n    const gStartxrefRegExp = /\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g;\n    const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n    const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n    const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n    const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n    this.entries.length = 0;\n    this._cacheMap.clear();\n    const stream = this.stream;\n    stream.pos = 0;\n    const buffer = stream.getBytes(),\n      bufferStr = bytesToString(buffer),\n      length = buffer.length;\n    let position = stream.start;\n    const trailers = [],\n      xrefStms = [];\n    while (position < length) {\n      let ch = buffer[position];\n      if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n        ++position;\n        continue;\n      }\n      if (ch === PERCENT) {\n        do {\n          ++position;\n          if (position >= length) {\n            break;\n          }\n          ch = buffer[position];\n        } while (ch !== LF && ch !== CR);\n        continue;\n      }\n      const token = readToken(buffer, position);\n      let m;\n      if (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\n        position += skipUntil(buffer, position, trailerBytes);\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else if (m = objRegExp.exec(token)) {\n        const num = m[1] | 0,\n          gen = m[2] | 0;\n        const startPos = position + token.length;\n        let contentLength,\n          updateEntries = false;\n        if (!this.entries[num]) {\n          updateEntries = true;\n        } else if (this.entries[num].gen === gen) {\n          try {\n            const parser = new Parser({\n              lexer: new Lexer(stream.makeSubStream(startPos))\n            });\n            parser.getObj();\n            updateEntries = true;\n          } catch (ex) {\n            if (ex instanceof ParserEOFException) {\n              warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n            } else {\n              updateEntries = true;\n            }\n          }\n        }\n        if (updateEntries) {\n          this.entries[num] = {\n            offset: position - stream.start,\n            gen,\n            uncompressed: true\n          };\n        }\n        gEndobjRegExp.lastIndex = startPos;\n        const match = gEndobjRegExp.exec(bufferStr);\n        if (match) {\n          const endPos = gEndobjRegExp.lastIndex + 1;\n          contentLength = endPos - position;\n          if (match[1] !== \"endobj\") {\n            warn(`indexObjects: Found \"${match[1]}\" inside of another \"obj\", ` + 'caused by missing \"endobj\" -- trying to recover.');\n            contentLength -= match[1].length + 1;\n          }\n        } else {\n          contentLength = length - position;\n        }\n        const content = buffer.subarray(position, position + contentLength);\n        const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n        if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n          xrefStms.push(position - stream.start);\n          this._xrefStms.add(position - stream.start);\n        }\n        position += contentLength;\n      } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n        trailers.push(position);\n        const startPos = position + token.length;\n        let contentLength;\n        gStartxrefRegExp.lastIndex = startPos;\n        const match = gStartxrefRegExp.exec(bufferStr);\n        if (match) {\n          const endPos = gStartxrefRegExp.lastIndex + 1;\n          contentLength = endPos - position;\n          if (match[1] !== \"startxref\") {\n            warn(`indexObjects: Found \"${match[1]}\" after \"trailer\", ` + 'caused by missing \"startxref\" -- trying to recover.');\n            contentLength -= match[1].length + 1;\n          }\n        } else {\n          contentLength = length - position;\n        }\n        position += contentLength;\n      } else {\n        position += token.length + 1;\n      }\n    }\n    for (const xrefStm of xrefStms) {\n      this.startXRefQueue.push(xrefStm);\n      this.readXRef(true);\n    }\n    const trailerDicts = [];\n    let isEncrypted = false;\n    for (const trailer of trailers) {\n      stream.pos = trailer;\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n        recoveryMode: true\n      });\n      const obj = parser.getObj();\n      if (!isCmd(obj, \"trailer\")) {\n        continue;\n      }\n      const dict = parser.getObj();\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      trailerDicts.push(dict);\n      if (dict.has(\"Encrypt\")) {\n        isEncrypted = true;\n      }\n    }\n    let trailerDict, trailerError;\n    for (const dict of [...trailerDicts, \"genFallback\", ...trailerDicts]) {\n      if (dict === \"genFallback\") {\n        if (!trailerError) {\n          break;\n        }\n        this._generationFallback = true;\n        continue;\n      }\n      let validPagesDict = false;\n      try {\n        const rootDict = dict.get(\"Root\");\n        if (!(rootDict instanceof Dict)) {\n          continue;\n        }\n        const pagesDict = rootDict.get(\"Pages\");\n        if (!(pagesDict instanceof Dict)) {\n          continue;\n        }\n        const pagesCount = pagesDict.get(\"Count\");\n        if (Number.isInteger(pagesCount)) {\n          validPagesDict = true;\n        }\n      } catch (ex) {\n        trailerError = ex;\n        continue;\n      }\n      if (validPagesDict && (!isEncrypted || dict.has(\"Encrypt\")) && dict.has(\"ID\")) {\n        return dict;\n      }\n      trailerDict = dict;\n    }\n    if (trailerDict) {\n      return trailerDict;\n    }\n    if (this.topDict) {\n      return this.topDict;\n    }\n    if (!trailerDicts.length) {\n      for (const [num, entry] of this.entries.entries()) {\n        if (!entry) {\n          continue;\n        }\n        const ref = Ref.get(num, entry.gen);\n        let obj;\n        try {\n          obj = this.fetch(ref);\n        } catch {\n          continue;\n        }\n        if (obj instanceof BaseStream) {\n          obj = obj.dict;\n        }\n        if (obj instanceof Dict && obj.has(\"Root\")) {\n          return obj;\n        }\n      }\n    }\n    throw new InvalidPDFException(\"Invalid PDF structure.\");\n  }\n  readXRef(recoveryMode = false) {\n    const stream = this.stream;\n    const startXRefParsedCache = new Set();\n    while (this.startXRefQueue.length) {\n      try {\n        const startXRef = this.startXRefQueue[0];\n        if (startXRefParsedCache.has(startXRef)) {\n          warn(\"readXRef - skipping XRef table since it was already parsed.\");\n          this.startXRefQueue.shift();\n          continue;\n        }\n        startXRefParsedCache.add(startXRef);\n        stream.pos = startXRef + stream.start;\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true\n        });\n        let obj = parser.getObj();\n        let dict;\n        if (isCmd(obj, \"xref\")) {\n          dict = this.processXRefTable(parser);\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n          obj = dict.get(\"XRefStm\");\n          if (Number.isInteger(obj) && !this._xrefStms.has(obj)) {\n            this._xrefStms.add(obj);\n            this.startXRefQueue.push(obj);\n            this.#firstXRefStmPos ??= obj;\n          }\n        } else if (Number.isInteger(obj)) {\n          if (!Number.isInteger(parser.getObj()) || !isCmd(parser.getObj(), \"obj\") || !((obj = parser.getObj()) instanceof BaseStream)) {\n            throw new FormatError(\"Invalid XRef stream\");\n          }\n          dict = this.processXRefStream(obj);\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n          if (!dict) {\n            throw new FormatError(\"Failed to read XRef stream\");\n          }\n        } else {\n          throw new FormatError(\"Invalid XRef stream header\");\n        }\n        obj = dict.get(\"Prev\");\n        if (Number.isInteger(obj)) {\n          this.startXRefQueue.push(obj);\n        } else if (obj instanceof Ref) {\n          this.startXRefQueue.push(obj.num);\n        }\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        info(\"(while reading XRef): \" + e);\n      }\n      this.startXRefQueue.shift();\n    }\n    if (this.topDict) {\n      return this.topDict;\n    }\n    if (recoveryMode) {\n      return undefined;\n    }\n    throw new XRefParseException();\n  }\n  get lastXRefStreamPos() {\n    return this.#firstXRefStmPos ?? (this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null);\n  }\n  getEntry(i) {\n    const xrefEntry = this.entries[i];\n    if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n      return xrefEntry;\n    }\n    return null;\n  }\n  fetchIfRef(obj, suppressEncryption = false) {\n    if (obj instanceof Ref) {\n      return this.fetch(obj, suppressEncryption);\n    }\n    return obj;\n  }\n  fetch(ref, suppressEncryption = false) {\n    if (!(ref instanceof Ref)) {\n      throw new Error(\"ref object is not a reference\");\n    }\n    const num = ref.num;\n    const cacheEntry = this._cacheMap.get(num);\n    if (cacheEntry !== undefined) {\n      if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n        cacheEntry.objId = ref.toString();\n      }\n      return cacheEntry;\n    }\n    let xrefEntry = this.getEntry(num);\n    if (xrefEntry === null) {\n      this._cacheMap.set(num, xrefEntry);\n      return xrefEntry;\n    }\n    if (this._pendingRefs.has(ref)) {\n      this._pendingRefs.remove(ref);\n      warn(`Ignoring circular reference: ${ref}.`);\n      return CIRCULAR_REF;\n    }\n    this._pendingRefs.put(ref);\n    try {\n      xrefEntry = xrefEntry.uncompressed ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption) : this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      this._pendingRefs.remove(ref);\n    } catch (ex) {\n      this._pendingRefs.remove(ref);\n      throw ex;\n    }\n    if (xrefEntry instanceof Dict) {\n      xrefEntry.objId = ref.toString();\n    } else if (xrefEntry instanceof BaseStream) {\n      xrefEntry.dict.objId = ref.toString();\n    }\n    return xrefEntry;\n  }\n  fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n    const gen = ref.gen;\n    let num = ref.num;\n    if (xrefEntry.gen !== gen) {\n      const msg = `Inconsistent generation in XRef: ${ref}`;\n      if (this._generationFallback && xrefEntry.gen < gen) {\n        warn(msg);\n        return this.fetchUncompressed(Ref.get(num, xrefEntry.gen), xrefEntry, suppressEncryption);\n      }\n      throw new XRefEntryException(msg);\n    }\n    const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: this,\n      allowStreams: true\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n    if (obj3.cmd !== \"obj\") {\n      if (obj3.cmd.startsWith(\"obj\")) {\n        num = parseInt(obj3.cmd.substring(3), 10);\n        if (!Number.isNaN(num)) {\n          return num;\n        }\n      }\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n    xrefEntry = this.encrypt && !suppressEncryption ? parser.getObj(this.encrypt.createCipherTransform(num, gen)) : parser.getObj();\n    if (!(xrefEntry instanceof BaseStream)) {\n      this._cacheMap.set(num, xrefEntry);\n    }\n    return xrefEntry;\n  }\n  fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n    const tableOffset = xrefEntry.offset;\n    const stream = this.fetch(Ref.get(tableOffset, 0));\n    if (!(stream instanceof BaseStream)) {\n      throw new FormatError(\"bad ObjStm stream\");\n    }\n    const first = stream.dict.get(\"First\");\n    const n = stream.dict.get(\"N\");\n    if (!Number.isInteger(first) || !Number.isInteger(n)) {\n      throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n    }\n    let parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: this,\n      allowStreams: true\n    });\n    const nums = new Array(n);\n    const offsets = new Array(n);\n    for (let i = 0; i < n; ++i) {\n      const num = parser.getObj();\n      if (!Number.isInteger(num)) {\n        throw new FormatError(`invalid object number in the ObjStm stream: ${num}`);\n      }\n      const offset = parser.getObj();\n      if (!Number.isInteger(offset)) {\n        throw new FormatError(`invalid object offset in the ObjStm stream: ${offset}`);\n      }\n      nums[i] = num;\n      offsets[i] = offset;\n    }\n    const start = (stream.start || 0) + first;\n    const entries = new Array(n);\n    for (let i = 0; i < n; ++i) {\n      const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n      if (length < 0) {\n        throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n      }\n      parser = new Parser({\n        lexer: new Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)),\n        xref: this,\n        allowStreams: true\n      });\n      const obj = parser.getObj();\n      entries[i] = obj;\n      if (obj instanceof BaseStream) {\n        continue;\n      }\n      const num = nums[i],\n        entry = this.entries[num];\n      if (entry && entry.offset === tableOffset && entry.gen === i) {\n        this._cacheMap.set(num, obj);\n      }\n    }\n    xrefEntry = entries[xrefEntry.gen];\n    if (xrefEntry === undefined) {\n      throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n    }\n    return xrefEntry;\n  }\n  async fetchIfRefAsync(obj, suppressEncryption) {\n    if (obj instanceof Ref) {\n      return this.fetchAsync(obj, suppressEncryption);\n    }\n    return obj;\n  }\n  async fetchAsync(ref, suppressEncryption) {\n    try {\n      return this.fetch(ref, suppressEncryption);\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.pdfManager.requestRange(ex.begin, ex.end);\n      return this.fetchAsync(ref, suppressEncryption);\n    }\n  }\n  getCatalogObj() {\n    return this.root;\n  }\n}\n\n;// ./src/core/document.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    globalIdFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    systemFontCache,\n    nonBlendModesSet,\n    xfaFactory\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.systemFontCache = systemFontCache;\n    this.nonBlendModesSet = nonBlendModesSet;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n    this.xfaFactory = xfaFactory;\n    const idCounters = {\n      obj: 0\n    };\n    this._localIdFactory = class extends globalIdFactory {\n      static createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      }\n      static getPageObjId() {\n        return `p${ref.toString()}`;\n      }\n    };\n  }\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !(value[0] instanceof Dict)) {\n      return value[0];\n    }\n    return Dict.merge({\n      xref: this.xref,\n      dictArray: value\n    });\n  }\n  get content() {\n    return this.pageDict.getArray(\"Contents\");\n  }\n  get resources() {\n    const resources = this._getInheritableProperty(\"Resources\");\n    return shadow(this, \"resources\", resources instanceof Dict ? resources : Dict.empty);\n  }\n  _getBoundingBox(name) {\n    if (this.xfaData) {\n      return this.xfaData.bbox;\n    }\n    const box = lookupNormalRect(this._getInheritableProperty(name, true), null);\n    if (box) {\n      if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n        return box;\n      }\n      warn(`Empty, or invalid, /${name} entry.`);\n    }\n    return null;\n  }\n  get mediaBox() {\n    return shadow(this, \"mediaBox\", this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n  }\n  get cropBox() {\n    return shadow(this, \"cropBox\", this._getBoundingBox(\"CropBox\") || this.mediaBox);\n  }\n  get userUnit() {\n    const obj = this.pageDict.get(\"UserUnit\");\n    return shadow(this, \"userUnit\", typeof obj === \"number\" && obj > 0 ? obj : 1.0);\n  }\n  get view() {\n    const {\n      cropBox,\n      mediaBox\n    } = this;\n    if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n        return shadow(this, \"view\", box);\n      }\n      warn(\"Empty /CropBox and /MediaBox intersection.\");\n    }\n    return shadow(this, \"view\", mediaBox);\n  }\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate %= 360;\n    } else if (rotate < 0) {\n      rotate = (rotate % 360 + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n  _onSubStreamError(reason, objId) {\n    if (this.evaluatorOptions.ignoreErrors) {\n      warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n  getContentStream() {\n    return this.pdfManager.ensure(this, \"content\").then(content => {\n      if (content instanceof BaseStream) {\n        return content;\n      }\n      if (Array.isArray(content)) {\n        return new StreamsSequenceStream(content, this._onSubStreamError.bind(this));\n      }\n      return new NullStream();\n    });\n  }\n  get xfaData() {\n    return shadow(this, \"xfaData\", this.xfaFactory ? {\n      bbox: this.xfaFactory.getBoundingBox(this.pageIndex)\n    } : null);\n  }\n  async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\n    const promises = [];\n    for (const annotation of annotations) {\n      if (annotation.id) {\n        const ref = Ref.fromString(annotation.id);\n        if (!ref) {\n          warn(`A non-linked annotation cannot be modified: ${annotation.id}`);\n          continue;\n        }\n        if (annotation.deleted) {\n          deletedAnnotations.put(ref, ref);\n          if (annotation.popupRef) {\n            const popupRef = Ref.fromString(annotation.popupRef);\n            if (popupRef) {\n              deletedAnnotations.put(popupRef, popupRef);\n            }\n          }\n          continue;\n        }\n        existingAnnotations?.put(ref);\n        annotation.ref = ref;\n        promises.push(this.xref.fetchAsync(ref).then(obj => {\n          if (obj instanceof Dict) {\n            annotation.oldAnnotation = obj.clone();\n          }\n        }, () => {\n          warn(`Cannot fetch \\`oldAnnotation\\` for: ${ref}.`);\n        }));\n        delete annotation.id;\n      }\n    }\n    await Promise.all(promises);\n  }\n  async saveNewAnnotations(handler, task, annotations, imagePromises, changes) {\n    if (this.xfaFactory) {\n      throw new Error(\"XFA: Cannot save new annotations.\");\n    }\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      systemFontCache: this.systemFontCache,\n      options: this.evaluatorOptions\n    });\n    const deletedAnnotations = new RefSetCache();\n    const existingAnnotations = new RefSet();\n    await this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\n    const pageDict = this.pageDict;\n    const annotationsArray = this.annotations.filter(a => !(a instanceof Ref && deletedAnnotations.has(a)));\n    const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, task, annotations, imagePromises, changes);\n    for (const {\n      ref\n    } of newData.annotations) {\n      if (ref instanceof Ref && !existingAnnotations.has(ref)) {\n        annotationsArray.push(ref);\n      }\n    }\n    const dict = pageDict.clone();\n    dict.set(\"Annots\", annotationsArray);\n    changes.put(this.ref, {\n      data: dict\n    });\n    for (const deletedRef of deletedAnnotations) {\n      changes.put(deletedRef, {\n        data: null\n      });\n    }\n  }\n  save(handler, task, annotationStorage, changes) {\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      systemFontCache: this.systemFontCache,\n      options: this.evaluatorOptions\n    });\n    return this._parsedAnnotations.then(function (annotations) {\n      const promises = [];\n      for (const annotation of annotations) {\n        promises.push(annotation.save(partialEvaluator, task, annotationStorage, changes).catch(function (reason) {\n          warn(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n          return null;\n        }));\n      }\n      return Promise.all(promises);\n    });\n  }\n  loadResources(keys) {\n    this.resourcesPromise ||= this.pdfManager.ensure(this, \"resources\");\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n  getOperatorList({\n    handler,\n    sink,\n    task,\n    intent,\n    cacheKey,\n    annotationStorage = null,\n    modifiedIds = null\n  }) {\n    const contentStreamPromise = this.getContentStream();\n    const resourcesPromise = this.loadResources([\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"]);\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      systemFontCache: this.systemFontCache,\n      options: this.evaluatorOptions\n    });\n    const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null;\n    const newAnnots = newAnnotsByPage?.get(this.pageIndex);\n    let newAnnotationsPromise = Promise.resolve(null);\n    let deletedAnnotations = null;\n    if (newAnnots) {\n      const annotationGlobalsPromise = this.pdfManager.ensureDoc(\"annotationGlobals\");\n      let imagePromises;\n      const missingBitmaps = new Set();\n      for (const {\n        bitmapId,\n        bitmap\n      } of newAnnots) {\n        if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) {\n          missingBitmaps.add(bitmapId);\n        }\n      }\n      const {\n        isOffscreenCanvasSupported\n      } = this.evaluatorOptions;\n      if (missingBitmaps.size > 0) {\n        const annotationWithBitmaps = newAnnots.slice();\n        for (const [key, annotation] of annotationStorage) {\n          if (!key.startsWith(AnnotationEditorPrefix)) {\n            continue;\n          }\n          if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) {\n            annotationWithBitmaps.push(annotation);\n          }\n        }\n        imagePromises = AnnotationFactory.generateImages(annotationWithBitmaps, this.xref, isOffscreenCanvasSupported);\n      } else {\n        imagePromises = AnnotationFactory.generateImages(newAnnots, this.xref, isOffscreenCanvasSupported);\n      }\n      deletedAnnotations = new RefSet();\n      newAnnotationsPromise = Promise.all([annotationGlobalsPromise, this.#replaceIdByRef(newAnnots, deletedAnnotations, null)]).then(([annotationGlobals]) => {\n        if (!annotationGlobals) {\n          return null;\n        }\n        return AnnotationFactory.printNewAnnotations(annotationGlobals, partialEvaluator, task, newAnnots, imagePromises);\n      });\n    }\n    const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink);\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet),\n        pageIndex: this.pageIndex,\n        cacheKey\n      });\n      return partialEvaluator.getOperatorList({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        operatorList: opList\n      }).then(function () {\n        return opList;\n      });\n    });\n    return Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]).then(function ([pageOpList, annotations, newAnnotations]) {\n      if (newAnnotations) {\n        annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref)));\n        for (let i = 0, ii = newAnnotations.length; i < ii; i++) {\n          const newAnnotation = newAnnotations[i];\n          if (newAnnotation.refToReplace) {\n            const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace));\n            if (j >= 0) {\n              annotations.splice(j, 1, newAnnotation);\n              newAnnotations.splice(i--, 1);\n              ii--;\n            }\n          }\n        }\n        annotations = annotations.concat(newAnnotations);\n      }\n      if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n        pageOpList.flush(true);\n        return {\n          length: pageOpList.totalLength\n        };\n      }\n      const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n        isEditing = !!(intent & RenderingIntentFlag.IS_EDITING),\n        intentAny = !!(intent & RenderingIntentFlag.ANY),\n        intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n        intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n      const opListPromises = [];\n      for (const annotation of annotations) {\n        if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) && annotation.mustBeViewedWhenEditing(isEditing, modifiedIds) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n          opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, annotationStorage).catch(function (reason) {\n            warn(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n            return {\n              opList: null,\n              separateForm: false,\n              separateCanvas: false\n            };\n          }));\n        }\n      }\n      return Promise.all(opListPromises).then(function (opLists) {\n        let form = false,\n          canvas = false;\n        for (const {\n          opList,\n          separateForm,\n          separateCanvas\n        } of opLists) {\n          pageOpList.addOpList(opList);\n          form ||= separateForm;\n          canvas ||= separateCanvas;\n        }\n        pageOpList.flush(true, {\n          form,\n          canvas\n        });\n        return {\n          length: pageOpList.totalLength\n        };\n      });\n    });\n  }\n  async extractTextContent({\n    handler,\n    task,\n    includeMarkedContent,\n    disableNormalization,\n    sink\n  }) {\n    const contentStreamPromise = this.getContentStream();\n    const resourcesPromise = this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"]);\n    const langPromise = this.pdfManager.ensureCatalog(\"lang\");\n    const [contentStream,, lang] = await Promise.all([contentStreamPromise, resourcesPromise, langPromise]);\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      systemFontCache: this.systemFontCache,\n      options: this.evaluatorOptions\n    });\n    return partialEvaluator.getTextContent({\n      stream: contentStream,\n      task,\n      resources: this.resources,\n      includeMarkedContent,\n      disableNormalization,\n      sink,\n      viewBox: this.view,\n      lang\n    });\n  }\n  async getStructTree() {\n    const structTreeRoot = await this.pdfManager.ensureCatalog(\"structTreeRoot\");\n    if (!structTreeRoot) {\n      return null;\n    }\n    await this._parsedAnnotations;\n    const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n    return this.pdfManager.ensure(structTree, \"serializable\");\n  }\n  _parseStructTree(structTreeRoot) {\n    const tree = new StructTreePage(structTreeRoot, this.pageDict);\n    tree.parse(this.ref);\n    return tree;\n  }\n  async getAnnotationsData(handler, task, intent) {\n    const annotations = await this._parsedAnnotations;\n    if (annotations.length === 0) {\n      return annotations;\n    }\n    const annotationsData = [],\n      textContentPromises = [];\n    let partialEvaluator;\n    const intentAny = !!(intent & RenderingIntentFlag.ANY),\n      intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n      intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n    for (const annotation of annotations) {\n      const isVisible = intentAny || intentDisplay && annotation.viewable;\n      if (isVisible || intentPrint && annotation.printable) {\n        annotationsData.push(annotation.data);\n      }\n      if (annotation.hasTextContent && isVisible) {\n        partialEvaluator ||= new PartialEvaluator({\n          xref: this.xref,\n          handler,\n          pageIndex: this.pageIndex,\n          idFactory: this._localIdFactory,\n          fontCache: this.fontCache,\n          builtInCMapCache: this.builtInCMapCache,\n          standardFontDataCache: this.standardFontDataCache,\n          globalImageCache: this.globalImageCache,\n          systemFontCache: this.systemFontCache,\n          options: this.evaluatorOptions\n        });\n        textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) {\n          warn(`getAnnotationsData - ignoring textContent during \"${task.name}\" task: \"${reason}\".`);\n        }));\n      }\n    }\n    await Promise.all(textContentPromises);\n    return annotationsData;\n  }\n  get annotations() {\n    const annots = this._getInheritableProperty(\"Annots\");\n    return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n  }\n  get _parsedAnnotations() {\n    const promise = this.pdfManager.ensure(this, \"annotations\").then(async annots => {\n      if (annots.length === 0) {\n        return annots;\n      }\n      const [annotationGlobals, fieldObjects] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n      if (!annotationGlobals) {\n        return [];\n      }\n      const orphanFields = fieldObjects?.orphanFields;\n      const annotationPromises = [];\n      for (const annotationRef of annots) {\n        annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, orphanFields, this.ref).catch(function (reason) {\n          warn(`_parsedAnnotations: \"${reason}\".`);\n          return null;\n        }));\n      }\n      const sortedAnnotations = [];\n      let popupAnnotations, widgetAnnotations;\n      for (const annotation of await Promise.all(annotationPromises)) {\n        if (!annotation) {\n          continue;\n        }\n        if (annotation instanceof WidgetAnnotation) {\n          (widgetAnnotations ||= []).push(annotation);\n          continue;\n        }\n        if (annotation instanceof PopupAnnotation) {\n          (popupAnnotations ||= []).push(annotation);\n          continue;\n        }\n        sortedAnnotations.push(annotation);\n      }\n      if (widgetAnnotations) {\n        sortedAnnotations.push(...widgetAnnotations);\n      }\n      if (popupAnnotations) {\n        sortedAnnotations.push(...popupAnnotations);\n      }\n      return sortedAnnotations;\n    });\n    return shadow(this, \"_parsedAnnotations\", promise);\n  }\n  get jsActions() {\n    const actions = collectActions(this.xref, this.pageDict, PageActionEventType);\n    return shadow(this, \"jsActions\", actions);\n  }\n}\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  const signatureLength = signature.length;\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\nclass PDFDocument {\n  constructor(pdfManager, stream) {\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n    }\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n    this._pagePromises = new Map();\n    this._version = null;\n    const idCounters = {\n      font: 0\n    };\n    this._globalIdFactory = class {\n      static getDocId() {\n        return `g_${pdfManager.docId}`;\n      }\n      static createFontId() {\n        return `f${++idCounters.font}`;\n      }\n      static createObjId() {\n        unreachable(\"Abstract method `createObjId` called.\");\n      }\n      static getPageObjId() {\n        unreachable(\"Abstract method `getPageObjId` called.\");\n      }\n    };\n  }\n  parse(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n  }\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n    if (this.linearization) {\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        stream.skip(6);\n        let ch = stream.peekByte();\n        while (isWhiteSpace(ch)) {\n          stream.pos++;\n          ch = stream.peekByte();\n        }\n        startXRef = stream.pos - stream.start;\n      }\n    } else {\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= 0x20 && ch <= 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      return;\n    }\n    stream.moveStart();\n    stream.skip(PDF_HEADER_SIGNATURE.length);\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > 0x20 && version.length < 7) {\n      version += String.fromCharCode(ch);\n    }\n    if (PDF_VERSION_REGEXP.test(version)) {\n      this._version = version;\n    } else {\n      warn(`Invalid PDF header version: ${version}`);\n    }\n  }\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n  get numPages() {\n    let num = 0;\n    if (this.catalog.hasActualNumPages) {\n      num = this.catalog.numPages;\n    } else if (this.xfaFactory) {\n      num = this.xfaFactory.getNumPages();\n    } else if (this.linearization) {\n      num = this.linearization.numPages;\n    } else {\n      num = this.catalog.numPages;\n    }\n    return shadow(this, \"numPages\", num);\n  }\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n    const RECURSION_LIMIT = 10;\n    if (!Array.isArray(fields)) {\n      return false;\n    }\n    return fields.every(field => {\n      field = this.xref.fetchIfRef(field);\n      if (!(field instanceof Dict)) {\n        return false;\n      }\n      if (field.has(\"Kids\")) {\n        if (++recursionDepth > RECURSION_LIMIT) {\n          warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n          return false;\n        }\n        return this._hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n      }\n      const isSignature = isName(field.get(\"FT\"), \"Sig\");\n      const rectangle = field.get(\"Rect\");\n      const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0);\n      return isSignature && isInvisible;\n    });\n  }\n  get _xfaStreams() {\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return null;\n    }\n    const xfa = acroForm.get(\"XFA\");\n    const entries = {\n      \"xdp:xdp\": \"\",\n      template: \"\",\n      datasets: \"\",\n      config: \"\",\n      connectionSet: \"\",\n      localeSet: \"\",\n      stylesheet: \"\",\n      \"/xdp:xdp\": \"\"\n    };\n    if (xfa instanceof BaseStream && !xfa.isEmpty) {\n      entries[\"xdp:xdp\"] = xfa;\n      return entries;\n    }\n    if (!Array.isArray(xfa) || xfa.length === 0) {\n      return null;\n    }\n    for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n      let name;\n      if (i === 0) {\n        name = \"xdp:xdp\";\n      } else if (i === ii - 2) {\n        name = \"/xdp:xdp\";\n      } else {\n        name = xfa[i];\n      }\n      if (!entries.hasOwnProperty(name)) {\n        continue;\n      }\n      const data = this.xref.fetchIfRef(xfa[i + 1]);\n      if (!(data instanceof BaseStream) || data.isEmpty) {\n        continue;\n      }\n      entries[name] = data;\n    }\n    return entries;\n  }\n  get xfaDatasets() {\n    const streams = this._xfaStreams;\n    if (!streams) {\n      return shadow(this, \"xfaDatasets\", null);\n    }\n    for (const key of [\"datasets\", \"xdp:xdp\"]) {\n      const stream = streams[key];\n      if (!stream) {\n        continue;\n      }\n      try {\n        const str = stringToUTF8String(stream.getString());\n        const data = {\n          [key]: str\n        };\n        return shadow(this, \"xfaDatasets\", new DatasetReader(data));\n      } catch {\n        warn(\"XFA - Invalid utf-8 string.\");\n        break;\n      }\n    }\n    return shadow(this, \"xfaDatasets\", null);\n  }\n  get xfaData() {\n    const streams = this._xfaStreams;\n    if (!streams) {\n      return null;\n    }\n    const data = Object.create(null);\n    for (const [key, stream] of Object.entries(streams)) {\n      if (!stream) {\n        continue;\n      }\n      try {\n        data[key] = stringToUTF8String(stream.getString());\n      } catch {\n        warn(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n    return data;\n  }\n  get xfaFactory() {\n    let data;\n    if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {\n      data = this.xfaData;\n    }\n    return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n  }\n  get isPureXfa() {\n    return this.xfaFactory ? this.xfaFactory.isValid() : false;\n  }\n  get htmlForXfa() {\n    return this.xfaFactory ? this.xfaFactory.getPages() : null;\n  }\n  async loadXfaImages() {\n    const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n    if (!xfaImagesDict) {\n      return;\n    }\n    const keys = xfaImagesDict.getKeys();\n    const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n    await objectLoader.load();\n    const xfaImages = new Map();\n    for (const key of keys) {\n      const stream = xfaImagesDict.get(key);\n      if (stream instanceof BaseStream) {\n        xfaImages.set(key, stream.getBytes());\n      }\n    }\n    this.xfaFactory.setImages(xfaImages);\n  }\n  async loadXfaFonts(handler, task) {\n    const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n    if (!acroForm) {\n      return;\n    }\n    const resources = await acroForm.getAsync(\"DR\");\n    if (!(resources instanceof Dict)) {\n      return;\n    }\n    const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n    await objectLoader.load();\n    const fontRes = resources.get(\"Font\");\n    if (!(fontRes instanceof Dict)) {\n      return;\n    }\n    const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions);\n    options.useSystemFonts = false;\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: -1,\n      idFactory: this._globalIdFactory,\n      fontCache: this.catalog.fontCache,\n      builtInCMapCache: this.catalog.builtInCMapCache,\n      standardFontDataCache: this.catalog.standardFontDataCache,\n      options\n    });\n    const operatorList = new OperatorList();\n    const pdfFonts = [];\n    const initialState = {\n      get font() {\n        return pdfFonts.at(-1);\n      },\n      set font(font) {\n        pdfFonts.push(font);\n      },\n      clone() {\n        return this;\n      }\n    };\n    const promises = [];\n    for (const [fontName, font] of fontRes) {\n      const descriptor = font.get(\"FontDescriptor\");\n      if (!(descriptor instanceof Dict)) {\n        continue;\n      }\n      let fontFamily = descriptor.get(\"FontFamily\");\n      fontFamily = fontFamily.replaceAll(/[ ]+(\\d)/g, \"$1\");\n      const fontWeight = descriptor.get(\"FontWeight\");\n      const italicAngle = -descriptor.get(\"ItalicAngle\");\n      const cssFontInfo = {\n        fontFamily,\n        fontWeight,\n        italicAngle\n      };\n      if (!validateCSSFont(cssFontInfo)) {\n        continue;\n      }\n      promises.push(partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) {\n        warn(`loadXfaFonts: \"${reason}\".`);\n        return null;\n      }));\n    }\n    await Promise.all(promises);\n    const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n    if (!missingFonts) {\n      return;\n    }\n    options.ignoreErrors = true;\n    promises.length = 0;\n    pdfFonts.length = 0;\n    const reallyMissingFonts = new Set();\n    for (const missing of missingFonts) {\n      if (!getXfaFontName(`${missing}-Regular`)) {\n        reallyMissingFonts.add(missing);\n      }\n    }\n    if (reallyMissingFonts.size) {\n      missingFonts.push(\"PdfJS-Fallback\");\n    }\n    for (const missing of missingFonts) {\n      if (reallyMissingFonts.has(missing)) {\n        continue;\n      }\n      for (const fontInfo of [{\n        name: \"Regular\",\n        fontWeight: 400,\n        italicAngle: 0\n      }, {\n        name: \"Bold\",\n        fontWeight: 700,\n        italicAngle: 0\n      }, {\n        name: \"Italic\",\n        fontWeight: 400,\n        italicAngle: 12\n      }, {\n        name: \"BoldItalic\",\n        fontWeight: 700,\n        italicAngle: 12\n      }]) {\n        const name = `${missing}-${fontInfo.name}`;\n        const dict = getXfaFontDict(name);\n        promises.push(partialEvaluator.handleSetFont(resources, [Name.get(name), 1], null, operatorList, task, initialState, dict, {\n          fontFamily: missing,\n          fontWeight: fontInfo.fontWeight,\n          italicAngle: fontInfo.italicAngle\n        }).catch(function (reason) {\n          warn(`loadXfaFonts: \"${reason}\".`);\n          return null;\n        }));\n      }\n    }\n    await Promise.all(promises);\n    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n  }\n  async serializeXfaData(annotationStorage) {\n    return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null;\n  }\n  get version() {\n    return this.catalog.version || this._version;\n  }\n  get formInfo() {\n    const formInfo = {\n      hasFields: false,\n      hasAcroForm: false,\n      hasXfa: false,\n      hasSignatures: false\n    };\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return shadow(this, \"formInfo\", formInfo);\n    }\n    try {\n      const fields = acroForm.get(\"Fields\");\n      const hasFields = Array.isArray(fields) && fields.length > 0;\n      formInfo.hasFields = hasFields;\n      const xfa = acroForm.get(\"XFA\");\n      formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof BaseStream && !xfa.isEmpty;\n      const sigFlags = acroForm.get(\"SigFlags\");\n      const hasSignatures = !!(sigFlags & 0x1);\n      const hasOnlyDocumentSignatures = hasSignatures && this._hasOnlyDocumentSignatures(fields);\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n      formInfo.hasSignatures = hasSignatures;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Cannot fetch form information: \"${ex}\".`);\n    }\n    return shadow(this, \"formInfo\", formInfo);\n  }\n  get documentInfo() {\n    const docInfo = {\n      PDFFormatVersion: this.version,\n      Language: this.catalog.lang,\n      EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : null,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\n      IsXFAPresent: this.formInfo.hasXfa,\n      IsCollectionPresent: !!this.catalog.collection,\n      IsSignaturesPresent: this.formInfo.hasSignatures\n    };\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n    if (!(infoDict instanceof Dict)) {\n      return shadow(this, \"documentInfo\", docInfo);\n    }\n    for (const key of infoDict.getKeys()) {\n      const value = infoDict.get(key);\n      switch (key) {\n        case \"Title\":\n        case \"Author\":\n        case \"Subject\":\n        case \"Keywords\":\n        case \"Creator\":\n        case \"Producer\":\n        case \"CreationDate\":\n        case \"ModDate\":\n          if (typeof value === \"string\") {\n            docInfo[key] = stringToPDFString(value);\n            continue;\n          }\n          break;\n        case \"Trapped\":\n          if (value instanceof Name) {\n            docInfo[key] = value;\n            continue;\n          }\n          break;\n        default:\n          let customValue;\n          switch (typeof value) {\n            case \"string\":\n              customValue = stringToPDFString(value);\n              break;\n            case \"number\":\n            case \"boolean\":\n              customValue = value;\n              break;\n            default:\n              if (value instanceof Name) {\n                customValue = value;\n              }\n              break;\n          }\n          if (customValue === undefined) {\n            warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n            continue;\n          }\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n          docInfo.Custom[key] = customValue;\n          continue;\n      }\n      warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n  get fingerprints() {\n    const FINGERPRINT_FIRST_BYTES = 1024;\n    const EMPTY_FINGERPRINT = \"\\x00\".repeat(16);\n    function validate(data) {\n      return typeof data === \"string\" && data.length === 16 && data !== EMPTY_FINGERPRINT;\n    }\n    const id = this.xref.trailer.get(\"ID\");\n    let hashOriginal, hashModified;\n    if (Array.isArray(id) && validate(id[0])) {\n      hashOriginal = stringToBytes(id[0]);\n      if (id[1] !== id[0] && validate(id[1])) {\n        hashModified = stringToBytes(id[1]);\n      }\n    } else {\n      hashOriginal = calculateMD5(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n    }\n    return shadow(this, \"fingerprints\", [toHexUtil(hashOriginal), hashModified ? toHexUtil(hashModified) : null]);\n  }\n  async _getLinearizationPage(pageIndex) {\n    const {\n      catalog,\n      linearization,\n      xref\n    } = this;\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    try {\n      const obj = await xref.fetchAsync(ref);\n      if (obj instanceof Dict) {\n        let type = obj.getRaw(\"Type\");\n        if (type instanceof Ref) {\n          type = await xref.fetchAsync(type);\n        }\n        if (isName(type, \"Page\") || !obj.has(\"Type\") && !obj.has(\"Kids\") && obj.has(\"Contents\")) {\n          if (!catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1);\n          }\n          if (!catalog.pageIndexCache.has(ref)) {\n            catalog.pageIndexCache.put(ref, 0);\n          }\n          return [obj, ref];\n        }\n      }\n      throw new FormatError(\"The Linearization dictionary doesn't point to a valid Page dictionary.\");\n    } catch (reason) {\n      warn(`_getLinearizationPage: \"${reason.message}\".`);\n      return catalog.getPageDict(pageIndex);\n    }\n  }\n  getPage(pageIndex) {\n    const cachedPromise = this._pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const {\n      catalog,\n      linearization,\n      xfaFactory\n    } = this;\n    let promise;\n    if (xfaFactory) {\n      promise = Promise.resolve([Dict.empty, null]);\n    } else if (linearization?.pageFirst === pageIndex) {\n      promise = this._getLinearizationPage(pageIndex);\n    } else {\n      promise = catalog.getPageDict(pageIndex);\n    }\n    promise = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        globalIdFactory: this._globalIdFactory,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        standardFontDataCache: catalog.standardFontDataCache,\n        globalImageCache: catalog.globalImageCache,\n        systemFontCache: catalog.systemFontCache,\n        nonBlendModesSet: catalog.nonBlendModesSet,\n        xfaFactory\n      });\n    });\n    this._pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n  async checkFirstPage(recoveryMode = false) {\n    if (recoveryMode) {\n      return;\n    }\n    try {\n      await this.getPage(0);\n    } catch (reason) {\n      if (reason instanceof XRefEntryException) {\n        this._pagePromises.delete(0);\n        await this.cleanup();\n        throw new XRefParseException();\n      }\n    }\n  }\n  async checkLastPage(recoveryMode = false) {\n    const {\n      catalog,\n      pdfManager\n    } = this;\n    catalog.setActualNumPages();\n    let numPages;\n    try {\n      await Promise.all([pdfManager.ensureDoc(\"xfaFactory\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"numPages\")]);\n      if (this.xfaFactory) {\n        return;\n      } else if (this.linearization) {\n        numPages = this.linearization.numPages;\n      } else {\n        numPages = catalog.numPages;\n      }\n      if (!Number.isInteger(numPages)) {\n        throw new FormatError(\"Page count is not an integer.\");\n      } else if (numPages <= 1) {\n        return;\n      }\n      await this.getPage(numPages - 1);\n    } catch (reason) {\n      this._pagePromises.delete(numPages - 1);\n      await this.cleanup();\n      if (reason instanceof XRefEntryException && !recoveryMode) {\n        throw new XRefParseException();\n      }\n      warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n      let pagesTree;\n      try {\n        pagesTree = await catalog.getAllPageDicts(recoveryMode);\n      } catch (reasonAll) {\n        if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n          throw new XRefParseException();\n        }\n        catalog.setActualNumPages(1);\n        return;\n      }\n      for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n        let promise;\n        if (pageDict instanceof Error) {\n          promise = Promise.reject(pageDict);\n          promise.catch(() => {});\n        } else {\n          promise = Promise.resolve(new Page({\n            pdfManager,\n            xref: this.xref,\n            pageIndex,\n            pageDict,\n            ref,\n            globalIdFactory: this._globalIdFactory,\n            fontCache: catalog.fontCache,\n            builtInCMapCache: catalog.builtInCMapCache,\n            standardFontDataCache: catalog.standardFontDataCache,\n            globalImageCache: catalog.globalImageCache,\n            systemFontCache: catalog.systemFontCache,\n            nonBlendModesSet: catalog.nonBlendModesSet,\n            xfaFactory: null\n          }));\n        }\n        this._pagePromises.set(pageIndex, promise);\n      }\n      catalog.setActualNumPages(pagesTree.size);\n    }\n  }\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog ? this.catalog.cleanup(manuallyTriggered) : clearGlobalCaches();\n  }\n  async #collectFieldObjects(name, parentRef, fieldRef, promises, annotationGlobals, visitedRefs, orphanFields) {\n    const {\n      xref\n    } = this;\n    if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) {\n      return;\n    }\n    visitedRefs.put(fieldRef);\n    const field = await xref.fetchAsync(fieldRef);\n    if (!(field instanceof Dict)) {\n      return;\n    }\n    if (field.has(\"T\")) {\n      const partName = stringToPDFString(await field.getAsync(\"T\"));\n      name = name === \"\" ? partName : `${name}.${partName}`;\n    } else {\n      let obj = field;\n      while (true) {\n        obj = obj.getRaw(\"Parent\") || parentRef;\n        if (obj instanceof Ref) {\n          if (visitedRefs.has(obj)) {\n            break;\n          }\n          obj = await xref.fetchAsync(obj);\n        }\n        if (!(obj instanceof Dict)) {\n          break;\n        }\n        if (obj.has(\"T\")) {\n          const partName = stringToPDFString(await obj.getAsync(\"T\"));\n          name = name === \"\" ? partName : `${name}.${partName}`;\n          break;\n        }\n      }\n    }\n    if (parentRef && !field.has(\"Parent\") && isName(field.get(\"Subtype\"), \"Widget\")) {\n      orphanFields.put(fieldRef, parentRef);\n    }\n    if (!promises.has(name)) {\n      promises.set(name, []);\n    }\n    promises.get(name).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {\n      warn(`#collectFieldObjects: \"${reason}\".`);\n      return null;\n    }));\n    if (!field.has(\"Kids\")) {\n      return;\n    }\n    const kids = await field.getAsync(\"Kids\");\n    if (Array.isArray(kids)) {\n      for (const kid of kids) {\n        await this.#collectFieldObjects(name, fieldRef, kid, promises, annotationGlobals, visitedRefs, orphanFields);\n      }\n    }\n  }\n  get fieldObjects() {\n    const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n      if (!formInfo.hasFields) {\n        return null;\n      }\n      const [annotationGlobals, acroForm] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureCatalog(\"acroForm\")]);\n      if (!annotationGlobals) {\n        return null;\n      }\n      const visitedRefs = new RefSet();\n      const allFields = Object.create(null);\n      const fieldPromises = new Map();\n      const orphanFields = new RefSetCache();\n      for (const fieldRef of await acroForm.getAsync(\"Fields\")) {\n        await this.#collectFieldObjects(\"\", null, fieldRef, fieldPromises, annotationGlobals, visitedRefs, orphanFields);\n      }\n      const allPromises = [];\n      for (const [name, promises] of fieldPromises) {\n        allPromises.push(Promise.all(promises).then(fields => {\n          fields = fields.filter(field => !!field);\n          if (fields.length > 0) {\n            allFields[name] = fields;\n          }\n        }));\n      }\n      await Promise.all(allPromises);\n      return {\n        allFields,\n        orphanFields\n      };\n    });\n    return shadow(this, \"fieldObjects\", promise);\n  }\n  get hasJSActions() {\n    const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n    return shadow(this, \"hasJSActions\", promise);\n  }\n  async _parseHasJSActions() {\n    const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog(\"jsActions\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n    if (catalogJsActions) {\n      return true;\n    }\n    if (fieldObjects) {\n      return Object.values(fieldObjects.allFields).some(fieldObject => fieldObject.some(object => object.actions !== null));\n    }\n    return false;\n  }\n  get calculationOrderIds() {\n    const calculationOrder = this.catalog.acroForm?.get(\"CO\");\n    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n    const ids = [];\n    for (const id of calculationOrder) {\n      if (id instanceof Ref) {\n        ids.push(id.toString());\n      }\n    }\n    return shadow(this, \"calculationOrderIds\", ids.length ? ids : null);\n  }\n  get annotationGlobals() {\n    return shadow(this, \"annotationGlobals\", AnnotationFactory.createGlobals(this.pdfManager));\n  }\n}\n\n;// ./src/core/pdf_manager.js\n\n\n\n\n\nfunction parseDocBaseUrl(url) {\n  if (url) {\n    const absoluteUrl = createValidAbsoluteUrl(url);\n    if (absoluteUrl) {\n      return absoluteUrl.href;\n    }\n    warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n  }\n  return null;\n}\nclass BasePdfManager {\n  constructor(args) {\n    this._docBaseUrl = parseDocBaseUrl(args.docBaseUrl);\n    this._docId = args.docId;\n    this._password = args.password;\n    this.enableXfa = args.enableXfa;\n    args.evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported;\n    args.evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported;\n    this.evaluatorOptions = Object.freeze(args.evaluatorOptions);\n  }\n  get docId() {\n    return this._docId;\n  }\n  get password() {\n    return this._password;\n  }\n  get docBaseUrl() {\n    return this._docBaseUrl;\n  }\n  get catalog() {\n    return this.pdfDocument.catalog;\n  }\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n  loadXfaFonts(handler, task) {\n    return this.pdfDocument.loadXfaFonts(handler, task);\n  }\n  loadXfaImages() {\n    return this.pdfDocument.loadXfaImages();\n  }\n  serializeXfaData(annotationStorage) {\n    return this.pdfDocument.serializeXfaData(annotationStorage);\n  }\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n  requestLoadedStream(noFetch = false) {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n  updatePassword(password) {\n    this._password = password;\n  }\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\nclass LocalPdfManager extends BasePdfManager {\n  constructor(args) {\n    super(args);\n    const stream = new Stream(args.source);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n  requestLoadedStream(noFetch = false) {\n    return this._loadedStreamPromise;\n  }\n  terminate(reason) {}\n}\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(args) {\n    super(args);\n    this.streamManager = new ChunkedStreamManager(args.source, {\n      msgHandler: args.handler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n  requestLoadedStream(noFetch = false) {\n    return this.streamManager.requestAllChunks(noFetch);\n  }\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({\n      chunk\n    });\n  }\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\n;// ./src/core/writer.js\n\n\n\n\n\n\n\nasync function writeObject(ref, obj, buffer, {\n  encrypt = null\n}) {\n  const transform = encrypt?.createCipherTransform(ref.num, ref.gen);\n  buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n  if (obj instanceof Dict) {\n    await writeDict(obj, buffer, transform);\n  } else if (obj instanceof BaseStream) {\n    await writeStream(obj, buffer, transform);\n  } else if (Array.isArray(obj) || ArrayBuffer.isView(obj)) {\n    await writeArray(obj, buffer, transform);\n  }\n  buffer.push(\"\\nendobj\\n\");\n}\nasync function writeDict(dict, buffer, transform) {\n  buffer.push(\"<<\");\n  for (const key of dict.getKeys()) {\n    buffer.push(` /${escapePDFName(key)} `);\n    await writeValue(dict.getRaw(key), buffer, transform);\n  }\n  buffer.push(\">>\");\n}\nasync function writeStream(stream, buffer, transform) {\n  let bytes = stream.getBytes();\n  const {\n    dict\n  } = stream;\n  const [filter, params] = await Promise.all([dict.getAsync(\"Filter\"), dict.getAsync(\"DecodeParms\")]);\n  const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter;\n  const isFilterZeroFlateDecode = isName(filterZero, \"FlateDecode\");\n  const MIN_LENGTH_FOR_COMPRESSING = 256;\n  if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) {\n    try {\n      const cs = new CompressionStream(\"deflate\");\n      const writer = cs.writable.getWriter();\n      await writer.ready;\n      writer.write(bytes).then(async () => {\n        await writer.ready;\n        await writer.close();\n      }).catch(() => {});\n      const buf = await new Response(cs.readable).arrayBuffer();\n      bytes = new Uint8Array(buf);\n      let newFilter, newParams;\n      if (!filter) {\n        newFilter = Name.get(\"FlateDecode\");\n      } else if (!isFilterZeroFlateDecode) {\n        newFilter = Array.isArray(filter) ? [Name.get(\"FlateDecode\"), ...filter] : [Name.get(\"FlateDecode\"), filter];\n        if (params) {\n          newParams = Array.isArray(params) ? [null, ...params] : [null, params];\n        }\n      }\n      if (newFilter) {\n        dict.set(\"Filter\", newFilter);\n      }\n      if (newParams) {\n        dict.set(\"DecodeParms\", newParams);\n      }\n    } catch (ex) {\n      info(`writeStream - cannot compress data: \"${ex}\".`);\n    }\n  }\n  let string = bytesToString(bytes);\n  if (transform) {\n    string = transform.encryptString(string);\n  }\n  dict.set(\"Length\", string.length);\n  await writeDict(dict, buffer, transform);\n  buffer.push(\" stream\\n\", string, \"\\nendstream\");\n}\nasync function writeArray(array, buffer, transform) {\n  buffer.push(\"[\");\n  let first = true;\n  for (const val of array) {\n    if (!first) {\n      buffer.push(\" \");\n    } else {\n      first = false;\n    }\n    await writeValue(val, buffer, transform);\n  }\n  buffer.push(\"]\");\n}\nasync function writeValue(value, buffer, transform) {\n  if (value instanceof Name) {\n    buffer.push(`/${escapePDFName(value.name)}`);\n  } else if (value instanceof Ref) {\n    buffer.push(`${value.num} ${value.gen} R`);\n  } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n    await writeArray(value, buffer, transform);\n  } else if (typeof value === \"string\") {\n    if (transform) {\n      value = transform.encryptString(value);\n    }\n    buffer.push(`(${escapeString(value)})`);\n  } else if (typeof value === \"number\") {\n    buffer.push(numberToString(value));\n  } else if (typeof value === \"boolean\") {\n    buffer.push(value.toString());\n  } else if (value instanceof Dict) {\n    await writeDict(value, buffer, transform);\n  } else if (value instanceof BaseStream) {\n    await writeStream(value, buffer, transform);\n  } else if (value === null) {\n    buffer.push(\"null\");\n  } else {\n    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n  }\n}\nfunction writeInt(number, size, offset, buffer) {\n  for (let i = size + offset - 1; i > offset - 1; i--) {\n    buffer[i] = number & 0xff;\n    number >>= 8;\n  }\n  return offset + size;\n}\nfunction writeString(string, offset, buffer) {\n  for (let i = 0, len = string.length; i < len; i++) {\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n  }\n}\nfunction computeMD5(filesize, xrefInfo) {\n  const time = Math.floor(Date.now() / 1000);\n  const filename = xrefInfo.filename || \"\";\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n  for (const value of Object.values(xrefInfo.info)) {\n    md5Buffer.push(value);\n    md5BufferLen += value.length;\n  }\n  const array = new Uint8Array(md5BufferLen);\n  let offset = 0;\n  for (const str of md5Buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n  return bytesToString(calculateMD5(array));\n}\nfunction writeXFADataForAcroform(str, changes) {\n  const xml = new SimpleXMLParser({\n    hasAttributes: true\n  }).parseFromString(str);\n  for (const {\n    xfa\n  } of changes) {\n    if (!xfa) {\n      continue;\n    }\n    const {\n      path,\n      value\n    } = xfa;\n    if (!path) {\n      continue;\n    }\n    const nodePath = parseXFAPath(path);\n    let node = xml.documentElement.searchNode(nodePath, 0);\n    if (!node && nodePath.length > 1) {\n      node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\n    }\n    if (node) {\n      node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode(\"value\", val)) : [new SimpleDOMNode(\"#text\", value)];\n    } else {\n      warn(`Node not found for path: ${path}`);\n    }\n  }\n  const buffer = [];\n  xml.documentElement.dump(buffer);\n  return buffer.join(\"\");\n}\nasync function updateAcroform({\n  xref,\n  acroForm,\n  acroFormRef,\n  hasXfa,\n  hasXfaDatasetsEntry,\n  xfaDatasetsRef,\n  needAppearances,\n  changes\n}) {\n  if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n    warn(\"XFA - Cannot save it\");\n  }\n  if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\n    return;\n  }\n  const dict = acroForm.clone();\n  if (hasXfa && !hasXfaDatasetsEntry) {\n    const newXfa = acroForm.get(\"XFA\").slice();\n    newXfa.splice(2, 0, \"datasets\");\n    newXfa.splice(3, 0, xfaDatasetsRef);\n    dict.set(\"XFA\", newXfa);\n  }\n  if (needAppearances) {\n    dict.set(\"NeedAppearances\", true);\n  }\n  changes.put(acroFormRef, {\n    data: dict\n  });\n}\nfunction updateXFA({\n  xfaData,\n  xfaDatasetsRef,\n  changes,\n  xref\n}) {\n  if (xfaData === null) {\n    const datasets = xref.fetchIfRef(xfaDatasetsRef);\n    xfaData = writeXFADataForAcroform(datasets.getString(), changes);\n  }\n  const xfaDataStream = new StringStream(xfaData);\n  xfaDataStream.dict = new Dict(xref);\n  xfaDataStream.dict.set(\"Type\", Name.get(\"EmbeddedFile\"));\n  changes.put(xfaDatasetsRef, {\n    data: xfaDataStream\n  });\n}\nasync function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n  buffer.push(\"xref\\n\");\n  const indexes = getIndexes(newRefs);\n  let indexesPosition = 0;\n  for (const {\n    ref,\n    data\n  } of newRefs) {\n    if (ref.num === indexes[indexesPosition]) {\n      buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\n`);\n      indexesPosition += 2;\n    }\n    if (data !== null) {\n      buffer.push(`${baseOffset.toString().padStart(10, \"0\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \"0\")} n\\r\\n`);\n      baseOffset += data.length;\n    } else {\n      buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, \"0\")} f\\r\\n`);\n    }\n  }\n  computeIDs(baseOffset, xrefInfo, newXref);\n  buffer.push(\"trailer\\n\");\n  await writeDict(newXref, buffer);\n  buffer.push(\"\\nstartxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction getIndexes(newRefs) {\n  const indexes = [];\n  for (const {\n    ref\n  } of newRefs) {\n    if (ref.num === indexes.at(-2) + indexes.at(-1)) {\n      indexes[indexes.length - 1] += 1;\n    } else {\n      indexes.push(ref.num, 1);\n    }\n  }\n  return indexes;\n}\nasync function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n  const xrefTableData = [];\n  let maxOffset = 0;\n  let maxGen = 0;\n  for (const {\n    ref,\n    data\n  } of newRefs) {\n    let gen;\n    maxOffset = Math.max(maxOffset, baseOffset);\n    if (data !== null) {\n      gen = Math.min(ref.gen, 0xffff);\n      xrefTableData.push([1, baseOffset, gen]);\n      baseOffset += data.length;\n    } else {\n      gen = Math.min(ref.gen + 1, 0xffff);\n      xrefTableData.push([0, 0, gen]);\n    }\n    maxGen = Math.max(maxGen, gen);\n  }\n  newXref.set(\"Index\", getIndexes(newRefs));\n  const offsetSize = getSizeInBytes(maxOffset);\n  const maxGenSize = getSizeInBytes(maxGen);\n  const sizes = [1, offsetSize, maxGenSize];\n  newXref.set(\"W\", sizes);\n  computeIDs(baseOffset, xrefInfo, newXref);\n  const structSize = sizes.reduce((a, x) => a + x, 0);\n  const data = new Uint8Array(structSize * xrefTableData.length);\n  const stream = new Stream(data);\n  stream.dict = newXref;\n  let offset = 0;\n  for (const [type, objOffset, gen] of xrefTableData) {\n    offset = writeInt(type, sizes[0], offset, data);\n    offset = writeInt(objOffset, sizes[1], offset, data);\n    offset = writeInt(gen, sizes[2], offset, data);\n  }\n  await writeObject(xrefInfo.newRef, stream, buffer, {});\n  buffer.push(\"startxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n}\nfunction computeIDs(baseOffset, xrefInfo, newXref) {\n  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n    const md5 = computeMD5(baseOffset, xrefInfo);\n    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n  }\n}\nfunction getTrailerDict(xrefInfo, changes, useXrefStream) {\n  const newXref = new Dict(null);\n  newXref.set(\"Prev\", xrefInfo.startXRef);\n  const refForXrefTable = xrefInfo.newRef;\n  if (useXrefStream) {\n    changes.put(refForXrefTable, {\n      data: \"\"\n    });\n    newXref.set(\"Size\", refForXrefTable.num + 1);\n    newXref.set(\"Type\", Name.get(\"XRef\"));\n  } else {\n    newXref.set(\"Size\", refForXrefTable.num);\n  }\n  if (xrefInfo.rootRef !== null) {\n    newXref.set(\"Root\", xrefInfo.rootRef);\n  }\n  if (xrefInfo.infoRef !== null) {\n    newXref.set(\"Info\", xrefInfo.infoRef);\n  }\n  if (xrefInfo.encryptRef !== null) {\n    newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n  }\n  return newXref;\n}\nasync function writeChanges(changes, xref, buffer = []) {\n  const newRefs = [];\n  for (const [ref, {\n    data\n  }] of changes.items()) {\n    if (data === null || typeof data === \"string\") {\n      newRefs.push({\n        ref,\n        data\n      });\n      continue;\n    }\n    await writeObject(ref, data, buffer, xref);\n    newRefs.push({\n      ref,\n      data: buffer.join(\"\")\n    });\n    buffer.length = 0;\n  }\n  return newRefs.sort((a, b) => a.ref.num - b.ref.num);\n}\nasync function incrementalUpdate({\n  originalData,\n  xrefInfo,\n  changes,\n  xref = null,\n  hasXfa = false,\n  xfaDatasetsRef = null,\n  hasXfaDatasetsEntry = false,\n  needAppearances,\n  acroFormRef = null,\n  acroForm = null,\n  xfaData = null,\n  useXrefStream = false\n}) {\n  await updateAcroform({\n    xref,\n    acroForm,\n    acroFormRef,\n    hasXfa,\n    hasXfaDatasetsEntry,\n    xfaDatasetsRef,\n    needAppearances,\n    changes\n  });\n  if (hasXfa) {\n    updateXFA({\n      xfaData,\n      xfaDatasetsRef,\n      changes,\n      xref\n    });\n  }\n  const newXref = getTrailerDict(xrefInfo, changes, useXrefStream);\n  const buffer = [];\n  const newRefs = await writeChanges(changes, xref, buffer);\n  let baseOffset = originalData.length;\n  const lastByte = originalData.at(-1);\n  if (lastByte !== 0x0a && lastByte !== 0x0d) {\n    buffer.push(\"\\n\");\n    baseOffset += 1;\n  }\n  for (const {\n    data\n  } of newRefs) {\n    if (data !== null) {\n      buffer.push(data);\n    }\n  }\n  await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\n  const totalLength = buffer.reduce((a, str) => a + str.length, originalData.length);\n  const array = new Uint8Array(totalLength);\n  array.set(originalData);\n  let offset = originalData.length;\n  for (const str of buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n  return array;\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2\n};\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(reason) {\n  if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n    unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\nclass MessageHandler {\n  #messageAC = new AbortController();\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n      signal: this.#messageAC.signal\n    });\n  }\n  #onMessage({\n    data\n  }) {\n    if (data.targetName !== this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      this.#processStreamMessage(data);\n      return;\n    }\n    if (data.callback) {\n      const callbackId = data.callbackId;\n      const capability = this.callbackCapabilities[callbackId];\n      if (!capability) {\n        throw new Error(`Cannot resolve callback ${callbackId}`);\n      }\n      delete this.callbackCapabilities[callbackId];\n      if (data.callback === CallbackKind.DATA) {\n        capability.resolve(data.data);\n      } else if (data.callback === CallbackKind.ERROR) {\n        capability.reject(wrapReason(data.reason));\n      } else {\n        throw new Error(\"Unexpected callback case\");\n      }\n      return;\n    }\n    const action = this.actionHandler[data.action];\n    if (!action) {\n      throw new Error(`Unknown action from worker: ${data.action}`);\n    }\n    if (data.callbackId) {\n      const sourceName = this.sourceName,\n        targetName = data.sourceName,\n        comObj = this.comObj;\n      Promise.try(action, data.data).then(function (result) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          callback: CallbackKind.DATA,\n          callbackId: data.callbackId,\n          data: result\n        });\n      }, function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          callback: CallbackKind.ERROR,\n          callbackId: data.callbackId,\n          reason: wrapReason(reason)\n        });\n      });\n      return;\n    }\n    if (data.streamId) {\n      this.#createStreamSink(data);\n      return;\n    }\n    action(data.data);\n  }\n  on(actionName, handler) {\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n  send(actionName, data, transfers) {\n    this.comObj.postMessage({\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data\n    }, transfers);\n  }\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = Promise.withResolvers();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage({\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        callbackId,\n        data\n      }, transfers);\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n    return new ReadableStream({\n      start: controller => {\n        const startCapability = Promise.withResolvers();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          pullCall: null,\n          cancelCall: null,\n          isClosed: false\n        };\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize\n        }, transfers);\n        return startCapability.promise;\n      },\n      pull: controller => {\n        const pullCapability = Promise.withResolvers();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.PULL,\n          streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: reason => {\n        assert(reason instanceof Error, \"cancel must have a valid reason\");\n        const cancelCapability = Promise.withResolvers();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CANCEL,\n          streamId,\n          reason: wrapReason(reason)\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  }\n  #createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = Promise.withResolvers();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ENQUEUE,\n          streamId,\n          chunk\n        }, transfers);\n      },\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId\n        });\n        delete self.streamSinks[streamId];\n      },\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason)\n        });\n      },\n      sinkCapability: Promise.withResolvers(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    Promise.try(action, data.data, streamSink).then(function () {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        success: true\n      });\n    }, function (reason) {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        reason: wrapReason(reason)\n      });\n    });\n  }\n  #processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n          break;\n        }\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        streamSink.desiredSize = data.desiredSize;\n        Promise.try(streamSink.onPull || onFn).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n        const dataReason = wrapReason(data.reason);\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        streamSink.sinkCapability.reject(dataReason);\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n  async #deleteStreamController(streamController, streamId) {\n    await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n    delete this.streamControllers[streamId];\n  }\n  destroy() {\n    this.#messageAC?.abort();\n    this.#messageAC = null;\n  }\n}\n\n;// ./src/core/worker_stream.js\n\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  getFullReader() {\n    assert(!this._fullRequestReader, \"PDFWorkerStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n    this._headersReady = this._msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(data => {\n      this._isStreamingSupported = data.isStreamingSupported;\n      this._isRangeSupported = data.isRangeSupported;\n      this._contentLength = data.contentLength;\n    });\n  }\n  get headersReady() {\n    return this._headersReady;\n  }\n  get contentLength() {\n    return this._contentLength;\n  }\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n  async read() {\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    return {\n      value: value.buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end\n    });\n    this._reader = readableStream.getReader();\n  }\n  get isStreamingSupported() {\n    return false;\n  }\n  async read() {\n    const {\n      value,\n      done\n    } = await this._reader.read();\n    if (done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n    return {\n      value: value.buffer,\n      done: false\n    };\n  }\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n;// ./src/core/worker.js\n\n\n\n\n\n\n\n\n\n\nclass WorkerTask {\n  constructor(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = Promise.withResolvers();\n  }\n  get finished() {\n    return this._capability.promise;\n  }\n  finish() {\n    this._capability.resolve();\n  }\n  terminate() {\n    this.terminated = true;\n  }\n  ensureNotTerminated() {\n    if (this.terminated) {\n      throw new Error(\"Worker task was terminated\");\n    }\n  }\n}\nclass WorkerMessageHandler {\n  static {\n    if (typeof window === \"undefined\" && !isNodeJS && typeof self !== \"undefined\" && typeof self.postMessage === \"function\" && \"onmessage\" in self) {\n      this.initializeFromPort(self);\n    }\n  }\n  static setup(handler, port) {\n    let testMessageProcessed = false;\n    handler.on(\"test\", data => {\n      if (testMessageProcessed) {\n        return;\n      }\n      testMessageProcessed = true;\n      handler.send(\"test\", data instanceof Uint8Array);\n    });\n    handler.on(\"configure\", data => {\n      setVerbosityLevel(data.verbosity);\n    });\n    handler.on(\"GetDocRequest\", data => this.createDocumentHandler(data, port));\n  }\n  static createDocumentHandler(docParams, port) {\n    let pdfManager;\n    let terminated = false;\n    let cancelXHRs = null;\n    const WorkerTasks = new Set();\n    const verbosity = getVerbosityLevel();\n    const {\n      docId,\n      apiVersion\n    } = docParams;\n    const workerVersion = \"4.9.155\";\n    if (apiVersion !== workerVersion) {\n      throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n    }\n    const enumerableProperties = [];\n    for (const property in []) {\n      enumerableProperties.push(property);\n    }\n    if (enumerableProperties.length) {\n      throw new Error(\"The `Array.prototype` contains unexpected enumerable properties: \" + enumerableProperties.join(\", \") + \"; thus breaking e.g. `for...in` iteration of `Array`s.\");\n    }\n    const workerHandlerName = docId + \"_worker\";\n    let handler = new MessageHandler(workerHandlerName, docId, port);\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n    function startWorkerTask(task) {\n      WorkerTasks.add(task);\n    }\n    function finishWorkerTask(task) {\n      task.finish();\n      WorkerTasks.delete(task);\n    }\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n      await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n      await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n      const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n      if (isPureXfa) {\n        const task = new WorkerTask(\"loadXfaFonts\");\n        startWorkerTask(task);\n        await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]);\n      }\n      const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprints\")]);\n      const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc(\"htmlForXfa\") : null;\n      return {\n        numPages,\n        fingerprints,\n        htmlForXfa\n      };\n    }\n    async function getPdfManager({\n      data,\n      password,\n      disableAutoFetch,\n      rangeChunkSize,\n      length,\n      docBaseUrl,\n      enableXfa,\n      evaluatorOptions\n    }) {\n      const pdfManagerArgs = {\n        source: null,\n        disableAutoFetch,\n        docBaseUrl,\n        docId,\n        enableXfa,\n        evaluatorOptions,\n        handler,\n        length,\n        password,\n        rangeChunkSize\n      };\n      if (data) {\n        pdfManagerArgs.source = data;\n        return new LocalPdfManager(pdfManagerArgs);\n      }\n      const pdfStream = new PDFWorkerStream(handler),\n        fullRequest = pdfStream.getFullReader();\n      const pdfManagerCapability = Promise.withResolvers();\n      let newPdfManager,\n        cachedChunks = [],\n        loaded = 0;\n      fullRequest.headersReady.then(function () {\n        if (!fullRequest.isRangeSupported) {\n          return;\n        }\n        pdfManagerArgs.source = pdfStream;\n        pdfManagerArgs.length = fullRequest.contentLength;\n        pdfManagerArgs.disableAutoFetch ||= fullRequest.isStreamingSupported;\n        newPdfManager = new NetworkPdfManager(pdfManagerArgs);\n        for (const chunk of cachedChunks) {\n          newPdfManager.sendProgressiveData(chunk);\n        }\n        cachedChunks = [];\n        pdfManagerCapability.resolve(newPdfManager);\n        cancelXHRs = null;\n      }).catch(function (reason) {\n        pdfManagerCapability.reject(reason);\n        cancelXHRs = null;\n      });\n      new Promise(function (resolve, reject) {\n        const readChunk = function ({\n          value,\n          done\n        }) {\n          try {\n            ensureNotTerminated();\n            if (done) {\n              if (!newPdfManager) {\n                const pdfFile = arrayBuffersToBytes(cachedChunks);\n                cachedChunks = [];\n                if (length && pdfFile.length !== length) {\n                  warn(\"reported HTTP length is different from actual\");\n                }\n                pdfManagerArgs.source = pdfFile;\n                newPdfManager = new LocalPdfManager(pdfManagerArgs);\n                pdfManagerCapability.resolve(newPdfManager);\n              }\n              cancelXHRs = null;\n              return;\n            }\n            loaded += value.byteLength;\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0)\n              });\n            }\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      }).catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n      cancelXHRs = reason => {\n        pdfStream.cancelAllRequests(reason);\n      };\n      return pdfManagerCapability.promise;\n    }\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", {\n          pdfInfo: doc\n        });\n      }\n      function onFailure(ex) {\n        ensureNotTerminated();\n        if (ex instanceof PasswordException) {\n          const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n          handler.sendWithPromise(\"PasswordRequest\", ex).then(function ({\n            password\n          }) {\n            finishWorkerTask(task);\n            pdfManager.updatePassword(password);\n            pdfManagerReady();\n          }).catch(function () {\n            finishWorkerTask(task);\n            handler.send(\"DocException\", ex);\n          });\n        } else if (ex instanceof InvalidPDFException || ex instanceof MissingPDFException || ex instanceof UnexpectedResponseException || ex instanceof UnknownErrorException) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\"DocException\", new UnknownErrorException(ex.message, ex.toString()));\n        }\n      }\n      function pdfManagerReady() {\n        ensureNotTerminated();\n        loadDocument(false).then(onSuccess, function (reason) {\n          ensureNotTerminated();\n          if (!(reason instanceof XRefParseException)) {\n            onFailure(reason);\n            return;\n          }\n          pdfManager.requestLoadedStream().then(function () {\n            ensureNotTerminated();\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        });\n      }\n      ensureNotTerminated();\n      getPdfManager(data).then(function (newPdfManager) {\n        if (terminated) {\n          newPdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n          throw new Error(\"Worker was terminated\");\n        }\n        pdfManager = newPdfManager;\n        pdfManager.requestLoadedStream(true).then(stream => {\n          handler.send(\"DataLoaded\", {\n            length: stream.bytes.byteLength\n          });\n        });\n      }).then(pdfManagerReady, onFailure);\n    }\n    handler.on(\"GetPage\", function (data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            refStr: ref?.toString() ?? null,\n            userUnit,\n            view\n          };\n        });\n      });\n    });\n    handler.on(\"GetPageIndex\", function (data) {\n      const pageRef = Ref.get(data.num, data.gen);\n      return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n    });\n    handler.on(\"GetDestinations\", function (data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n    handler.on(\"GetDestination\", function (data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n    handler.on(\"GetPageLabels\", function (data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n    handler.on(\"GetPageLayout\", function (data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n    handler.on(\"GetPageMode\", function (data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n    handler.on(\"GetAttachments\", function (data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n    handler.on(\"GetDocJSActions\", function (data) {\n      return pdfManager.ensureCatalog(\"jsActions\");\n    });\n    handler.on(\"GetPageJSActions\", function ({\n      pageIndex\n    }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"jsActions\");\n      });\n    });\n    handler.on(\"GetOutline\", function (data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n    handler.on(\"GetOptionalContentConfig\", function (data) {\n      return pdfManager.ensureCatalog(\"optionalContentConfig\");\n    });\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n    handler.on(\"GetMetadata\", function (data) {\n      return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\")]);\n    });\n    handler.on(\"GetMarkInfo\", function (data) {\n      return pdfManager.ensureCatalog(\"markInfo\");\n    });\n    handler.on(\"GetData\", function (data) {\n      return pdfManager.requestLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n    handler.on(\"GetAnnotations\", function ({\n      pageIndex,\n      intent\n    }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\n        startWorkerTask(task);\n        return page.getAnnotationsData(handler, task, intent).then(data => {\n          finishWorkerTask(task);\n          return data;\n        }, reason => {\n          finishWorkerTask(task);\n          throw reason;\n        });\n      });\n    });\n    handler.on(\"GetFieldObjects\", function (data) {\n      return pdfManager.ensureDoc(\"fieldObjects\").then(fieldObjects => fieldObjects?.allFields || null);\n    });\n    handler.on(\"HasJSActions\", function (data) {\n      return pdfManager.ensureDoc(\"hasJSActions\");\n    });\n    handler.on(\"GetCalculationOrderIds\", function (data) {\n      return pdfManager.ensureDoc(\"calculationOrderIds\");\n    });\n    handler.on(\"SaveDocument\", async function ({\n      isPureXfa,\n      numPages,\n      annotationStorage,\n      filename\n    }) {\n      const globalPromises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureCatalog(\"acroFormRef\"), pdfManager.ensureDoc(\"startXRef\"), pdfManager.ensureDoc(\"xref\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"structTreeRoot\")];\n      const changes = new RefSetCache();\n      const promises = [];\n      const newAnnotationsByPage = !isPureXfa ? getNewAnnotationsMap(annotationStorage) : null;\n      const [stream, acroForm, acroFormRef, startXRef, xref, linearization, _structTreeRoot] = await Promise.all(globalPromises);\n      const catalogRef = xref.trailer.getRaw(\"Root\") || null;\n      let structTreeRoot;\n      if (newAnnotationsByPage) {\n        if (!_structTreeRoot) {\n          if (await StructTreeRoot.canCreateStructureTree({\n            catalogRef,\n            pdfManager,\n            newAnnotationsByPage\n          })) {\n            structTreeRoot = null;\n          }\n        } else if (await _structTreeRoot.canUpdateStructTree({\n          pdfManager,\n          xref,\n          newAnnotationsByPage\n        })) {\n          structTreeRoot = _structTreeRoot;\n        }\n        const imagePromises = AnnotationFactory.generateImages(annotationStorage.values(), xref, pdfManager.evaluatorOptions.isOffscreenCanvasSupported);\n        const newAnnotationPromises = structTreeRoot === undefined ? promises : [];\n        for (const [pageIndex, annotations] of newAnnotationsByPage) {\n          newAnnotationPromises.push(pdfManager.getPage(pageIndex).then(page => {\n            const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\n            return page.saveNewAnnotations(handler, task, annotations, imagePromises, changes).finally(function () {\n              finishWorkerTask(task);\n            });\n          }));\n        }\n        if (structTreeRoot === null) {\n          promises.push(Promise.all(newAnnotationPromises).then(async () => {\n            await StructTreeRoot.createStructureTree({\n              newAnnotationsByPage,\n              xref,\n              catalogRef,\n              pdfManager,\n              changes\n            });\n          }));\n        } else if (structTreeRoot) {\n          promises.push(Promise.all(newAnnotationPromises).then(async () => {\n            await structTreeRoot.updateStructureTree({\n              newAnnotationsByPage,\n              pdfManager,\n              changes\n            });\n          }));\n        }\n      }\n      if (isPureXfa) {\n        promises.push(pdfManager.serializeXfaData(annotationStorage));\n      } else {\n        for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n          promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n            const task = new WorkerTask(`Save: page ${pageIndex}`);\n            return page.save(handler, task, annotationStorage, changes).finally(function () {\n              finishWorkerTask(task);\n            });\n          }));\n        }\n      }\n      const refs = await Promise.all(promises);\n      let xfaData = null;\n      if (isPureXfa) {\n        xfaData = refs[0];\n        if (!xfaData) {\n          return stream.bytes;\n        }\n      } else if (changes.size === 0) {\n        return stream.bytes;\n      }\n      const needAppearances = acroFormRef && acroForm instanceof Dict && changes.values().some(ref => ref.needAppearances);\n      const xfa = acroForm instanceof Dict && acroForm.get(\"XFA\") || null;\n      let xfaDatasetsRef = null;\n      let hasXfaDatasetsEntry = false;\n      if (Array.isArray(xfa)) {\n        for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n          if (xfa[i] === \"datasets\") {\n            xfaDatasetsRef = xfa[i + 1];\n            hasXfaDatasetsEntry = true;\n          }\n        }\n        if (xfaDatasetsRef === null) {\n          xfaDatasetsRef = xref.getNewTemporaryRef();\n        }\n      } else if (xfa) {\n        warn(\"Unsupported XFA type.\");\n      }\n      let newXrefInfo = Object.create(null);\n      if (xref.trailer) {\n        const infoObj = Object.create(null);\n        const xrefInfo = xref.trailer.get(\"Info\") || null;\n        if (xrefInfo instanceof Dict) {\n          for (const [key, value] of xrefInfo) {\n            if (typeof value === \"string\") {\n              infoObj[key] = stringToPDFString(value);\n            }\n          }\n        }\n        newXrefInfo = {\n          rootRef: catalogRef,\n          encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n          newRef: xref.getNewTemporaryRef(),\n          infoRef: xref.trailer.getRaw(\"Info\") || null,\n          info: infoObj,\n          fileIds: xref.trailer.get(\"ID\") || null,\n          startXRef: linearization ? startXRef : xref.lastXRefStreamPos ?? startXRef,\n          filename\n        };\n      }\n      return incrementalUpdate({\n        originalData: stream.bytes,\n        xrefInfo: newXrefInfo,\n        changes,\n        xref,\n        hasXfa: !!xfa,\n        xfaDatasetsRef,\n        hasXfaDatasetsEntry,\n        needAppearances,\n        acroFormRef,\n        acroForm,\n        xfaData,\n        useXrefStream: isDict(xref.topDict, \"XRef\")\n      }).finally(() => {\n        xref.resetNewTemporaryRef();\n      });\n    });\n    handler.on(\"GetOperatorList\", function (data, sink) {\n      const pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n        startWorkerTask(task);\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n        page.getOperatorList({\n          handler,\n          sink,\n          task,\n          intent: data.intent,\n          cacheKey: data.cacheKey,\n          annotationStorage: data.annotationStorage,\n          modifiedIds: data.modifiedIds\n        }).then(function (operatorListInfo) {\n          finishWorkerTask(task);\n          if (start) {\n            info(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`);\n          }\n          sink.close();\n        }, function (reason) {\n          finishWorkerTask(task);\n          if (task.terminated) {\n            return;\n          }\n          sink.error(reason);\n        });\n      });\n    });\n    handler.on(\"GetTextContent\", function (data, sink) {\n      const {\n        pageIndex,\n        includeMarkedContent,\n        disableNormalization\n      } = data;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n        page.extractTextContent({\n          handler,\n          task,\n          sink,\n          includeMarkedContent,\n          disableNormalization\n        }).then(function () {\n          finishWorkerTask(task);\n          if (start) {\n            info(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`);\n          }\n          sink.close();\n        }, function (reason) {\n          finishWorkerTask(task);\n          if (task.terminated) {\n            return;\n          }\n          sink.error(reason);\n        });\n      });\n    });\n    handler.on(\"GetStructTree\", function (data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"getStructTree\");\n      });\n    });\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n    handler.on(\"Cleanup\", function (data) {\n      return pdfManager.cleanup(true);\n    });\n    handler.on(\"Terminate\", function (data) {\n      terminated = true;\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n        pdfManager = null;\n      } else {\n        clearGlobalCaches();\n      }\n      cancelXHRs?.(new AbortException(\"Worker was terminated.\"));\n      for (const task of WorkerTasks) {\n        waitOn.push(task.finished);\n        task.terminate();\n      }\n      return Promise.all(waitOn).then(function () {\n        handler.destroy();\n        handler = null;\n      });\n    });\n    handler.on(\"Ready\", function (data) {\n      setupDoc(docParams);\n      docParams = null;\n    });\n    return workerHandlerName;\n  }\n  static initializeFromPort(port) {\n    const handler = new MessageHandler(\"worker\", \"main\", port);\n    this.setup(handler, port);\n    handler.send(\"ready\", null);\n  }\n}\n\n;// ./src/pdf.worker.js\n\nconst pdfjsVersion = \"4.9.155\";\nconst pdfjsBuild = \"a4eb8407c\";\n\nvar __webpack_exports__WorkerMessageHandler = __webpack_exports__.WorkerMessageHandler;\nexport { __webpack_exports__WorkerMessageHandler as WorkerMessageHandler };\n\n//# sourceMappingURL=pdf.worker.mjs.map"],"names":["__webpack_require__","d","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","globalThis","pdfjsWorker","WorkerMessageHandler","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","IS_EDITING","OPLIST","AnnotationEditorPrefix","AnnotationEditorType","DISABLE","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","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","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","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","setStrokeTransparent","setFillTransparent","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","value","nonSerializable","configurable","writable","BaseException","BaseExceptionClosure","message","name","this","constructor","PasswordException","code","super","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","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","platform","navigator","isMac","includes","isWindows","isFirefox","userAgent","isCSSRoundSupported","CSS","supports","hexNumbers","Array","from","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","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","getExtremumOnCurve","x0","x1","x2","x3","y0","y1","y2","y3","t","mt","tt","ttt","x","y","getExtremum","abs","delta","sqrtDelta","a2","bezierBoundingBox","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decoded","decode","replaceAll","ex","ii","charCode","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","_","normalize","AnnotationPrefix","FontRenderOps","BEZIER_CURVE_TO","MOVE_TO","LINE_TO","QUADRATIC_CURVE_TO","RESTORE","SCALE","TRANSFORM","TRANSLATE","toHexUtil","arr","toHex","num","fromBase64Util","fromBase64","atob","Promise","try","fn","args","resolve","CIRCULAR_REF","Symbol","EOF","CmdCache","create","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","iterator","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","dict","property","subDict","clear","clone","gen","fromString","ref","exec","parseInt","RefSet","parent","_set","Set","put","add","remove","delete","RefSetCache","putAlias","aliasRef","items","isName","v","isCmd","isDict","isRefsEqual","v1","v2","BaseStream","isEmpty","isDataLoaded","getByte","getBytes","getImageData","decoderOptions","asyncGetBytes","isAsync","canAsyncDecodeImageFromBuffer","getTransferableImage","peekByte","peekedByte","pos","peekBytes","getUint16","b0","b1","getInt32","b2","b3","getByteRange","begin","end","getString","skip","reset","moveStart","makeSubStream","start","getBaseStreams","PDF_VERSION_REGEXP","MAX_INT_32","MIN_INT_32","getLookupTableFactory","initializer","lookup","MissingDataException","ParserEOFException","XRefEntryException","XRefParseException","arrayBuffersToBytes","dataLength","byteLength","data","item","getInheritableProperty","stopWhenFound","visited","getParentToUpdate","firstDict","result","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","roman","repeat","toLowerCase","log2","ceil","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","isBooleanArray","len","every","isNumberArray","ArrayBuffer","isView","lookupMatrix","fallback","lookupRect","lookupNormalRect","parseXFAPath","path","positionPattern","split","map","component","escapePDFName","char","substring","escapeString","_collectJS","entry","list","parents","element","js","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","codePointIter","codePointAt","encodeToXmlString","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","stringToAsciiOrUTF16BE","isAscii","stringToUTF16String","stringToUTF16HexString","buf","bigEndian","getRotationMatrix","rotation","width","height","getSizeInBytes","Stream","arrayBuffer","strEnd","StringStream","NullStream","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","onReceiveData","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","ChunkedStreamSubstream","missingChunks","subStream","ChunkedStreamManager","pdfNetworkStream","rangeChunkSize","stream","disableAutoFetch","msgHandler","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","withResolvers","sendRequest","rangeReader","getRangeReader","isStreamingSupported","onProgress","bind","loaded","reject","readChunk","done","chunkData","read","then","e","requestAllChunks","noFetch","_requestChunks","promise","requestId","chunksNeeded","capability","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","catch","reason","getStream","requestRange","getBeginChunk","getEndChunk","requestRanges","ranges","range","sort","groupedChunks","prevChunk","send","total","isProgressive","loadedRequests","lastChunk","onError","err","abort","cancelAllRequests","resizeRgbImage","src","dest","w1","h1","w2","h2","alpha01","COMPONENTS","xRatio","yRatio","oldIndex","newIndex","xScaled","Uint16Array","w1Scanline","py","j","resizeRgbaImage","src32","dest32","rgbMask","copyRgbaImage","ColorSpace","numComps","getRgb","srcOffset","rgb","Uint8ClampedArray","getRgbItem","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","rgbPos","destPos","usesZeroToOneRange","_cache","cacheKey","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","resources","pdfFunctionFactory","_parse","parse","cachedColorSpace","fetchIfRef","singletons","gray","rgba","cmyk","PatternCS","colorSpaces","resourcesCS","mode","params","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","matrix","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceRgbaCS","DeviceCmykCS","base","tmpBuf","Float32Array","scale","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","_alpha01","toRgb","srcScale","k","XW","YW","ZW","XB","YB","ZB","G","A","AG","L","val","static","GR","GG","GB","MXA","MYA","MZA","MXB","MYB","MZB","MXC","MYC","MZC","matrixProduct","toFlat","sourceWhitePoint","LMS","toD65","D65X","D65Y","D65Z","sRGBTransferFunction","color","adjustToRange","decodeL","DECODE_L_CONSTANT","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","BRADFORD_SCALE_MATRIX","LMS_Flat","tempNormalizeMatrix","BRADFORD_SCALE_INVERSE_MATRIX","normalizeWhitePointToD65","LMS_D65","B","AGR","BGG","CGB","Y","Z","XYZ","tempConvertMatrix1","tempConvertMatrix2","XYZ_Black","XYZ_D65","FLAT_WHITEPOINT_MATRIX","SRGB","SRGB_D65_XYZ_TO_RGB_MATRIX","amin","amax","bmin","bmax","fn_g","high1","low2","high2","maxVal","Ls","as","bs","M","N","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","sign","readString","BinaryCMapReader","cMap","extend","header","vertical","useCMap","tmp","sequence","dataSize","ucs2DataSize","subitemsCount","addCodespaceRange","mapOne","mapCidRange","mapBfRange","emptyBuffer","DecodeStream","maybeMinBufferLength","_rawMinBufferLength","bufferLength","eof","minBufferLength","readBlock","ensureBuffer","requested","buffer2","bufEnd","decodeImage","StreamsSequenceStream","streams","filter","s","maybeLength","_onError","shift","newLength","baseStreamsBuf","baseStreams","Ascii85Stream","input","TILDA_CHAR","Z_LOWER_CHAR","AsciiHexStream","firstDigit","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","CCITTFaxDecoder","source","next","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","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limit","limitValue","CCITTFaxStream","ccittFaxDecoder","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","FlateStream","cmf","flg","codeSize","codeBuf","_decoderOptions","readable","DecompressionStream","writer","getWriter","ready","write","async","close","totalLength","getBits","getCode","codes","maxLen","codeLen","codeVal","generateHuffmanTable","lengths","endsStreamOnError","hdr","blockLen","check","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","QeTable","qe","nmps","nlps","switchFlag","ArithmeticDecoder","bp","dataEnd","chigh","clow","byteIn","ct","readBit","contexts","cx_index","cx_mps","qeTableIcx","qeIcx","Jbig2Error","ContextCache","getContexts","id","Int8Array","DecodingContext","contextCache","cache","decodeInteger","procedure","prev","readBits","bit","signedValue","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","bitmap","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","at","Reader","decodeMMRBitmap","useskip","template","concat","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","i0","j0","ltp","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","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","numberOfSymbolsDecoded","xMax","bitmapWidth","symbolBitmap","xMin","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","increment","offsetT","offsetS","s2","t2","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","segments","segment","randomAccess","processSegment","visitor","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","SimpleSegmentVisitor","onPageInformation","currentPageInfo","rowSize","drawBitmap","regionInfo","mask0","offset0","mask","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","currentCode","currentTemp","currentLength","firstCode","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","index","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","Jbig2Image","parseChunks","Jbig2Stream","jbig2Image","globalsStream","globals","convertToRGBA","kind","convertBlackAndWhiteToRGBA","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","elem","len32","s1","s3","jj","grayToRGBA","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","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","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACNextValue","successiveACState","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","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","readDataBlock","endOffset","array","appData","newOffset","skipData","JpegImage","decodeTransform","colorTransform","_decodeTransform","_colorTransform","canUseImageDecoder","numComponents","markerLoop","dnlScanLines","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","l","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","_getLinearizedBlockData","isSourcePDF","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYccToRgba","out","_convertYcckToRgb","_convertYcckToRgba","_convertYcckToCmyk","_convertCmykToRgb","_convertCmykToRgba","getData","forceRGBA","forceRGB","rgbaData","grayColor","JpegStream","isTypeSupported","setOptions","jpegOptions","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","skipUselessBytes","jpegImage","drawWidth","drawHeight","preferAnimation","image","OpenJPEG","_scriptName","document","currentScript","moduleArg","moduleRtn","Module","readyPromiseResolve","readyPromiseReject","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","isIndexedColormap","smaskInData","ptr","_malloc","HEAPU8","ret","_jp2_decode","_free","errorMessages","imageData","moduleOverrides","assign","thisProgram","scriptDirectory","readBinary","self","location","href","substr","replace","lastIndexOf","xhr","XMLHttpRequest","open","responseText","responseType","response","onload","onerror","credentials","ok","error","wasmBinary","intArrayFromBase64","tryParseAsDataURI","filename","isDataURI","dataURIPrefix","wasmMemory","ABORT","HEAP8","HEAPU32","updateMemoryViews","Float64Array","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","preRun","addOnPreRun","callRuntimeCallbacks","initRuntime","postRun","addOnPostRun","cb","unshift","addOnInit","runDependencies","runDependencyWatcher","dependenciesFulfilled","addRunDependency","removeRunDependency","clearInterval","callback","findWasmBinary","f","wasmBinaryFile","getBinarySync","file","binary","instantiateSync","module","WebAssembly","instance","Instance","getWasmImports","wasmImports","createWasm","receiveInstance","wasmExports","callbacks","__emscripten_memcpy_js","copyWithin","_copy_pixels_1","compG_ptr","nb_pixels","compG","HEAP32","_copy_pixels_3","compR_ptr","compB_ptr","compR","compB","_copy_pixels_4","compA_ptr","compA","getHeapMax","growMemory","pages","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","newSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","languages","env","USER","LOGNAME","PATH","PWD","HOME","LANG","stringToAscii","_environ_get","__environ","environ_buf","bufSize","forEach","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","fd","convertI32PairToI53Checked","lo","hi","NaN","_fd_seek","offset_low","offset_high","whence","printCharBuffers","UTF8Decoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","u0","u1","u2","printChar","curr","UTF8ToString","_fd_write","iov","iovcnt","pnum","_gray_to_rgba","_graya_to_rgba","_jsPrintWarning","message_ptr","_rgb_to_rgba","_storeErrorMessage","calledRun","runCaller","run","setTimeout","doRun","openjpeg","JpxError","JpxImage","cleanup","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","JpxStream","LZWStream","earlyChange","cachedData","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","PredictorStream","predictor","readBlockTiff","readBlockPng","colors","pixBytes","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","prevRow","up","upLeft","left","pa","pb","pc","RunLengthStream","repeatHeader","MAX_LENGTH_TO_CACHE","getInlineImageCacheKey","Parser","lexer","allowStreams","recoveryMode","imageCache","_imageId","refill","buf1","getObj","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","knownCommands","maybeEIPos","state","followingBytes","tmpLexer","Lexer","_hexStringWarn","numArgs","nextObj","knownCommand","variableArgs","findDCTDecodeInlineStreamEnd","markerLength","foundEOI","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictMap","dictLength","beginInlineImagePos","Filter","filterName","filterZero","initialStreamPos","cacheEntry","imageStream","createStream","findStreamLength","SCAN_BLOCK_LENGTH","signatureLength","END_SIGNATURE","endLength","PARTIAL_SIGNATURE","normalLength","scanBytes","scanLength","found","part","partLen","lastByte","skipToNextLine","nextChar","makeFilter","filterArray","paramsArray","specialChars","toHexDigit","_hexStringNumWarn","currentChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","MAX_HEX_STRING_NUM_WARN","getHexString","comment","nextCh","knownCommandFound","possibleCommand","Linearization","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","parser","obj1","obj2","obj3","objectNumberFirst","endFirst","numPages","mainXRefEntriesOffset","pageFirst","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","builtInCMap","codespaceRanges","numCodespaceRanges","low","high","dstLow","nextCharCode","mapBfRangeToArray","dst","contains","charCodeOf","indexOf","getMap","readCharCode","nn","codespaceRange","charcode","getCharCodeLength","isIdentityCMap","IdentityCMap","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","fetchBuiltInCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","cMapData","isCompressed","CMapFactory","parsedCMap","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getEncoding","encodingName","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackDelta","stackFn","CFFParser","seacAnalysisEnabled","cff","CFF","parseHeader","nameIndex","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","names","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fontMatrix","fontBBox","ascent","descent","ascentScaled","charset","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","seacs","widths","bytesLength","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","entries","cffIndex","CFFIndex","offsets","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","setByKey","parseCharString","callDepth","stackSize","validationCommand","seac","bias","subrNumber","valid","hasVStems","firstStackClearing","charstring","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","defaultWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","setByName","subrsOffset","relativeOffset","cid","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","EXPERT","EXPERT_SUBSET","format","raw","predefined","readSupplement","supplementsCount","sid","baseEncoding","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","duplicateFirstGlyph","glyphZero","hasGlyphId","glyph","getSID","objects","CFFDict","tables","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","createTables","layout","CFFTopDictLayout","CFFPrivateDictLayout","glyphIndex","CFFOffsetTracker","isTracking","track","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","CFFCompiler","compile","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","epsilon","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","charStringsIndex","numGlyphs","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","getGlyphsUnicode","AE","AEacute","AEmacron","AEsmall","Aacute","Aacutesmall","Abreve","Abreveacute","Abrevecyrillic","Abrevedotbelow","Abrevegrave","Abrevehookabove","Abrevetilde","Acaron","Acircle","Acircumflex","Acircumflexacute","Acircumflexdotbelow","Acircumflexgrave","Acircumflexhookabove","Acircumflexsmall","Acircumflextilde","Acute","Acutesmall","Acyrillic","Adblgrave","Adieresis","Adieresiscyrillic","Adieresismacron","Adieresissmall","Adotbelow","Adotmacron","Agrave","Agravesmall","Ahookabove","Aiecyrillic","Ainvertedbreve","Alpha","Alphatonos","Amacron","Amonospace","Aogonek","Aring","Aringacute","Aringbelow","Aringsmall","Asmall","Atilde","Atildesmall","Aybarmenian","Bcircle","Bdotaccent","Bdotbelow","Becyrillic","Benarmenian","Beta","Bhook","Blinebelow","Bmonospace","Brevesmall","Bsmall","Btopbar","Caarmenian","Cacute","Caron","Caronsmall","Ccaron","Ccedilla","Ccedillaacute","Ccedillasmall","Ccircle","Ccircumflex","Cdot","Cdotaccent","Cedillasmall","Chaarmenian","Cheabkhasiancyrillic","Checyrillic","Chedescenderabkhasiancyrillic","Chedescendercyrillic","Chedieresiscyrillic","Cheharmenian","Chekhakassiancyrillic","Cheverticalstrokecyrillic","Chi","Chook","Circumflexsmall","Cmonospace","Coarmenian","Csmall","DZ","DZcaron","Daarmenian","Dafrican","Dcaron","Dcedilla","Dcircle","Dcircumflexbelow","Dcroat","Ddotaccent","Ddotbelow","Decyrillic","Deicoptic","Delta","Deltagreek","Dhook","Dieresis","DieresisAcute","DieresisGrave","Dieresissmall","Digammagreek","Djecyrillic","Dlinebelow","Dmonospace","Dotaccentsmall","Dslash","Dsmall","Dtopbar","Dz","Dzcaron","Dzeabkhasiancyrillic","Dzecyrillic","Dzhecyrillic","Eacute","Eacutesmall","Ebreve","Ecaron","Ecedillabreve","Echarmenian","Ecircle","Ecircumflex","Ecircumflexacute","Ecircumflexbelow","Ecircumflexdotbelow","Ecircumflexgrave","Ecircumflexhookabove","Ecircumflexsmall","Ecircumflextilde","Ecyrillic","Edblgrave","Edieresis","Edieresissmall","Edot","Edotaccent","Edotbelow","Efcyrillic","Egrave","Egravesmall","Eharmenian","Ehookabove","Eightroman","Einvertedbreve","Eiotifiedcyrillic","Elcyrillic","Elevenroman","Emacron","Emacronacute","Emacrongrave","Emcyrillic","Emonospace","Encyrillic","Endescendercyrillic","Eng","Enghecyrillic","Enhookcyrillic","Eogonek","Eopen","Epsilon","Epsilontonos","Ercyrillic","Ereversed","Ereversedcyrillic","Escyrillic","Esdescendercyrillic","Esh","Esmall","Eta","Etarmenian","Etatonos","Eth","Ethsmall","Etilde","Etildebelow","Euro","Ezh","Ezhcaron","Ezhreversed","Fcircle","Fdotaccent","Feharmenian","Feicoptic","Fhook","Fitacyrillic","Fiveroman","Fmonospace","Fourroman","Fsmall","GBsquare","Gacute","Gamma","Gammaafrican","Gangiacoptic","Gbreve","Gcaron","Gcedilla","Gcircle","Gcircumflex","Gcommaaccent","Gdot","Gdotaccent","Gecyrillic","Ghadarmenian","Ghemiddlehookcyrillic","Ghestrokecyrillic","Gheupturncyrillic","Ghook","Gimarmenian","Gjecyrillic","Gmacron","Gmonospace","Grave","Gravesmall","Gsmall","Gsmallhook","Gstroke","H","H18533","H18543","H18551","H22073","HPsquare","Haabkhasiancyrillic","Hadescendercyrillic","Hardsigncyrillic","Hbar","Hbrevebelow","Hcedilla","Hcircle","Hcircumflex","Hdieresis","Hdotaccent","Hdotbelow","Hmonospace","Hoarmenian","Horicoptic","Hsmall","Hungarumlaut","Hungarumlautsmall","Hzsquare","IAcyrillic","IJ","IUcyrillic","Iacute","Iacutesmall","Ibreve","Icaron","Icircle","Icircumflex","Icircumflexsmall","Icyrillic","Idblgrave","Idieresis","Idieresisacute","Idieresiscyrillic","Idieresissmall","Idot","Idotaccent","Idotbelow","Iebrevecyrillic","Iecyrillic","Ifraktur","Igrave","Igravesmall","Ihookabove","Iicyrillic","Iinvertedbreve","Iishortcyrillic","Imacron","Imacroncyrillic","Imonospace","Iniarmenian","Iocyrillic","Iogonek","Iota","Iotaafrican","Iotadieresis","Iotatonos","Ismall","Istroke","Itilde","Itildebelow","Izhitsacyrillic","Izhitsadblgravecyrillic","J","Jaarmenian","Jcircle","Jcircumflex","Jecyrillic","Jheharmenian","Jmonospace","Jsmall","KBsquare","KKsquare","Kabashkircyrillic","Kacute","Kacyrillic","Kadescendercyrillic","Kahookcyrillic","Kappa","Kastrokecyrillic","Kaverticalstrokecyrillic","Kcaron","Kcedilla","Kcircle","Kcommaaccent","Kdotbelow","Keharmenian","Kenarmenian","Khacyrillic","Kheicoptic","Khook","Kjecyrillic","Klinebelow","Kmonospace","Koppacyrillic","Koppagreek","Ksicyrillic","Ksmall","LJ","LL","Lacute","Lambda","Lcaron","Lcedilla","Lcircle","Lcircumflexbelow","Lcommaaccent","Ldot","Ldotaccent","Ldotbelow","Ldotbelowmacron","Liwnarmenian","Lj","Ljecyrillic","Llinebelow","Lmonospace","Lslash","Lslashsmall","Lsmall","MBsquare","Macron","Macronsmall","Macute","Mcircle","Mdotaccent","Mdotbelow","Menarmenian","Mmonospace","Msmall","Mturned","Mu","NJ","Nacute","Ncaron","Ncedilla","Ncircle","Ncircumflexbelow","Ncommaaccent","Ndotaccent","Ndotbelow","Nhookleft","Nineroman","Nj","Njecyrillic","Nlinebelow","Nmonospace","Nowarmenian","Nsmall","Ntilde","Ntildesmall","Nu","OE","OEsmall","Oacute","Oacutesmall","Obarredcyrillic","Obarreddieresiscyrillic","Obreve","Ocaron","Ocenteredtilde","Ocircle","Ocircumflex","Ocircumflexacute","Ocircumflexdotbelow","Ocircumflexgrave","Ocircumflexhookabove","Ocircumflexsmall","Ocircumflextilde","Ocyrillic","Odblacute","Odblgrave","Odieresis","Odieresiscyrillic","Odieresissmall","Odotbelow","Ogoneksmall","Ograve","Ogravesmall","Oharmenian","Ohm","Ohookabove","Ohorn","Ohornacute","Ohorndotbelow","Ohorngrave","Ohornhookabove","Ohorntilde","Ohungarumlaut","Oi","Oinvertedbreve","Omacron","Omacronacute","Omacrongrave","Omega","Omegacyrillic","Omegagreek","Omegaroundcyrillic","Omegatitlocyrillic","Omegatonos","Omicron","Omicrontonos","Omonospace","Oneroman","Oogonek","Oogonekmacron","Oopen","Oslash","Oslashacute","Oslashsmall","Osmall","Ostrokeacute","Otcyrillic","Otilde","Otildeacute","Otildedieresis","Otildesmall","P","Pacute","Pcircle","Pdotaccent","Pecyrillic","Peharmenian","Pemiddlehookcyrillic","Phi","Phook","Pi","Piwrarmenian","Pmonospace","Psi","Psicyrillic","Psmall","Q","Qcircle","Qmonospace","Qsmall","R","Raarmenian","Racute","Rcaron","Rcedilla","Rcircle","Rcommaaccent","Rdblgrave","Rdotaccent","Rdotbelow","Rdotbelowmacron","Reharmenian","Rfraktur","Rho","Ringsmall","Rinvertedbreve","Rlinebelow","Rmonospace","Rsmall","Rsmallinverted","Rsmallinvertedsuperior","S","SF010000","SF020000","SF030000","SF040000","SF050000","SF060000","SF070000","SF080000","SF090000","SF100000","SF110000","SF190000","SF200000","SF210000","SF220000","SF230000","SF240000","SF250000","SF260000","SF270000","SF280000","SF360000","SF370000","SF380000","SF390000","SF400000","SF410000","SF420000","SF430000","SF440000","SF450000","SF460000","SF470000","SF480000","SF490000","SF500000","SF510000","SF520000","SF530000","SF540000","Sacute","Sacutedotaccent","Sampigreek","Scaron","Scarondotaccent","Scaronsmall","Scedilla","Schwa","Schwacyrillic","Schwadieresiscyrillic","Scircle","Scircumflex","Scommaaccent","Sdotaccent","Sdotbelow","Sdotbelowdotaccent","Seharmenian","Sevenroman","Shaarmenian","Shacyrillic","Shchacyrillic","Sheicoptic","Shhacyrillic","Shimacoptic","Sigma","Sixroman","Smonospace","Softsigncyrillic","Ssmall","Stigmagreek","T","Tau","Tbar","Tcaron","Tcedilla","Tcircle","Tcircumflexbelow","Tcommaaccent","Tdotaccent","Tdotbelow","Tecyrillic","Tedescendercyrillic","Tenroman","Tetsecyrillic","Theta","Thook","Thorn","Thornsmall","Threeroman","Tildesmall","Tiwnarmenian","Tlinebelow","Tmonospace","Toarmenian","Tonefive","Tonesix","Tonetwo","Tretroflexhook","Tsecyrillic","Tshecyrillic","Tsmall","Twelveroman","Tworoman","Uacute","Uacutesmall","Ubreve","Ucaron","Ucircle","Ucircumflex","Ucircumflexbelow","Ucircumflexsmall","Ucyrillic","Udblacute","Udblgrave","Udieresis","Udieresisacute","Udieresisbelow","Udieresiscaron","Udieresiscyrillic","Udieresisgrave","Udieresismacron","Udieresissmall","Udotbelow","Ugrave","Ugravesmall","Uhookabove","Uhorn","Uhornacute","Uhorndotbelow","Uhorngrave","Uhornhookabove","Uhorntilde","Uhungarumlaut","Uhungarumlautcyrillic","Uinvertedbreve","Ukcyrillic","Umacron","Umacroncyrillic","Umacrondieresis","Umonospace","Uogonek","Upsilon","Upsilon1","Upsilonacutehooksymbolgreek","Upsilonafrican","Upsilondieresis","Upsilondieresishooksymbolgreek","Upsilonhooksymbol","Upsilontonos","Uring","Ushortcyrillic","Usmall","Ustraightcyrillic","Ustraightstrokecyrillic","Utilde","Utildeacute","Utildebelow","Vcircle","Vdotbelow","Vecyrillic","Vewarmenian","Vhook","Vmonospace","Voarmenian","Vsmall","Vtilde","W","Wacute","Wcircle","Wcircumflex","Wdieresis","Wdotaccent","Wdotbelow","Wgrave","Wmonospace","Wsmall","Xcircle","Xdieresis","Xdotaccent","Xeharmenian","Xi","Xmonospace","Xsmall","Yacute","Yacutesmall","Yatcyrillic","Ycircle","Ycircumflex","Ydieresis","Ydieresissmall","Ydotaccent","Ydotbelow","Yericyrillic","Yerudieresiscyrillic","Ygrave","Yhook","Yhookabove","Yiarmenian","Yicyrillic","Yiwnarmenian","Ymonospace","Ysmall","Ytilde","Yusbigcyrillic","Yusbigiotifiedcyrillic","Yuslittlecyrillic","Yuslittleiotifiedcyrillic","Zaarmenian","Zacute","Zcaron","Zcaronsmall","Zcircle","Zcircumflex","Zdot","Zdotaccent","Zdotbelow","Zecyrillic","Zedescendercyrillic","Zedieresiscyrillic","Zeta","Zhearmenian","Zhebrevecyrillic","Zhecyrillic","Zhedescendercyrillic","Zhedieresiscyrillic","Zlinebelow","Zmonospace","Zsmall","Zstroke","aabengali","aacute","aadeva","aagujarati","aagurmukhi","aamatragurmukhi","aarusquare","aavowelsignbengali","aavowelsigndeva","aavowelsigngujarati","abbreviationmarkarmenian","abbreviationsigndeva","abengali","abopomofo","abreve","abreveacute","abrevecyrillic","abrevedotbelow","abrevegrave","abrevehookabove","abrevetilde","acaron","acircle","acircumflex","acircumflexacute","acircumflexdotbelow","acircumflexgrave","acircumflexhookabove","acircumflextilde","acute","acutebelowcmb","acutecmb","acutecomb","acutedeva","acutelowmod","acutetonecmb","acyrillic","adblgrave","addakgurmukhi","adeva","adieresis","adieresiscyrillic","adieresismacron","adotbelow","adotmacron","ae","aeacute","aekorean","aemacron","afii00208","afii08941","afii10017","afii10018","afii10019","afii10020","afii10021","afii10022","afii10023","afii10024","afii10025","afii10026","afii10027","afii10028","afii10029","afii10030","afii10031","afii10032","afii10033","afii10034","afii10035","afii10036","afii10037","afii10038","afii10039","afii10040","afii10041","afii10042","afii10043","afii10044","afii10045","afii10046","afii10047","afii10048","afii10049","afii10050","afii10051","afii10052","afii10053","afii10054","afii10055","afii10056","afii10057","afii10058","afii10059","afii10060","afii10061","afii10062","afii10063","afii10064","afii10065","afii10066","afii10067","afii10068","afii10069","afii10070","afii10071","afii10072","afii10073","afii10074","afii10075","afii10076","afii10077","afii10078","afii10079","afii10080","afii10081","afii10082","afii10083","afii10084","afii10085","afii10086","afii10087","afii10088","afii10089","afii10090","afii10091","afii10092","afii10093","afii10094","afii10095","afii10096","afii10097","afii10098","afii10099","afii10100","afii10101","afii10102","afii10103","afii10104","afii10105","afii10106","afii10107","afii10108","afii10109","afii10110","afii10145","afii10146","afii10147","afii10148","afii10192","afii10193","afii10194","afii10195","afii10196","afii10831","afii10832","afii10846","afii299","afii300","afii301","afii57381","afii57388","afii57392","afii57393","afii57394","afii57395","afii57396","afii57397","afii57398","afii57399","afii57400","afii57401","afii57403","afii57407","afii57409","afii57410","afii57411","afii57412","afii57413","afii57414","afii57415","afii57416","afii57417","afii57418","afii57419","afii57420","afii57421","afii57422","afii57423","afii57424","afii57425","afii57426","afii57427","afii57428","afii57429","afii57430","afii57431","afii57432","afii57433","afii57434","afii57440","afii57441","afii57442","afii57443","afii57444","afii57445","afii57446","afii57448","afii57449","afii57450","afii57451","afii57452","afii57453","afii57454","afii57455","afii57456","afii57457","afii57458","afii57470","afii57505","afii57506","afii57507","afii57508","afii57509","afii57511","afii57512","afii57513","afii57514","afii57519","afii57534","afii57636","afii57645","afii57658","afii57664","afii57665","afii57666","afii57667","afii57668","afii57669","afii57670","afii57671","afii57672","afii57673","afii57674","afii57675","afii57676","afii57677","afii57678","afii57679","afii57680","afii57681","afii57682","afii57683","afii57684","afii57685","afii57686","afii57687","afii57688","afii57689","afii57690","afii57694","afii57695","afii57700","afii57705","afii57716","afii57717","afii57718","afii57723","afii57793","afii57794","afii57795","afii57796","afii57797","afii57798","afii57799","afii57800","afii57801","afii57802","afii57803","afii57804","afii57806","afii57807","afii57839","afii57841","afii57842","afii57929","afii61248","afii61289","afii61352","afii61573","afii61574","afii61575","afii61664","afii63167","afii64937","agrave","agujarati","agurmukhi","ahiragana","ahookabove","aibengali","aibopomofo","aideva","aiecyrillic","aigujarati","aigurmukhi","aimatragurmukhi","ainarabic","ainfinalarabic","aininitialarabic","ainmedialarabic","ainvertedbreve","aivowelsignbengali","aivowelsigndeva","aivowelsigngujarati","akatakana","akatakanahalfwidth","akorean","alef","alefarabic","alefdageshhebrew","aleffinalarabic","alefhamzaabovearabic","alefhamzaabovefinalarabic","alefhamzabelowarabic","alefhamzabelowfinalarabic","alefhebrew","aleflamedhebrew","alefmaddaabovearabic","alefmaddaabovefinalarabic","alefmaksuraarabic","alefmaksurafinalarabic","alefmaksurainitialarabic","alefmaksuramedialarabic","alefpatahhebrew","alefqamatshebrew","aleph","allequal","alpha","alphatonos","amacron","amonospace","ampersand","ampersandmonospace","ampersandsmall","amsquare","anbopomofo","angbopomofo","angbracketleft","angbracketright","angkhankhuthai","anglebracketleft","anglebracketleftvertical","anglebracketright","anglebracketrightvertical","angleleft","angleright","angstrom","anoteleia","anudattadeva","anusvarabengali","anusvaradeva","anusvaragujarati","aogonek","apaatosquare","aparen","apostrophearmenian","apostrophemod","apple","approaches","approxequal","approxequalorimage","approximatelyequal","araeaekorean","araeakorean","arc","arighthalfring","aring","aringacute","aringbelow","arrowboth","arrowdashdown","arrowdashleft","arrowdashright","arrowdashup","arrowdblboth","arrowdbldown","arrowdblleft","arrowdblright","arrowdblup","arrowdown","arrowdownleft","arrowdownright","arrowdownwhite","arrowheaddownmod","arrowheadleftmod","arrowheadrightmod","arrowheadupmod","arrowhorizex","arrowleft","arrowleftdbl","arrowleftdblstroke","arrowleftoverright","arrowleftwhite","arrowright","arrowrightdblstroke","arrowrightheavy","arrowrightoverleft","arrowrightwhite","arrowtableft","arrowtabright","arrowup","arrowupdn","arrowupdnbse","arrowupdownbase","arrowupleft","arrowupleftofdown","arrowupright","arrowupwhite","arrowvertex","asciicircum","asciicircummonospace","asciitilde","asciitildemonospace","ascript","ascriptturned","asmallhiragana","asmallkatakana","asmallkatakanahalfwidth","asterisk","asteriskaltonearabic","asteriskarabic","asteriskmath","asteriskmonospace","asterisksmall","asterism","asuperior","asymptoticallyequal","atilde","atmonospace","atsmall","aturned","aubengali","aubopomofo","audeva","augujarati","augurmukhi","aulengthmarkbengali","aumatragurmukhi","auvowelsignbengali","auvowelsigndeva","auvowelsigngujarati","avagrahadeva","aybarmenian","ayin","ayinaltonehebrew","ayinhebrew","babengali","backslash","backslashmonospace","badeva","bagujarati","bagurmukhi","bahiragana","bahtthai","bakatakana","bar","barmonospace","bbopomofo","bcircle","bdotaccent","bdotbelow","beamedsixteenthnotes","because","becyrillic","beharabic","behfinalarabic","behinitialarabic","behiragana","behmedialarabic","behmeeminitialarabic","behmeemisolatedarabic","behnoonfinalarabic","bekatakana","benarmenian","bet","beta","betasymbolgreek","betdagesh","betdageshhebrew","bethebrew","betrafehebrew","bhabengali","bhadeva","bhagujarati","bhagurmukhi","bhook","bihiragana","bikatakana","bilabialclick","bindigurmukhi","birusquare","blackcircle","blackdiamond","blackdownpointingtriangle","blackleftpointingpointer","blackleftpointingtriangle","blacklenticularbracketleft","blacklenticularbracketleftvertical","blacklenticularbracketright","blacklenticularbracketrightvertical","blacklowerlefttriangle","blacklowerrighttriangle","blackrectangle","blackrightpointingpointer","blackrightpointingtriangle","blacksmallsquare","blacksmilingface","blacksquare","blackstar","blackupperlefttriangle","blackupperrighttriangle","blackuppointingsmalltriangle","blackuppointingtriangle","blank","blinebelow","bmonospace","bobaimaithai","bohiragana","bokatakana","bparen","bqsquare","braceex","braceleft","braceleftbt","braceleftmid","braceleftmonospace","braceleftsmall","bracelefttp","braceleftvertical","braceright","bracerightbt","bracerightmid","bracerightmonospace","bracerightsmall","bracerighttp","bracerightvertical","bracketleft","bracketleftbt","bracketleftex","bracketleftmonospace","bracketlefttp","bracketright","bracketrightbt","bracketrightex","bracketrightmonospace","bracketrighttp","breve","brevebelowcmb","brevecmb","breveinvertedbelowcmb","breveinvertedcmb","breveinverteddoublecmb","bridgebelowcmb","bridgeinvertedbelowcmb","brokenbar","bstroke","bsuperior","btopbar","buhiragana","bukatakana","bullet","bulletinverse","bulletoperator","bullseye","caarmenian","cabengali","cacute","cadeva","cagujarati","cagurmukhi","calsquare","candrabindubengali","candrabinducmb","candrabindudeva","candrabindugujarati","capslock","careof","caron","caronbelowcmb","caroncmb","carriagereturn","cbopomofo","ccaron","ccedilla","ccedillaacute","ccircle","ccircumflex","ccurl","cdot","cdotaccent","cdsquare","cedilla","cedillacmb","cent","centigrade","centinferior","centmonospace","centoldstyle","centsuperior","chaarmenian","chabengali","chadeva","chagujarati","chagurmukhi","chbopomofo","cheabkhasiancyrillic","checkmark","checyrillic","chedescenderabkhasiancyrillic","chedescendercyrillic","chedieresiscyrillic","cheharmenian","chekhakassiancyrillic","cheverticalstrokecyrillic","chi","chieuchacirclekorean","chieuchaparenkorean","chieuchcirclekorean","chieuchkorean","chieuchparenkorean","chochangthai","chochanthai","chochingthai","chochoethai","chook","cieucacirclekorean","cieucaparenkorean","cieuccirclekorean","cieuckorean","cieucparenkorean","cieucuparenkorean","circle","circlecopyrt","circlemultiply","circleot","circleplus","circlepostalmark","circlewithlefthalfblack","circlewithrighthalfblack","circumflex","circumflexbelowcmb","circumflexcmb","clickalveolar","clickdental","clicklateral","clickretroflex","club","clubsuitblack","clubsuitwhite","cmcubedsquare","cmonospace","cmsquaredsquare","coarmenian","colon","colonmonetary","colonmonospace","colonsign","colonsmall","colontriangularhalfmod","colontriangularmod","comma","commaabovecmb","commaaboverightcmb","commaaccent","commaarabic","commaarmenian","commainferior","commamonospace","commareversedabovecmb","commareversedmod","commasmall","commasuperior","commaturnedabovecmb","commaturnedmod","compass","congruent","contourintegral","control","controlACK","controlBEL","controlBS","controlCAN","controlCR","controlDC1","controlDC2","controlDC3","controlDC4","controlDEL","controlDLE","controlEM","controlENQ","controlEOT","controlESC","controlETB","controlETX","controlFF","controlFS","controlGS","controlHT","controlLF","controlNAK","controlNULL","controlRS","controlSI","controlSO","controlSOT","controlSTX","controlSUB","controlSYN","controlUS","controlVT","copyright","copyrightsans","copyrightserif","cornerbracketleft","cornerbracketlefthalfwidth","cornerbracketleftvertical","cornerbracketright","cornerbracketrighthalfwidth","cornerbracketrightvertical","corporationsquare","cosquare","coverkgsquare","cparen","cruzeiro","cstretched","curlyand","curlyor","currency","cyrBreve","cyrFlex","cyrbreve","cyrflex","daarmenian","dabengali","dadarabic","dadeva","dadfinalarabic","dadinitialarabic","dadmedialarabic","dagesh","dageshhebrew","dagger","daggerdbl","dagujarati","dagurmukhi","dahiragana","dakatakana","dalarabic","dalet","daletdagesh","daletdageshhebrew","dalethebrew","dalfinalarabic","dammaarabic","dammalowarabic","dammatanaltonearabic","dammatanarabic","danda","dargahebrew","dargalefthebrew","dasiapneumatacyrilliccmb","dblGrave","dblanglebracketleft","dblanglebracketleftvertical","dblanglebracketright","dblanglebracketrightvertical","dblarchinvertedbelowcmb","dblarrowleft","dblarrowright","dbldanda","dblgrave","dblgravecmb","dblintegral","dbllowline","dbllowlinecmb","dbloverlinecmb","dblprimemod","dblverticalbar","dblverticallineabovecmb","dbopomofo","dbsquare","dcaron","dcedilla","dcircle","dcircumflexbelow","dcroat","ddabengali","ddadeva","ddagujarati","ddagurmukhi","ddalarabic","ddalfinalarabic","dddhadeva","ddhabengali","ddhadeva","ddhagujarati","ddhagurmukhi","ddotaccent","ddotbelow","decimalseparatorarabic","decimalseparatorpersian","decyrillic","degree","dehihebrew","dehiragana","deicoptic","dekatakana","deleteleft","deleteright","deltaturned","denominatorminusonenumeratorbengali","dezh","dhabengali","dhadeva","dhagujarati","dhagurmukhi","dhook","dialytikatonos","dialytikatonoscmb","diamond","diamondsuitwhite","dieresis","dieresisacute","dieresisbelowcmb","dieresiscmb","dieresisgrave","dieresistonos","dihiragana","dikatakana","dittomark","divide","divides","divisionslash","djecyrillic","dkshade","dlinebelow","dlsquare","dmacron","dmonospace","dnblock","dochadathai","dodekthai","dohiragana","dokatakana","dollar","dollarinferior","dollarmonospace","dollaroldstyle","dollarsmall","dollarsuperior","dong","dorusquare","dotaccent","dotaccentcmb","dotbelowcmb","dotbelowcomb","dotkatakana","dotlessi","dotlessj","dotlessjstrokehook","dotmath","dottedcircle","doubleyodpatah","doubleyodpatahhebrew","downtackbelowcmb","downtackmod","dparen","dsuperior","dtail","dtopbar","duhiragana","dukatakana","dz","dzaltone","dzcaron","dzcurl","dzeabkhasiancyrillic","dzecyrillic","dzhecyrillic","eacute","earth","ebengali","ebopomofo","ebreve","ecandradeva","ecandragujarati","ecandravowelsigndeva","ecandravowelsigngujarati","ecaron","ecedillabreve","echarmenian","echyiwnarmenian","ecircle","ecircumflex","ecircumflexacute","ecircumflexbelow","ecircumflexdotbelow","ecircumflexgrave","ecircumflexhookabove","ecircumflextilde","ecyrillic","edblgrave","edeva","edieresis","edot","edotaccent","edotbelow","eegurmukhi","eematragurmukhi","efcyrillic","egrave","egujarati","eharmenian","ehbopomofo","ehiragana","ehookabove","eibopomofo","eight","eightarabic","eightbengali","eightcircle","eightcircleinversesansserif","eightdeva","eighteencircle","eighteenparen","eighteenperiod","eightgujarati","eightgurmukhi","eighthackarabic","eighthangzhou","eighthnotebeamed","eightideographicparen","eightinferior","eightmonospace","eightoldstyle","eightparen","eightperiod","eightpersian","eightroman","eightsuperior","eightthai","einvertedbreve","eiotifiedcyrillic","ekatakana","ekatakanahalfwidth","ekonkargurmukhi","ekorean","elcyrillic","elevencircle","elevenparen","elevenperiod","elevenroman","ellipsis","ellipsisvertical","emacron","emacronacute","emacrongrave","emcyrillic","emdash","emdashvertical","emonospace","emphasismarkarmenian","emptyset","enbopomofo","encyrillic","endash","endashvertical","endescendercyrillic","eng","engbopomofo","enghecyrillic","enhookcyrillic","enspace","eogonek","eokorean","eopen","eopenclosed","eopenreversed","eopenreversedclosed","eopenreversedhook","eparen","epsilontonos","equal","equalmonospace","equalsmall","equalsuperior","equivalence","erbopomofo","ercyrillic","ereversed","ereversedcyrillic","escyrillic","esdescendercyrillic","esh","eshcurl","eshortdeva","eshortvowelsigndeva","eshreversedloop","eshsquatreversed","esmallhiragana","esmallkatakana","esmallkatakanahalfwidth","estimated","esuperior","eta","etarmenian","etatonos","eth","etilde","etildebelow","etnahtafoukhhebrew","etnahtafoukhlefthebrew","etnahtahebrew","etnahtalefthebrew","eturned","eukorean","euro","evowelsignbengali","evowelsigndeva","evowelsigngujarati","exclam","exclamarmenian","exclamdbl","exclamdown","exclamdownsmall","exclammonospace","exclamsmall","existential","ezh","ezhcaron","ezhcurl","ezhreversed","ezhtail","fadeva","fagurmukhi","fahrenheit","fathaarabic","fathalowarabic","fathatanarabic","fbopomofo","fcircle","fdotaccent","feharabic","feharmenian","fehfinalarabic","fehinitialarabic","fehmedialarabic","feicoptic","female","ff","f_f","ffi","f_f_i","ffl","f_f_l","fi","f_i","fifteencircle","fifteenparen","fifteenperiod","figuredash","filledbox","filledrect","finalkaf","finalkafdagesh","finalkafdageshhebrew","finalkafhebrew","finalmem","finalmemhebrew","finalnun","finalnunhebrew","finalpe","finalpehebrew","finaltsadi","finaltsadihebrew","firsttonechinese","fisheye","fitacyrillic","five","fivearabic","fivebengali","fivecircle","fivecircleinversesansserif","fivedeva","fiveeighths","fivegujarati","fivegurmukhi","fivehackarabic","fivehangzhou","fiveideographicparen","fiveinferior","fivemonospace","fiveoldstyle","fiveparen","fiveperiod","fivepersian","fiveroman","fivesuperior","fivethai","fl","f_l","florin","fmonospace","fmsquare","fofanthai","fofathai","fongmanthai","forall","four","fourarabic","fourbengali","fourcircle","fourcircleinversesansserif","fourdeva","fourgujarati","fourgurmukhi","fourhackarabic","fourhangzhou","fourideographicparen","fourinferior","fourmonospace","fournumeratorbengali","fouroldstyle","fourparen","fourperiod","fourpersian","fourroman","foursuperior","fourteencircle","fourteenparen","fourteenperiod","fourthai","fourthtonechinese","fparen","fraction","franc","gabengali","gacute","gadeva","gafarabic","gaffinalarabic","gafinitialarabic","gafmedialarabic","gagujarati","gagurmukhi","gahiragana","gakatakana","gammalatinsmall","gammasuperior","gangiacoptic","gbopomofo","gbreve","gcaron","gcedilla","gcircle","gcircumflex","gcommaaccent","gdot","gdotaccent","gecyrillic","gehiragana","gekatakana","geometricallyequal","gereshaccenthebrew","gereshhebrew","gereshmuqdamhebrew","germandbls","gershayimaccenthebrew","gershayimhebrew","getamark","ghabengali","ghadarmenian","ghadeva","ghagujarati","ghagurmukhi","ghainarabic","ghainfinalarabic","ghaininitialarabic","ghainmedialarabic","ghemiddlehookcyrillic","ghestrokecyrillic","gheupturncyrillic","ghhadeva","ghhagurmukhi","ghook","ghzsquare","gihiragana","gikatakana","gimarmenian","gimel","gimeldagesh","gimeldageshhebrew","gimelhebrew","gjecyrillic","glottalinvertedstroke","glottalstop","glottalstopinverted","glottalstopmod","glottalstopreversed","glottalstopreversedmod","glottalstopreversedsuperior","glottalstopstroke","glottalstopstrokereversed","gmacron","gmonospace","gohiragana","gokatakana","gparen","gpasquare","gradient","grave","gravebelowcmb","gravecmb","gravecomb","gravedeva","gravelowmod","gravemonospace","gravetonecmb","greater","greaterequal","greaterequalorless","greatermonospace","greaterorequivalent","greaterorless","greateroverequal","greatersmall","gscript","gstroke","guhiragana","guillemotleft","guillemotright","guilsinglleft","guilsinglright","gukatakana","guramusquare","gysquare","haabkhasiancyrillic","haaltonearabic","habengali","hadescendercyrillic","hadeva","hagujarati","hagurmukhi","haharabic","hahfinalarabic","hahinitialarabic","hahiragana","hahmedialarabic","haitusquare","hakatakana","hakatakanahalfwidth","halantgurmukhi","hamzaarabic","hamzalowarabic","hangulfiller","hardsigncyrillic","harpoonleftbarbup","harpoonrightbarbup","hasquare","hatafpatah","hatafpatah16","hatafpatah23","hatafpatah2f","hatafpatahhebrew","hatafpatahnarrowhebrew","hatafpatahquarterhebrew","hatafpatahwidehebrew","hatafqamats","hatafqamats1b","hatafqamats28","hatafqamats34","hatafqamatshebrew","hatafqamatsnarrowhebrew","hatafqamatsquarterhebrew","hatafqamatswidehebrew","hatafsegol","hatafsegol17","hatafsegol24","hatafsegol30","hatafsegolhebrew","hatafsegolnarrowhebrew","hatafsegolquarterhebrew","hatafsegolwidehebrew","hbar","hbopomofo","hbrevebelow","hcedilla","hcircle","hcircumflex","hdieresis","hdotaccent","hdotbelow","he","heart","heartsuitblack","heartsuitwhite","hedagesh","hedageshhebrew","hehaltonearabic","heharabic","hehebrew","hehfinalaltonearabic","hehfinalalttwoarabic","hehfinalarabic","hehhamzaabovefinalarabic","hehhamzaaboveisolatedarabic","hehinitialaltonearabic","hehinitialarabic","hehiragana","hehmedialaltonearabic","hehmedialarabic","heiseierasquare","hekatakana","hekatakanahalfwidth","hekutaarusquare","henghook","herutusquare","het","hethebrew","hhook","hhooksuperior","hieuhacirclekorean","hieuhaparenkorean","hieuhcirclekorean","hieuhkorean","hieuhparenkorean","hihiragana","hikatakana","hikatakanahalfwidth","hiriq","hiriq14","hiriq21","hiriq2d","hiriqhebrew","hiriqnarrowhebrew","hiriqquarterhebrew","hiriqwidehebrew","hlinebelow","hmonospace","hoarmenian","hohipthai","hohiragana","hokatakana","hokatakanahalfwidth","holam","holam19","holam26","holam32","holamhebrew","holamnarrowhebrew","holamquarterhebrew","holamwidehebrew","honokhukthai","hookabovecomb","hookcmb","hookpalatalizedbelowcmb","hookretroflexbelowcmb","hoonsquare","horicoptic","horizontalbar","horncmb","hotsprings","house","hparen","hsuperior","hturned","huhiragana","huiitosquare","hukatakana","hukatakanahalfwidth","hungarumlaut","hungarumlautcmb","hv","hyphen","hypheninferior","hyphenmonospace","hyphensmall","hyphensuperior","hyphentwo","iacute","iacyrillic","ibengali","ibopomofo","ibreve","icaron","icircle","icircumflex","icyrillic","idblgrave","ideographearthcircle","ideographfirecircle","ideographicallianceparen","ideographiccallparen","ideographiccentrecircle","ideographicclose","ideographiccomma","ideographiccommaleft","ideographiccongratulationparen","ideographiccorrectcircle","ideographicearthparen","ideographicenterpriseparen","ideographicexcellentcircle","ideographicfestivalparen","ideographicfinancialcircle","ideographicfinancialparen","ideographicfireparen","ideographichaveparen","ideographichighcircle","ideographiciterationmark","ideographiclaborcircle","ideographiclaborparen","ideographicleftcircle","ideographiclowcircle","ideographicmedicinecircle","ideographicmetalparen","ideographicmoonparen","ideographicnameparen","ideographicperiod","ideographicprintcircle","ideographicreachparen","ideographicrepresentparen","ideographicresourceparen","ideographicrightcircle","ideographicsecretcircle","ideographicselfparen","ideographicsocietyparen","ideographicspace","ideographicspecialparen","ideographicstockparen","ideographicstudyparen","ideographicsunparen","ideographicsuperviseparen","ideographicwaterparen","ideographicwoodparen","ideographiczero","ideographmetalcircle","ideographmooncircle","ideographnamecircle","ideographsuncircle","ideographwatercircle","ideographwoodcircle","ideva","idieresis","idieresisacute","idieresiscyrillic","idotbelow","iebrevecyrillic","iecyrillic","ieungacirclekorean","ieungaparenkorean","ieungcirclekorean","ieungkorean","ieungparenkorean","igrave","igujarati","igurmukhi","ihiragana","ihookabove","iibengali","iicyrillic","iideva","iigujarati","iigurmukhi","iimatragurmukhi","iinvertedbreve","iishortcyrillic","iivowelsignbengali","iivowelsigndeva","iivowelsigngujarati","ij","ikatakana","ikatakanahalfwidth","ikorean","ilde","iluyhebrew","imacron","imacroncyrillic","imageorapproximatelyequal","imatragurmukhi","imonospace","infinity","iniarmenian","integral","integralbottom","integralbt","integralex","integraltop","integraltp","intersection","intisquare","invbullet","invcircle","invsmileface","iocyrillic","iogonek","iota","iotadieresis","iotadieresistonos","iotalatin","iotatonos","iparen","irigurmukhi","ismallhiragana","ismallkatakana","ismallkatakanahalfwidth","issharbengali","istroke","isuperior","iterationhiragana","iterationkatakana","itilde","itildebelow","iubopomofo","iucyrillic","ivowelsignbengali","ivowelsigndeva","ivowelsigngujarati","izhitsacyrillic","izhitsadblgravecyrillic","jaarmenian","jabengali","jadeva","jagujarati","jagurmukhi","jbopomofo","jcaron","jcircle","jcircumflex","jcrossedtail","jdotlessstroke","jecyrillic","jeemarabic","jeemfinalarabic","jeeminitialarabic","jeemmedialarabic","jeharabic","jehfinalarabic","jhabengali","jhadeva","jhagujarati","jhagurmukhi","jheharmenian","jis","jmonospace","jparen","jsuperior","kabashkircyrillic","kabengali","kacute","kacyrillic","kadescendercyrillic","kadeva","kaf","kafarabic","kafdagesh","kafdageshhebrew","kaffinalarabic","kafhebrew","kafinitialarabic","kafmedialarabic","kafrafehebrew","kagujarati","kagurmukhi","kahiragana","kahookcyrillic","kakatakana","kakatakanahalfwidth","kappa","kappasymbolgreek","kapyeounmieumkorean","kapyeounphieuphkorean","kapyeounpieupkorean","kapyeounssangpieupkorean","karoriisquare","kashidaautoarabic","kashidaautonosidebearingarabic","kasmallkatakana","kasquare","kasraarabic","kasratanarabic","kastrokecyrillic","katahiraprolongmarkhalfwidth","kaverticalstrokecyrillic","kbopomofo","kcalsquare","kcaron","kcedilla","kcircle","kcommaaccent","kdotbelow","keharmenian","kehiragana","kekatakana","kekatakanahalfwidth","kenarmenian","kesmallkatakana","kgreenlandic","khabengali","khacyrillic","khadeva","khagujarati","khagurmukhi","khaharabic","khahfinalarabic","khahinitialarabic","khahmedialarabic","kheicoptic","khhadeva","khhagurmukhi","khieukhacirclekorean","khieukhaparenkorean","khieukhcirclekorean","khieukhkorean","khieukhparenkorean","khokhaithai","khokhonthai","khokhuatthai","khokhwaithai","khomutthai","khook","khorakhangthai","khzsquare","kihiragana","kikatakana","kikatakanahalfwidth","kiroguramusquare","kiromeetorusquare","kirosquare","kiyeokacirclekorean","kiyeokaparenkorean","kiyeokcirclekorean","kiyeokkorean","kiyeokparenkorean","kiyeoksioskorean","kjecyrillic","klinebelow","klsquare","kmcubedsquare","kmonospace","kmsquaredsquare","kohiragana","kohmsquare","kokaithai","kokatakana","kokatakanahalfwidth","kooposquare","koppacyrillic","koreanstandardsymbol","koroniscmb","kparen","kpasquare","ksicyrillic","ktsquare","kturned","kuhiragana","kukatakana","kukatakanahalfwidth","kvsquare","kwsquare","labengali","lacute","ladeva","lagujarati","lagurmukhi","lakkhangyaothai","lamaleffinalarabic","lamalefhamzaabovefinalarabic","lamalefhamzaaboveisolatedarabic","lamalefhamzabelowfinalarabic","lamalefhamzabelowisolatedarabic","lamalefisolatedarabic","lamalefmaddaabovefinalarabic","lamalefmaddaaboveisolatedarabic","lamarabic","lambda","lambdastroke","lamed","lameddagesh","lameddageshhebrew","lamedhebrew","lamfinalarabic","lamhahinitialarabic","laminitialarabic","lamjeeminitialarabic","lamkhahinitialarabic","lamlamhehisolatedarabic","lammedialarabic","lammeemhahinitialarabic","lammeeminitialarabic","largecircle","lbar","lbelt","lbopomofo","lcaron","lcedilla","lcircle","lcircumflexbelow","lcommaaccent","ldot","ldotaccent","ldotbelow","ldotbelowmacron","leftangleabovecmb","lefttackbelowcmb","less","lessequal","lessequalorgreater","lessmonospace","lessorequivalent","lessorgreater","lessoverequal","lesssmall","lezh","lfblock","lhookretroflex","lira","liwnarmenian","lj","ljecyrillic","ll","lladeva","llagujarati","llinebelow","llladeva","llvocalicbengali","llvocalicdeva","llvocalicvowelsignbengali","llvocalicvowelsigndeva","lmiddletilde","lmonospace","lmsquare","lochulathai","logicaland","logicalnot","logicalnotreversed","logicalor","lolingthai","longs","lowlinecenterline","lowlinecmb","lowlinedashed","lozenge","lparen","lslash","lsquare","lsuperior","ltshade","luthai","lvocalicbengali","lvocalicdeva","lvocalicvowelsignbengali","lvocalicvowelsigndeva","lxsquare","mabengali","macron","macronbelowcmb","macroncmb","macronlowmod","macronmonospace","macute","madeva","magujarati","magurmukhi","mahapakhhebrew","mahapakhlefthebrew","mahiragana","maichattawalowleftthai","maichattawalowrightthai","maichattawathai","maichattawaupperleftthai","maieklowleftthai","maieklowrightthai","maiekthai","maiekupperleftthai","maihanakatleftthai","maihanakatthai","maitaikhuleftthai","maitaikhuthai","maitholowleftthai","maitholowrightthai","maithothai","maithoupperleftthai","maitrilowleftthai","maitrilowrightthai","maitrithai","maitriupperleftthai","maiyamokthai","makatakana","makatakanahalfwidth","male","mansyonsquare","maqafhebrew","mars","masoracirclehebrew","masquare","mbopomofo","mbsquare","mcircle","mcubedsquare","mdotaccent","mdotbelow","meemarabic","meemfinalarabic","meeminitialarabic","meemmedialarabic","meemmeeminitialarabic","meemmeemisolatedarabic","meetorusquare","mehiragana","meizierasquare","mekatakana","mekatakanahalfwidth","mem","memdagesh","memdageshhebrew","memhebrew","menarmenian","merkhahebrew","merkhakefulahebrew","merkhakefulalefthebrew","merkhalefthebrew","mhook","mhzsquare","middledotkatakanahalfwidth","middot","mieumacirclekorean","mieumaparenkorean","mieumcirclekorean","mieumkorean","mieumpansioskorean","mieumparenkorean","mieumpieupkorean","mieumsioskorean","mihiragana","mikatakana","mikatakanahalfwidth","minus","minusbelowcmb","minuscircle","minusmod","minusplus","minute","miribaarusquare","mirisquare","mlonglegturned","mlsquare","mmcubedsquare","mmonospace","mmsquaredsquare","mohiragana","mohmsquare","mokatakana","mokatakanahalfwidth","molsquare","momathai","moverssquare","moverssquaredsquare","mparen","mpasquare","mssquare","msuperior","mturned","mu","mu1","muasquare","muchgreater","muchless","mufsquare","mugreek","mugsquare","muhiragana","mukatakana","mukatakanahalfwidth","mulsquare","multiply","mumsquare","munahhebrew","munahlefthebrew","musicalnote","musicalnotedbl","musicflatsign","musicsharpsign","mussquare","muvsquare","muwsquare","mvmegasquare","mvsquare","mwmegasquare","mwsquare","nabengali","nabla","nacute","nadeva","nagujarati","nagurmukhi","nahiragana","nakatakana","nakatakanahalfwidth","napostrophe","nasquare","nbopomofo","nbspace","ncaron","ncedilla","ncircle","ncircumflexbelow","ncommaaccent","ndotaccent","ndotbelow","nehiragana","nekatakana","nekatakanahalfwidth","newsheqelsign","nfsquare","ngabengali","ngadeva","ngagujarati","ngagurmukhi","ngonguthai","nhiragana","nhookleft","nhookretroflex","nieunacirclekorean","nieunaparenkorean","nieuncieuckorean","nieuncirclekorean","nieunhieuhkorean","nieunkorean","nieunpansioskorean","nieunparenkorean","nieunsioskorean","nieuntikeutkorean","nihiragana","nikatakana","nikatakanahalfwidth","nikhahitleftthai","nikhahitthai","nine","ninearabic","ninebengali","ninecircle","ninecircleinversesansserif","ninedeva","ninegujarati","ninegurmukhi","ninehackarabic","ninehangzhou","nineideographicparen","nineinferior","ninemonospace","nineoldstyle","nineparen","nineperiod","ninepersian","nineroman","ninesuperior","nineteencircle","nineteenparen","nineteenperiod","ninethai","nj","njecyrillic","nkatakana","nkatakanahalfwidth","nlegrightlong","nlinebelow","nmonospace","nmsquare","nnabengali","nnadeva","nnagujarati","nnagurmukhi","nnnadeva","nohiragana","nokatakana","nokatakanahalfwidth","nonbreakingspace","nonenthai","nonuthai","noonarabic","noonfinalarabic","noonghunnaarabic","noonghunnafinalarabic","nooninitialarabic","noonjeeminitialarabic","noonjeemisolatedarabic","noonmedialarabic","noonmeeminitialarabic","noonmeemisolatedarabic","noonnoonfinalarabic","notcontains","notelement","notelementof","notequal","notgreater","notgreaternorequal","notgreaternorless","notidentical","notless","notlessnorequal","notparallel","notprecedes","notsubset","notsucceeds","notsuperset","nowarmenian","nparen","nssquare","nsuperior","ntilde","nu","nuhiragana","nukatakana","nukatakanahalfwidth","nuktabengali","nuktadeva","nuktagujarati","nuktagurmukhi","numbersign","numbersignmonospace","numbersignsmall","numeralsigngreek","numeralsignlowergreek","numero","nun","nundagesh","nundageshhebrew","nunhebrew","nvsquare","nwsquare","nyabengali","nyadeva","nyagujarati","nyagurmukhi","oacute","oangthai","obarred","obarredcyrillic","obarreddieresiscyrillic","obengali","obopomofo","obreve","ocandradeva","ocandragujarati","ocandravowelsigndeva","ocandravowelsigngujarati","ocaron","ocircle","ocircumflex","ocircumflexacute","ocircumflexdotbelow","ocircumflexgrave","ocircumflexhookabove","ocircumflextilde","ocyrillic","odblacute","odblgrave","odeva","odieresis","odieresiscyrillic","odotbelow","oe","oekorean","ogonek","ogonekcmb","ograve","ogujarati","oharmenian","ohiragana","ohookabove","ohorn","ohornacute","ohorndotbelow","ohorngrave","ohornhookabove","ohorntilde","ohungarumlaut","oi","oinvertedbreve","okatakana","okatakanahalfwidth","okorean","olehebrew","omacron","omacronacute","omacrongrave","omdeva","omega","omega1","omegacyrillic","omegalatinclosed","omegaroundcyrillic","omegatitlocyrillic","omegatonos","omgujarati","omicron","omicrontonos","omonospace","one","onearabic","onebengali","onecircle","onecircleinversesansserif","onedeva","onedotenleader","oneeighth","onefitted","onegujarati","onegurmukhi","onehackarabic","onehalf","onehangzhou","oneideographicparen","oneinferior","onemonospace","onenumeratorbengali","oneoldstyle","oneparen","oneperiod","onepersian","onequarter","oneroman","onesuperior","onethai","onethird","oogonek","oogonekmacron","oogurmukhi","oomatragurmukhi","oopen","oparen","openbullet","option","ordfeminine","ordmasculine","orthogonal","oshortdeva","oshortvowelsigndeva","oslash","oslashacute","osmallhiragana","osmallkatakana","osmallkatakanahalfwidth","ostrokeacute","osuperior","otcyrillic","otilde","otildeacute","otildedieresis","oubopomofo","overline","overlinecenterline","overlinecmb","overlinedashed","overlinedblwavy","overlinewavy","overscore","ovowelsignbengali","ovowelsigndeva","ovowelsigngujarati","paampssquare","paasentosquare","pabengali","pacute","padeva","pagedown","pageup","pagujarati","pagurmukhi","pahiragana","paiyannoithai","pakatakana","palatalizationcyrilliccmb","palochkacyrillic","pansioskorean","paragraph","parallel","parenleft","parenleftaltonearabic","parenleftbt","parenleftex","parenleftinferior","parenleftmonospace","parenleftsmall","parenleftsuperior","parenlefttp","parenleftvertical","parenright","parenrightaltonearabic","parenrightbt","parenrightex","parenrightinferior","parenrightmonospace","parenrightsmall","parenrightsuperior","parenrighttp","parenrightvertical","partialdiff","paseqhebrew","pashtahebrew","pasquare","patah","patah11","patah1d","patah2a","patahhebrew","patahnarrowhebrew","patahquarterhebrew","patahwidehebrew","pazerhebrew","pbopomofo","pcircle","pdotaccent","pe","pecyrillic","pedagesh","pedageshhebrew","peezisquare","pefinaldageshhebrew","peharabic","peharmenian","pehebrew","pehfinalarabic","pehinitialarabic","pehiragana","pehmedialarabic","pekatakana","pemiddlehookcyrillic","perafehebrew","percent","percentarabic","percentmonospace","percentsmall","period","periodarmenian","periodcentered","periodhalfwidth","periodinferior","periodmonospace","periodsmall","periodsuperior","perispomenigreekcmb","perpendicular","perthousand","peseta","pfsquare","phabengali","phadeva","phagujarati","phagurmukhi","phi","phi1","phieuphacirclekorean","phieuphaparenkorean","phieuphcirclekorean","phieuphkorean","phieuphparenkorean","philatin","phinthuthai","phisymbolgreek","phook","phophanthai","phophungthai","phosamphaothai","pi","pieupacirclekorean","pieupaparenkorean","pieupcieuckorean","pieupcirclekorean","pieupkiyeokkorean","pieupkorean","pieupparenkorean","pieupsioskiyeokkorean","pieupsioskorean","pieupsiostikeutkorean","pieupthieuthkorean","pieuptikeutkorean","pihiragana","pikatakana","pisymbolgreek","piwrarmenian","planckover2pi","planckover2pi1","plus","plusbelowcmb","pluscircle","plusminus","plusmod","plusmonospace","plussmall","plussuperior","pmonospace","pmsquare","pohiragana","pointingindexdownwhite","pointingindexleftwhite","pointingindexrightwhite","pointingindexupwhite","pokatakana","poplathai","postalmark","postalmarkface","pparen","precedes","prescription","primemod","primereversed","product","projective","prolongedkana","propellor","propersubset","propersuperset","proportion","proportional","psi","psicyrillic","psilipneumatacyrilliccmb","pssquare","puhiragana","pukatakana","pvsquare","pwsquare","qadeva","qadmahebrew","qafarabic","qaffinalarabic","qafinitialarabic","qafmedialarabic","qamats","qamats10","qamats1a","qamats1c","qamats27","qamats29","qamats33","qamatsde","qamatshebrew","qamatsnarrowhebrew","qamatsqatanhebrew","qamatsqatannarrowhebrew","qamatsqatanquarterhebrew","qamatsqatanwidehebrew","qamatsquarterhebrew","qamatswidehebrew","qarneyparahebrew","qbopomofo","qcircle","qhook","qmonospace","qof","qofdagesh","qofdageshhebrew","qofhebrew","qparen","quarternote","qubuts","qubuts18","qubuts25","qubuts31","qubutshebrew","qubutsnarrowhebrew","qubutsquarterhebrew","qubutswidehebrew","question","questionarabic","questionarmenian","questiondown","questiondownsmall","questiongreek","questionmonospace","questionsmall","quotedbl","quotedblbase","quotedblleft","quotedblmonospace","quotedblprime","quotedblprimereversed","quotedblright","quoteleft","quoteleftreversed","quotereversed","quoteright","quoterightn","quotesinglbase","quotesingle","quotesinglemonospace","raarmenian","rabengali","racute","radeva","radical","radicalex","radoverssquare","radoverssquaredsquare","radsquare","rafe","rafehebrew","ragujarati","ragurmukhi","rahiragana","rakatakana","rakatakanahalfwidth","ralowerdiagonalbengali","ramiddlediagonalbengali","ramshorn","ratio","rbopomofo","rcaron","rcedilla","rcircle","rcommaaccent","rdblgrave","rdotaccent","rdotbelow","rdotbelowmacron","referencemark","reflexsubset","reflexsuperset","registered","registersans","registerserif","reharabic","reharmenian","rehfinalarabic","rehiragana","rekatakana","rekatakanahalfwidth","resh","reshdageshhebrew","reshhebrew","reversedtilde","reviahebrew","reviamugrashhebrew","revlogicalnot","rfishhook","rfishhookreversed","rhabengali","rhadeva","rho","rhook","rhookturned","rhookturnedsuperior","rhosymbolgreek","rhotichookmod","rieulacirclekorean","rieulaparenkorean","rieulcirclekorean","rieulhieuhkorean","rieulkiyeokkorean","rieulkiyeoksioskorean","rieulkorean","rieulmieumkorean","rieulpansioskorean","rieulparenkorean","rieulphieuphkorean","rieulpieupkorean","rieulpieupsioskorean","rieulsioskorean","rieulthieuthkorean","rieultikeutkorean","rieulyeorinhieuhkorean","rightangle","righttackbelowcmb","righttriangle","rihiragana","rikatakana","rikatakanahalfwidth","ring","ringbelowcmb","ringcmb","ringhalfleft","ringhalfleftarmenian","ringhalfleftbelowcmb","ringhalfleftcentered","ringhalfright","ringhalfrightbelowcmb","ringhalfrightcentered","rinvertedbreve","rittorusquare","rlinebelow","rlongleg","rlonglegturned","rmonospace","rohiragana","rokatakana","rokatakanahalfwidth","roruathai","rparen","rrabengali","rradeva","rragurmukhi","rreharabic","rrehfinalarabic","rrvocalicbengali","rrvocalicdeva","rrvocalicgujarati","rrvocalicvowelsignbengali","rrvocalicvowelsigndeva","rrvocalicvowelsigngujarati","rsuperior","rtblock","rturned","rturnedsuperior","ruhiragana","rukatakana","rukatakanahalfwidth","rupeemarkbengali","rupeesignbengali","rupiah","ruthai","rvocalicbengali","rvocalicdeva","rvocalicgujarati","rvocalicvowelsignbengali","rvocalicvowelsigndeva","rvocalicvowelsigngujarati","sabengali","sacute","sacutedotaccent","sadarabic","sadeva","sadfinalarabic","sadinitialarabic","sadmedialarabic","sagujarati","sagurmukhi","sahiragana","sakatakana","sakatakanahalfwidth","sallallahoualayhewasallamarabic","samekh","samekhdagesh","samekhdageshhebrew","samekhhebrew","saraaathai","saraaethai","saraaimaimalaithai","saraaimaimuanthai","saraamthai","saraathai","saraethai","saraiileftthai","saraiithai","saraileftthai","saraithai","saraothai","saraueeleftthai","saraueethai","saraueleftthai","sarauethai","sarauthai","sarauuthai","sbopomofo","scaron","scarondotaccent","scedilla","schwa","schwacyrillic","schwadieresiscyrillic","schwahook","scircle","scircumflex","scommaaccent","sdotaccent","sdotbelow","sdotbelowdotaccent","seagullbelowcmb","secondtonechinese","section","seenarabic","seenfinalarabic","seeninitialarabic","seenmedialarabic","segol","segol13","segol1f","segol2c","segolhebrew","segolnarrowhebrew","segolquarterhebrew","segoltahebrew","segolwidehebrew","seharmenian","sehiragana","sekatakana","sekatakanahalfwidth","semicolon","semicolonarabic","semicolonmonospace","semicolonsmall","semivoicedmarkkana","semivoicedmarkkanahalfwidth","sentisquare","sentosquare","seven","sevenarabic","sevenbengali","sevencircle","sevencircleinversesansserif","sevendeva","seveneighths","sevengujarati","sevengurmukhi","sevenhackarabic","sevenhangzhou","sevenideographicparen","seveninferior","sevenmonospace","sevenoldstyle","sevenparen","sevenperiod","sevenpersian","sevenroman","sevensuperior","seventeencircle","seventeenparen","seventeenperiod","seventhai","sfthyphen","shaarmenian","shabengali","shacyrillic","shaddaarabic","shaddadammaarabic","shaddadammatanarabic","shaddafathaarabic","shaddakasraarabic","shaddakasratanarabic","shade","shadedark","shadelight","shademedium","shadeva","shagujarati","shagurmukhi","shalshelethebrew","shbopomofo","shchacyrillic","sheenarabic","sheenfinalarabic","sheeninitialarabic","sheenmedialarabic","sheicoptic","sheqel","sheqelhebrew","sheva","sheva115","sheva15","sheva22","sheva2e","shevahebrew","shevanarrowhebrew","shevaquarterhebrew","shevawidehebrew","shhacyrillic","shimacoptic","shin","shindagesh","shindageshhebrew","shindageshshindot","shindageshshindothebrew","shindageshsindot","shindageshsindothebrew","shindothebrew","shinhebrew","shinshindot","shinshindothebrew","shinsindot","shinsindothebrew","shook","sigma","sigma1","sigmafinal","sigmalunatesymbolgreek","sihiragana","sikatakana","sikatakanahalfwidth","siluqhebrew","siluqlefthebrew","similar","sindothebrew","siosacirclekorean","siosaparenkorean","sioscieuckorean","sioscirclekorean","sioskiyeokkorean","sioskorean","siosnieunkorean","siosparenkorean","siospieupkorean","siostikeutkorean","six","sixarabic","sixbengali","sixcircle","sixcircleinversesansserif","sixdeva","sixgujarati","sixgurmukhi","sixhackarabic","sixhangzhou","sixideographicparen","sixinferior","sixmonospace","sixoldstyle","sixparen","sixperiod","sixpersian","sixroman","sixsuperior","sixteencircle","sixteencurrencydenominatorbengali","sixteenparen","sixteenperiod","sixthai","slash","slashmonospace","slong","slongdotaccent","smileface","smonospace","sofpasuqhebrew","softhyphen","softsigncyrillic","sohiragana","sokatakana","sokatakanahalfwidth","soliduslongoverlaycmb","solidusshortoverlaycmb","sorusithai","sosalathai","sosothai","sosuathai","space","spacehackarabic","spade","spadesuitblack","spadesuitwhite","sparen","squarebelowcmb","squarecc","squarecm","squarediagonalcrosshatchfill","squarehorizontalfill","squarekg","squarekm","squarekmcapital","squareln","squarelog","squaremg","squaremil","squaremm","squaremsquared","squareorthogonalcrosshatchfill","squareupperlefttolowerrightfill","squareupperrighttolowerleftfill","squareverticalfill","squarewhitewithsmallblack","srsquare","ssabengali","ssadeva","ssagujarati","ssangcieuckorean","ssanghieuhkorean","ssangieungkorean","ssangkiyeokkorean","ssangnieunkorean","ssangpieupkorean","ssangsioskorean","ssangtikeutkorean","ssuperior","sterling","sterlingmonospace","strokelongoverlaycmb","strokeshortoverlaycmb","subset","subsetnotequal","subsetorequal","succeeds","suchthat","suhiragana","sukatakana","sukatakanahalfwidth","sukunarabic","summation","sun","superset","supersetnotequal","supersetorequal","svsquare","syouwaerasquare","tabengali","tackdown","tackleft","tadeva","tagujarati","tagurmukhi","taharabic","tahfinalarabic","tahinitialarabic","tahiragana","tahmedialarabic","taisyouerasquare","takatakana","takatakanahalfwidth","tatweelarabic","tau","tav","tavdages","tavdagesh","tavdageshhebrew","tavhebrew","tbar","tbopomofo","tcaron","tccurl","tcedilla","tcheharabic","tchehfinalarabic","tchehinitialarabic","tchehmedialarabic","tcircle","tcircumflexbelow","tcommaaccent","tdieresis","tdotaccent","tdotbelow","tecyrillic","tedescendercyrillic","teharabic","tehfinalarabic","tehhahinitialarabic","tehhahisolatedarabic","tehinitialarabic","tehiragana","tehjeeminitialarabic","tehjeemisolatedarabic","tehmarbutaarabic","tehmarbutafinalarabic","tehmedialarabic","tehmeeminitialarabic","tehmeemisolatedarabic","tehnoonfinalarabic","tekatakana","tekatakanahalfwidth","telephone","telephoneblack","telishagedolahebrew","telishaqetanahebrew","tencircle","tenideographicparen","tenparen","tenperiod","tenroman","tesh","tet","tetdagesh","tetdageshhebrew","tethebrew","tetsecyrillic","tevirhebrew","tevirlefthebrew","thabengali","thadeva","thagujarati","thagurmukhi","thalarabic","thalfinalarabic","thanthakhatlowleftthai","thanthakhatlowrightthai","thanthakhatthai","thanthakhatupperleftthai","theharabic","thehfinalarabic","thehinitialarabic","thehmedialarabic","thereexists","therefore","theta","theta1","thetasymbolgreek","thieuthacirclekorean","thieuthaparenkorean","thieuthcirclekorean","thieuthkorean","thieuthparenkorean","thirteencircle","thirteenparen","thirteenperiod","thonangmonthothai","thook","thophuthaothai","thorn","thothahanthai","thothanthai","thothongthai","thothungthai","thousandcyrillic","thousandsseparatorarabic","thousandsseparatorpersian","three","threearabic","threebengali","threecircle","threecircleinversesansserif","threedeva","threeeighths","threegujarati","threegurmukhi","threehackarabic","threehangzhou","threeideographicparen","threeinferior","threemonospace","threenumeratorbengali","threeoldstyle","threeparen","threeperiod","threepersian","threequarters","threequartersemdash","threeroman","threesuperior","threethai","thzsquare","tihiragana","tikatakana","tikatakanahalfwidth","tikeutacirclekorean","tikeutaparenkorean","tikeutcirclekorean","tikeutkorean","tikeutparenkorean","tilde","tildebelowcmb","tildecmb","tildecomb","tildedoublecmb","tildeoperator","tildeoverlaycmb","tildeverticalcmb","timescircle","tipehahebrew","tipehalefthebrew","tippigurmukhi","titlocyrilliccmb","tiwnarmenian","tlinebelow","tmonospace","toarmenian","tohiragana","tokatakana","tokatakanahalfwidth","tonebarextrahighmod","tonebarextralowmod","tonebarhighmod","tonebarlowmod","tonebarmidmod","tonefive","tonesix","tonetwo","tonos","tonsquare","topatakthai","tortoiseshellbracketleft","tortoiseshellbracketleftsmall","tortoiseshellbracketleftvertical","tortoiseshellbracketright","tortoiseshellbracketrightsmall","tortoiseshellbracketrightvertical","totaothai","tpalatalhook","tparen","trademark","trademarksans","trademarkserif","tretroflexhook","triagdn","triaglf","triagrt","triagup","ts","tsadi","tsadidagesh","tsadidageshhebrew","tsadihebrew","tsecyrillic","tsere","tsere12","tsere1e","tsere2b","tserehebrew","tserenarrowhebrew","tserequarterhebrew","tserewidehebrew","tshecyrillic","tsuperior","ttabengali","ttadeva","ttagujarati","ttagurmukhi","tteharabic","ttehfinalarabic","ttehinitialarabic","ttehmedialarabic","tthabengali","tthadeva","tthagujarati","tthagurmukhi","tturned","tuhiragana","tukatakana","tukatakanahalfwidth","tusmallhiragana","tusmallkatakana","tusmallkatakanahalfwidth","twelvecircle","twelveparen","twelveperiod","twelveroman","twentycircle","twentyhangzhou","twentyparen","twentyperiod","two","twoarabic","twobengali","twocircle","twocircleinversesansserif","twodeva","twodotenleader","twodotleader","twodotleadervertical","twogujarati","twogurmukhi","twohackarabic","twohangzhou","twoideographicparen","twoinferior","twomonospace","twonumeratorbengali","twooldstyle","twoparen","twoperiod","twopersian","tworoman","twostroke","twosuperior","twothai","twothirds","u","uacute","ubar","ubengali","ubopomofo","ubreve","ucaron","ucircle","ucircumflex","ucircumflexbelow","ucyrillic","udattadeva","udblacute","udblgrave","udeva","udieresis","udieresisacute","udieresisbelow","udieresiscaron","udieresiscyrillic","udieresisgrave","udieresismacron","udotbelow","ugrave","ugujarati","ugurmukhi","uhiragana","uhookabove","uhorn","uhornacute","uhorndotbelow","uhorngrave","uhornhookabove","uhorntilde","uhungarumlaut","uhungarumlautcyrillic","uinvertedbreve","ukatakana","ukatakanahalfwidth","ukcyrillic","ukorean","umacron","umacroncyrillic","umacrondieresis","umatragurmukhi","umonospace","underscore","underscoredbl","underscoremonospace","underscorevertical","underscorewavy","union","universal","uogonek","uparen","upblock","upperdothebrew","upsilon","upsilondieresis","upsilondieresistonos","upsilonlatin","upsilontonos","uptackbelowcmb","uptackmod","uragurmukhi","uring","ushortcyrillic","usmallhiragana","usmallkatakana","usmallkatakanahalfwidth","ustraightcyrillic","ustraightstrokecyrillic","utilde","utildeacute","utildebelow","uubengali","uudeva","uugujarati","uugurmukhi","uumatragurmukhi","uuvowelsignbengali","uuvowelsigndeva","uuvowelsigngujarati","uvowelsignbengali","uvowelsigndeva","uvowelsigngujarati","vadeva","vagujarati","vagurmukhi","vakatakana","vav","vavdagesh","vavdagesh65","vavdageshhebrew","vavhebrew","vavholam","vavholamhebrew","vavvavhebrew","vavyodhebrew","vcircle","vdotbelow","vecyrillic","veharabic","vehfinalarabic","vehinitialarabic","vehmedialarabic","vekatakana","venus","verticalbar","verticallineabovecmb","verticallinebelowcmb","verticallinelowmod","verticallinemod","vewarmenian","vhook","vikatakana","viramabengali","viramadeva","viramagujarati","visargabengali","visargadeva","visargagujarati","vmonospace","voarmenian","voicediterationhiragana","voicediterationkatakana","voicedmarkkana","voicedmarkkanahalfwidth","vokatakana","vparen","vtilde","vturned","vuhiragana","vukatakana","w","wacute","waekorean","wahiragana","wakatakana","wakatakanahalfwidth","wakorean","wasmallhiragana","wasmallkatakana","wattosquare","wavedash","wavyunderscorevertical","wawarabic","wawfinalarabic","wawhamzaabovearabic","wawhamzaabovefinalarabic","wbsquare","wcircle","wcircumflex","wdieresis","wdotaccent","wdotbelow","wehiragana","weierstrass","wekatakana","wekorean","weokorean","wgrave","whitebullet","whitecircle","whitecircleinverse","whitecornerbracketleft","whitecornerbracketleftvertical","whitecornerbracketright","whitecornerbracketrightvertical","whitediamond","whitediamondcontainingblacksmalldiamond","whitedownpointingsmalltriangle","whitedownpointingtriangle","whiteleftpointingsmalltriangle","whiteleftpointingtriangle","whitelenticularbracketleft","whitelenticularbracketright","whiterightpointingsmalltriangle","whiterightpointingtriangle","whitesmallsquare","whitesmilingface","whitesquare","whitestar","whitetelephone","whitetortoiseshellbracketleft","whitetortoiseshellbracketright","whiteuppointingsmalltriangle","whiteuppointingtriangle","wihiragana","wikatakana","wikorean","wmonospace","wohiragana","wokatakana","wokatakanahalfwidth","won","wonmonospace","wowaenthai","wparen","wring","wsuperior","wturned","wynn","xabovecmb","xbopomofo","xcircle","xdieresis","xdotaccent","xeharmenian","xi","xmonospace","xparen","xsuperior","yaadosquare","yabengali","yacute","yadeva","yaekorean","yagujarati","yagurmukhi","yahiragana","yakatakana","yakatakanahalfwidth","yakorean","yamakkanthai","yasmallhiragana","yasmallkatakana","yasmallkatakanahalfwidth","yatcyrillic","ycircle","ycircumflex","ydieresis","ydotaccent","ydotbelow","yeharabic","yehbarreearabic","yehbarreefinalarabic","yehfinalarabic","yehhamzaabovearabic","yehhamzaabovefinalarabic","yehhamzaaboveinitialarabic","yehhamzaabovemedialarabic","yehinitialarabic","yehmedialarabic","yehmeeminitialarabic","yehmeemisolatedarabic","yehnoonfinalarabic","yehthreedotsbelowarabic","yekorean","yen","yenmonospace","yeokorean","yeorinhieuhkorean","yerahbenyomohebrew","yerahbenyomolefthebrew","yericyrillic","yerudieresiscyrillic","yesieungkorean","yesieungpansioskorean","yesieungsioskorean","yetivhebrew","ygrave","yhook","yhookabove","yiarmenian","yicyrillic","yikorean","yinyang","yiwnarmenian","ymonospace","yod","yoddagesh","yoddageshhebrew","yodhebrew","yodyodhebrew","yodyodpatahhebrew","yohiragana","yoikorean","yokatakana","yokatakanahalfwidth","yokorean","yosmallhiragana","yosmallkatakana","yosmallkatakanahalfwidth","yotgreek","yoyaekorean","yoyakorean","yoyakthai","yoyingthai","yparen","ypogegrammeni","ypogegrammenigreekcmb","yr","yring","ysuperior","ytilde","yturned","yuhiragana","yuikorean","yukatakana","yukatakanahalfwidth","yukorean","yusbigcyrillic","yusbigiotifiedcyrillic","yuslittlecyrillic","yuslittleiotifiedcyrillic","yusmallhiragana","yusmallkatakana","yusmallkatakanahalfwidth","yuyekorean","yuyeokorean","yyabengali","yyadeva","zaarmenian","zacute","zadeva","zagurmukhi","zaharabic","zahfinalarabic","zahinitialarabic","zahiragana","zahmedialarabic","zainarabic","zainfinalarabic","zakatakana","zaqefgadolhebrew","zaqefqatanhebrew","zarqahebrew","zayin","zayindagesh","zayindageshhebrew","zayinhebrew","zbopomofo","zcaron","zcircle","zcircumflex","zcurl","zdot","zdotaccent","zdotbelow","zecyrillic","zedescendercyrillic","zedieresiscyrillic","zehiragana","zekatakana","zero","zeroarabic","zerobengali","zerodeva","zerogujarati","zerogurmukhi","zerohackarabic","zeroinferior","zeromonospace","zerooldstyle","zeropersian","zerosuperior","zerothai","zerowidthjoiner","zerowidthnonjoiner","zerowidthspace","zeta","zhbopomofo","zhearmenian","zhebrevecyrillic","zhecyrillic","zhedescendercyrillic","zhedieresiscyrillic","zihiragana","zikatakana","zinorhebrew","zlinebelow","zmonospace","zohiragana","zokatakana","zparen","zretroflexhook","zstroke","zuhiragana","zukatakana","angbracketleftbig","angbracketleftBig","angbracketleftbigg","angbracketleftBigg","angbracketrightBig","angbracketrightbig","angbracketrightBigg","angbracketrightbigg","arrowhookleft","arrowhookright","arrowlefttophalf","arrowleftbothalf","arrownortheast","arrownorthwest","arrowrighttophalf","arrowrightbothalf","arrowsoutheast","arrowsouthwest","backslashbig","backslashBig","backslashBigg","backslashbigg","bardbl","bracehtipdownleft","bracehtipdownright","bracehtipupleft","bracehtipupright","braceleftBig","braceleftbig","braceleftbigg","braceleftBigg","bracerightBig","bracerightbig","bracerightbigg","bracerightBigg","bracketleftbig","bracketleftBig","bracketleftbigg","bracketleftBigg","bracketrightBig","bracketrightbig","bracketrightbigg","bracketrightBigg","ceilingleftbig","ceilingleftBig","ceilingleftBigg","ceilingleftbigg","ceilingrightbig","ceilingrightBig","ceilingrightbigg","ceilingrightBigg","circledotdisplay","circledottext","circlemultiplydisplay","circlemultiplytext","circleplusdisplay","circleplustext","contintegraldisplay","contintegraltext","coproductdisplay","coproducttext","floorleftBig","floorleftbig","floorleftbigg","floorleftBigg","floorrightbig","floorrightBig","floorrightBigg","floorrightbigg","hatwide","hatwider","hatwidest","intercal","integraldisplay","integraltext","intersectiondisplay","intersectiontext","logicalanddisplay","logicalandtext","logicalordisplay","logicalortext","parenleftBig","parenleftbig","parenleftBigg","parenleftbigg","parenrightBig","parenrightbig","parenrightBigg","parenrightbigg","prime","productdisplay","producttext","radicalbig","radicalBig","radicalBigg","radicalbigg","radicalbt","radicaltp","radicalvertex","slashbig","slashBig","slashBigg","slashbigg","summationdisplay","summationtext","tildewide","tildewider","tildewidest","uniondisplay","unionmultidisplay","unionmultitext","unionsqdisplay","unionsqtext","uniontext","vextenddouble","vextendsingle","getDingbatsGlyphsUnicode","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","getSpecialPUASymbols","mapSpecialUnicodeValues","getUnicodeForGlyph","glyphsUnicodeMap","unicode","nameLen","hexStr","UnicodeRanges","getUnicodeRangeFor","lastPosition","SpecialCharRegExp","CategoryCache","getCharUnicodeCategory","cachedCategory","groups","category","isWhitespace","isZeroWidthDiacritic","isInvisibleFormatMark","clearUnicodeCaches","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","recoverGlyphName","type1FontGlyphMapping","builtInEncoding","glyphNames","charCodeToGlyphId","glyphId","isSymbolicFont","isInternalFont","baseEncodingName","differences","glyphName","standardGlyphName","normalizeFontName","getVerticalPresentationForm","getStdFontMap","Helvetica","Courier","ZapfDingbats","ArialNarrow","ArialBlack","Arial","ArialMT","ArialUnicodeMS","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","getFontNameToFileMap","getNonStdFontMap","Calibri","CenturyGothic","ComicSansMS","GillSansMT","Impact","LucidaConsole","NuptialScript","SegoeUISymbol","getSerifFonts","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","getSymbolsFonts","Dingbats","Wingdings","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getStandardFontName","fontName","stdFontMap","isKnownFontName","ToUnicodeMap","cmap","amend","IdentityToUnicodeMap","firstChar","lastChar","CFFFont","compiler","loadedName","_createBuiltInEncoding","getCharset","getGlyphMapping","cidToGidMap","charsets","composite","invCidToGidMap","defaultEncoding","encodings","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","segCount","idDelta","idOffset","ids","parseCff","glyphs","gsubrs","isCFFCIDFont","parseGlyfTable","glyf","loca","isGlyphLocationsLong","itemSize","itemDecode","lookupCmap","compileGlyf","cmds","font","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","points","startPoint","endPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","Commands","newArgs","arg","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","getPathJs","compileEx","compileGlyph","compileGlyphImpl","hasBuiltPath","TrueTypeCompiled","Type2Compiled","cffInfo","FontRendererFactory","indexToLocFormat","unitsPerEm","numTables","tag","getMetrics","getFontBasicMetrics","capHeight","xHeight","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","GlyfTable","glyfTable","locaTable","DataView","byteOffset","Glyph","getSize","reduce","totalSize","isLocationLong","setUint32","setUint16","locaIndex","factors","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","yMin","yMax","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","flag","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","setUint8","argument1","argument2","transf","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","OpenTypeFileBuilder","sfnt","getSearchParams","entriesCount","entrySize","maxPower2","searchRange","rangeShift","toArray","tablesNames","tableName","tableOffsets","paddedLength","searchParams","checksum","quad","addTable","HINTING_ENABLED","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","Type1CharString","lsb","flexing","convert","encoded","wx","sbx","executeCommand","dy","asb","splice","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","Type1Parser","encrypted","isBinary","readNumberArray","getToken","token","readInt","readBoolean","prevChar","readCharStrings","lenIV","extractFontProgram","charstrings","privateData","program","blueArray","charString","charStringObject","extractFontHeader","encodingArg","findBlock","streamBytes","signature","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","actualLength","getEexecBlock","eexecBytes","Type1Font","PFB_HEADER_SIZE","headerBlockLength","length1","eexecBlockLength","length2","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","eexecBlock","eexecBlockParser","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","seacMap","type1Charstrings","type1Charstring","type1Subrs","type2Subrs","bbox","charsetArray","fields","field","subrIndex","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","glyphsWidths","adjustTrueTypeToUnicode","nameRecords","hasIncludedToUnicodeMap","hasEncoding","toUnicode","isWinNameRecord","adjustType1ToUnicode","amendFallbackToUnicode","fallbackToUnicode","fonts_Glyph","originalCharCode","fontChar","accent","vmetric","operatorListId","isSpace","isInFont","int16","writeSignedInt16","signedInt16","writeUint32","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","subtype","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","isMacNameRecord","language","convertCidString","shouldThrow","adjustMapping","hasGlyph","newGlyphZeroId","newMap","toUnicodeExtraMap","usedGlyphIds","privateUseAreaIndex","privateUseOffetStart","nextAvailableFontCharCode","privateUseOffetEnd","isInPrivateArea","fontCharCode","getRanges","fontGetRangesSort","codeIndices","createCmapTable","bmpLength","trailingRangesCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","contiguous","startCode","format314","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","override","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","fixedPitch","createPostTable","createPostscriptName","createNameTable","proto","stringsUnicode","strBufUnicode","platforms","namesRecordCount","nameTable","strOffset","strs","nameRecord","Font","psName","mimetype","disableFontFace","isType3Font","missingFile","_charsCache","_glyphCache","isSerifFont","isSimulatedFlags","baseName","serifFonts","namePart","isMonospace","systemFontInfo","matches","isInvalidPDFjsFont","fallbackName","guessFallback","css","lineHeight","cidEncoding","vmetrics","defaultVMetrics","fallbackToSystemFont","checkAndRepair","isOpenType","renderer","exportData","extraProperties","exportDataProperties","nonStdFontMap","isStandardFont","isMappedToStandardFont","fontBasicMetricsMap","metrics","bold","italic","isNarrow","remeasure","unicodeCharCode","VALID_TABLES","readTables","head","hhea","hmtx","maxp","post","readTableEntry","previousPosition","readOpenTypeHeader","ttf","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idRangePos","segIndex","offsetIndex","offsetsCount","rangeOffset","nGroups","startCharCode","endCharCode","glyphCode","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","contoursCount","flagsCount","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","glyphDataLength","sanitizeHead","locaLength","numGlyphsPlusOne","sanitizeGlyphLocations","maxSizeOfInstructions","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","nextOffset","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","glyphNameIndexes","customNames","stringLength","records","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","NAME_RECORD_LENGTH","record","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsStackDeltas","stackTop","functionsDefined","functionsUsed","newStackLength","content","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","scaleFactors","advanceWidth","maxZones","glyphsInfo","metricsOverride","lineGap","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","forcePostTable","unicodeOrCharCode","mapping","glyphZeroId","newMapping","namePrototype","builder","tableTag","newCharCodeToGlyphId","getCharCodes","charCodes","createCharCode","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","tan","fontFieldsHmtx","cffWidths","_spaceWidth","possibleSpaceReplacements","glyphUnicode","_charToGlyph","widthCode","fromCodePoint","charsToGlyphs","chars","getCharPositions","positions","glyphCacheValues","encodeString","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","ErrorFont","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","Pattern","parseShading","shading","res","RadialAxialShading","MeshShading","DummyShading","BaseShading","getIR","shadingType","coordsLen","coordsArr","t0","t1","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","hypot","fnObj","createFromArray","NUMBER_OF_SAMPLES","step","colorStops","rgbColor","iBase","rgbBase","cssColorBase","iPrev","rgbPrev","maxSlopeR","maxSlopeG","maxSlopeB","minSlopeR","minSlopeG","minSlopeB","slopesExist","cssColor","background","SMALL_NUMBER","r0","MeshStreamReader","context","tmpCompsBuf","csNumComps","colorSpace","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","bCache","buildB","lut","t_","getB","clearPatternCaches","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","TRIANGLE_DENSITY","bounds","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","maxY","coordsPacked","xy","colorsPacked","getTilingPatternIR","operatorList","xstep","ystep","paintType","tilingType","CalibriBoldFactors","CalibriBoldMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","getXFAFontMap","baseWidths","baseMapping","getXfaFontName","fontMap","getXfaFontWidths","rescaledBaseWidths","currentArray","newWidths","charUnicode","unicode1","unicode2","getXfaFontDict","descriptor","systemInfo","PostScriptParser","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","PostScriptLexer","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","LocalImageCache","LocalColorSpaceCache","LocalFunctionCache","LocalGStateCache","LocalTilingPatternCache","RegionalImageCache","GlobalImageCache","decodeFailedSet","_refCache","byteSize","cacheLimitReached","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","shouldCache","pageIndexSet","NUM_PAGES_THRESHOLD","addDecodeFailed","hasDecodeFailed","addByteSize","setData","onlyData","PDFFunctionFactory","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","typeNum","constructSampled","constructInterpolated","constructStiched","constructPostScript","fnArray","toMultiArray","interpolate","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","constructSampledFn","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptCompiler","numOutputs","numInputs","evaluator","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","isPDFFunction","fnDict","PostScriptStack","initialStack","MAX_STACK_SIZE","copy","roll","counter","operator","atan2","cos","log10","sin","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","operation","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","createBidiText","isLTR","dir","bidi","startLevel","strLength","numBidi","charType","levels","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","NORMAL","style","BOLD","ITALIC","BOLDITALIC","substitutionMap","local","ultimate","alias","fontAliases","getStyleToAppend","getFamilyName","keywords","tok","generateFont","localFontPath","useFallback","usePath","append","extra","substitution","aliasAppend","fallbackInfo","fallbackUltimate","getFontSubstitution","systemFontCache","idFactory","baseFontName","standardFontName","substitutionInfo","subst","mustAddBaseFont","getDocId","createFontId","MIN_IMAGE_DIM","MAX_IMAGE_DIM","MAX_ERROR","ImageResizer","imgData","isMask","_imgData","_isMask","needsToBeResized","goodSquareLength","MAX_DIM","area","_hasMaxArea","MAX_AREA","_areGoodDims","_guessMax","maxArea","canvasMaxAreaInBytes","canvas","ctx","getContext","fillRect","opacity","tolerance","defaultHeight","middle","createImage","_createImage","rescaleImageData","_encodeBMP","imagePromise","transfer","createImageBitmap","Blob","finally","minFactor","firstFactor","steps","newWidth","newHeight","prevWidth","prevHeight","drawImage","transferToImageBitmap","rgbaSize","maxHeight","remainder","willReadFrequently","putImageData","ImageData","bitPerPixel","colorTable","maskTable","compression","rowLen","newData","extraLen","view","headerLength","fileLength","bmpData","setInt32","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","update","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","addState","parentState","pattern","checkFn","iterateFn","processFn","InitialState","iterateInlineImageGroup","iFirstSave","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","argsArray","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","imgRowSize","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","iFirstPIMXO","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","queue","_optimize","flush","QueueOptimizer","lastProcessed","iterate","OperatorList","CHUNK_SIZE","intent","streamSink","_streamSink","optimizer","dependencies","_totalLength","_resolved","addOp","CHUNK_SIZE_ABOUT","addImageOps","optionalContent","addDependency","addDependencies","addOpList","opList","_transfers","transfers","cached","separateAnnots","enqueue","decodeAndClamp","addend","coefficient","resizeImageMask","PDFImage","isInline","smask","jpxDecoderOptions","imageMask","matte","hasColorSpace","numComp","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","buildImage","smaskData","maskData","createRawMask","imgArray","imageIsFromDecodeStream","computedLength","haveFullData","createMask","isSingleOpaquePixel","createImageData","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","sh","fillGrayBuffer","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","mustBeResized","getImageBytes","createBitmap","getImage","imageLength","isHandled","internal","maybeUndoPreblend","canvasImgData","imageBytes","DefaultPartialEvaluatorOptions","freeze","maxImageSize","ignoreErrors","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","addLocallyCachedImageOps","TimeSlotManager","checked","CHECK_TIME_EVERY","endTime","now","TIME_SLOT_DURATION_MS","PartialEvaluator","handler","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","type3FontRefs","_regionalImageCache","_fetchBuiltInCMapBound","_pdfFunctionFactory","parsingType3Font","newOptions","newEvaluator","hasBlendModes","nonBlendModesSet","nodes","graphicStates","graphicState","bm","xObjects","xObject","xResources","fetchData","statusText","sendWithPromise","fetchStandardFontData","standardFontNameToFileName","buildFormXObject","xobj","task","initialState","groupOptions","parseMarkedContentProps","group","isolated","knockout","groupSubtype","parseColorSpace","backdrop","getOperatorList","_sendImgData","cacheGlobally","buildPaintImageXObject","localImageCache","imageRef","bitStrideLength","cacheData","createObjId","dataLen","SMALL_IMAGE_DIMENSIONS","imageObj","localLength","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","transferFn","transferMap","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","tilingPatternIR","handleSetFont","fontArgs","fontRef","fallbackFontDict","translated","loadFont","loadType3Data","type3Dependencies","TranslatedFont","evaluatorOptions","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","errorFont","fontRes","preEvaluatedFont","preEvaluateFont","hash","fontRefIsRef","fontID","aliasFontRef","translateFont","translatedFont","buildPath","parsingText","lastIndex","Infinity","opArgs","localShadingPatternCache","patternIR","handleColorN","patternName","rawPattern","localTilingPattern","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","object","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","xobjs","StateManager","preprocessor","EvaluatorPreprocessor","timeSlotManager","closePendingRestoreOPS","argument","savedStatesDepth","promiseBody","all","ensureNotTerminated","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","fontSize","combinedGlyphs","arrItem","strokeColorSpace","patternFillColorSpace","patternStrokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","extGState","getTextContent","includeMarkedContent","sink","seenStyles","viewBox","markedContentData","disableNormalization","keepWhiteSpace","TextState","textContent","styles","textContentItem","initialized","totalHeight","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","notASpace","hasEOL","twoLastChars","twoLastCharsPos","saveLastChar","nextPos","shouldAddWhitepsace","resetLastChars","TRACKING_SPACE_FACTOR","NOT_A_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","VERTICAL_SHIFT_RATIO","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","pushWhitespace","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","glyphHeight","ctm","textMatrix","ensureTextContentItem","fontSubstitution","fontSubstitutionLoadedName","trm","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","text","bidiResult","applyInverseRotation","compareWithLastPosition","glyphWidth","currentTransform","posX","posY","lastPosX","lastPosY","rotate","advanceY","advanceX","textOrientation","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","scaledDim","wordSpacing","enqueueChunk","batch","previousState","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","desiredSize","gStateFont","mcid","getPageObjId","extractDataStructures","cidToGidBytes","toUnicodePromise","readToUnicode","cidSystemInfo","registry","ordering","supplement","diffEncoding","nonEmbeddedFont","isSymbolsFontName","isNonsymbolicFont","builtToUnicode","buildToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","codeStr","ucs2CMapName","ucs2CMap","ucs2","cmapObj","glyphsData","glyphID","extractWidths","glyphsVMetrics","dw","dw2","missingWidth","getBaseFontMetrics","buildCharCodeToWidth","firstWidth","fontNameWoStyle","monospace","lookupName","Metrics","glyphWidths","widthsByGlyphName","baseDict","df","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","length3","glyphScaleFactors","subtypeEntry","_evaluatorOptions","type3Loaded","sent","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","fontBBoxSize","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","charBBox","charBBoxSize","gStateKey","stateStack","old","_fillColorSpace","_strokeColorSpace","opMap","ri","gs","cm","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nul","null","nonProcessedArgs","_isPathOp","_numInvalidPathOPS","opSpec","argsLength","MAX_INVALID_PATH_OPS","preprocessCommand","DefaultAppearanceEvaluator","fontColor","parseDefaultAppearance","AppearanceStreamEvaluator","breakLoop","_localColorSpaceCache","parseAppearanceStream","getPdfColor","isFill","createDefaultAppearance","FakeUnicodeFont","ctxMeasure","_fontNameId","fontDescriptorRef","_fontDescriptorRef","fontDescriptor","getNewPersistentRef","descendantFontRef","descendantFont","currentWidths","baseFontRef","_createContext","createFontResources","measureText","getFirstPositionInfo","lineDescent","createAppearance","bgColor","strokeAlpha","lineWidth","hscale","vscale","fscale","newFontSize","vShift","appearance","appearanceStreamDict","ap","NameOrNumberTree","root","_type","getAll","kids","kid","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","NameTree","NumberTree","clearGlobalCaches","pickPlatformItem","stripPath","FileSpec","contentAvailable","skipContent","fs","_contentRef","fileObj","description","desc","serializable","rawFilename","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","SimpleDOMNode","nodeName","nodeValue","firstChild","childNodes","nextSibling","parentNode","child","hasChildNodes","searchNode","paths","siblingPos","dump","attribute","SimpleXMLParser","hasAttributes","lowerCaseName","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","parseFromString","documentElement","lastElement","childNode","MetadataParser","_repair","xmlDocument","_metadataMap","_data","d2","d3","charBuf","_getSequence","_parseArray","seqNode","trim","rdf","parsedData","rawData","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ANNOTATION","ELEMENT","StructTreeRoot","rootDict","rootRef","roleMap","structParentIds","init","readRoleMap","addIdToPage","pageRef","addAnnotationIdToPage","roleMapDict","canCreateStructureTree","catalogRef","pdfManager","nextKey","hasNothingToUpdate","getPage","accessibilityData","parentTreeId","createStructureTree","changes","catalog","cloneDict","structTreeRootRef","getNewTemporaryRef","structTreeRoot","parentTreeRef","parentTree","nums","writeKids","canUpdateStructTree","numberTree","pageDict","collectParents","structParent","structTreeParent","updateStructureTree","numsRef","newNextKey","objr","structTreePageObjs","page","isPageRef","objs","structTreePage","StructTreePage","collectObjects","objRef","tagDict","writeProperties","tagRef","updateParentTag","newTagRef","fallbackKids","objDict","title","expanded","actualText","idToElements","structTreeParentId","elems","parentArray","updateElement","pageKid","kidRef","parentRef","cachedParentDict","parentKidsRaw","cachedParentKids","parentKidsRef","StructElementNode","parseKids","role","nameObj","pageObjId","parseKid","StructElement","kidDict","refObjId","elemId","addNode","addTopLevelNode","nodeToSerializable","kidElement","isValidExplicitDest","zoom","argsLen","allowNull","fetchDest","fetchRemoteDest","JSON","stringify","Catalog","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","pageKidsCountCache","pageIndexCache","pageDictCache","needsRendering","collection","acroForm","acroFormRef","metadata","streamRef","encrypt","encryptMetadata","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","structTree","_readStructTreeRoot","rawObj","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","parseDestDictionary","destDict","resultObj","docBaseUrl","docAttachments","attachments","outlineItem","attachment","unsafeUrl","setOCGState","permissions","_readPermissions","trailer","optionalContentConfig","config","defaultConfig","groupsData","groupRefCache","groupRef","readOptionalContentGroup","readOptionalContentConfig","usage","print","rbGroups","usageObj","printState","viewState","parseOnOff","refs","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","parseRBGroups","rbGroup","parsedRbGroup","creator","baseState","on","off","setActualNumPages","hasActualNumPages","_pagesCount","destinations","_readDests","dests","getDestination","allDest","pageLabels","_readPageLabels","prefix","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","pageLayout","pageMode","viewerPreferences","prefs","prefValue","isValid","openAction","nameTree","xfaImages","_collectJavaScript","javaScript","appendIfJavaScriptDict","jsDict","jsActions","fontFallback","translatedFonts","manuallyTriggered","getPageDict","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","lastKid","getAllPageDicts","posInKids","addPageDict","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidPromises","uri","actionType","actionName","include","resetForm","urlDict","remoteDest","target","relationship","attachmentDest","namedAction","preserveRB","stateArr","jsAction","jsURL","mayHaveChildren","addChildren","rawValue","ObjectLoader","refSet","load","_walk","nodesToRevisit","pendingRequests","foundMissingData","$acceptWhitespace","$addHTML","$appendChild","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","$buildXFAObject","NamespaceIds","ns","connectionSet","datasets","form","localeSet","pdf","sourceSet","stylesheet","xdc","xdp","xfdf","xhtml","xmpmeta","dimConverters","pt","mm","in","px","measurementPattern","stripQuotes","getInteger","defaultValue","validate","getFloat","getKeyword","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","HTMLResult","FAILURE","EMPTY","success","html","breakNode","isBreak","FontFinder","pdfFonts","fonts","defaultFont","reallyMissingFonts","pdfFont","addPdfFont","regular","bolditalic","myriad","missing","endsWith","getDefault","find","maybe","family","selectFont","xfaFont","typeface","posture","fonts_getMetrics","real","fontFinder","lineNoGap","WIDTH_FACTOR","FontInfo","margin","paraMargin","top","bottom","right","letterSpacing","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","fontInfo","popFont","topFont","TextMeasure","fontSelector","extraHeight","addPara","addString","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","compute","lastSpacePos","lastSpaceWidth","currentLineWidth","currentLineHeight","isBroken","isFirstLine","isEOL","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","current","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isXFAObject","isXFAObjectArray","isFinite","flat","createDataNode","some","createNodes","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","XFAObject","nsId","hasChildren","XmlObject","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","dataNode","xfa","tagName","utf8TagName","utf8Name","skipConsumed","hasNS","$ns","$name","ContentObject","OptionObject","StringObject","IntegerObject","validator","Option01","Option10","measureToString","converters","anchorType","dimensions","colSpan","columnWidths","currentColumn","transformOrigin","presence","visibility","display","hAlign","textAlign","alignSelf","setMinMaxDimensions","minW","minWidth","maxW","minH","minHeight","layoutText","measure","layoutNode","marginH","marginV","leftInset","rightInset","topInset","bottomInset","spaceAbove","spaceBelow","marginLeft","marginRight","exData","contentType","computeBbox","fixDimensions","layoutClass","toStyle","newStyle","createWrapper","wrapper","class","border","insets","insetsH","insetsW","hand","classNames","isPrintOnly","fixTextIndent","indent","textIndent","padding","setAccess","access","relevant","getCurrentPara","setPara","nodeStyle","valueStyle","flexDirection","vAlign","justifyContent","paraStyle","setFontFamily","fixURL","createLine","flushHTML","htmlFromFailing","addHTML","attempt","numberInLine","getAvailableSpace","getTransformedBBox","centerX","centerY","checkDimensions","firstUnsplittable","ERROR","noLayoutFailure","currentContentArea","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","borderExtra","hasMargin","_setValue","templateNode","Value","getContainedChildren","SubformSet","isRequired","nullTest","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","startAngle","sweepAngle","edge","Edge","edgeStyle","strokeWidth","thickness","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","Area","extras","draw","exObject","exclGroup","subform","subformSet","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","picture","BindItems","connection","labelRef","valueRef","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","radius","cornerStyles","borderRadius","borderStyle","borderWidth","borderColor","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","Calculate","Caption","placement","reserve","savedReserve","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","exportedValue","fieldId","dataId","ExclGroup","xfaOn","xfaOff","required","ChoiceList","commitOn","textEntry","ui","optionStyle","displayedIndex","saveIndex","displayed","selected","hidden","selectAttributes","Color","cSpace","Comb","numberOfCells","Connect","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","comb","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","float","integer","time","DigestMethod","DigestMethods","digestMethod","Draw","locale","caption","keep","setProperty","savedW","savedH","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","accessKey","calculate","connect","_isSplittable","isSplittable","isLrTb","maxRun","Execute","executeType","runAt","Extras","Field","bindItems","Ui","TextEdit","textEdit","checkButton","choiceList","borderDims","uiW","uiH","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","backgroundColor","Rectangle","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","template_Font","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","lineThrough","lineThroughPeriod","overlinePeriod","underline","underlinePeriod","usedTypefaces","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Items","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","initial","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","occur","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","orphans","preserve","radixOffset","tabDefault","tabStops","widows","hyphenation","paddingLeft","paddingRight","paddingTop","paddingBottom","tabSize","hyphenatation","PasswordEdit","passwordChar","template_Pattern","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SetProperty","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","Subform","allowMacro","mergeMode","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","Text","acc","allowRichText","multiLine","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","scriptTest","valueName","Variables","TemplateNamespace","attrs","bind_NS_DATASETS","createText","Binder","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","_findDataByNameToConsume","isValue","global","_setProperties","targetNodes","targetNode","targetParent","Reflect","construct","_bindItems","labels","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","baseClone","_createOccurrences","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","dataChildren","dataChild","DataHandler","dataset","serialize","storage","storageEntry","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","config_Area","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","window","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","config_Encrypt","config_Encryption","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","config_FontInfo","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","config_Message","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","config_Picture","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","config_Script","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","config_Template","startPage","Threshold","To","TemplateCache","maxEntries","Trace","Transform","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","config_Validate","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","pair","Xdc","Xdp","packets","Xsl","debug","Zpl","ConfigNamespace","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","connection_set_Uri","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","ConnectionSetNamespace","DATASETS_NS_ID","datasets_Data","Datasets","DatasetsNamespace","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","locale_set_Locale","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","locale_set_LocaleSet","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","LocaleSetNamespace","SIGNATURE_NS_ID","signature_Signature","SignatureNamespace","STYLESHEET_NS_ID","Stylesheet","StylesheetNamespace","XDP_NS_ID","xdp_Xdp","uuid","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","richText","newValue","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","XhtmlNamespace","body","br","li","ol","span","sub","sup","ul","NamespaceSetUp","UnknownNamespace","namespaceId","Root","Empty","Builder","rootNameSpace","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","buildRoot","build","nsPrefix","namespace","prefixes","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","nsAttrs","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsAgnostic","isNsAgnostic","nsName","prefixStack","XFAParser","_builder","_globalData","_ids","_current","_whiteRegex","_nbsps","_richText","_mkAttributes","attributeObj","_getNameAndPrefix","attributesObj","XFAFactory","_createDocument","binder","dataHandler","_createPagesHelper","nextIteration","_createPages","dims","getBoundingBox","getNumPages","setImages","setFonts","missingFonts","appendFonts","getPages","serializeData","getRichTextAsHtml","rc","newRoot","attr","AnnotationFactory","createGlobals","ensureCatalog","ensureDoc","xfaDatasets","annotationGlobals","collectFields","orphanFields","_getPageIndex","ensure","_create","parameters","needAppearances","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","PopupAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","annotDict","fetchIfRefAsync","annotRef","generateImages","imagePromises","bitmapId","saveNewAnnotations","promises","annotation","deleted","annotationType","createNewAnnotation","quadPoints","smaskStream","smaskRef","printNewAnnotations","createNewPrintAnnotation","getRgbColor","defaultColor","getPdfColorArray","getQuadPoints","newQuadPoints","x4","y4","getTransformMatrix","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setOptionalContent","MK","setBorderAndBackgroundColors","setRotation","_streams","isLocked","isContentLocked","annotationFlags","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","noRotate","noHTML","isEditable","kidIds","fieldName","_constructFieldName","it","_isOffscreenCanvasSupported","_fallbackFontDict","_needAppearances","_hasFlag","_buildFlags","noView","noPrint","_isViewable","_isPrintable","mustBeViewed","_renderForms","viewable","mustBePrinted","printable","mustBeViewedWhenEditing","isEditing","modifiedIds","_parseStringHelper","setDefaultAppearance","defaultAppearance","_defaultAppearance","defaultAppearanceData","_title","contents","hasFlag","setLineEndings","lineEndings","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","oc","loadResources","objectLoader","isUsingOwnCanvas","separateForm","separateCanvas","appearanceDict","hasTextContent","extractTextContent","firstPosition","trimEnd","textPosition","_transformPoint","getFieldObject","strokeColor","fillColor","loopDict","rawWidth","dashArray","horizontalCornerRadius","verticalCornerRadius","forceStyle","allZeros","validNumber","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","popupRef","titleObj","setCreationDate","creationDate","_setDefaultAppearance","blendMode","fillAlpha","pointsCallback","MAX_VALUE","MIN_VALUE","pointsArray","mX","MX","mY","MY","formDict","appearanceStream","gsDict","stateDict","annotationRef","createNewAppearanceStream","annotationDict","apRef","createNewDict","newAnnotation","refToReplace","fieldValue","_decodeFormValue","defaultFieldValue","_hasValueFromXFA","getValue","alternativeText","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","formValue","renderForms","getBorderAndBackgroundAppearances","_hasText","_getAppearance","_getMKDict","amendSavedDict","setValue","newParentDict","originalDict","maybeMK","newRef","AP","_getSaveFieldResources","rotationMatrix","isPassword","formattedValue","combo","exportValue","displayValue","lineCount","defaultPadding","defaultHPadding","_getFontData","encodedLines","encodingError","encodedString","fakeUnicodeFont","newFont","oldFont","savedDefaultAppearance","_computeFontSize","defaultVPadding","alignment","textAlignment","_getMultilineAppearance","_getCombAppearance","bottomPadding","prevInfo","renderedText","_renderText","appearanceData","_getTextWidth","numberOfLines","roundWithTwoDigits","textWidth","cachedLines","isTooBig","fsize","_splitLine","hPadding","vPadding","shiftStr","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","doNotScroll","combWidth","renderedComb","lastSpacePosInStringStart","lastSpacePosInStringEnd","startChunk","allText","_m","multiline","password","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","buttonValue","savedAppearance","savedMatrix","_saveCheckbox","_saveRadioButton","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","indices","hasIndices","isOptionArray","multiSelect","numItems","multipleSelection","valueIndices","numberOfVisibleLines","firstIndex","minIndex","maxIndex","vpadding","DEFAULT_ICON_SIZE","stateModel","parentItem","parentRect","parentFlags","_hasAppearance","oldAnnotation","user","freetext","da","helv","lineAscent","firstPoint","clipBox","lineCoordinates","interiorColor","borderAdjust","controlPointsDistance","xMid","yMid","xOffset","yOffset","vertices","rawVertices","inkLists","rawInkLists","inkList","outlines","ink","createNewAppearanceStreamForHighlight","appearanceBuffer","outline","c1x","c1y","c2x","c2y","xEnd","savedHasOwnCanvas","buf32","hasAlpha","fillStyle","jpegBufferPromise","convertToBlob","quality","xobjectName","imageName","alphaBuffer","stamp","xobject","DecryptStream","nextChunk","hasMoreData","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","_hash","combinedLength","combinedArray","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","cipherTransformDecryptStream","encryptString","strLen","pad","crypto","getRandomValues","random","CipherTransformFactory","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","hashDataSize","defaultPasswordBytes","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","algorithm","cfDict","streamCryptoName","handlerDict","ownerBytes","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","createCipherTransform","cipherConstructor","decodeString","DatasetXMLParser","DatasetReader","XRef","firstXRefStmPos","_xrefStms","_cacheMap","_pendingRefs","_newPersistentRefNum","_newTemporaryRefNum","_persistentRefsCache","resetNewTemporaryRef","setStartXRef","startXRef","startXRefQueue","trailerDict","indexObjects","readXRef","processXRefTable","tableState","entryNum","streamPos","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","LT","readToken","skipUntil","skipped","gEndobjRegExp","gStartxrefRegExp","objRegExp","trailerBytes","startxrefBytes","xrefBytes","bufferStr","trailers","xrefStms","contentLength","updateEntries","xrefTagOffset","xrefStm","trailerDicts","isEncrypted","trailerError","_generationFallback","validPagesDict","pagesDict","pagesCount","startXRefParsedCache","lastXRefStreamPos","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","LETTER_SIZE_MEDIABOX","Page","globalIdFactory","xfaFactory","resourcesPromise","idCounters","_localIdFactory","_getInheritableProperty","_getBoundingBox","xfaData","box","mediaBox","cropBox","userUnit","_onSubStreamError","getContentStream","replaceIdByRef","deletedAnnotations","existingAnnotations","partialEvaluator","annotationsArray","deletedRef","_parsedAnnotations","contentStreamPromise","newAnnotsByPage","newAnnots","newAnnotationsPromise","annotationGlobalsPromise","missingBitmaps","annotationWithBitmaps","pageListPromise","contentStream","transparency","pageOpList","newAnnotations","findIndex","intentAny","intentDisplay","intentPrint","opListPromises","opLists","langPromise","getStructTree","_parseStructTree","getAnnotationsData","annotationsData","textContentPromises","isVisible","annots","fieldObjects","annotationPromises","sortedAnnotations","popupAnnotations","widgetAnnotations","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","backwards","signatureEnd","PDFDocument","_pagePromises","_version","_globalIdFactory","docId","linearization","startXRefLength","checkHeader","parseStartXRef","_hasOnlyDocumentSignatures","recursionDepth","RECURSION_LIMIT","isSignature","isInvisible","_xfaStreams","enableXfa","formInfo","hasXfa","hasAcroForm","isPureXfa","htmlForXfa","loadXfaImages","xfaImagesDict","loadXfaFonts","serializeXfaData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","EncryptFilterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","IsSignaturesPresent","infoDict","customValue","Custom","fingerprints","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","hashOriginal","hashModified","_getLinearizationPage","cachedPromise","checkFirstPage","checkLastPage","pagesTree","reasonAll","collectFieldObjects","fieldRef","visitedRefs","partName","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","fieldObject","calculationOrderIds","calculationOrder","parseDocBaseUrl","BasePdfManager","_docBaseUrl","_docId","_password","pdfDocument","ensureXRef","requestLoadedStream","sendProgressiveData","updatePassword","terminate","LocalPdfManager","_loadedStreamPromise","NetworkPdfManager","streamManager","writeObject","writeDict","writeStream","writeArray","writeValue","isFilterZeroFlateDecode","MIN_LENGTH_FOR_COMPRESSING","CompressionStream","Response","newFilter","newParams","writeInt","writeString","computeMD5","filesize","xrefInfo","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","nodePath","updateAcroform","hasXfaDatasetsEntry","xfaDatasetsRef","newXfa","updateXFA","xfaDataStream","getXRefTable","baseOffset","newRefs","indexes","getIndexes","indexesPosition","computeIDs","getXRefStreamTable","xrefTableData","maxOffset","maxGen","maxGenSize","sizes","structSize","objOffset","fileIds","md5","getTrailerDict","useXrefStream","refForXrefTable","infoRef","encryptRef","writeChanges","incrementalUpdate","originalData","CallbackKind","UNKNOWN","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","onFn","wrapReason","MessageHandler","messageAC","AbortController","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","addEventListener","onMessage","signal","processStreamMessage","postMessage","createStreamSink","ah","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","deleteStreamController","dataReason","allSettled","destroy","PDFWorkerStream","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","getFullReader","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","isRangeSupported","headersReady","WorkerTask","terminated","_capability","finished","finish","initializeFromPort","setup","port","testMessageProcessed","createDocumentHandler","docParams","cancelXHRs","WorkerTasks","apiVersion","workerVersion","enumerableProperties","workerHandlerName","startWorkerTask","finishWorkerTask","loadDocument","getPdfManager","pdfManagerArgs","pdfStream","fullRequest","pdfManagerCapability","newPdfManager","cachedChunks","pdfFile","setupDoc","onSuccess","doc","pdfInfo","onFailure","pdfManagerReady","refStr","globalPromises","_structTreeRoot","newAnnotationPromises","newXrefInfo","infoObj","operatorListInfo","waitOn","cleanupPromise","__webpack_exports__WorkerMessageHandler"],"mappings":"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,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGD,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGA,IAAe,CAAC,EAAGD,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,IAAc,CAAC,EAAGA,KACrxE,MAAMQ,GAAc,CAAC,EAAE,GAAI,GAAI,CAAC,GAAIZ,GAAW,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,OACpX,MAAMa,GAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,MAAO,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,KAAM,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAC93I,MAAMC,GAAc,CAAC,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAId,GAAW,CAAC,GAAIA,GAAW,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,EAAE,GAAI,GAAI,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,MAAO,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KACl4C,MAAMe,GAAc,CAAC,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,GAAI,KAAM,CAAC,GAAI,KAAM,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,IAAK,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,IAAK,CAAC,EAAG,KACvwD,MAAMC,GA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S,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,SAAW,GAC3iJ,MAAMI,GAAmB,CAAC,IAAIJ,WAAW,CAAC,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAW,GAC5U,MAAMK,oBAAoBnG,aACxB,WAAA9tB,CAAY6B,EAAKitB,GACf3uB,MAAM2uB,GACN/uB,KAAK8B,IAAMA,EACX9B,KAAKqO,KAAOvM,EAAIuM,KAChB,MAAM8lB,EAAMryB,EAAIuO,UAChB,MAAM+jB,EAAMtyB,EAAIuO,UAChB,GAAI8jB,KAAS,GAAKC,KAAS,EACzB,MAAM,IAAIzzB,YAAY,mCAAmCwzB,MAAQC,KAEnE,IAAKD,EAAM,MAAU,EACnB,MAAM,IAAIxzB,YAAY,+CAA+CwzB,MAAQC,KAE/E,KAAMD,GAAO,GAAKC,GAAO,KAAO,EAC9B,MAAM,IAAIzzB,YAAY,+BAA+BwzB,MAAQC,KAE/D,GAAIA,EAAM,GACR,MAAM,IAAIzzB,YAAY,kCAAkCwzB,MAAQC,KAElEp0B,KAAKq0B,SAAW,EAChBr0B,KAAKs0B,QAAU,CAChB,CACD,kBAAM/jB,CAAarR,EAAQq1B,GACzB,MAAMzhB,QAAa9S,KAAKyQ,gBACxB,OAAOqC,GAAMpR,SAAS,EAAGxC,IAAWc,KAAKsQ,SAASpR,EACnD,CACD,mBAAMuR,GACJzQ,KAAK8B,IAAI8P,QACT,MAAM9Q,EAAQd,KAAK8B,IAAIwO,WACvB,IACE,MAAMkkB,SACJA,EAAQ70B,SACRA,GACE,IAAI80B,oBAAoB,WAC5B,MAAMC,EAAS/0B,EAASg1B,kBAClBD,EAAOE,MACbF,EAAOG,MAAM/zB,GAAOgc,MAAKgY,gBACjBJ,EAAOE,YACPF,EAAOK,OAAO,IACnBnX,OAAM,SACT,MAAMvD,EAAS,GACf,IAAI2a,EAAc,EAClB,UAAW,MAAMvzB,KAAS+yB,EAAU,CAClCna,EAAO1Y,KAAKF,GACZuzB,GAAevzB,EAAMoR,UACtB,CACD,MAAMC,EAAO,IAAI/Q,WAAWizB,GAC5B,IAAIhhB,EAAS,EACb,IAAK,MAAMvS,KAAS4Y,EAAQ,CAC1BvH,EAAKnF,IAAIlM,EAAOuS,GAChBA,GAAUvS,EAAMoR,UACjB,CACD,OAAOC,CACb,CAAM,MACA9S,KAAK8B,IAAM,IAAI0X,OAAO1Y,EAAO,EAAGA,EAAM5B,OAAQc,KAAK8B,IAAIuM,MACvDrO,KAAK4R,QACL,OAAO,IACR,CACF,CACD,WAAIlB,GACF,OAAO,IACR,CACD,OAAAukB,CAAQ/T,GACN,MAAMpf,EAAM9B,KAAK8B,IACjB,IAAIuyB,EAAWr0B,KAAKq0B,SACpB,IAAIC,EAAUt0B,KAAKs0B,QACnB,IAAIlwB,EACJ,MAAOiwB,EAAWnT,EAAM,CACtB,IAAK9c,EAAItC,EAAIuO,cAAgB,EAC3B,MAAM,IAAI1P,YAAY,gCAExB2zB,GAAWlwB,GAAKiwB,EAChBA,GAAY,CACb,CACDjwB,EAAIkwB,GAAW,GAAKpT,GAAQ,EAC5BlhB,KAAKs0B,QAAUA,GAAWpT,EAC1BlhB,KAAKq0B,SAAWA,GAAYnT,EAC5B,OAAO9c,CACR,CACD,OAAA8wB,CAAQ3B,GACN,MAAMzxB,EAAM9B,KAAK8B,IACjB,MAAMqzB,EAAQ5B,EAAM,GACpB,MAAM6B,EAAS7B,EAAM,GACrB,IAAIc,EAAWr0B,KAAKq0B,SACpB,IAAIC,EAAUt0B,KAAKs0B,QACnB,IAAIlwB,EACJ,MAAOiwB,EAAWe,EAAQ,CACxB,IAAKhxB,EAAItC,EAAIuO,cAAgB,EAC3B,MAEFikB,GAAWlwB,GAAKiwB,EAChBA,GAAY,CACb,CACD,MAAMl0B,EAAOg1B,EAAMb,GAAW,GAAKc,GAAU,GAC7C,MAAMC,EAAUl1B,GAAQ,GACxB,MAAMm1B,EAAUn1B,EAAO,MACvB,GAAIk1B,EAAU,GAAKhB,EAAWgB,EAC5B,MAAM,IAAI10B,YAAY,gCAExBX,KAAKs0B,QAAUA,GAAWe,EAC1Br1B,KAAKq0B,SAAWA,EAAWgB,EAC3B,OAAOC,CACR,CACD,oBAAAC,CAAqBC,GACnB,MAAM3xB,EAAI2xB,EAAQt2B,OAClB,IAAIk2B,EAAS,EACb,IAAI/zB,EACJ,IAAKA,EAAI,EAAGA,EAAIwC,IAAKxC,EACfm0B,EAAQn0B,GAAK+zB,IACfA,EAASI,EAAQn0B,IAGrB,MAAMwL,EAAO,GAAKuoB,EAClB,MAAMD,EAAQ,IAAItB,WAAWhnB,GAC7B,IAAK,IAAIyH,EAAM,EAAGnU,EAAO,EAAGwR,EAAO,EAAG2C,GAAO8gB,IAAU9gB,EAAKnU,IAAS,EAAGwR,IAAS,EAC/E,IAAK,IAAIkV,EAAM,EAAGA,EAAMhjB,IAAKgjB,EAC3B,GAAI2O,EAAQ3O,KAASvS,EAAK,CACxB,IAAIue,EAAQ,EACZ,IAAI1rB,EAAIhH,EACR,IAAKkB,EAAI,EAAGA,EAAIiT,IAAOjT,EAAG,CACxBwxB,EAAQA,GAAS,EAAI1rB,EAAI,EACzBA,IAAM,CACP,CACD,IAAK9F,EAAIwxB,EAAOxxB,EAAIwL,EAAMxL,GAAKsQ,EAC7BwjB,EAAM9zB,GAAKiT,GAAO,GAAKuS,IAEvB1mB,CACH,CAGL,MAAO,CAACg1B,EAAOC,EAChB,CACD,EAAAK,CAAmB3W,GACjB/gB,KAAK+gB,GACL9e,KAAKmuB,IAAM,IACZ,CACD,SAAAE,GACE,IAAI7rB,EAAQkzB,EAAKphB,EACjB,MAAMxS,EAAM9B,KAAK8B,IACjB,IACE4zB,EAAM11B,KAAKi1B,QAAQ,EACpB,CAAC,MAAOzsB,GACPxI,MAAKy1B,EAAmBjtB,EAAG1I,SAC3B,MACD,CACG41B,EAAM,IACR11B,KAAKmuB,IAAM,MAEbuH,IAAQ,EACR,GAAIA,IAAQ,EAAG,CACb,IAAItxB,EACJ,IAAKA,EAAItC,EAAIuO,cAAgB,EAAG,CAC9BrQ,MAAKy1B,EAAmB,oCACxB,MACD,CACD,IAAIE,EAAWvxB,EACf,IAAKA,EAAItC,EAAIuO,cAAgB,EAAG,CAC9BrQ,MAAKy1B,EAAmB,oCACxB,MACD,CACDE,GAAYvxB,GAAK,EACjB,IAAKA,EAAItC,EAAIuO,cAAgB,EAAG,CAC9BrQ,MAAKy1B,EAAmB,oCACxB,MACD,CACD,IAAIG,EAAQxxB,EACZ,IAAKA,EAAItC,EAAIuO,cAAgB,EAAG,CAC9BrQ,MAAKy1B,EAAmB,oCACxB,MACD,CACDG,GAASxxB,GAAK,EACd,GAAIwxB,KAAuB,OAAXD,KAAuBA,IAAa,GAAKC,IAAU,GACjE,MAAM,IAAIj1B,YAAY,iDAExBX,KAAKs0B,QAAU,EACft0B,KAAKq0B,SAAW,EAChB,MAAMnG,EAAeluB,KAAKkuB,aACxBzc,EAAMyc,EAAeyH,EACvBnzB,EAASxC,KAAKsuB,aAAa7c,GAC3BzR,KAAKkuB,aAAezc,EACpB,GAAIkkB,IAAa,EACX7zB,EAAI+O,cAAgB,IACtB7Q,KAAKmuB,IAAM,UAER,CACL,MAAM0H,EAAQ/zB,EAAIwO,SAASqlB,GAC3BnzB,EAAOmL,IAAIkoB,EAAO3H,GACd2H,EAAM32B,OAASy2B,IACjB31B,KAAKmuB,IAAM,KAEd,CACD,MACD,CACD,IAAI2H,EACJ,IAAIC,EACJ,GAAIL,IAAQ,EAAG,CACbI,EAAe9B,GACf+B,EAAgB9B,EACtB,KAAW,IAAIyB,IAAQ,EAyCjB,MAAM,IAAI/0B,YAAY,sCAzCF,CACpB,MAAMq1B,EAAch2B,KAAKi1B,QAAQ,GAAK,IACtC,MAAMgB,EAAej2B,KAAKi1B,QAAQ,GAAK,EACvC,MAAMiB,EAAkBl2B,KAAKi1B,QAAQ,GAAK,EAC1C,MAAMkB,EAAqB,IAAIp0B,WAAW6xB,GAAe10B,QACzD,IAAImC,EACJ,IAAKA,EAAI,EAAGA,EAAI60B,IAAmB70B,EACjC80B,EAAmBvC,GAAevyB,IAAMrB,KAAKi1B,QAAQ,GAEvD,MAAMmB,EAAiBp2B,KAAKu1B,qBAAqBY,GACjD7hB,EAAM,EACNjT,EAAI,EACJ,MAAM8zB,EAAQa,EAAcC,EAC5B,MAAMI,EAAc,IAAIt0B,WAAWozB,GACnC,IAAImB,EAAYC,EAAYC,EAC5B,MAAOn1B,EAAI8zB,EAAO,CAChB,MAAMh1B,EAAOH,KAAKk1B,QAAQkB,GAC1B,GAAIj2B,IAAS,GAAI,CACfm2B,EAAa,EACbC,EAAa,EACbC,EAAOliB,CACjB,MAAe,GAAInU,IAAS,GAAI,CACtBm2B,EAAa,EACbC,EAAa,EACbC,EAAOliB,EAAM,CACvB,KAAe,IAAInU,IAAS,GAIb,CACLk2B,EAAYh1B,KAAOiT,EAAMnU,EACzB,QACD,CANCm2B,EAAa,EACbC,EAAa,GACbC,EAAOliB,EAAM,CAId,CACD,IAAImiB,EAAez2B,KAAKi1B,QAAQqB,GAAcC,EAC9C,MAAOE,KAAiB,EACtBJ,EAAYh1B,KAAOm1B,CAEtB,CACDV,EAAe91B,KAAKu1B,qBAAqBc,EAAY30B,SAAS,EAAGs0B,IACjED,EAAgB/1B,KAAKu1B,qBAAqBc,EAAY30B,SAASs0B,EAAab,GAClF,CAEK,CACD3yB,EAASxC,KAAKwC,OACd,IAAIgxB,EAAQhxB,EAASA,EAAOtD,OAAS,EACrC,IAAI6R,EAAM/Q,KAAKkuB,aACf,MAAO,KAAM,CACX,IAAIqE,EAAQvyB,KAAKk1B,QAAQY,GACzB,GAAIvD,EAAQ,IAAK,CACf,GAAIxhB,EAAM,GAAKyiB,EAAO,CACpBhxB,EAASxC,KAAKsuB,aAAavd,EAAM,GACjCyiB,EAAQhxB,EAAOtD,MAChB,CACDsD,EAAOuO,KAASwhB,EAChB,QACD,CACD,GAAIA,IAAU,IAAK,CACjBvyB,KAAKkuB,aAAend,EACpB,MACD,CACDwhB,GAAS,IACTA,EAAQuB,GAAavB,GACrB,IAAIM,EAAQN,GAAS,GACjBM,EAAQ,IACVA,EAAQ7yB,KAAKi1B,QAAQpC,IAEvBve,GAAOie,EAAQ,OAAUM,EACzBN,EAAQvyB,KAAKk1B,QAAQa,GACrBxD,EAAQwB,GAAWxB,GACnBM,EAAQN,GAAS,GACbM,EAAQ,IACVA,EAAQ7yB,KAAKi1B,QAAQpC,IAEvB,MAAM6D,GAAQnE,EAAQ,OAAUM,EAChC,GAAI9hB,EAAMuD,GAAOkf,EAAO,CACtBhxB,EAASxC,KAAKsuB,aAAavd,EAAMuD,GACjCkf,EAAQhxB,EAAOtD,MAChB,CACD,IAAK,IAAIgnB,EAAI,EAAGA,EAAI5R,IAAO4R,IAAKnV,EAC9BvO,EAAOuO,GAAOvO,EAAOuO,EAAM2lB,EAE9B,CACF,EAIH,MAAMC,GAAU,CAAC,CACfC,GAAI,MACJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,EACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,EACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,KACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,IACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,GACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,EACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,EACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,EACJC,KAAM,GACNC,KAAM,GACNC,WAAY,GACX,CACDH,GAAI,MACJC,KAAM,GACNC,KAAM,GACNC,WAAY,IAEd,MAAMC,kBACJ,WAAA/2B,CAAY6S,EAAMf,EAAON,GACvBzR,KAAK8S,KAAOA,EACZ9S,KAAKi3B,GAAKllB,EACV/R,KAAKk3B,QAAUzlB,EACfzR,KAAKm3B,MAAQrkB,EAAKf,GAClB/R,KAAKo3B,KAAO,EACZp3B,KAAKq3B,SACLr3B,KAAKm3B,MAAQn3B,KAAKm3B,OAAS,EAAI,MAASn3B,KAAKo3B,MAAQ,EAAI,IACzDp3B,KAAKo3B,KAAOp3B,KAAKo3B,MAAQ,EAAI,MAC7Bp3B,KAAKs3B,IAAM,EACXt3B,KAAK0F,EAAI,KACV,CACD,MAAA2xB,GACE,MAAMvkB,EAAO9S,KAAK8S,KAClB,IAAImkB,EAAKj3B,KAAKi3B,GACd,GAAInkB,EAAKmkB,KAAQ,IACf,GAAInkB,EAAKmkB,EAAK,GAAK,IAAM,CACvBj3B,KAAKo3B,MAAQ,MACbp3B,KAAKs3B,GAAK,CAClB,KAAa,CACLL,IACAj3B,KAAKo3B,MAAQtkB,EAAKmkB,IAAO,EACzBj3B,KAAKs3B,GAAK,EACVt3B,KAAKi3B,GAAKA,CACX,KACI,CACLA,IACAj3B,KAAKo3B,MAAQH,EAAKj3B,KAAKk3B,QAAUpkB,EAAKmkB,IAAO,EAAI,MACjDj3B,KAAKs3B,GAAK,EACVt3B,KAAKi3B,GAAKA,CACX,CACD,GAAIj3B,KAAKo3B,KAAO,MAAQ,CACtBp3B,KAAKm3B,OAASn3B,KAAKo3B,MAAQ,GAC3Bp3B,KAAKo3B,MAAQ,KACd,CACF,CACD,OAAAG,CAAQC,EAAUzmB,GAChB,IAAI0mB,EAAWD,EAASzmB,IAAQ,EAC9B2mB,EAASF,EAASzmB,GAAO,EAC3B,MAAM4mB,EAAahB,GAAQc,GAC3B,MAAMG,EAAQD,EAAWf,GACzB,IAAI9oC,EACJ,IAAI4X,EAAI1F,KAAK0F,EAAIkyB,EACjB,GAAI53B,KAAKm3B,MAAQS,EACf,GAAIlyB,EAAIkyB,EAAO,CACblyB,EAAIkyB,EACJ9pC,EAAI4pC,EACJD,EAAWE,EAAWd,IAC9B,KAAa,CACLnxB,EAAIkyB,EACJ9pC,EAAI,EAAI4pC,EACJC,EAAWZ,aAAe,IAC5BW,EAAS5pC,GAEX2pC,EAAWE,EAAWb,IACvB,KACI,CACL92B,KAAKm3B,OAASS,EACd,IAAKlyB,EAAI,SAAY,EAAG,CACtB1F,KAAK0F,EAAIA,EACT,OAAOgyB,CACR,CACD,GAAIhyB,EAAIkyB,EAAO,CACb9pC,EAAI,EAAI4pC,EACJC,EAAWZ,aAAe,IAC5BW,EAAS5pC,GAEX2pC,EAAWE,EAAWb,IAC9B,KAAa,CACLhpC,EAAI4pC,EACJD,EAAWE,EAAWd,IACvB,CACF,CACD,EAAG,CACG72B,KAAKs3B,KAAO,GACdt3B,KAAKq3B,SAEP3xB,IAAM,EACN1F,KAAKm3B,MAAQn3B,KAAKm3B,OAAS,EAAI,MAASn3B,KAAKo3B,MAAQ,GAAK,EAC1Dp3B,KAAKo3B,KAAOp3B,KAAKo3B,MAAQ,EAAI,MAC7Bp3B,KAAKs3B,IACX,QAAc5xB,EAAI,SAAY,GAC1B1F,KAAK0F,EAAIA,EACT8xB,EAASzmB,GAAO0mB,GAAY,EAAIC,EAChC,OAAO5pC,CACR,EAQH,MAAM+pC,mBAAmBj4B,EACvB,WAAAK,CAAYjC,GACVoC,MAAMpC,EAAK,aACZ,EAEH,MAAM85B,aACJ,WAAAC,CAAYC,GACV,OAAIA,KAAMh4B,KACDA,KAAKg4B,GAEPh4B,KAAKg4B,GAAM,IAAIC,UAAU,MACjC,EAEH,MAAMC,gBACJ,WAAAj4B,CAAY6S,EAAMf,EAAON,GACvBzR,KAAK8S,KAAOA,EACZ9S,KAAK+R,MAAQA,EACb/R,KAAKyR,IAAMA,CACZ,CACD,WAAIvJ,GACF,MAAMA,EAAU,IAAI8uB,kBAAkBh3B,KAAK8S,KAAM9S,KAAK+R,MAAO/R,KAAKyR,KAClE,OAAOlS,OAAOS,KAAM,UAAWkI,EAChC,CACD,gBAAIiwB,GACF,MAAMC,EAAQ,IAAIN,aAClB,OAAOv4B,OAAOS,KAAM,eAAgBo4B,EACrC,EAEH,SAASC,cAAcF,EAAcG,EAAWpwB,GAC9C,MAAMsvB,EAAWW,EAAaJ,YAAYO,GAC1C,IAAIC,EAAO,EACX,SAASC,SAASt5B,GAChB,IAAI0Q,EAAI,EACR,IAAK,IAAIvO,EAAI,EAAGA,EAAInC,EAAQmC,IAAK,CAC/B,MAAMo3B,EAAMvwB,EAAQqvB,QAAQC,EAAUe,GACtCA,EAAOA,EAAO,IAAMA,GAAQ,EAAIE,EAA0B,KAAnBF,GAAQ,EAAIE,GAAa,IAChE7oB,EAAIA,GAAK,EAAI6oB,CACd,CACD,OAAO7oB,IAAM,CACd,CACD,MAAMid,EAAO2L,SAAS,GACtB,MAAMh5B,EAAQg5B,SAAS,GAAKA,SAAS,GAAKA,SAAS,GAAKA,SAAS,GAAKA,SAAS,GAAKA,SAAS,IAAM,KAAOA,SAAS,IAAM,IAAMA,SAAS,GAAK,GAAKA,SAAS,GAAK,GAAKA,SAAS,GAAK,EAAIA,SAAS,GAChM,IAAIE,EACA7L,IAAS,EACX6L,EAAcl5B,EACLA,EAAQ,IACjBk5B,GAAel5B,GAEjB,OAAIk5B,GAAevmB,GAAcumB,GAAexmB,EACvCwmB,EAEF,IACT,CACA,SAASC,WAAWR,EAAcjwB,EAAS0wB,GACzC,MAAMpB,EAAWW,EAAaJ,YAAY,QAC1C,IAAIQ,EAAO,EACX,IAAK,IAAIl3B,EAAI,EAAGA,EAAIu3B,EAAYv3B,IAAK,CACnC,MAAMo3B,EAAMvwB,EAAQqvB,QAAQC,EAAUe,GACtCA,EAAOA,GAAQ,EAAIE,CACpB,CACD,OAAIG,EAAa,GACRL,GAAQ,GAAKK,GAAc,EAE7BL,EAAO,UAChB,CACA,MAAMM,GAAe,CAAC,mBAAoB,KAAM,KAAM,KAAM,yBAA0B,KAAM,sBAAuB,8BAA+B,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,oBAAqB,KAAM,KAAM,KAAM,6BAA8B,KAAM,0BAA2B,kCAAmC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,4BAA6B,KAAM,yBAA0B,iCAAkC,sCAAuC,KAAM,mCAAoC,2CAA4C,KAAM,KAAM,KAAM,KAAM,kBAAmB,YAAa,cAAe,YAAa,WAAY,SAAU,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,aACzwB,MAAMC,GAAkB,CAAC,CAAC,CACxBvxB,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,IACD,CAAC,CACHD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,KAEL,MAAMuxB,GAAsB,CAAC,CAC3BC,OAAQ,CAAC,CACPzxB,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,IAELyxB,UAAW,CAAC,CACV1xB,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,KAEJ,CACDwxB,OAAQ,CAAC,CACPzxB,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,IAELyxB,UAAW,CAAC,CACV1xB,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,GACF,CACDD,EAAG,EACHC,EAAG,MAGP,MAAM0xB,GAAiB,CAAC,MAAQ,KAAQ,IAAQ,KAChD,MAAMC,GAA2B,CAAC,GAAQ,GAC1C,SAASC,sBAAsB/f,EAAOC,EAAQ+f,GAC5C,MAAMnxB,EAAUmxB,EAAgBnxB,QAChC,MAAMsvB,EAAW6B,EAAgBlB,aAAaJ,YAAY,MAC1D,MAAMuB,EAAS,GACf,IAAIC,EAAcl4B,EAAG6e,EAAGsZ,EAAOvH,EAAKwH,EAAMC,EAC1C,MAAMC,EAAiB,MACvB,IAAKt4B,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC3B4wB,EAAMqH,EAAOj4B,GAAK,IAAIU,WAAWsX,GACjCogB,EAAOp4B,EAAI,EAAI4wB,EAAMqH,EAAOj4B,EAAI,GAChCq4B,EAAOr4B,EAAI,EAAI4wB,EAAMqH,EAAOj4B,EAAI,GAChCk4B,EAAeG,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKA,EAAK,IAAM,GAAKD,EAAK,IAAM,EAAIA,EAAK,IAAM,EAAIA,EAAK,IAAM,EAAIA,EAAK,IAAM,EACvH,IAAKvZ,EAAI,EAAGA,EAAI7G,EAAO6G,IAAK,CAC1B+R,EAAI/R,GAAKsZ,EAAQtxB,EAAQqvB,QAAQC,EAAU+B,GAC3CA,GAAgBA,EAAeI,IAAmB,GAAKzZ,EAAI,EAAI7G,EAAQqgB,EAAKxZ,EAAI,IAAM,GAAK,IAAMA,EAAI,EAAI7G,EAAQogB,EAAKvZ,EAAI,IAAM,EAAI,GAAKsZ,CAC1I,CACF,CACD,OAAOF,CACT,CACA,SAASM,aAAaC,EAAKxgB,EAAOC,EAAQwgB,EAAeC,EAAYpoB,EAAMqoB,EAAIX,GAC7E,GAAIQ,EAAK,CACP,MAAMvK,EAAQ,IAAI2K,OAAOZ,EAAgBvmB,KAAMumB,EAAgBtnB,MAAOsnB,EAAgB5nB,KACtF,OAAOyoB,gBAAgB5K,EAAOjW,EAAOC,EAAQ,MAC9C,CACD,GAAIwgB,IAAkB,IAAMnoB,IAASooB,GAAcC,EAAG96B,SAAW,GAAK86B,EAAG,GAAGzyB,IAAM,GAAKyyB,EAAG,GAAGxyB,KAAO,GAAKwyB,EAAG,GAAGzyB,KAAO,GAAKyyB,EAAG,GAAGxyB,KAAO,GAAKwyB,EAAG,GAAGzyB,IAAM,GAAKyyB,EAAG,GAAGxyB,KAAO,GAAKwyB,EAAG,GAAGzyB,KAAO,GAAKyyB,EAAG,GAAGxyB,KAAO,EAC7M,OAAO4xB,sBAAsB/f,EAAOC,EAAQ+f,GAE9C,MAAMc,IAAYxoB,EAClB,MAAMyoB,EAAWtB,GAAgBgB,GAAeO,OAAOL,GACvDI,EAAS/b,MAAK,SAAU3Y,EAAGtB,GACzB,OAAOsB,EAAE8B,EAAIpD,EAAEoD,GAAK9B,EAAE6B,EAAInD,EAAEmD,CAChC,IACE,MAAM+yB,EAAiBF,EAASl7B,OAChC,MAAMq7B,EAAY,IAAItC,UAAUqC,GAChC,MAAME,EAAY,IAAIvC,UAAUqC,GAChC,MAAMG,EAA0B,GAChC,IAAIC,EAAY,EACdC,EAAO,EACPC,EAAO,EACPC,EAAO,EACT,IAAIl1B,EAAGugB,EACP,IAAKA,EAAI,EAAGA,EAAIoU,EAAgBpU,IAAK,CACnCqU,EAAUrU,GAAKkU,EAASlU,GAAG3e,EAC3BizB,EAAUtU,GAAKkU,EAASlU,GAAG1e,EAC3BmzB,EAAOp5B,KAAKC,IAAIm5B,EAAMP,EAASlU,GAAG3e,GAClCqzB,EAAOr5B,KAAK+D,IAAIs1B,EAAMR,EAASlU,GAAG3e,GAClCszB,EAAOt5B,KAAKC,IAAIq5B,EAAMT,EAASlU,GAAG1e,GAC9B0e,EAAIoU,EAAiB,GAAKF,EAASlU,GAAG1e,IAAM4yB,EAASlU,EAAI,GAAG1e,GAAK4yB,EAASlU,GAAG3e,IAAM6yB,EAASlU,EAAI,GAAG3e,EAAI,EACzGmzB,GAAa,GAAKJ,EAAiB,EAAIpU,EAEvCuU,EAAwB94B,KAAKukB,EAEhC,CACD,MAAM4U,EAAwBL,EAAwBv7B,OACtD,MAAM67B,EAAoB,IAAI9C,UAAU6C,GACxC,MAAME,EAAoB,IAAI/C,UAAU6C,GACxC,MAAMG,EAAsB,IAAIlb,YAAY+a,GAC5C,IAAKn1B,EAAI,EAAGA,EAAIm1B,EAAuBn1B,IAAK,CAC1CugB,EAAIuU,EAAwB90B,GAC5Bo1B,EAAkBp1B,GAAKy0B,EAASlU,GAAG3e,EACnCyzB,EAAkBr1B,GAAKy0B,EAASlU,GAAG1e,EACnCyzB,EAAoBt1B,GAAK,GAAK20B,EAAiB,EAAIpU,CACpD,CACD,MAAMgV,GAAYP,EAClB,MAAMQ,GAAWN,EACjB,MAAMO,EAAY/hB,EAAQuhB,EAC1B,MAAMS,EAAqBnC,GAAeY,GAC1C,IAAI7H,EAAM,IAAIlwB,WAAWsX,GACzB,MAAMigB,EAAS,GACf,MAAMpxB,EAAUmxB,EAAgBnxB,QAChC,MAAMsvB,EAAW6B,EAAgBlB,aAAaJ,YAAY,MAC1D,IACE7X,EACAob,EACAC,EAEA9C,EACAxJ,EANEuM,EAAM,EAIRjC,EAAe,EAGjB,IAAK,IAAIl4B,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC/B,GAAI04B,EAAY,CACd,MAAM0B,EAAOvzB,EAAQqvB,QAAQC,EAAU6D,GACvCG,GAAOC,EACP,GAAID,EAAK,CACPlC,EAAO33B,KAAKswB,GACZ,QACD,CACF,CACDA,EAAM,IAAIlwB,WAAWkwB,GACrBqH,EAAO33B,KAAKswB,GACZ,IAAK/R,EAAI,EAAGA,EAAI7G,EAAO6G,IAAK,CAC1B,GAAIia,GAAWxoB,EAAKtQ,GAAG6e,GAAI,CACzB+R,EAAI/R,GAAK,EACT,QACD,CACD,GAAIA,GAAKgb,GAAYhb,EAAIkb,GAAa/5B,GAAK85B,EAAS,CAClD5B,EAAeA,GAAgB,EAAImB,EACnC,IAAKxU,EAAI,EAAGA,EAAI4U,EAAuB5U,IAAK,CAC1CoV,EAAKj6B,EAAI25B,EAAkB9U,GAC3BqV,EAAKrb,EAAI6a,EAAkB7U,GAC3BuS,EAAMa,EAAOgC,GAAIC,GACjB,GAAI9C,EAAK,CACPA,EAAMwC,EAAoB/U,GAC1BqT,GAAgBd,CACjB,CACF,CACT,KAAa,CACLc,EAAe,EACftK,EAAQqL,EAAiB,EACzB,IAAKpU,EAAI,EAAGA,EAAIoU,EAAgBpU,IAAK+I,IAAS,CAC5CsM,EAAKrb,EAAIqa,EAAUrU,GACnB,GAAIqV,GAAM,GAAKA,EAAKliB,EAAO,CACzBiiB,EAAKj6B,EAAIm5B,EAAUtU,GACnB,GAAIoV,GAAM,EAAG,CACX7C,EAAMa,EAAOgC,GAAIC,GACb9C,IACFc,GAAgBd,GAAOxJ,EAE1B,CACF,CACF,CACF,CACD,MAAMuK,EAAQtxB,EAAQqvB,QAAQC,EAAU+B,GACxCtH,EAAI/R,GAAKsZ,CACV,CACF,CACD,OAAOF,CACT,CACA,SAASoC,iBAAiBriB,EAAOC,EAAQwgB,EAAe6B,EAAiBC,EAASC,EAAS9B,EAAYC,EAAIX,GACzG,IAAIyC,EAAiB/C,GAAoBe,GAAed,OACpDc,IAAkB,IACpBgC,EAAiBA,EAAezB,OAAO,CAACL,EAAG,MAE7C,MAAM+B,EAAuBD,EAAe58B,OAC5C,MAAM88B,EAAkB,IAAInI,WAAWkI,GACvC,MAAME,EAAkB,IAAIpI,WAAWkI,GACvC,IAAI7V,EACJ,IAAKA,EAAI,EAAGA,EAAI6V,EAAsB7V,IAAK,CACzC8V,EAAgB9V,GAAK4V,EAAe5V,GAAG3e,EACvC00B,EAAgB/V,GAAK4V,EAAe5V,GAAG1e,CACxC,CACD,IAAI00B,EAAoBnD,GAAoBe,GAAeb,UACvDa,IAAkB,IACpBoC,EAAoBA,EAAkB7B,OAAO,CAACL,EAAG,MAEnD,MAAMmC,EAA0BD,EAAkBh9B,OAClD,MAAMk9B,EAAqB,IAAIvI,WAAWsI,GAC1C,MAAME,EAAqB,IAAIxI,WAAWsI,GAC1C,IAAKjW,EAAI,EAAGA,EAAIiW,EAAyBjW,IAAK,CAC5CkW,EAAmBlW,GAAKgW,EAAkBhW,GAAG3e,EAC7C80B,EAAmBnW,GAAKgW,EAAkBhW,GAAG1e,CAC9C,CACD,MAAM80B,EAAiBX,EAAgB,GAAGz8B,OAC1C,MAAMq9B,EAAkBZ,EAAgBz8B,OACxC,MAAMm8B,EAAqBlC,GAAyBW,GACpD,MAAMR,EAAS,GACf,MAAMpxB,EAAUmxB,EAAgBnxB,QAChC,MAAMsvB,EAAW6B,EAAgBlB,aAAaJ,YAAY,MAC1D,IAAIyD,EAAM,EACV,IAAK,IAAIn6B,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC/B,GAAI04B,EAAY,CACd,MAAM0B,EAAOvzB,EAAQqvB,QAAQC,EAAU6D,GACvCG,GAAOC,EACP,GAAID,EACF,MAAM,IAAI3D,WAAW,8BAExB,CACD,MAAM5F,EAAM,IAAIlwB,WAAWsX,GAC3BigB,EAAO33B,KAAKswB,GACZ,IAAK,IAAI/R,EAAI,EAAGA,EAAI7G,EAAO6G,IAAK,CAC9B,IAAIob,EAAIC,EACR,IAAIhC,EAAe,EACnB,IAAKrT,EAAI,EAAGA,EAAI6V,EAAsB7V,IAAK,CACzCoV,EAAKj6B,EAAI46B,EAAgB/V,GACzBqV,EAAKrb,EAAI8b,EAAgB9V,GACrBoV,EAAK,GAAKC,EAAK,GAAKA,GAAMliB,EAC5BkgB,IAAiB,EAEjBA,EAAeA,GAAgB,EAAID,EAAOgC,GAAIC,EAEjD,CACD,IAAKrV,EAAI,EAAGA,EAAIiW,EAAyBjW,IAAK,CAC5CoV,EAAKj6B,EAAIg7B,EAAmBnW,GAAK2V,EACjCN,EAAKrb,EAAIkc,EAAmBlW,GAAK0V,EAC7BN,EAAK,GAAKA,GAAMiB,GAAmBhB,EAAK,GAAKA,GAAMe,EACrD/C,IAAiB,EAEjBA,EAAeA,GAAgB,EAAIoC,EAAgBL,GAAIC,EAE1D,CACD,MAAM/B,EAAQtxB,EAAQqvB,QAAQC,EAAU+B,GACxCtH,EAAI/R,GAAKsZ,CACV,CACF,CACD,OAAOF,CACT,CACA,SAASkD,uBAAuBC,EAASC,EAAYC,EAASC,EAAoBC,EAAyBC,EAAehD,EAAeE,EAAI+C,EAAyBC,EAAc3D,EAAiB4D,GACnM,GAAIR,GAAWC,EACb,MAAM,IAAI7E,WAAW,mDAEvB,MAAMqF,EAAa,GACnB,IAAIC,EAAgB,EACpB,IAAIC,EAAmBvpB,KAAK8oB,EAAQz9B,OAAS09B,GAC7C,MAAM10B,EAAUmxB,EAAgBnxB,QAChC,MAAMiwB,EAAekB,EAAgBlB,aACrC,IAAIkF,EAASC,EACb,GAAIb,EAAS,CACXY,EAAUE,iBAAiB,GAC3BD,EAAe,GACfF,EAAmB77B,KAAK+D,IAAI83B,EAAkB,EAC/C,CACD,MAAOF,EAAWh+B,OAAS09B,EAAoB,CAC7C,MAAMY,EAAcf,EAAUK,EAAcW,iBAAiBn1B,OAAO20B,GAAgB5E,cAAcF,EAAc,OAAQjwB,GACxHi1B,GAAiBK,EACjB,IAAIE,EAAe,EACjBC,EAAa,EACf,MAAMC,EAAcnB,EAAUa,EAAap+B,OAAS,EACpD,MAAO,KAAM,CACX,MAAM2+B,EAAapB,EAAUK,EAAcgB,gBAAgBx1B,OAAO20B,GAAgB5E,cAAcF,EAAc,OAAQjwB,GACtH,GAAI21B,IAAe,KACjB,MAEFH,GAAgBG,EAChBF,GAAcD,EACd,IAAIpE,EACJ,GAAIoD,EAAY,CACd,MAAMqB,EAAoB1F,cAAcF,EAAc,OAAQjwB,GAC9D,GAAI61B,EAAoB,EACtBzE,EAAS0E,iBAAiBvB,EAASC,EAAYgB,EAAcP,EAAe,EAAGY,EAAmB,EAAGpB,EAAQtC,OAAO6C,GAAaE,EAAkB,EAAG,EAAG,EAAG,EAAGN,EAAeC,EAAyBC,EAAc3D,EAAiB,EAAG4D,OACpO,CACL,MAAMgB,EAAWtF,WAAWR,EAAcjwB,EAASk1B,GACnD,MAAMc,EAAM7F,cAAcF,EAAc,QAASjwB,GACjD,MAAMi2B,EAAM9F,cAAcF,EAAc,QAASjwB,GACjD,MAAMk2B,EAASH,EAAWtB,EAAQz9B,OAASy9B,EAAQsB,GAAYf,EAAWe,EAAWtB,EAAQz9B,QAC7Fo6B,EAASoC,iBAAiBgC,EAAcP,EAAeJ,EAAyBqB,EAAQF,EAAKC,EAAK,MAAOnB,EAAc3D,EACxH,CACD6D,EAAWv7B,KAAK23B,EACjB,MAAM,GAAImD,EACTa,EAAa37B,KAAK+7B,OACb,CACLpE,EAASM,aAAa,MAAO8D,EAAcP,EAAerD,EAAe,MAAO,KAAME,EAAIX,GAC1F6D,EAAWv7B,KAAK23B,EACjB,CACF,CACD,GAAImD,IAAYC,EAAY,CAC1B,MAAM2B,EAAavB,EAAcwB,gBAAgBh2B,OAAO20B,GACxDA,EAAa7L,YACb,IAAImN,EACJ,GAAIF,IAAe,EACjBE,EAAmBC,uBAAuBvB,EAAcU,EAAYR,OAC/D,CACL,MAAMsB,EAAcxB,EAAaxrB,IACjC,MAAMitB,EAAYzB,EAAapiB,SAAWwjB,EAC1CpB,EAAaxrB,IAAMitB,EACnBH,EAAmBrE,gBAAgB+C,EAAcU,EAAYR,EAAe,OAC5EF,EAAaxrB,IAAMgtB,EACnBxB,EAAapiB,SAAW6jB,CACzB,CACD,MAAMC,EAAyBrB,EAAap+B,OAC5C,GAAI0+B,IAAgBe,EAAyB,EAC3CzB,EAAWv7B,KAAK48B,OACX,CACL,IAAIl9B,EACFmG,EAEAo3B,EACAC,EACAC,EAHAC,EAAO,EAIT,IAAK19B,EAAIu8B,EAAav8B,EAAIs9B,EAAwBt9B,IAAK,CACrDw9B,EAAcvB,EAAaj8B,GAC3Bu9B,EAAOG,EAAOF,EACdC,EAAe,GACf,IAAKt3B,EAAI,EAAGA,EAAI21B,EAAe31B,IAC7Bs3B,EAAan9B,KAAK48B,EAAiB/2B,GAAG9F,SAASq9B,EAAMH,IAEvD1B,EAAWv7B,KAAKm9B,GAChBC,EAAOH,CACR,CACF,CACF,CACF,CACD,MAAMI,EAAkB,GACtBC,EAAQ,GACV,IACE59B,EACAoH,EAFEy2B,EAAc,MAGlB,MAAMC,EAAqBxC,EAAQz9B,OAAS09B,EAC5C,MAAOqC,EAAM//B,OAASigC,EAAoB,CACxC,IAAIC,EAAY3C,EAAUY,EAAQ/0B,OAAO20B,GAAgB5E,cAAcF,EAAc,OAAQjwB,GAC7F,MAAOk3B,IACLH,EAAMt9B,KAAKu9B,GAEbA,GAAeA,CAChB,CACD,IAAK79B,EAAI,EAAGoH,EAAKk0B,EAAQz9B,OAAQmC,EAAIoH,EAAIpH,IACnC49B,EAAM59B,IACR29B,EAAgBr9B,KAAKg7B,EAAQt7B,IAGjC,IAAK,IAAI6e,EAAI,EAAGA,EAAI0c,EAAoBv7B,IAAK6e,IACvC+e,EAAM59B,IACR29B,EAAgBr9B,KAAKu7B,EAAWhd,IAGpC,OAAO8e,CACT,CACA,SAAShB,iBAAiBvB,EAASC,EAAYrjB,EAAOC,EAAQ+lB,EAAmBC,EAAyBC,EAAWC,EAAcpC,EAAkBqC,EAAYC,EAAUC,EAAiBC,EAAqB9C,EAAeC,EAAyBC,EAAc3D,EAAiBwG,EAAc5C,GACpS,GAAIR,GAAWC,EACb,MAAM,IAAI7E,WAAW,4CAEvB,MAAMyB,EAAS,GACf,IAAIj4B,EAAG4wB,EACP,IAAK5wB,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC3B4wB,EAAM,IAAIlwB,WAAWsX,GACrB,GAAIgmB,EACF,IAAK,IAAInf,EAAI,EAAGA,EAAI7G,EAAO6G,IACzB+R,EAAI/R,GAAKmf,EAGb/F,EAAO33B,KAAKswB,EACb,CACD,MAAM/pB,EAAUmxB,EAAgBnxB,QAChC,MAAMiwB,EAAekB,EAAgBlB,aACrC,IAAI2H,EAASrD,GAAWK,EAAciD,YAAYz3B,OAAO20B,IAAiB5E,cAAcF,EAAc,OAAQjwB,GAC9G,IAAI83B,EAAS,EACb3+B,EAAI,EACJ,MAAOA,EAAIi+B,EAAyB,CAClC,MAAMW,EAASxD,EAAUK,EAAciD,YAAYz3B,OAAO20B,GAAgB5E,cAAcF,EAAc,OAAQjwB,GAC9G43B,GAAUG,EACV,MAAMC,EAAczD,EAAUK,EAAcqD,YAAY73B,OAAO20B,GAAgB5E,cAAcF,EAAc,OAAQjwB,GACnH83B,GAAUE,EACV,IAAIE,EAAWJ,EACf,EAAG,CACD,IAAIK,EAAW,EACXd,EAAY,IACdc,EAAW5D,EAAUQ,EAAazE,SAASqH,GAAgBxH,cAAcF,EAAc,OAAQjwB,IAEjG,MAAMf,EAAIo4B,EAAYO,EAASO,EAC/B,MAAMpC,EAAWxB,EAAUK,EAAcwD,cAAch4B,OAAO20B,GAAgBtE,WAAWR,EAAcjwB,EAASk1B,GAChH,MAAMmD,EAAkB7D,IAAeD,EAAUQ,EAAa1F,UAAYc,cAAcF,EAAc,OAAQjwB,IAC9G,IAAI42B,EAAeU,EAAavB,GAChC,IAAIuC,EAAc1B,EAAa,GAAG5/B,OAClC,IAAIuhC,EAAe3B,EAAa5/B,OAChC,GAAIqhC,EAAiB,CACnB,MAAMG,EAAMrI,cAAcF,EAAc,QAASjwB,GACjD,MAAMy4B,EAAMtI,cAAcF,EAAc,QAASjwB,GACjD,MAAMg2B,EAAM7F,cAAcF,EAAc,QAASjwB,GACjD,MAAMi2B,EAAM9F,cAAcF,EAAc,QAASjwB,GACjDs4B,GAAeE,EACfD,GAAgBE,EAChB7B,EAAepD,iBAAiB8E,EAAaC,EAAc1D,EAAyB+B,GAAe4B,GAAO,GAAKxC,GAAMyC,GAAO,GAAKxC,EAAK,MAAOnB,EAAc3D,EAC5J,CACD,IAAIuH,EAAY,EACXnB,EAMQE,EAAkB,EAG7BiB,EAAYH,EAAe,EAF3BL,GAAYK,EAAe,EANvBd,EAAkB,EACpBS,GAAYI,EAAc,EAE1BI,EAAYJ,EAAc,EAO9B,MAAMK,EAAU15B,GAAKw4B,EAAkB,EAAI,EAAIc,EAAe,GAC9D,MAAMK,EAAUV,GAAYT,EAAkB,EAAIa,EAAc,EAAI,GACpE,IAAIO,EAAIC,EAAIC,EACZ,GAAIxB,EACF,IAAKsB,EAAK,EAAGA,EAAKN,EAAcM,IAAM,CACpC9O,EAAMqH,EAAOwH,EAAUC,GACvB,IAAK9O,EACH,SAEFgP,EAAYnC,EAAaiC,GACzB,MAAMG,EAAW3/B,KAAKC,IAAI6X,EAAQwnB,EAASL,GAC3C,OAAQZ,GACN,KAAK,EACH,IAAKoB,EAAK,EAAGA,EAAKE,EAAUF,IAC1B/O,EAAI4O,EAAUG,IAAOC,EAAUD,GAEjC,MACF,KAAK,EACH,IAAKA,EAAK,EAAGA,EAAKE,EAAUF,IAC1B/O,EAAI4O,EAAUG,IAAOC,EAAUD,GAEjC,MACF,QACE,MAAM,IAAInJ,WAAW,YAAY+H,sBAEtC,MAED,IAAKoB,EAAK,EAAGA,EAAKP,EAAcO,IAAM,CACpC/O,EAAMqH,EAAOuH,EAAUG,GACvB,GAAK/O,EAAL,CAGAgP,EAAYnC,EAAakC,GACzB,OAAQpB,GACN,KAAK,EACH,IAAKmB,EAAK,EAAGA,EAAKP,EAAaO,IAC7B9O,EAAI6O,EAAUC,IAAOE,EAAUF,GAEjC,MACF,KAAK,EACH,IAAKA,EAAK,EAAGA,EAAKP,EAAaO,IAC7B9O,EAAI6O,EAAUC,IAAOE,EAAUF,GAEjC,MACF,QACE,MAAM,IAAIlJ,WAAW,YAAY+H,sBAdpC,CAgBF,CAEHv+B,IACA,MAAM8/B,EAAS1E,EAAUK,EAAcsE,YAAY94B,OAAO20B,GAAgB5E,cAAcF,EAAc,OAAQjwB,GAC9G,GAAIi5B,IAAW,KACb,MAEFf,GAAYQ,EAAYO,EAASzB,CAClC,OAAQ,KACV,CACD,OAAOpG,CACT,CACA,SAAS+H,wBAAwBxH,EAAKyH,EAAcC,EAAeC,EAAiBpH,EAAUf,GAC5F,MAAMW,EAAK,GACX,IAAKH,EAAK,CACRG,EAAGr4B,KAAK,CACN4F,GAAI+5B,EACJ95B,EAAG,IAED4yB,IAAa,GACfJ,EAAGr4B,KAAK,CACN4F,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GAGT,CACD,MAAMi6B,GAAmBD,EAAkB,GAAKF,EAChD,MAAM/C,EAAmB3E,aAAaC,EAAK4H,EAAiBF,EAAenH,EAAU,MAAO,KAAMJ,EAAIX,GACtG,MAAMqI,EAAW,GACjB,IAAK,IAAIrgC,EAAI,EAAGA,GAAKmgC,EAAiBngC,IAAK,CACzC,MAAMsgC,EAAgB,GACtB,MAAM5C,EAAOuC,EAAejgC,EAC5B,MAAMu9B,EAAOG,EAAOuC,EACpB,IAAK,IAAI95B,EAAI,EAAGA,EAAI+5B,EAAe/5B,IACjCm6B,EAAchgC,KAAK48B,EAAiB/2B,GAAG9F,SAASq9B,EAAMH,IAExD8C,EAAS//B,KAAKggC,EACf,CACD,OAAOD,CACT,CACA,SAASE,qBAAqB/H,EAAK6H,EAAUtH,EAAUyH,EAAaC,EAAczC,EAAmB0C,EAAYnC,EAAqBoC,EAAWC,EAAYC,EAAaC,EAAaC,EAAaC,EAAahJ,GAC/M,MAAM1nB,EAAO,KACb,GAAIowB,EACF,MAAM,IAAIlK,WAAW,yBAEvB,GAAI+H,IAAwB,EAC1B,MAAM,IAAI/H,WAAW,aAAa+H,0CAEpC,MAAM0C,EAAe,GACrB,IAAIjhC,EAAG6e,EAAG+R,EACV,IAAK5wB,EAAI,EAAGA,EAAIygC,EAAczgC,IAAK,CACjC4wB,EAAM,IAAIlwB,WAAW8/B,GACrB,GAAIxC,EACF,IAAKnf,EAAI,EAAGA,EAAI2hB,EAAa3hB,IAC3B+R,EAAI/R,GAAKmf,EAGbiD,EAAa3gC,KAAKswB,EACnB,CACD,MAAMsQ,EAAmBb,EAASxiC,OAClC,MAAMsjC,EAAWd,EAAS,GAC1B,MAAMJ,EAAekB,EAAS,GAAGtjC,OAC/BqiC,EAAgBiB,EAAStjC,OAC3B,MAAMujC,EAAe5uB,KAAK0uB,GAC1B,MAAMvI,EAAK,GACX,IAAKH,EAAK,CACRG,EAAGr4B,KAAK,CACN4F,EAAG6yB,GAAY,EAAI,EAAI,EACvB5yB,GAAI,IAEF4yB,IAAa,GACfJ,EAAGr4B,KAAK,CACN4F,GAAI,EACJC,GAAI,GACH,CACDD,EAAG,EACHC,GAAI,GACH,CACDD,GAAI,EACJC,GAAI,GAGT,CACD,MAAMk7B,EAAqB,GAC3B,IAAIC,EAAUrJ,EACVO,IACF8I,EAAW,IAAI1I,OAAOZ,EAAgBvmB,KAAMumB,EAAgBtnB,MAAOsnB,EAAgB5nB,MAErF,IAAKpQ,EAAIohC,EAAe,EAAGphC,GAAK,EAAGA,IAAK,CAEpCi4B,EADEO,EACOK,gBAAgByI,EAAUX,EAAWC,EAAY,MAEjDrI,aAAa,MAAOoI,EAAWC,EAAY7H,EAAU,MAAOzoB,EAAMqoB,EAAIX,GAEjFqJ,EAAmBrhC,GAAKi4B,CACzB,CACD,IAAIsJ,EAAIC,EAAIpK,EAAKqK,EAAcnB,EAAep6B,EAAGC,EAAGu7B,EAAYC,EAChE,IAAKJ,EAAK,EAAGA,EAAKX,EAAYW,IAC5B,IAAKC,EAAK,EAAGA,EAAKb,EAAWa,IAAM,CACjCpK,EAAM,EACNqK,EAAe,EACf,IAAK5iB,EAAIuiB,EAAe,EAAGviB,GAAK,EAAGA,IAAK,CACtCuY,GAAOiK,EAAmBxiB,GAAG0iB,GAAIC,GACjCC,GAAgBrK,GAAOvY,CACxB,CACDyhB,EAAgBD,EAASoB,GACzBv7B,EAAI26B,EAAcU,EAAKP,EAAcQ,EAAKT,GAAe,EACzD56B,EAAI26B,EAAcS,EAAKR,EAAcS,EAAKR,GAAe,EACzD,GAAI96B,GAAK,GAAKA,EAAI+5B,GAAgBO,GAAer6B,GAAK,GAAKA,EAAI+5B,GAAiBO,EAC9E,IAAKzgC,EAAI,EAAGA,EAAIkgC,EAAelgC,IAAK,CAClC2hC,EAAYV,EAAa96B,EAAInG,GAC7B0hC,EAAapB,EAActgC,GAC3B,IAAK6e,EAAI,EAAGA,EAAIohB,EAAcphB,IAC5B8iB,EAAUz7B,EAAI2Y,IAAM6iB,EAAW7iB,EAElC,KACI,CACL,IAAI+iB,EAASC,EACb,IAAK7hC,EAAI,EAAGA,EAAIkgC,EAAelgC,IAAK,CAClC6hC,EAAU17B,EAAInG,EACd,KAAI6hC,EAAU,GAAKA,GAAWpB,GAA9B,CAGAkB,EAAYV,EAAaY,GACzBH,EAAapB,EAActgC,GAC3B,IAAK6e,EAAI,EAAGA,EAAIohB,EAAcphB,IAAK,CACjC+iB,EAAU17B,EAAI2Y,EACV+iB,GAAW,GAAKA,EAAUpB,IAC5BmB,EAAUC,IAAYF,EAAW7iB,GAEpC,CARA,CASF,CACF,CACF,CAEH,OAAOoiB,CACT,CACA,SAASa,kBAAkBrwB,EAAMf,GAC/B,MAAMqxB,EAAgB,CAAA,EACtBA,EAAc5vB,OAASU,WAAWpB,EAAMf,GACxC,MAAMktB,EAAQnsB,EAAKf,EAAQ,GAC3B,MAAMsxB,EAAcpE,EAAQ,GAC5B,IAAKpG,GAAawK,GAChB,MAAM,IAAIxL,WAAW,yBAA2BwL,GAElDD,EAAc/zC,KAAOg0C,EACrBD,EAAcE,SAAWzK,GAAawK,GACtCD,EAAcG,qBAAuBtE,EAAQ,KAC7C,MAAMuE,KAA8BvE,EAAQ,IAC5C,MAAMwE,EAAgB3wB,EAAKf,EAAQ,GACnC,IAAI2xB,EAAkBD,GAAiB,EAAI,EAC3C,MAAME,EAAa,CAACF,EAAgB,IACpC,IAAI5oB,EAAW9I,EAAQ,EACvB,GAAI0xB,IAAkB,EAAG,CACvBC,EAAkBxvB,WAAWpB,EAAM+H,EAAW,GAAK,UACnDA,GAAY,EACZ,IAAI/Z,EAAQ4iC,EAAkB,GAAK,EACnCC,EAAW,GAAK7wB,EAAK+H,KACrB,QAAS/Z,EAAQ,EACf6iC,EAAWhiC,KAAKmR,EAAK+H,KAExB,MAAM,GAAI4oB,IAAkB,GAAKA,IAAkB,EAClD,MAAM,IAAI5L,WAAW,6BAEvBuL,EAAcO,WAAaA,EAC3B,IAAIC,EAA8B,EAC9BR,EAAc5vB,QAAU,IAC1BowB,EAA8B,EACrBR,EAAc5vB,QAAU,QACjCowB,EAA8B,GAEhC,MAAMC,EAAa,GACnB,IAAIxiC,EAAGoH,EACP,IAAKpH,EAAI,EAAGA,EAAIqiC,EAAiBriC,IAAK,CACpC,IAAImS,EAEFA,EADEowB,IAAgC,EACzB9wB,EAAK+H,GACL+oB,IAAgC,EAChC3vB,WAAWnB,EAAM+H,GAEjB3G,WAAWpB,EAAM+H,GAE5BgpB,EAAWliC,KAAK6R,GAChBqH,GAAY+oB,CACb,CACDR,EAAcS,WAAaA,EAC3B,GAAKL,EAEE,CACLJ,EAAcU,gBAAkB5vB,WAAWpB,EAAM+H,GACjDA,GAAY,CACb,MAJCuoB,EAAcU,gBAAkBhxB,EAAK+H,KAKvCuoB,EAAclkC,OAASgV,WAAWpB,EAAM+H,GACxCA,GAAY,EACZ,GAAIuoB,EAAclkC,SAAW,WAAY,CACvC,GAAImkC,IAAgB,GA4BlB,MAAM,IAAIxL,WAAW,kCA5BC,CACtB,MAAMkM,EAAoBC,6BAA6BlxB,EAAM+H,GAC7D,MAAMopB,EAA4BnxB,EAAK+H,EAAWqpB,IAClD,MAAMC,KAAsBF,EAA4B,GACxD,MAAMG,EAAsB,EAC5B,MAAMC,EAAgB,IAAItiC,WAAWqiC,GACrC,IAAKD,EAAkB,CACrBE,EAAc,GAAK,IACnBA,EAAc,GAAK,GACpB,CACDA,EAAc,GAAKN,EAAkBzqB,SAAW,GAAK,IACrD+qB,EAAc,GAAKN,EAAkBzqB,QAAU,GAAK,IACpD+qB,EAAc,GAAKN,EAAkBzqB,QAAU,EAAI,IACnD+qB,EAAc,GAAKN,EAAkBzqB,OAAS,IAC9C,IAAKjY,EAAIwZ,EAAUpS,EAAKqK,EAAK5T,OAAQmC,EAAIoH,EAAIpH,IAAK,CAChD,IAAI6e,EAAI,EACR,MAAOA,EAAIkkB,GAAuBC,EAAcnkB,KAAOpN,EAAKzR,EAAI6e,GAC9DA,IAEF,GAAIA,IAAMkkB,EAAqB,CAC7BhB,EAAclkC,OAASmC,EAAI+iC,EAC3B,KACD,CACF,CACD,GAAIhB,EAAclkC,SAAW,WAC3B,MAAM,IAAI24B,WAAW,4BAE7B,CAGG,CACDuL,EAAckB,UAAYzpB,EAC1B,OAAOuoB,CACT,CACA,SAASmB,aAAarX,EAAQpa,EAAMf,EAAON,GACzC,MAAM+yB,EAAW,GACjB,IAAI3pB,EAAW9I,EACf,MAAO8I,EAAWpJ,EAAK,CACrB,MAAM2xB,EAAgBD,kBAAkBrwB,EAAM+H,GAC9CA,EAAWuoB,EAAckB,UACzB,MAAMG,EAAU,CACdvX,OAAQkW,EACRtwB,QAEF,IAAKoa,EAAOwX,aAAc,CACxBD,EAAQ1yB,MAAQ8I,EAChBA,GAAYuoB,EAAclkC,OAC1BulC,EAAQhzB,IAAMoJ,CACf,CACD2pB,EAAS7iC,KAAK8iC,GACd,GAAIrB,EAAc/zC,OAAS,GACzB,KAEH,CACD,GAAI69B,EAAOwX,aACT,IAAK,IAAIrjC,EAAI,EAAGoH,EAAK+7B,EAAStlC,OAAQmC,EAAIoH,EAAIpH,IAAK,CACjDmjC,EAASnjC,GAAG0Q,MAAQ8I,EACpBA,GAAY2pB,EAASnjC,GAAG6rB,OAAOhuB,OAC/BslC,EAASnjC,GAAGoQ,IAAMoJ,CACnB,CAEH,OAAO2pB,CACT,CACA,SAASR,6BAA6BlxB,EAAMf,GAC1C,MAAO,CACLsH,MAAOnF,WAAWpB,EAAMf,GACxBuH,OAAQpF,WAAWpB,EAAMf,EAAQ,GACjCxK,EAAG2M,WAAWpB,EAAMf,EAAQ,GAC5BvK,EAAG0M,WAAWpB,EAAMf,EAAQ,IAC5B6tB,oBAAqB9sB,EAAKf,EAAQ,IAAM,EAE5C,CACA,MAAMmyB,GAAsC,GAC5C,SAASS,eAAeF,EAASG,GAC/B,MAAM1X,EAASuX,EAAQvX,OACvB,MAAMpa,EAAO2xB,EAAQ3xB,KACnBrB,EAAMgzB,EAAQhzB,IAChB,IAAIoJ,EAAW4pB,EAAQ1yB,MACvB,IAAIxG,EAAMyuB,EAAI34B,EAAGwjC,EACjB,OAAQ3X,EAAO79B,MACb,KAAK,EACH,MAAMy1C,EAAa,CAAA,EACnB,MAAMC,EAAkB9wB,WAAWnB,EAAM+H,GACzCiqB,EAAWrI,WAAasI,EAAkB,GAC1CD,EAAWpI,cAAgBqI,EAAkB,GAC7CD,EAAWE,kBAAoBD,GAAmB,EAAI,EACtDD,EAAWG,kBAAoBF,GAAmB,EAAI,EACtDD,EAAWI,mBAAqBH,GAAmB,EAAI,EACvDD,EAAWK,6BAA+BJ,GAAmB,EAAI,EACjED,EAAWM,2BAA6BL,EAAkB,KAC1DD,EAAWO,+BAAiCN,EAAkB,KAC9DD,EAAW1K,SAAW2K,GAAmB,GAAK,EAC9CD,EAAWQ,mBAAqBP,GAAmB,GAAK,EACxDlqB,GAAY,EACZ,IAAKiqB,EAAWrI,QAAS,CACvBoI,EAAWC,EAAW1K,WAAa,EAAI,EAAI,EAC3CJ,EAAK,GACL,IAAK34B,EAAI,EAAGA,EAAIwjC,EAAUxjC,IAAK,CAC7B24B,EAAGr4B,KAAK,CACN4F,EAAGwM,SAASjB,EAAM+H,GAClBrT,EAAGuM,SAASjB,EAAM+H,EAAW,KAE/BA,GAAY,CACb,CACDiqB,EAAW9K,GAAKA,CACjB,CACD,GAAI8K,EAAWpI,aAAeoI,EAAWQ,mBAAoB,CAC3DtL,EAAK,GACL,IAAK34B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB24B,EAAGr4B,KAAK,CACN4F,EAAGwM,SAASjB,EAAM+H,GAClBrT,EAAGuM,SAASjB,EAAM+H,EAAW,KAE/BA,GAAY,CACb,CACDiqB,EAAW9H,aAAehD,CAC3B,CACD8K,EAAWjI,wBAA0B3oB,WAAWpB,EAAM+H,GACtDA,GAAY,EACZiqB,EAAWlI,mBAAqB1oB,WAAWpB,EAAM+H,GACjDA,GAAY,EACZtP,EAAO,CAACu5B,EAAY5X,EAAO1Z,OAAQ0Z,EAAO2W,WAAY/wB,EAAM+H,EAAUpJ,GACtE,MACF,KAAK,EACL,KAAK,EACH,MAAM8zB,EAAa,CAAA,EACnBA,EAAWxnC,KAAOimC,6BAA6BlxB,EAAM+H,GACrDA,GAAYqpB,GACZ,MAAMsB,EAAyBvxB,WAAWnB,EAAM+H,GAChDA,GAAY,EACZ0qB,EAAW9I,WAAa+I,EAAyB,GACjDD,EAAW7I,cAAgB8I,EAAyB,GACpDD,EAAW1F,aAAe2F,GAA0B,EAAI,EACxDD,EAAWhG,UAAY,GAAKgG,EAAW1F,aACvC0F,EAAW5F,gBAAkB6F,GAA0B,EAAI,EAC3DD,EAAW9F,cAAgB+F,EAAyB,IACpDD,EAAW3F,oBAAsB4F,GAA0B,EAAI,EAC/DD,EAAWlG,kBAAoBmG,GAA0B,EAAI,EAC7DD,EAAW7F,SAAW8F,GAA0B,IAAM,GACtDD,EAAWD,mBAAqBE,GAA0B,GAAK,EAC/D,GAAID,EAAW9I,QAAS,CACtB,MAAMgJ,EAAyBxxB,WAAWnB,EAAM+H,GAChDA,GAAY,EACZ0qB,EAAWG,UAAYD,EAAyB,EAChDF,EAAWI,UAAYF,GAA0B,EAAI,EACrDF,EAAWK,UAAYH,GAA0B,EAAI,EACrDF,EAAWM,oBAAsBJ,GAA0B,EAAI,EAC/DF,EAAWO,oBAAsBL,GAA0B,EAAI,EAC/DF,EAAWQ,oBAAsBN,GAA0B,GAAK,EAChEF,EAAWS,oBAAsBP,GAA0B,GAAK,EAChEF,EAAWU,iCAAmCR,EAAyB,MACxE,CACD,GAAIF,EAAW7I,aAAe6I,EAAWD,mBAAoB,CAC3DtL,EAAK,GACL,IAAK34B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB24B,EAAGr4B,KAAK,CACN4F,EAAGwM,SAASjB,EAAM+H,GAClBrT,EAAGuM,SAASjB,EAAM+H,EAAW,KAE/BA,GAAY,CACb,CACD0qB,EAAWvI,aAAehD,CAC3B,CACDuL,EAAWjG,wBAA0BprB,WAAWpB,EAAM+H,GACtDA,GAAY,EACZtP,EAAO,CAACg6B,EAAYrY,EAAO2W,WAAY/wB,EAAM+H,EAAUpJ,GACvD,MACF,KAAK,GACH,MAAMy0B,EAAoB,CAAA,EAC1B,MAAMC,EAAyBrzB,EAAK+H,KACpCqrB,EAAkBrM,OAASsM,EAAyB,GACpDD,EAAkB9L,SAAW+L,GAA0B,EAAI,EAC3DD,EAAkB5E,aAAexuB,EAAK+H,KACtCqrB,EAAkB3E,cAAgBzuB,EAAK+H,KACvCqrB,EAAkB1E,gBAAkBttB,WAAWpB,EAAM+H,GACrDA,GAAY,EACZtP,EAAO,CAAC26B,EAAmBhZ,EAAO1Z,OAAQV,EAAM+H,EAAUpJ,GAC1D,MACF,KAAK,GACL,KAAK,GACH,MAAM20B,EAAiB,CAAA,EACvBA,EAAeroC,KAAOimC,6BAA6BlxB,EAAM+H,GACzDA,GAAYqpB,GACZ,MAAMmC,EAAsBvzB,EAAK+H,KACjCurB,EAAevM,OAASwM,EAAsB,GAC9CD,EAAehM,SAAWiM,GAAuB,EAAI,EACrDD,EAAerE,cAAgBsE,EAAsB,GACrDD,EAAexG,oBAAsByG,GAAuB,EAAI,EAChED,EAAe/G,kBAAoBgH,GAAuB,EAAI,EAC9DD,EAAepE,UAAY9tB,WAAWpB,EAAM+H,GAC5CA,GAAY,EACZurB,EAAenE,WAAa/tB,WAAWpB,EAAM+H,GAC7CA,GAAY,EACZurB,EAAelE,YAAchuB,WAAWpB,EAAM+H,GAAY,WAC1DA,GAAY,EACZurB,EAAejE,YAAcjuB,WAAWpB,EAAM+H,GAAY,WAC1DA,GAAY,EACZurB,EAAehE,YAAcnuB,WAAWnB,EAAM+H,GAC9CA,GAAY,EACZurB,EAAe/D,YAAcpuB,WAAWnB,EAAM+H,GAC9CA,GAAY,EACZtP,EAAO,CAAC66B,EAAgBlZ,EAAO2W,WAAY/wB,EAAM+H,EAAUpJ,GAC3D,MACF,KAAK,GACL,KAAK,GACH,MAAM60B,EAAgB,CAAA,EACtBA,EAAcvoC,KAAOimC,6BAA6BlxB,EAAM+H,GACxDA,GAAYqpB,GACZ,MAAMD,EAA4BnxB,EAAK+H,KACvCyrB,EAAczM,OAASoK,EAA4B,GACnDqC,EAAclM,SAAW6J,GAA6B,EAAI,EAC1DqC,EAAcvM,cAAgBkK,EAA4B,GAC1D,IAAKqC,EAAczM,IAAK,CACtBgL,EAAWyB,EAAclM,WAAa,EAAI,EAAI,EAC9CJ,EAAK,GACL,IAAK34B,EAAI,EAAGA,EAAIwjC,EAAUxjC,IAAK,CAC7B24B,EAAGr4B,KAAK,CACN4F,EAAGwM,SAASjB,EAAM+H,GAClBrT,EAAGuM,SAASjB,EAAM+H,EAAW,KAE/BA,GAAY,CACb,CACDyrB,EAActM,GAAKA,CACpB,CACDzuB,EAAO,CAAC+6B,EAAexzB,EAAM+H,EAAUpJ,GACvC,MACF,KAAK,GACH,MAAM80B,EAAW,CACfltB,MAAOnF,WAAWpB,EAAM+H,GACxBvB,OAAQpF,WAAWpB,EAAM+H,EAAW,GACpC2rB,YAAatyB,WAAWpB,EAAM+H,EAAW,GACzC4rB,YAAavyB,WAAWpB,EAAM+H,EAAW,KAEvC0rB,EAASjtB,SAAW,mBACfitB,EAASjtB,OAElB,MAAMotB,EAAmB5zB,EAAK+H,EAAW,IACzC5G,WAAWnB,EAAM+H,EAAW,IAC5B0rB,EAASI,YAAcD,EAAmB,GAC1CH,EAAS7J,cAAgBgK,EAAmB,GAC5CH,EAASlH,kBAAoBqH,GAAoB,EAAI,EACrDH,EAAS3G,oBAAsB8G,GAAoB,EAAI,EACvDH,EAASK,kBAAoBF,EAAmB,IAChDH,EAASM,+BAAiCH,EAAmB,IAC7Dn7B,EAAO,CAACg7B,GACR,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,KAAK,GACH,MACF,KAAK,GACHh7B,EAAO,CAAC2hB,EAAO1Z,OAAQV,EAAM+H,EAAUpJ,GACvC,MACF,KAAK,GACH,MACF,QACE,MAAM,IAAIomB,WAAW,gBAAgB3K,EAAOoW,YAAYpW,EAAO79B,4BAEnE,MAAMy3C,EAAe,KAAO5Z,EAAOoW,SAC/BwD,KAAgBlC,GAClBA,EAAQkC,GAAc3lC,MAAMyjC,EAASr5B,EAEzC,CACA,SAASw7B,gBAAgBvC,EAAUI,GACjC,IAAK,IAAIvjC,EAAI,EAAGoH,EAAK+7B,EAAStlC,OAAQmC,EAAIoH,EAAIpH,IAC5CsjC,eAAeH,EAASnjC,GAAIujC,EAEhC,CACA,SAASoC,iBAAiB3sB,GACxB,MAAMuqB,EAAU,IAAIqC,qBACpB,IAAK,IAAI5lC,EAAI,EAAGoH,EAAK4R,EAAOnb,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC/C,MAAMI,EAAQ4Y,EAAOhZ,GACrB,MAAMmjC,EAAWD,aAAa,CAAA,EAAI9iC,EAAMqR,KAAMrR,EAAMsQ,MAAOtQ,EAAMgQ,KACjEs1B,gBAAgBvC,EAAUI,EAC3B,CACD,OAAOA,EAAQpiC,MACjB,CAIA,MAAMykC,qBACJ,iBAAAC,CAAkBnpC,GAChBiC,KAAKmnC,gBAAkBppC,EACvB,MAAMqpC,EAAUrpC,EAAKsb,MAAQ,GAAK,EAClC,MAAM7W,EAAS,IAAIqe,kBAAkBumB,EAAUrpC,EAAKub,QAChDvb,EAAKshC,mBACP78B,EAAOvJ,KAAK,KAEd+G,KAAKwC,OAASA,CACf,CACD,UAAA6kC,CAAWC,EAAYhO,GACrB,MAAMiN,EAAWvmC,KAAKmnC,gBACtB,MAAM9tB,EAAQiuB,EAAWjuB,MACvBC,EAASguB,EAAWhuB,OACtB,MAAM8tB,EAAUb,EAASltB,MAAQ,GAAK,EACtC,MAAMumB,EAAsB2G,EAASM,4BAA8BS,EAAW1H,oBAAsB2G,EAAS3G,oBAC7G,MAAMp9B,EAASxC,KAAKwC,OACpB,MAAM+kC,EAAQ,MAAQD,EAAW//B,EAAI,GACrC,IAAIigC,EAAUF,EAAW9/B,EAAI4/B,GAAWE,EAAW//B,GAAK,GACxD,IAAIlG,EAAG6e,EAAGunB,EAAMzzB,EAChB,OAAQ4rB,GACN,KAAK,EACH,IAAKv+B,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC3BomC,EAAOF,EACPvzB,EAASwzB,EACT,IAAKtnB,EAAI,EAAGA,EAAI7G,EAAO6G,IAAK,CACtBoZ,EAAOj4B,GAAG6e,KACZ1d,EAAOwR,IAAWyzB,GAEpBA,IAAS,EACT,IAAKA,EAAM,CACTA,EAAO,IACPzzB,GACD,CACF,CACDwzB,GAAWJ,CACZ,CACD,MACF,KAAK,EACH,IAAK/lC,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC3BomC,EAAOF,EACPvzB,EAASwzB,EACT,IAAKtnB,EAAI,EAAGA,EAAI7G,EAAO6G,IAAK,CACtBoZ,EAAOj4B,GAAG6e,KACZ1d,EAAOwR,IAAWyzB,GAEpBA,IAAS,EACT,IAAKA,EAAM,CACTA,EAAO,IACPzzB,GACD,CACF,CACDwzB,GAAWJ,CACZ,CACD,MACF,QACE,MAAM,IAAIvP,WAAW,YAAY+H,sBAEtC,CACD,wBAAA8H,CAAyBC,EAAQ70B,EAAMf,EAAON,GAC5C,MAAM61B,EAAaK,EAAO5pC,KAC1B,MAAMs7B,EAAkB,IAAInB,gBAAgBplB,EAAMf,EAAON,GACzD,MAAM6nB,EAASM,aAAa+N,EAAO9N,IAAKyN,EAAWjuB,MAAOiuB,EAAWhuB,OAAQquB,EAAOvN,SAAUuN,EAAO5N,WAAY,KAAM4N,EAAO3N,GAAIX,GAClIr5B,KAAKqnC,WAAWC,EAAYhO,EAC7B,CACD,gCAAAsO,GACE5nC,KAAK0nC,4BAA4BG,UAClC,CACD,kBAAAC,CAAmBhD,EAAYiD,EAAgBC,EAAkBl1B,EAAMf,EAAON,GAC5E,IAAIqrB,EAAeG,EACnB,GAAI6H,EAAWrI,QAAS,CACtBK,EAAgBmL,iCAAiCnD,EAAYkD,EAAkBhoC,KAAKkoC,cACpFjL,EAAe,IAAIhD,OAAOnnB,EAAMf,EAAON,EACxC,CACD,IAAIkrB,EAAU38B,KAAK28B,QACdA,IACH38B,KAAK28B,QAAUA,EAAU,IAE3B,MAAM6C,EAAe,GACrB,IAAK,MAAM2I,KAAmBH,EAAkB,CAC9C,MAAMI,EAAkBzL,EAAQwL,GAC5BC,GACF5I,EAAa79B,QAAQymC,EAExB,CACD,MAAM/O,EAAkB,IAAInB,gBAAgBplB,EAAMf,EAAON,GACzDkrB,EAAQoL,GAAkBvL,uBAAuBsI,EAAWrI,QAASqI,EAAWpI,WAAY8C,EAAcsF,EAAWlI,mBAAoBkI,EAAWjI,wBAAyBC,EAAegI,EAAW1K,SAAU0K,EAAW9K,GAAI8K,EAAWQ,mBAAoBR,EAAW9H,aAAc3D,EAAiB4D,EAC1S,CACD,qBAAAoL,CAAsBV,EAAQK,EAAkBl1B,EAAMf,EAAON,GAC3D,MAAM61B,EAAaK,EAAO5pC,KAC1B,IAAI++B,EAAeG,EACnB,MAAMN,EAAU38B,KAAK28B,QACrB,MAAM6C,EAAe,GACrB,IAAK,MAAM2I,KAAmBH,EAAkB,CAC9C,MAAMI,EAAkBzL,EAAQwL,GAC5BC,GACF5I,EAAa79B,QAAQymC,EAExB,CACD,MAAMhL,EAAmBvpB,KAAK2rB,EAAatgC,QAC3C,GAAIyoC,EAAOlL,QAAS,CAClBQ,EAAe,IAAIhD,OAAOnnB,EAAMf,EAAON,GACvCqrB,EAAgBwL,2BAA2BX,EAAQK,EAAkBhoC,KAAKkoC,aAAc1I,EAAatgC,OAAQ+9B,EAC9G,CACD,MAAM5D,EAAkB,IAAInB,gBAAgBplB,EAAMf,EAAON,GACzD,MAAM6nB,EAAS0E,iBAAiB2J,EAAOlL,QAASkL,EAAOjL,WAAY4K,EAAWjuB,MAAOiuB,EAAWhuB,OAAQquB,EAAOtI,kBAAmBsI,EAAOrI,wBAAyBqI,EAAOpI,UAAWC,EAAcpC,EAAkBuK,EAAOlI,WAAYkI,EAAOjI,SAAUiI,EAAOhI,gBAAiBgI,EAAO/H,oBAAqB9C,EAAe6K,EAAOrC,mBAAoBqC,EAAO3K,aAAc3D,EAAiBsO,EAAO9H,aAAc5C,GACjZj9B,KAAKqnC,WAAWC,EAAYhO,EAC7B,CACD,6BAAAiP,GACEvoC,KAAKqoC,yBAAyBR,UAC/B,CACD,mBAAAW,CAAoB1D,EAAYiD,EAAgBj1B,EAAMf,EAAON,GAC3D,IAAIiwB,EAAW1hC,KAAK0hC,SACfA,IACH1hC,KAAK0hC,SAAWA,EAAW,IAE7B,MAAMrI,EAAkB,IAAInB,gBAAgBplB,EAAMf,EAAON,GACzDiwB,EAASqG,GAAkB1G,wBAAwByD,EAAWjL,IAAKiL,EAAWxD,aAAcwD,EAAWvD,cAAeuD,EAAWtD,gBAAiBsD,EAAW1K,SAAUf,EACxK,CACD,yBAAAoP,CAA0Bd,EAAQK,EAAkBl1B,EAAMf,EAAON,GAC/D,MAAMiwB,EAAW1hC,KAAK0hC,SAASsG,EAAiB,IAChD,MAAMV,EAAaK,EAAO5pC,KAC1B,MAAMs7B,EAAkB,IAAInB,gBAAgBplB,EAAMf,EAAON,GACzD,MAAM6nB,EAASsI,qBAAqB+F,EAAO9N,IAAK6H,EAAUiG,EAAOvN,SAAUkN,EAAWjuB,MAAOiuB,EAAWhuB,OAAQquB,EAAOtI,kBAAmBsI,EAAO5F,WAAY4F,EAAO/H,oBAAqB+H,EAAO3F,UAAW2F,EAAO1F,WAAY0F,EAAOzF,YAAayF,EAAOxF,YAAawF,EAAOvF,YAAauF,EAAOtF,YAAahJ,GAC9Sr5B,KAAKqnC,WAAWC,EAAYhO,EAC7B,CACD,iCAAAoP,GACE1oC,KAAKyoC,6BAA6BZ,UACnC,CACD,QAAAc,CAASZ,EAAgBj1B,EAAMf,EAAON,GACpC,IAAIy2B,EAAeloC,KAAKkoC,aACnBA,IACHloC,KAAKkoC,aAAeA,EAAe,IAErCA,EAAaH,GAAkBa,oBAAoB91B,EAAMf,EAAON,EACjE,EAEH,MAAMo3B,YACJ,WAAA5oC,CAAY6oC,GACV,GAAIA,EAAS5pC,SAAW,EAAG,CACzBc,KAAK+oC,MAAQ,KACb/oC,KAAKgpC,SAAW,EAChBhpC,KAAKipC,aAAeH,EAAS,GAC7B9oC,KAAKkpC,YAAc,EACnBlpC,KAAKmpC,WAAaL,EAAS,GAC3B9oC,KAAKopC,aAAe,KAC1B,KAAW,CACLppC,KAAK+oC,MAAQ,MACb/oC,KAAKgpC,SAAWF,EAAS,GACzB9oC,KAAKipC,aAAeH,EAAS,GAC7B9oC,KAAKkpC,YAAcJ,EAAS,GAC5B9oC,KAAKmpC,WAAaL,EAAS,GAC3B9oC,KAAKopC,aAAeN,EAAS,KAAO,OACrC,CACF,EAEH,MAAMO,gBACJ,WAAAppC,CAAYqpC,GACVtpC,KAAKupC,SAAW,GAChB,GAAID,EAAM,CACRtpC,KAAKwpC,OAAS,KACdxpC,KAAKkpC,YAAcI,EAAKJ,YACxBlpC,KAAKgpC,SAAWM,EAAKN,SACrBhpC,KAAKopC,aAAeE,EAAKF,aACzBppC,KAAK+oC,MAAQO,EAAKP,KACxB,MACM/oC,KAAKwpC,OAAS,KAEjB,CACD,SAAAC,CAAUH,EAAMra,GACd,MAAMwJ,EAAM6Q,EAAKH,YAAcla,EAAQ,EACvC,GAAIA,GAAS,EACXjvB,KAAKupC,SAAS9Q,GAAO,IAAI4Q,gBAAgBC,OACpC,CACL,IAAII,EAAO1pC,KAAKupC,SAAS9Q,GACpBiR,IACH1pC,KAAKupC,SAAS9Q,GAAOiR,EAAO,IAAIL,gBAAgB,OAElDK,EAAKD,UAAUH,EAAMra,EAAQ,EAC9B,CACF,CACD,UAAA0a,CAAWC,GACT,GAAI5pC,KAAKwpC,OAAQ,CACf,GAAIxpC,KAAK+oC,MACP,OAAO,KAET,MAAMc,EAAWD,EAAOpR,SAASx4B,KAAKkpC,aACtC,OAAOlpC,KAAKgpC,UAAYhpC,KAAKopC,cAAgBS,EAAWA,EACzD,CACD,MAAMH,EAAO1pC,KAAKupC,SAASK,EAAOrS,WAClC,IAAKmS,EACH,MAAM,IAAI7R,WAAW,wBAEvB,OAAO6R,EAAKC,WAAWC,EACxB,EAEH,MAAME,aACJ,WAAA7pC,CAAY8pC,EAAOC,GACZA,GACHhqC,KAAKiqC,kBAAkBF,GAEzB/pC,KAAKkqC,SAAW,IAAIb,gBAAgB,MACpC,IAAK,IAAIhoC,EAAI,EAAGoH,EAAKshC,EAAM7qC,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC9C,MAAMioC,EAAOS,EAAM1oC,GACfioC,EAAKL,aAAe,GACtBjpC,KAAKkqC,SAAST,UAAUH,EAAMA,EAAKL,aAAe,EAErD,CACF,CACD,MAAA3gC,CAAOshC,GACL,OAAO5pC,KAAKkqC,SAASP,WAAWC,EACjC,CACD,iBAAAK,CAAkBF,GAChB,MAAMI,EAAcJ,EAAM7qC,OAC1B,IAAIkrC,EAAkB,EACtB,IAAK,IAAI/oC,EAAI,EAAGA,EAAI8oC,EAAa9oC,IAC/B+oC,EAAkB7oC,KAAK+D,IAAI8kC,EAAiBL,EAAM1oC,GAAG4nC,cAEvD,MAAMoB,EAAY,IAAI9nC,YAAY6nC,EAAkB,GACpD,IAAK,IAAI/oC,EAAI,EAAGA,EAAI8oC,EAAa9oC,IAC/BgpC,EAAUN,EAAM1oC,GAAG4nC,gBAErB,IAEEqB,EACAC,EACAjB,EAJEkB,EAAgB,EAClBC,EAAY,EAIdJ,EAAU,GAAK,EACf,MAAOG,GAAiBJ,EAAiB,CACvCK,EAAYA,EAAYJ,EAAUG,EAAgB,IAAM,EACxDF,EAAcG,EACdF,EAAc,EACd,MAAOA,EAAcJ,EAAa,CAChCb,EAAOS,EAAMQ,GACb,GAAIjB,EAAKL,eAAiBuB,EAAe,CACvClB,EAAKH,WAAamB,EAClBA,GACD,CACDC,GACD,CACDC,GACD,CACF,EAEH,SAAS5B,oBAAoB91B,EAAMf,EAAON,GACxC,MAAMwtB,EAAQnsB,EAAKf,GACnB,MAAM24B,EAAcx2B,WAAWpB,EAAMf,EAAQ,GAAK,WAClD,MAAM44B,EAAez2B,WAAWpB,EAAMf,EAAQ,GAAK,WACnD,MAAM63B,EAAS,IAAI3P,OAAOnnB,EAAMf,EAAQ,EAAGN,GAC3C,MAAMm5B,EAAoC,GAAlB3L,GAAS,EAAI,GACrC,MAAM4L,EAAmC,GAAlB5L,GAAS,EAAI,GACpC,MAAM8K,EAAQ,GACd,IAAId,EACFC,EACA4B,EAAkBJ,EACpB,EAAG,CACDzB,EAAeW,EAAOpR,SAASoS,GAC/B1B,EAAcU,EAAOpR,SAASqS,GAC9Bd,EAAMpoC,KAAK,IAAIknC,YAAY,CAACiC,EAAiB7B,EAAcC,EAAa,KACxE4B,GAAmB,GAAK5B,CAC5B,OAAW4B,EAAkBH,GAC3B1B,EAAeW,EAAOpR,SAASoS,GAC/Bb,EAAMpoC,KAAK,IAAIknC,YAAY,CAAC6B,EAAc,EAAGzB,EAAc,GAAI,EAAG,WAClEA,EAAeW,EAAOpR,SAASoS,GAC/Bb,EAAMpoC,KAAK,IAAIknC,YAAY,CAAC8B,EAAc1B,EAAc,GAAI,KAC5D,GAAIhK,EAAQ,EAAG,CACbgK,EAAeW,EAAOpR,SAASoS,GAC/Bb,EAAMpoC,KAAK,IAAIknC,YAAY,CAACI,EAAc,IAC3C,CACD,OAAO,IAAIa,aAAaC,EAAO,MACjC,CACA,MAAMgB,GAAsB,CAAA,EAC5B,SAASxN,iBAAiB/pB,GACxB,IAAI+f,EAAQwX,GAAoBv3B,GAChC,GAAI+f,EACF,OAAOA,EAET,IAAIwW,EACJ,OAAQv2B,GACN,KAAK,EACHu2B,EAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,GAAI,EAAG,EAAG,GAAM,CAAC,IAAK,EAAG,GAAI,GAAM,CAAC,MAAO,EAAG,GAAI,IAC5E,MACF,KAAK,EACHA,EAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,GAAI,IAAO,CAAC,EAAG,KAClH,MACF,KAAK,EACHA,EAAQ,CAAC,EAAE,IAAK,EAAG,EAAG,KAAO,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAO,EAAE,IAAK,EAAG,GAAI,IAAM,SAAU,CAAC,GAAI,EAAG,GAAI,KAAO,CAAC,EAAG,KACpK,MACF,KAAK,EACHA,EAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,GAAI,KACvG,MACF,KAAK,EACHA,EAAQ,CAAC,EAAE,IAAK,EAAG,EAAG,KAAO,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAO,EAAE,IAAK,EAAG,GAAI,IAAM,SAAU,CAAC,GAAI,EAAG,GAAI,KACzJ,MACF,KAAK,EACHA,EAAQ,CAAC,EAAE,KAAM,EAAG,GAAI,IAAO,EAAE,KAAM,EAAG,EAAG,GAAM,EAAE,IAAK,EAAG,EAAG,GAAM,EAAE,IAAK,EAAG,EAAG,IAAM,EAAE,IAAK,EAAG,EAAG,IAAO,EAAE,GAAI,EAAG,EAAG,IAAO,EAAE,GAAI,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,IAAK,EAAG,EAAG,GAAM,CAAC,IAAK,EAAG,EAAG,GAAM,CAAC,IAAK,EAAG,EAAG,IAAM,CAAC,KAAM,EAAG,GAAI,IAAM,EAAE,KAAM,EAAG,GAAI,GAAM,SAAU,CAAC,KAAM,EAAG,GAAI,KACzR,MACF,KAAK,EACHA,EAAQ,CAAC,EAAE,KAAM,EAAG,EAAG,GAAM,EAAE,IAAK,EAAG,EAAG,GAAM,EAAE,IAAK,EAAG,EAAG,GAAM,EAAE,IAAK,EAAG,EAAG,IAAO,EAAE,GAAI,EAAG,EAAG,IAAO,EAAE,GAAI,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAM,CAAC,IAAK,EAAG,EAAG,GAAM,CAAC,IAAK,EAAG,EAAG,GAAM,CAAC,KAAM,EAAG,GAAI,GAAM,EAAE,KAAM,EAAG,GAAI,GAAM,SAAU,CAAC,KAAM,EAAG,GAAI,KACvS,MACF,KAAK,EACHA,EAAQ,CAAC,EAAE,GAAI,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,KAAQ,EAAE,EAAG,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,KAAQ,EAAE,EAAG,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,KAAO,CAAC,IAAK,EAAG,GAAI,IAAO,EAAE,GAAI,EAAG,GAAI,IAAO,SAAU,CAAC,KAAM,EAAG,GAAI,KAAQ,CAAC,EAAG,IACpY,MACF,KAAK,EACHA,EAAQ,CAAC,EAAE,GAAI,EAAG,EAAG,KAAO,EAAE,GAAI,EAAG,EAAG,KAAQ,EAAE,GAAI,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,KAAQ,EAAE,EAAG,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,IAAM,EAAE,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAM,CAAC,GAAI,EAAG,EAAG,IAAM,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,KAAO,CAAC,KAAM,EAAG,GAAI,IAAO,EAAE,GAAI,EAAG,GAAI,IAAO,SAAU,CAAC,KAAM,EAAG,GAAI,KAAQ,CAAC,EAAG,IACzZ,MACF,KAAK,GACHA,EAAQ,CAAC,EAAE,GAAI,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,IAAO,EAAE,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,KAAO,CAAC,EAAG,EAAG,EAAG,KAAO,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,IAAK,EAAG,EAAG,IAAO,CAAC,KAAM,EAAG,GAAI,IAAO,CAAC,KAAM,EAAG,GAAI,KAAO,EAAE,GAAI,EAAG,GAAI,IAAM,SAAU,CAAC,KAAM,EAAG,GAAI,KAAO,CAAC,EAAG,IACxY,MACF,KAAK,GACHA,EAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,IAAK,EAAG,GAAI,MACpO,MACF,KAAK,GACHA,EAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,GAAI,EAAG,GAAI,MACpO,MACF,KAAK,GACHA,EAAQ,CAAC,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,IAAO,CAAC,GAAI,EAAG,EAAG,KAAO,CAAC,IAAK,EAAG,GAAI,MACnO,MACF,KAAK,GACHA,EAAQ,CAAC,EAAE,EAAG,EAAG,EAAG,GAAM,EAAE,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IACrF,MACF,KAAK,GACHA,EAAQ,CAAC,EAAE,GAAI,EAAG,EAAG,KAAO,EAAE,EAAG,EAAG,EAAG,IAAO,EAAE,EAAG,EAAG,EAAG,IAAO,EAAE,EAAG,EAAG,EAAG,IAAM,EAAE,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,GAAM,CAAC,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,IAAO,CAAC,EAAG,EAAG,EAAG,KAAO,EAAE,GAAI,EAAG,GAAI,IAAM,SAAU,CAAC,GAAI,EAAG,GAAI,MAC9O,MACF,QACE,MAAM,IAAIlS,WAAW,oBAAoBrkB,oBAE7C,IAAK,IAAInS,EAAI,EAAGoH,EAAKshC,EAAM7qC,OAAQmC,EAAIoH,EAAIpH,IACzC0oC,EAAM1oC,GAAK,IAAIwnC,YAAYkB,EAAM1oC,IAEnCkyB,EAAQ,IAAIuW,aAAaC,EAAO,MAChCgB,GAAoBv3B,GAAU+f,EAC9B,OAAOA,CACT,CACA,MAAM0G,OACJ,WAAAh6B,CAAY6S,EAAMf,EAAON,GACvBzR,KAAK8S,KAAOA,EACZ9S,KAAK+R,MAAQA,EACb/R,KAAKyR,IAAMA,EACXzR,KAAK6a,SAAW9I,EAChB/R,KAAKivB,OAAS,EACdjvB,KAAKgrC,YAAc,CACpB,CACD,OAAAzT,GACE,GAAIv3B,KAAKivB,MAAQ,EAAG,CAClB,GAAIjvB,KAAK6a,UAAY7a,KAAKyR,IACxB,MAAM,IAAIomB,WAAW,iCAEvB73B,KAAKgrC,YAAchrC,KAAK8S,KAAK9S,KAAK6a,YAClC7a,KAAKivB,MAAQ,CACd,CACD,MAAMwJ,EAAMz4B,KAAKgrC,aAAehrC,KAAKivB,MAAQ,EAC7CjvB,KAAKivB,QACL,OAAOwJ,CACR,CACD,QAAAD,CAASyS,GACP,IACE5pC,EADEgS,EAAS,EAEb,IAAKhS,EAAI4pC,EAAU,EAAG5pC,GAAK,EAAGA,IAC5BgS,GAAUrT,KAAKu3B,WAAal2B,EAE9B,OAAOgS,CACR,CACD,SAAA+d,GACEpxB,KAAKivB,OAAS,CACf,CACD,IAAAgC,GACE,OAAIjxB,KAAK6a,UAAY7a,KAAKyR,KAChB,EAEHzR,KAAK8S,KAAK9S,KAAK6a,WACvB,EAEH,SAASqwB,sBAAsBC,EAAOtH,EAAYqE,GAChD,IAAIkD,EAAe,EACnB,IAAK,IAAI/pC,EAAI,EAAGoH,EAAKo7B,EAAW3kC,OAAQmC,EAAIoH,EAAIpH,IAAK,CACnD,MAAMkyB,EAAQ2U,EAAarE,EAAWxiC,IACtC,GAAIkyB,EAAO,CACT,GAAI4X,IAAUC,EACZ,OAAO7X,EAET6X,GACD,CACF,CACD,MAAM,IAAIvT,WAAW,kCACvB,CACA,SAASyQ,2BAA2B/C,EAAY1B,EAAYqE,EAAcmD,EAAiBzB,GACzF,MAAMzU,EAAQ,GACd,IAAK,IAAI9zB,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,MAAMu3B,EAAagR,EAAOpR,SAAS,GACnCrD,EAAMxzB,KAAK,IAAIknC,YAAY,CAACxnC,EAAGu3B,EAAY,EAAG,IAC/C,CACD,MAAM0S,EAAgB,IAAIxB,aAAa3U,EAAO,OAC9CA,EAAMj2B,OAAS,EACf,IAAK,IAAImC,EAAI,EAAGA,EAAIgqC,GAAkB,CACpC,MAAMzS,EAAa0S,EAAchjC,OAAOshC,GACxC,GAAIhR,GAAc,GAAI,CACpB,IAAI2S,EAAgBC,EAAiBtrB,EACrC,OAAQ0Y,GACN,KAAK,GACH,GAAIv3B,IAAM,EACR,MAAM,IAAIw2B,WAAW,wCAEvB2T,EAAkB5B,EAAOpR,SAAS,GAAK,EACvC+S,EAAiBpW,EAAM9zB,EAAI,GAAG4nC,aAC9B,MACF,KAAK,GACHuC,EAAkB5B,EAAOpR,SAAS,GAAK,EACvC+S,EAAiB,EACjB,MACF,KAAK,GACHC,EAAkB5B,EAAOpR,SAAS,GAAK,GACvC+S,EAAiB,EACjB,MACF,QACE,MAAM,IAAI1T,WAAW,0CAEzB,IAAK3X,EAAI,EAAGA,EAAIsrB,EAAiBtrB,IAAK,CACpCiV,EAAMxzB,KAAK,IAAIknC,YAAY,CAACxnC,EAAGkqC,EAAgB,EAAG,KAClDlqC,GACD,CACP,KAAW,CACL8zB,EAAMxzB,KAAK,IAAIknC,YAAY,CAACxnC,EAAGu3B,EAAY,EAAG,KAC9Cv3B,GACD,CACF,CACDuoC,EAAOxY,YACP,MAAMkP,EAAgB,IAAIwJ,aAAa3U,EAAO,OAC9C,IACEgL,EACAiB,EACArB,EAHE0L,EAAc,EAIlB,OAAQlG,EAAWG,WACjB,KAAK,EACL,KAAK,EACHvF,EAAc5C,iBAAiBgI,EAAWG,UAAY,GACtD,MACF,KAAK,EACHvF,EAAc+K,sBAAsBO,EAAa5H,EAAYqE,GAC7DuD,IACA,MACF,QACE,MAAM,IAAI5T,WAAW,+BAEzB,OAAQ0N,EAAWI,WACjB,KAAK,EACL,KAAK,EACL,KAAK,EACHvE,EAAc7D,iBAAiBgI,EAAWI,UAAY,GACtD,MACF,KAAK,EACHvE,EAAc8J,sBAAsBO,EAAa5H,EAAYqE,GAC7DuD,IACA,MACF,QACE,MAAM,IAAI5T,WAAW,+BAEzB,OAAQ0N,EAAWK,WACjB,KAAK,EACL,KAAK,EACL,KAAK,EACH7F,EAAcxC,iBAAiBgI,EAAWK,UAAY,IACtD,MACF,KAAK,EACH7F,EAAcmL,sBAAsBO,EAAa5H,EAAYqE,GAC7DuD,IACA,MACF,QACE,MAAM,IAAI5T,WAAW,+BAEzB,GAAI0N,EAAW7I,WACb,MAAM,IAAI7E,WAAW,4CAEvB,MAAO,CACLyI,gBACAH,cACAiB,cACArB,cAEJ,CACA,SAASkI,iCAAiCnD,EAAYjB,EAAYqE,GAChE,IACEzK,EACAK,EAFE2N,EAAc,EAGlB,OAAQ3G,EAAWE,mBACjB,KAAK,EACL,KAAK,EACHvH,EAAmBF,iBAAiBuH,EAAWE,kBAAoB,GACnE,MACF,KAAK,EACHvH,EAAmByN,sBAAsBO,EAAa5H,EAAYqE,GAClEuD,IACA,MACF,QACE,MAAM,IAAI5T,WAAW,+BAEzB,OAAQiN,EAAWG,mBACjB,KAAK,EACL,KAAK,EACHnH,EAAkBP,iBAAiBuH,EAAWG,kBAAoB,GAClE,MACF,KAAK,EACHnH,EAAkBoN,sBAAsBO,EAAa5H,EAAYqE,GACjEuD,IACA,MACF,QACE,MAAM,IAAI5T,WAAW,+BAEzB,IAAIyG,EAAiBoN,EACrB,GAAI5G,EAAWI,mBAAoB,CACjC5G,EAAkB4M,sBAAsBO,EAAa5H,EAAYqE,GACjEuD,GACJ,MACInN,EAAkBf,iBAAiB,GAGnCmO,EADE5G,EAAWK,6BACa+F,sBAAsBO,EAAa5H,EAAYqE,GAE/C3K,iBAAiB,GAE7C,MAAO,CACLE,mBACAK,kBACAQ,kBACAoN,0BAEJ,CACA,SAASlN,uBAAuBoL,EAAQvwB,EAAOC,GAC7C,MAAMggB,EAAS,GACf,IAAK,IAAI9xB,EAAI,EAAGA,EAAI8R,EAAQ9R,IAAK,CAC/B,MAAMyqB,EAAM,IAAIlwB,WAAWsX,GAC3BigB,EAAO33B,KAAKswB,GACZ,IAAK,IAAI1qB,EAAI,EAAGA,EAAI8R,EAAO9R,IACzB0qB,EAAI1qB,GAAKqiC,EAAOrS,UAElBqS,EAAOxY,WACR,CACD,OAAOkI,CACT,CACA,SAASY,gBAAgB5K,EAAOjW,EAAOC,EAAQqyB,GAC7C,MAAM3nB,EAAS,CACbrtB,GAAI,EACJ46B,QAASlY,EACToY,KAAMnY,EACNuY,SAAU,KACVF,WAAYga,GAEd,MAAMzjC,EAAU,IAAI6oB,gBAAgBzB,EAAOtL,GAC3C,MAAMsV,EAAS,GACf,IAAI0R,EACF7c,EAAM,MACR,IAAK,IAAI3mB,EAAI,EAAGA,EAAI8R,EAAQ9R,IAAK,CAC/B,MAAMyqB,EAAM,IAAIlwB,WAAWsX,GAC3BigB,EAAO33B,KAAKswB,GACZ,IAAIhD,GAAS,EACb,IAAK,IAAI1nB,EAAI,EAAGA,EAAI8R,EAAO9R,IAAK,CAC9B,GAAI0nB,EAAQ,EAAG,CACb+b,EAAc9iC,EAAQwqB,eACtB,GAAIsY,KAAiB,EAAG,CACtBA,EAAc,EACd7c,EAAM,IACP,CACDc,EAAQ,CACT,CACDgD,EAAI1qB,GAAKyjC,GAAe/b,EAAQ,EAChCA,GACD,CACF,CACD,GAAI0c,IAAexd,EAAK,CACtB,MAAMyd,EAAkB,EACxB,IAAK,IAAIvqC,EAAI,EAAGA,EAAIuqC,EAAiBvqC,IACnC,GAAI6G,EAAQwqB,kBAAoB,EAC9B,KAGL,CACD,OAAO4G,CACT,CACA,MAAMuS,WACJ,WAAAC,CAAYzxB,GACV,OAAO2sB,iBAAiB3sB,EACzB,CACD,KAAAgJ,CAAMvQ,GACJ,MAAM,IAAIzU,MAAM,oCACjB,EASH,MAAM0tC,oBAAoBhe,aACxB,WAAA9tB,CAAYub,EAAQuT,EAAa/K,GAC/B5jB,MAAM2uB,GACN/uB,KAAKwb,OAASA,EACdxb,KAAKqO,KAAOmN,EAAOnN,KACnBrO,KAAK+uB,YAAcA,EACnB/uB,KAAKgkB,OAASA,CACf,CACD,SAAIljB,GACF,OAAOvB,OAAOS,KAAM,QAASA,KAAKwb,OAAOlL,SAAStQ,KAAK+uB,aACxD,CACD,YAAAT,CAAaC,GAAa,CAC1B,SAAAF,GACEruB,KAAK0uB,aACN,CACD,WAAAA,CAAY5tB,GACV,GAAId,KAAKmuB,IACP,OAAOnuB,KAAKwC,OAEd1B,IAAUd,KAAKc,MACf,MAAMkrC,EAAa,IAAIH,WACvB,MAAMxxB,EAAS,GACf,GAAIra,KAAKgkB,kBAAkB3X,KAAM,CAC/B,MAAM4/B,EAAgBjsC,KAAKgkB,OAAO11B,IAAI,gBACtC,GAAI29C,aAAyB/7B,WAAY,CACvC,MAAMg8B,EAAUD,EAAc37B,WAC9B+J,EAAO1Y,KAAK,CACVmR,KAAMo5B,EACNn6B,MAAO,EACPN,IAAKy6B,EAAQhtC,QAEhB,CACF,CACDmb,EAAO1Y,KAAK,CACVmR,KAAMhS,EACNiR,MAAO,EACPN,IAAK3Q,EAAM5B,SAEb,MAAM4T,EAAOk5B,EAAWF,YAAYzxB,GACpC,MAAMzH,EAAaE,EAAK5T,OACxB,IAAK,IAAImC,EAAI,EAAGA,EAAIuR,EAAYvR,IAC9ByR,EAAKzR,IAAM,IAEbrB,KAAKwC,OAASsQ,EACd9S,KAAKkuB,aAAetb,EACpB5S,KAAKmuB,IAAM,KACX,OAAOnuB,KAAKwC,MACb,CACD,iCAAImO,GACF,OAAO3Q,KAAKwb,OAAO9K,OACpB,EAKH,SAASy7B,cAAcnoB,GACrB,OAAQA,EAAOooB,MACb,KAAKn6C,EAAUC,eACb,OAAOm6C,2BAA2BroB,GACpC,KAAK/xB,EAAUE,UACb,OAAOm6C,iBAAiBtoB,GAE5B,OAAO,IACT,CACA,SAASqoB,4BAA2BntB,IAClCA,EAAGqtB,OACHA,EAAS,EAACptB,KACVA,EAAI9F,MACJA,EAAKC,OACLA,EAAMkzB,cACNA,EAAgB,WAAUC,cAC1BA,EAAgB,QAEhB,MAAM7a,EAAQjvB,YAAYP,eAAiB,WAAa,IACxD,MAAOsqC,EAAaC,GAAcF,EAAgB,CAACD,EAAe5a,GAAS,CAACA,EAAO4a,GACnF,MAAMI,EAAgBvzB,GAAS,EAC/B,MAAMwzB,EAAiBxzB,EAAQ,EAC/B,MAAMyzB,EAAY5tB,EAAIhgB,OACtBigB,EAAO,IAAI5c,YAAY4c,EAAK3c,QAC5B,IAAI4f,EAAU,EACd,IAAK,IAAI/gB,EAAI,EAAGA,EAAIiY,EAAQjY,IAAK,CAC/B,IAAK,MAAMiE,EAAMinC,EAASK,EAAeL,EAASjnC,EAAKinC,IAAU,CAC/D,MAAMQ,EAAOR,EAASO,EAAY5tB,EAAIqtB,GAAU,IAChDptB,EAAKiD,KAAa2qB,EAAO,IAAaJ,EAAaD,EACnDvtB,EAAKiD,KAAa2qB,EAAO,GAAYJ,EAAaD,EAClDvtB,EAAKiD,KAAa2qB,EAAO,GAAWJ,EAAaD,EACjDvtB,EAAKiD,KAAa2qB,EAAO,GAAUJ,EAAaD,EAChDvtB,EAAKiD,KAAa2qB,EAAO,EAASJ,EAAaD,EAC/CvtB,EAAKiD,KAAa2qB,EAAO,EAAQJ,EAAaD,EAC9CvtB,EAAKiD,KAAa2qB,EAAO,EAAOJ,EAAaD,EAC7CvtB,EAAKiD,KAAa2qB,EAAO,EAAMJ,EAAaD,CAC7C,CACD,GAAIG,IAAmB,EACrB,SAEF,MAAME,EAAOR,EAASO,EAAY5tB,EAAIqtB,KAAY,IAClD,IAAK,IAAIrsB,EAAI,EAAGA,EAAI2sB,EAAgB3sB,IAClCf,EAAKiD,KAAa2qB,EAAO,GAAK,EAAI7sB,EAAIysB,EAAaD,CAEtD,CACD,MAAO,CACLH,SACAnqB,UAEJ,CACA,SAASkqB,kBAAiBptB,IACxBA,EAAGqtB,OACHA,EAAS,EAACptB,KACVA,EAAIiD,QACJA,EAAU,EAAC/I,MACXA,EAAKC,OACLA,IAEA,IAAIjY,EAAI,EACR,MAAMiT,EAAM+E,EAAQC,EAAS,EAC7B,MAAM0zB,EAAQ14B,GAAO,EACrB,MAAM8L,EAAQ,IAAI7d,YAAY2c,EAAI1c,OAAQ+pC,EAAQS,GAClD,GAAIrqC,YAAYP,eAAgB,CAC9B,KAAOf,EAAI2rC,EAAQ,EAAG3rC,GAAK,EAAG+gB,GAAW,EAAG,CAC1C,MAAM6qB,EAAK7sB,EAAM/e,GACjB,MAAM0/B,EAAK3gB,EAAM/e,EAAI,GACrB,MAAM6rC,EAAK9sB,EAAM/e,EAAI,GACrB8d,EAAKiD,GAAW6qB,EAAK,WACrB9tB,EAAKiD,EAAU,GAAK6qB,IAAO,GAAKlM,GAAM,EAAI,WAC1C5hB,EAAKiD,EAAU,GAAK2e,IAAO,GAAKmM,GAAM,GAAK,WAC3C/tB,EAAKiD,EAAU,GAAK8qB,IAAO,EAAI,UAChC,CACD,IAAK,IAAIhtB,EAAI7e,EAAI,EAAG8rC,EAAKZ,EAASj4B,EAAK4L,EAAIitB,EAAIjtB,GAAK,EAClDf,EAAKiD,KAAalD,EAAIgB,GAAKhB,EAAIgB,EAAI,IAAM,EAAIhB,EAAIgB,EAAI,IAAM,GAAK,UAEtE,KAAS,CACL,KAAO7e,EAAI2rC,EAAQ,EAAG3rC,GAAK,EAAG+gB,GAAW,EAAG,CAC1C,MAAM6qB,EAAK7sB,EAAM/e,GACjB,MAAM0/B,EAAK3gB,EAAM/e,EAAI,GACrB,MAAM6rC,EAAK9sB,EAAM/e,EAAI,GACrB8d,EAAKiD,GAAW6qB,EAAK,IACrB9tB,EAAKiD,EAAU,GAAK6qB,GAAM,GAAKlM,IAAO,EAAI,IAC1C5hB,EAAKiD,EAAU,GAAK2e,GAAM,GAAKmM,IAAO,GAAK,IAC3C/tB,EAAKiD,EAAU,GAAK8qB,GAAM,EAAI,GAC/B,CACD,IAAK,IAAIhtB,EAAI7e,EAAI,EAAG8rC,EAAKZ,EAASj4B,EAAK4L,EAAIitB,EAAIjtB,GAAK,EAClDf,EAAKiD,KAAalD,EAAIgB,IAAM,GAAKhB,EAAIgB,EAAI,IAAM,GAAKhB,EAAIgB,EAAI,IAAM,EAAI,GAEzE,CACD,MAAO,CACLqsB,OAAQA,EAASj4B,EACjB8N,UAEJ,CACA,SAASgrB,WAAWluB,EAAKC,GACvB,GAAIxc,YAAYP,eACd,IAAK,IAAIf,EAAI,EAAGoH,EAAKyW,EAAIhgB,OAAQmC,EAAIoH,EAAIpH,IACvC8d,EAAK9d,GAAK6d,EAAI7d,GAAK,MAAU,gBAG/B,IAAK,IAAIA,EAAI,EAAGoH,EAAKyW,EAAIhgB,OAAQmC,EAAIoH,EAAIpH,IACvC8d,EAAK9d,GAAK6d,EAAI7d,GAAK,SAAY,GAGrC,CAMA,MAAMgsC,kBAAkBztC,EACtB,WAAAK,CAAYjC,GACVoC,MAAMpC,EAAK,YACZ,EAEH,MAAMsvC,uBAAuB1tC,EAC3B,WAAAK,CAAYH,EAASytC,GACnBntC,MAAMN,EAAS,kBACfE,KAAKutC,UAAYA,CAClB,EAEH,MAAMC,uBAAuB5tC,EAC3B,WAAAK,CAAYjC,GACVoC,MAAMpC,EAAK,iBACZ,EAEH,MAAMyvC,GAAY,IAAI1rC,WAAW,CAAC,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACpR,MAAM2rC,GAAU,KAChB,MAAMC,GAAU,IAChB,MAAMC,GAAU,KAChB,MAAMC,GAAU,KAChB,MAAMC,GAAU,KAChB,MAAMC,GAAU,KAChB,MAAMC,GAAW,KACjB,MAAMC,GAAa,KACnB,SAASC,kBAAkB7X,EAAa3oB,GACtC,IACErM,EACA6e,EAFEgG,EAAI,EAGNhnB,EAAS,GACX,MAAOA,EAAS,IAAMm3B,EAAYn3B,EAAS,GACzCA,IAEF,MAAMiB,EAAO,CAAC,CACZopC,SAAU,GACV4B,MAAO,IAET,IACErlB,EADEnhB,EAAIxE,EAAK,GAEb,IAAKkB,EAAI,EAAGA,EAAInC,EAAQmC,IAAK,CAC3B,IAAK6e,EAAI,EAAGA,EAAImW,EAAYh1B,GAAI6e,IAAK,CACnCvb,EAAIxE,EAAKguC,MACTxpC,EAAE4kC,SAAS5kC,EAAEwmC,OAASz9B,EAAOwY,GAC7B,MAAOvhB,EAAEwmC,MAAQ,EACfxmC,EAAIxE,EAAKguC,MAEXxpC,EAAEwmC,QACFhrC,EAAKwB,KAAKgD,GACV,MAAOxE,EAAKjB,QAAUmC,EAAG,CACvBlB,EAAKwB,KAAKmkB,EAAI,CACZyjB,SAAU,GACV4B,MAAO,IAETxmC,EAAE4kC,SAAS5kC,EAAEwmC,OAASrlB,EAAEyjB,SACxB5kC,EAAImhB,CACL,CACDI,GACD,CACD,GAAI7kB,EAAI,EAAInC,EAAQ,CAClBiB,EAAKwB,KAAKmkB,EAAI,CACZyjB,SAAU,GACV4B,MAAO,IAETxmC,EAAE4kC,SAAS5kC,EAAEwmC,OAASrlB,EAAEyjB,SACxB5kC,EAAImhB,CACL,CACF,CACD,OAAO3lB,EAAK,GAAGopC,QACjB,CACA,SAAS6E,qBAAqBh5B,EAAW6c,EAAKoc,GAC5C,OAAO,KAAOj5B,EAAUk5B,cAAgB,GAAKrc,EAAMoc,EACrD,CACA,SAASE,WAAWz7B,EAAMkB,EAAQw6B,EAAOC,EAAYC,EAAeC,EAAeC,EAAaC,EAAgBC,EAAYC,EAAiB,OAC3I,MAAMC,EAAcR,EAAMQ,YAC1B,MAAMC,EAAcT,EAAMS,YAC1B,MAAMC,EAAcl7B,EACpB,IAAIm7B,EAAW,EACbC,EAAY,EACd,SAAS7X,UACP,GAAI6X,EAAY,EAAG,CACjBA,IACA,OAAOD,GAAYC,EAAY,CAChC,CACDD,EAAWr8B,EAAKkB,KAChB,GAAIm7B,IAAa,IAAM,CACrB,MAAME,EAAWv8B,EAAKkB,KACtB,GAAIq7B,EAAU,CACZ,GAAIA,IAAa,KAAQN,EAAgB,CACvC/6B,GAAU,EACV,MAAMu5B,EAAYt5B,WAAWnB,EAAMkB,GACnCA,GAAU,EACV,GAAIu5B,EAAY,GAAKA,IAAciB,EAAMjB,UACvC,MAAM,IAAID,eAAe,oDAAqDC,EAE1F,MAAe,GAAI8B,IAAa,IAAM,CAC5B,GAAIN,EAAgB,CAClB,MAAMO,EAAiBC,GAAYf,EAAMgB,YAAc,EAAI,EAAI,GAC/D,GAAIF,EAAiB,GAAK/tC,KAAK+W,MAAMk2B,EAAMjB,UAAY+B,IAAmB,EACxE,MAAM,IAAIhC,eAAe,wGAA8GgC,EAE1I,CACD,MAAM,IAAI9B,eAAe,oDAC1B,CACD,MAAM,IAAIH,UAAU,sBAAsB8B,GAAY,EAAIE,GAAUvrC,SAAS,MAC9E,CACF,CACDsrC,EAAY,EACZ,OAAOD,IAAa,CACrB,CACD,SAASM,cAAcC,GACrB,IAAIhG,EAAOgG,EACX,MAAO,KAAM,CACXhG,EAAOA,EAAKnS,WACZ,cAAemS,GACb,IAAK,SACH,OAAOA,EACT,IAAK,SACH,SAEJ,MAAM,IAAI2D,UAAU,2BACrB,CACF,CACD,SAASsC,QAAQzwC,GACf,IAAI2E,EAAI,EACR,MAAO3E,EAAS,EAAG,CACjB2E,EAAIA,GAAK,EAAI0zB,UACbr4B,GACD,CACD,OAAO2E,CACR,CACD,SAAS+rC,iBAAiB1wC,GACxB,GAAIA,IAAW,EACb,OAAOq4B,YAAc,EAAI,GAAK,EAEhC,MAAM1zB,EAAI8rC,QAAQzwC,GAClB,OAAI2E,GAAK,GAAK3E,EAAS,EACd2E,EAEFA,IAAM,GAAK3E,GAAU,CAC7B,CACD,SAAS2wC,eAAez6B,EAAW06B,GACjC,MAAM3oC,EAAIsoC,cAAcr6B,EAAU26B,gBAClC,MAAMC,EAAO7oC,IAAM,EAAI,EAAIyoC,iBAAiBzoC,GAC5CiO,EAAU66B,UAAUH,GAAe16B,EAAU86B,MAAQF,EACrD,IAAI9pB,EAAI,EACR,MAAOA,EAAI,GAAI,CACb,MAAMiqB,EAAKV,cAAcr6B,EAAUg7B,gBACnC,MAAMthB,EAAIqhB,EAAK,GACbjsC,EAAIisC,GAAM,EACZ,GAAIrhB,IAAM,EAAG,CACX,GAAI5qB,EAAI,GACN,MAEFgiB,GAAK,GACL,QACD,CACDA,GAAKhiB,EACL,MAAMmsC,EAAI5C,GAAUvnB,GACpB9Q,EAAU66B,UAAUH,EAAcO,GAAKT,iBAAiB9gB,GACxD5I,GACD,CACF,CACD,SAASoqB,cAAcl7B,EAAW06B,GAChC,MAAM3oC,EAAIsoC,cAAcr6B,EAAU26B,gBAClC,MAAMC,EAAO7oC,IAAM,EAAI,EAAIyoC,iBAAiBzoC,IAAM2nC,EAClD15B,EAAU66B,UAAUH,GAAe16B,EAAU86B,MAAQF,CACtD,CACD,SAASO,mBAAmBn7B,EAAW06B,GACrC16B,EAAU66B,UAAUH,IAAgBvY,WAAauX,CAClD,CACD,IAAI0B,EAAS,EACb,SAASC,cAAcr7B,EAAW06B,GAChC,GAAIU,EAAS,EAAG,CACdA,IACA,MACD,CACD,IAAItqB,EAAIyoB,EACR,MAAM5xB,EAAI6xB,EACV,MAAO1oB,GAAKnJ,EAAG,CACb,MAAMozB,EAAKV,cAAcr6B,EAAUg7B,gBACnC,MAAMthB,EAAIqhB,EAAK,GACbjsC,EAAIisC,GAAM,EACZ,GAAIrhB,IAAM,EAAG,CACX,GAAI5qB,EAAI,GAAI,CACVssC,EAASb,QAAQzrC,IAAM,GAAKA,GAAK,EACjC,KACD,CACDgiB,GAAK,GACL,QACD,CACDA,GAAKhiB,EACL,MAAMmsC,EAAI5C,GAAUvnB,GACpB9Q,EAAU66B,UAAUH,EAAcO,GAAKT,iBAAiB9gB,IAAM,GAAKggB,GACnE5oB,GACD,CACF,CACD,IACEwqB,EADEC,EAAoB,EAExB,SAASC,mBAAmBx7B,EAAW06B,GACrC,IAAI5pB,EAAIyoB,EACR,MAAM5xB,EAAI6xB,EACV,IAAI1qC,EAAI,EACR,IAAI4qB,EACJ,IAAIqhB,EACJ,MAAOjqB,GAAKnJ,EAAG,CACb,MAAM8zB,EAAUf,EAAcrC,GAAUvnB,GACxC,MAAM2G,EAAOzX,EAAU66B,UAAUY,GAAW,GAAK,EAAI,EACrD,OAAQF,GACN,KAAK,EACHR,EAAKV,cAAcr6B,EAAUg7B,gBAC7BthB,EAAIqhB,EAAK,GACTjsC,EAAIisC,GAAM,EACV,GAAIrhB,IAAM,EACR,GAAI5qB,EAAI,GAAI,CACVssC,EAASb,QAAQzrC,IAAM,GAAKA,GAC5BysC,EAAoB,CAClC,KAAmB,CACLzsC,EAAI,GACJysC,EAAoB,CACrB,KACI,CACL,GAAI7hB,IAAM,EACR,MAAM,IAAIue,UAAU,wBAEtBqD,EAAwBd,iBAAiB9gB,GACzC6hB,EAAoBzsC,EAAI,EAAI,CAC7B,CACD,SACF,KAAK,EACL,KAAK,EACH,GAAIkR,EAAU66B,UAAUY,GACtBz7B,EAAU66B,UAAUY,IAAYhkB,GAAQ0K,WAAauX,OAChD,CACL5qC,IACIA,IAAM,IACRysC,EAAoBA,IAAsB,EAAI,EAAI,EAErD,CACD,MACF,KAAK,EACH,GAAIv7B,EAAU66B,UAAUY,GACtBz7B,EAAU66B,UAAUY,IAAYhkB,GAAQ0K,WAAauX,OAChD,CACL15B,EAAU66B,UAAUY,GAAWH,GAAyB5B,EACxD6B,EAAoB,CACrB,CACD,MACF,KAAK,EACCv7B,EAAU66B,UAAUY,KACtBz7B,EAAU66B,UAAUY,IAAYhkB,GAAQ0K,WAAauX,IAEvD,MAEJ5oB,GACD,CACD,GAAIyqB,IAAsB,EAAG,CAC3BH,IACIA,IAAW,IACbG,EAAoB,EAEvB,CACF,CACD,IAAIpB,EAAW,EACf,SAASuB,UAAU17B,EAAW9M,EAAQyoC,EAAK9e,EAAKoc,GAC9C,MAAM2C,EAASD,EAAM/B,EAAc,EACnC,MAAMiC,EAASF,EAAM/B,EACrBO,EAAWyB,EAAS57B,EAAUxF,EAAIqiB,EAClC,MAAMif,EAAWD,EAAS77B,EAAU+7B,EAAI9C,EACxC,MAAMyB,EAAc1B,qBAAqBh5B,EAAWm6B,EAAU2B,GAC9D5oC,EAAO8M,EAAW06B,EACnB,CACD,SAASsB,YAAYh8B,EAAW9M,EAAQyoC,GACtCxB,EAAWwB,EAAM37B,EAAUk5B,cAAgB,EAC3C,MAAM4C,EAAWH,EAAM37B,EAAUk5B,cACjC,MAAMwB,EAAc1B,qBAAqBh5B,EAAWm6B,EAAU2B,GAC9D5oC,EAAO8M,EAAW06B,EACnB,CACD,MAAMuB,EAAmB5C,EAAWvvC,OACpC,IAAIkW,EAAW/T,EAAG6e,EAAGgG,EAAGriB,EACxB,IAAIytC,EAGAA,EAFArC,EACEN,IAAkB,EACTE,IAAmB,EAAIyB,cAAgBC,mBAEvC1B,IAAmB,EAAI4B,cAAgBG,mBAGzCf,eAEb,IACE0B,EADER,EAAM,EAEV,MAAMS,EAAcH,IAAqB,EAAI5C,EAAW,GAAGH,cAAgBG,EAAW,GAAGgD,gBAAkBzC,EAAcR,EAAMkD,cAC/H,IAAIP,EAAGvhC,EACP,MAAOmhC,GAAOS,EAAa,CACzB,MAAMG,EAAYjD,EAAgBntC,KAAKC,IAAIgwC,EAAcT,EAAKrC,GAAiB8C,EAC/E,GAAIG,EAAY,EAAG,CACjB,IAAKtwC,EAAI,EAAGA,EAAIgwC,EAAkBhwC,IAChCotC,EAAWptC,GAAG6uC,KAAO,EAEvBM,EAAS,EACT,GAAIa,IAAqB,EAAG,CAC1Bj8B,EAAYq5B,EAAW,GACvB,IAAK5qC,EAAI,EAAGA,EAAI8tC,EAAW9tC,IAAK,CAC9ButC,YAAYh8B,EAAWk8B,EAAUP,GACjCA,GACD,CACT,MACQ,IAAKltC,EAAI,EAAGA,EAAI8tC,EAAW9tC,IAAK,CAC9B,IAAKxC,EAAI,EAAGA,EAAIgwC,EAAkBhwC,IAAK,CACrC+T,EAAYq5B,EAAWptC,GACvB8vC,EAAI/7B,EAAU+7B,EACdvhC,EAAIwF,EAAUxF,EACd,IAAKsQ,EAAI,EAAGA,EAAItQ,EAAGsQ,IACjB,IAAKgG,EAAI,EAAGA,EAAIirB,EAAGjrB,IACjB4qB,UAAU17B,EAAWk8B,EAAUP,EAAK7wB,EAAGgG,EAG5C,CACD6qB,GACD,CAEJ,CACD3B,EAAY,EACZmC,EAAaK,mBAAmB9+B,EAAMkB,GACtC,IAAKu9B,EACH,MAEF,GAAIA,EAAWM,QAAS,CACtB,MAAMC,EAAaH,EAAY,EAAI,aAAe,YAClDxzC,KAAK,gBAAgB2zC,kCAA2CP,EAAWM,WAC3E79B,EAASu9B,EAAWv9B,MACrB,CACD,KAAIu9B,EAAWQ,QAAU,OAAUR,EAAWQ,QAAU,OAGtD,MAFA/9B,GAAU,CAIb,CACD,OAAOA,EAASk7B,CAClB,CACA,SAAS8C,mBAAmB58B,EAAW68B,EAAmBttC,GACxD,MAAMutC,EAAK98B,EAAU+8B,kBACnBlC,EAAY76B,EAAU66B,UACxB,IAAImC,EAAIpiC,EAAIC,EAAIoiC,EAAIC,EAAIC,EAAIC,EAAIC,EAChC,IAAIC,EAAIztC,EAAIC,EAAIE,EAAIC,EAAIstC,EAAIC,EAAIC,EAChC,IAAI1rC,EACJ,IAAK+qC,EACH,MAAM,IAAI7E,UAAU,wCAEtB,IAAK,IAAIpb,EAAM,EAAGA,EAAM,GAAIA,GAAO,EAAG,CACpCygB,EAAKzC,EAAUgC,EAAoBhgB,GACnChtB,EAAKgrC,EAAUgC,EAAoBhgB,EAAM,GACzC/sB,EAAK+qC,EAAUgC,EAAoBhgB,EAAM,GACzC7sB,EAAK6qC,EAAUgC,EAAoBhgB,EAAM,GACzC5sB,EAAK4qC,EAAUgC,EAAoBhgB,EAAM,GACzC0gB,EAAK1C,EAAUgC,EAAoBhgB,EAAM,GACzC2gB,EAAK3C,EAAUgC,EAAoBhgB,EAAM,GACzC4gB,EAAK5C,EAAUgC,EAAoBhgB,EAAM,GACzCygB,GAAMR,EAAGjgB,GACT,IAAKhtB,EAAKC,EAAKE,EAAKC,EAAKstC,EAAKC,EAAKC,KAAQ,EAA3C,CAYA5tC,GAAMitC,EAAGjgB,EAAM,GACf/sB,GAAMgtC,EAAGjgB,EAAM,GACf7sB,GAAM8sC,EAAGjgB,EAAM,GACf5sB,GAAM6sC,EAAGjgB,EAAM,GACf0gB,GAAMT,EAAGjgB,EAAM,GACf2gB,GAAMV,EAAGjgB,EAAM,GACf4gB,GAAMX,EAAGjgB,EAAM,GACfmgB,EAAKpE,GAAW0E,EAAK,KAAO,EAC5B1iC,EAAKg+B,GAAW3oC,EAAK,KAAO,EAC5B4K,EAAK/K,EACLmtC,EAAKO,EACLN,EAAKrE,IAAchpC,EAAK4tC,GAAM,KAAO,EACrCJ,EAAKxE,IAAchpC,EAAK4tC,GAAM,KAAO,EACrCN,EAAKntC,GAAM,EACXotC,EAAKG,GAAM,EACXP,EAAKA,EAAKpiC,EAAK,GAAK,EACpBA,EAAKoiC,EAAKpiC,EACV7I,EAAI8I,EAAK89B,GAAUsE,EAAKvE,GAAU,KAAO,EACzC79B,EAAKA,EAAK69B,GAAUuE,EAAKtE,GAAU,KAAO,EAC1CsE,EAAKlrC,EACLmrC,EAAKA,EAAKE,EAAK,GAAK,EACpBA,EAAKF,EAAKE,EACVC,EAAKA,EAAKF,EAAK,GAAK,EACpBA,EAAKE,EAAKF,EACVH,EAAKA,EAAKC,EAAK,GAAK,EACpBA,EAAKD,EAAKC,EACVriC,EAAKA,EAAKC,EAAK,GAAK,EACpBA,EAAKD,EAAKC,EACV9I,EAAImrC,EAAKzE,GAAU4E,EAAK7E,GAAU,MAAQ,GAC1C0E,EAAKA,EAAK1E,GAAU6E,EAAK5E,GAAU,MAAQ,GAC3C4E,EAAKtrC,EACLA,EAAIorC,EAAK5E,GAAU6E,EAAK9E,GAAU,MAAQ,GAC1C6E,EAAKA,EAAK7E,GAAU8E,EAAK7E,GAAU,MAAQ,GAC3C6E,EAAKrrC,EACLxC,EAAEstB,GAAOmgB,EAAKK,EACd9tC,EAAEstB,EAAM,GAAKmgB,EAAKK,EAClB9tC,EAAEstB,EAAM,GAAKjiB,EAAKwiC,EAClB7tC,EAAEstB,EAAM,GAAKjiB,EAAKwiC,EAClB7tC,EAAEstB,EAAM,GAAKhiB,EAAKsiC,EAClB5tC,EAAEstB,EAAM,GAAKhiB,EAAKsiC,EAClB5tC,EAAEstB,EAAM,GAAKogB,EAAKC,EAClB3tC,EAAEstB,EAAM,GAAKogB,EAAKC,CA1CjB,KAXD,CACEnrC,EAAI6mC,GAAW0E,EAAK,KAAO,GAC3B/tC,EAAEstB,GAAO9qB,EACTxC,EAAEstB,EAAM,GAAK9qB,EACbxC,EAAEstB,EAAM,GAAK9qB,EACbxC,EAAEstB,EAAM,GAAK9qB,EACbxC,EAAEstB,EAAM,GAAK9qB,EACbxC,EAAEstB,EAAM,GAAK9qB,EACbxC,EAAEstB,EAAM,GAAK9qB,EACbxC,EAAEstB,EAAM,GAAK9qB,CAEd,CA2CF,CACD,IAAK,IAAIknC,EAAM,EAAGA,EAAM,IAAKA,EAAK,CAChCqE,EAAK/tC,EAAE0pC,GACPppC,EAAKN,EAAE0pC,EAAM,GACbnpC,EAAKP,EAAE0pC,EAAM,IACbjpC,EAAKT,EAAE0pC,EAAM,IACbhpC,EAAKV,EAAE0pC,EAAM,IACbsE,EAAKhuC,EAAE0pC,EAAM,IACbuE,EAAKjuC,EAAE0pC,EAAM,IACbwE,EAAKluC,EAAE0pC,EAAM,IACb,IAAKppC,EAAKC,EAAKE,EAAKC,EAAKstC,EAAKC,EAAKC,KAAQ,EAA3C,CAmBAT,EAAKpE,GAAW0E,EAAK,MAAQ,GAC7B1iC,EAAKg+B,GAAW3oC,EAAK,MAAQ,GAC7B4K,EAAK/K,EACLmtC,EAAKO,EACLN,EAAKrE,IAAchpC,EAAK4tC,GAAM,MAAQ,GACtCJ,EAAKxE,IAAchpC,EAAK4tC,GAAM,MAAQ,GACtCN,EAAKntC,EACLotC,EAAKG,EACLP,EAA0B,MAApBA,EAAKpiC,EAAK,GAAK,GACrBA,EAAKoiC,EAAKpiC,EACV7I,EAAI8I,EAAK89B,GAAUsE,EAAKvE,GAAU,MAAQ,GAC1C79B,EAAKA,EAAK69B,GAAUuE,EAAKtE,GAAU,MAAQ,GAC3CsE,EAAKlrC,EACLmrC,EAAKA,EAAKE,EAAK,GAAK,EACpBA,EAAKF,EAAKE,EACVC,EAAKA,EAAKF,EAAK,GAAK,EACpBA,EAAKE,EAAKF,EACVH,EAAKA,EAAKC,EAAK,GAAK,EACpBA,EAAKD,EAAKC,EACVriC,EAAKA,EAAKC,EAAK,GAAK,EACpBA,EAAKD,EAAKC,EACV9I,EAAImrC,EAAKzE,GAAU4E,EAAK7E,GAAU,MAAQ,GAC1C0E,EAAKA,EAAK1E,GAAU6E,EAAK5E,GAAU,MAAQ,GAC3C4E,EAAKtrC,EACLA,EAAIorC,EAAK5E,GAAU6E,EAAK9E,GAAU,MAAQ,GAC1C6E,EAAKA,EAAK7E,GAAU8E,EAAK7E,GAAU,MAAQ,GAC3C6E,EAAKrrC,EACLurC,EAAKN,EAAKK,EACVI,EAAKT,EAAKK,EACVxtC,EAAK+K,EAAKwiC,EACVI,EAAK5iC,EAAKwiC,EACVttC,EAAK+K,EAAKsiC,EACVI,EAAK1iC,EAAKsiC,EACVntC,EAAKitC,EAAKC,EACVjtC,EAAKgtC,EAAKC,EACNI,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELztC,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELC,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELE,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELC,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELstC,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELC,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAELC,EAAK,GACPA,EAAK,EACIA,GAAM,KACfA,EAAK,IAELA,IAAO,EAET5C,EAAUgC,EAAoB5D,GAAOqE,EACrCzC,EAAUgC,EAAoB5D,EAAM,GAAKppC,EACzCgrC,EAAUgC,EAAoB5D,EAAM,IAAMnpC,EAC1C+qC,EAAUgC,EAAoB5D,EAAM,IAAMjpC,EAC1C6qC,EAAUgC,EAAoB5D,EAAM,IAAMhpC,EAC1C4qC,EAAUgC,EAAoB5D,EAAM,IAAMsE,EAC1C1C,EAAUgC,EAAoB5D,EAAM,IAAMuE,EAC1C3C,EAAUgC,EAAoB5D,EAAM,IAAMwE,CAnGzC,KAlBD,CACE1rC,EAAI6mC,GAAW0E,EAAK,MAAQ,GAE1BvrC,EADEA,GAAK,KACH,EACKA,GAAK,KACV,IAEAA,EAAI,MAAQ,EAElB8oC,EAAUgC,EAAoB5D,GAAOlnC,EACrC8oC,EAAUgC,EAAoB5D,EAAM,GAAKlnC,EACzC8oC,EAAUgC,EAAoB5D,EAAM,IAAMlnC,EAC1C8oC,EAAUgC,EAAoB5D,EAAM,IAAMlnC,EAC1C8oC,EAAUgC,EAAoB5D,EAAM,IAAMlnC,EAC1C8oC,EAAUgC,EAAoB5D,EAAM,IAAMlnC,EAC1C8oC,EAAUgC,EAAoB5D,EAAM,IAAMlnC,EAC1C8oC,EAAUgC,EAAoB5D,EAAM,IAAMlnC,CAE3C,CAoGF,CACH,CACA,SAAS2rC,mBAAmBtE,EAAOp5B,GACjC,MAAMk5B,EAAgBl5B,EAAUk5B,cAChC,MAAMmD,EAAkBr8B,EAAUq8B,gBAClC,MAAMsB,EAAoB,IAAIC,WAAW,IACzC,IAAK,IAAIzD,EAAW,EAAGA,EAAWkC,EAAiBlC,IACjD,IAAK,IAAI2B,EAAW,EAAGA,EAAW5C,EAAe4C,IAAY,CAC3D,MAAMl9B,EAASo6B,qBAAqBh5B,EAAWm6B,EAAU2B,GACzDc,mBAAmB58B,EAAWpB,EAAQ++B,EACvC,CAEH,OAAO39B,EAAU66B,SACnB,CACA,SAAS2B,mBAAmB9+B,EAAMmgC,EAAYC,EAAWD,GACvD,MAAME,EAASrgC,EAAK5T,OAAS,EAC7B,IAAIk0C,EAASF,EAAWD,EAAaC,EAAWD,EAChD,GAAIA,GAAcE,EAChB,OAAO,KAET,MAAME,EAAgBp/B,WAAWnB,EAAMmgC,GACvC,GAAII,GAAiB,OAAUA,GAAiB,MAC9C,MAAO,CACLxB,QAAS,KACTE,OAAQsB,EACRr/B,OAAQi/B,GAGZ,IAAIK,EAAYr/B,WAAWnB,EAAMsgC,GACjC,QAASE,GAAa,OAAUA,GAAa,OAAS,CACpD,KAAMF,GAAUD,EACd,OAAO,KAETG,EAAYr/B,WAAWnB,EAAMsgC,EAC9B,CACD,MAAO,CACLvB,QAASwB,EAAcvvC,SAAS,IAChCiuC,OAAQuB,EACRt/B,OAAQo/B,EAEZ,CACA,SAASG,kBAAkB/E,GACzB,MAAMQ,EAAcztC,KAAKuS,KAAK06B,EAAMgF,eAAiB,EAAIhF,EAAMiF,MAC/D,MAAM/B,EAAgBnwC,KAAKuS,KAAK06B,EAAMjB,UAAY,EAAIiB,EAAMkF,MAC5D,IAAK,MAAMt+B,KAAao5B,EAAMC,WAAY,CACxC,MAAMH,EAAgB/sC,KAAKuS,KAAKvS,KAAKuS,KAAK06B,EAAMgF,eAAiB,GAAKp+B,EAAU+7B,EAAI3C,EAAMiF,MAC1F,MAAMhC,EAAkBlwC,KAAKuS,KAAKvS,KAAKuS,KAAK06B,EAAMjB,UAAY,GAAKn4B,EAAUxF,EAAI4+B,EAAMkF,MACvF,MAAMC,EAAsB3E,EAAc55B,EAAU+7B,EACpD,MAAMyC,EAAwBlC,EAAgBt8B,EAAUxF,EACxD,MAAMikC,EAAmB,GAAKD,GAAyBD,EAAsB,GAC7Ev+B,EAAU66B,UAAY,IAAI+C,WAAWa,GACrCz+B,EAAUk5B,cAAgBA,EAC1Bl5B,EAAUq8B,gBAAkBA,CAC7B,CACDjD,EAAMQ,YAAcA,EACpBR,EAAMkD,cAAgBA,CACxB,CACA,SAASoC,cAAchhC,EAAMkB,GAC3B,MAAM9U,EAAS+U,WAAWnB,EAAMkB,GAChCA,GAAU,EACV,IAAI+/B,EAAY//B,EAAS9U,EAAS,EAClC,MAAMqyC,EAAaK,mBAAmB9+B,EAAMihC,EAAW//B,GACvD,GAAIu9B,GAAYM,QAAS,CACvB1zC,KAAK,wDAA0DozC,EAAWM,SAC1EkC,EAAYxC,EAAWv9B,MACxB,CACD,MAAMggC,EAAQlhC,EAAKpR,SAASsS,EAAQ+/B,GACpC//B,GAAUggC,EAAM90C,OAChB,MAAO,CACL+0C,QAASD,EACTE,UAAWlgC,EAEf,CACA,SAASmgC,SAASrhC,EAAMkB,GACtB,MAAM9U,EAAS+U,WAAWnB,EAAMkB,GAChCA,GAAU,EACV,MAAM+/B,EAAY//B,EAAS9U,EAAS,EACpC,MAAMqyC,EAAaK,mBAAmB9+B,EAAMihC,EAAW//B,GACvD,OAAIu9B,GAAYM,QACPN,EAAWv9B,OAEb+/B,CACT,CACA,MAAMK,UACJ,WAAAn0C,EAAYo0C,gBACVA,EAAkB,KAAIC,eACtBA,GAAiB,GACf,IACFt0C,KAAKu0C,iBAAmBF,EACxBr0C,KAAKw0C,gBAAkBF,CACxB,CACD,yBAAOG,CAAmB3hC,EAAMwhC,GAAiB,GAC/C,IAAItgC,EAAS,EACb,IAAI0gC,EAAgB,KACpB,IAAInD,EAAat9B,WAAWnB,EAAMkB,GAClCA,GAAU,EACV,GAAIu9B,IAAe,MACjB,MAAM,IAAIlE,UAAU,iBAEtBkE,EAAat9B,WAAWnB,EAAMkB,GAC9BA,GAAU,EACV2gC,EAAY,MAAOpD,IAAe,MAAQ,CACxC,OAAQA,GACN,KAAK,MACL,KAAK,MACL,KAAK,MACHmD,EAAgB5hC,EAAKkB,EAAU,GAC/B,MAAM2gC,EACR,KAAK,MACC7hC,EAAKkB,KAAY,KACnBA,IAEF,MAEJA,EAASmgC,SAASrhC,EAAMkB,GACxBu9B,EAAat9B,WAAWnB,EAAMkB,GAC9BA,GAAU,CACX,CACD,OAAI0gC,IAAkB,IAGlBA,IAAkB,GAAKJ,IAAmB,EAI/C,CACD,KAAAjxB,CAAMvQ,GAAM8hC,aACVA,EAAe,MACb,IACF,IAAI5gC,EAAS,EACb,IAAI6gC,EAAO,KACX,IAAIC,EAAQ,KACZ,IAAItG,EAAOE,EACX,IAAIqG,EAAgB,EACpB,MAAMC,EAAqB,GAC3B,MAAMC,EAAkB,GACtBC,EAAkB,GACpB,IAAI3D,EAAat9B,WAAWnB,EAAMkB,GAClCA,GAAU,EACV,GAAIu9B,IAAe,MACjB,MAAM,IAAIlE,UAAU,iBAEtBkE,EAAat9B,WAAWnB,EAAMkB,GAC9BA,GAAU,EACV2gC,EAAY,MAAOpD,IAAe,MAAQ,CACxC,IAAIlwC,EAAG6e,EAAGi1B,EACV,OAAQ5D,GACN,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACL,KAAK,MACH,MAAM0C,QACJA,EAAOC,UACPA,GACEJ,cAAchhC,EAAMkB,GACxBA,EAASkgC,EACL3C,IAAe,OACb0C,EAAQ,KAAO,IAAQA,EAAQ,KAAO,IAAQA,EAAQ,KAAO,IAAQA,EAAQ,KAAO,IAAQA,EAAQ,KAAO,IAC7GY,EAAO,CACLO,QAAS,CACPC,MAAOpB,EAAQ,GACfqB,MAAOrB,EAAQ,IAEjBsB,aAActB,EAAQ,GACtBuB,SAAUvB,EAAQ,IAAM,EAAIA,EAAQ,GACpCwB,SAAUxB,EAAQ,KAAO,EAAIA,EAAQ,IACrCyB,WAAYzB,EAAQ,IACpB0B,YAAa1B,EAAQ,IACrB2B,UAAW3B,EAAQvyC,SAAS,GAAI,GAAK,EAAIuyC,EAAQ,IAAMA,EAAQ,OAIjE1C,IAAe,OACb0C,EAAQ,KAAO,IAAQA,EAAQ,KAAO,KAAQA,EAAQ,KAAO,KAAQA,EAAQ,KAAO,IAAQA,EAAQ,KAAO,MAC7Ga,EAAQ,CACNM,QAASnB,EAAQ,IAAM,EAAIA,EAAQ,GACnC4B,OAAQ5B,EAAQ,IAAM,EAAIA,EAAQ,GAClC6B,OAAQ7B,EAAQ,IAAM,EAAIA,EAAQ,IAClC8B,cAAe9B,EAAQ,MAI7B,MACF,KAAK,MACH,MAAM+B,EAA2B/hC,WAAWnB,EAAMkB,GAClDA,GAAU,EACV,MAAMiiC,EAAwBD,EAA2BhiC,EAAS,EAClE,IAAIq8B,EACJ,MAAOr8B,EAASiiC,EAAuB,CACrC,MAAMC,EAAwBpjC,EAAKkB,KACnC,MAAMmiC,EAAY,IAAIp2B,YAAY,IAClC,GAAIm2B,GAAyB,IAAM,EACjC,IAAKh2B,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACvBmwB,EAAI5C,GAAUvtB,GACdi2B,EAAU9F,GAAKv9B,EAAKkB,IACrB,KACI,IAAIkiC,GAAyB,IAAM,EAOxC,MAAM,IAAI7I,UAAU,4BANpB,IAAKntB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACvBmwB,EAAI5C,GAAUvtB,GACdi2B,EAAU9F,GAAKp8B,WAAWnB,EAAMkB,GAChCA,GAAU,CACX,CAGF,CACDghC,EAAmBkB,EAAwB,IAAMC,CAClD,CACD,MACF,KAAK,MACL,KAAK,MACL,KAAK,MACH,GAAI3H,EACF,MAAM,IAAInB,UAAU,qCAEtBr5B,GAAU,EACVw6B,EAAQ,CAAA,EACRA,EAAM4H,SAAW7E,IAAe,MAChC/C,EAAMS,YAAcsC,IAAe,MACnC/C,EAAMgB,UAAY18B,EAAKkB,KACvB,MAAMqiC,EAAepiC,WAAWnB,EAAMkB,GACtCA,GAAU,EACVw6B,EAAMjB,UAAYqH,GAAgByB,EAClC7H,EAAMgF,eAAiBv/B,WAAWnB,EAAMkB,GACxCA,GAAU,EACVw6B,EAAMC,WAAa,GACnBD,EAAM8H,aAAe,GACrB,MAAMC,EAAkBzjC,EAAKkB,KAC7B,IAAIy/B,EAAO,EACTC,EAAO,EACT,IAAKryC,EAAI,EAAGA,EAAIk1C,EAAiBl1C,IAAK,CACpC,MAAMm1C,EAAc1jC,EAAKkB,GACzB,MAAMm9B,EAAIr+B,EAAKkB,EAAS,IAAM,EAC9B,MAAMpE,EAAIkD,EAAKkB,EAAS,GAAK,GACzBy/B,EAAOtC,IACTsC,EAAOtC,GAELuC,EAAO9jC,IACT8jC,EAAO9jC,GAET,MAAM6mC,EAAM3jC,EAAKkB,EAAS,GAC1BmhC,EAAI3G,EAAMC,WAAW9sC,KAAK,CACxBwvC,IACAvhC,IACA8mC,eAAgBD,EAChBtE,kBAAmB,OAErB3D,EAAM8H,aAAaE,GAAerB,EAAI,EACtCnhC,GAAU,CACX,CACDw6B,EAAMiF,KAAOA,EACbjF,EAAMkF,KAAOA,EACbH,kBAAkB/E,GAClB,MACF,KAAK,MACH,MAAMmI,EAAgB1iC,WAAWnB,EAAMkB,GACvCA,GAAU,EACV,IAAK3S,EAAI,EAAGA,EAAIs1C,GAAgB,CAC9B,MAAMC,EAAmB9jC,EAAKkB,KAC9B,MAAMqiB,EAAc,IAAIt0B,WAAW,IACnC,IAAI80C,EAAgB,EACpB,IAAK32B,EAAI,EAAGA,EAAI,GAAIA,IAAKlM,IACvB6iC,GAAiBxgB,EAAYnW,GAAKpN,EAAKkB,GAEzC,MAAM8iC,EAAgB,IAAI/0C,WAAW80C,GACrC,IAAK32B,EAAI,EAAGA,EAAI22B,EAAe32B,IAAKlM,IAClC8iC,EAAc52B,GAAKpN,EAAKkB,GAE1B3S,GAAK,GAAKw1C,GACTD,GAAoB,IAAM,EAAI1B,EAAkBD,GAAiB2B,EAAmB,IAAM1I,kBAAkB7X,EAAaygB,EAC3H,CACD,MACF,KAAK,MACH9iC,GAAU,EACV06B,EAAgBz6B,WAAWnB,EAAMkB,GACjCA,GAAU,EACV,MACF,KAAK,MACH,MAAM+6B,IAAmBgG,IAAkB,IAAMH,EACjD5gC,GAAU,EACV,MAAM+iC,EAAiBjkC,EAAKkB,KAC1By6B,EAAa,GACf,IAAKptC,EAAI,EAAGA,EAAI01C,EAAgB11C,IAAK,CACnC,MAAM8pC,EAAQr4B,EAAKkB,KACnB,MAAMgjC,EAAiBxI,EAAM8H,aAAanL,GAC1C,MAAM/1B,EAAYo5B,EAAMC,WAAWuI,GACnC5hC,EAAU+1B,MAAQA,EAClB,MAAM8L,EAAYnkC,EAAKkB,KACvBoB,EAAU26B,eAAiBmF,EAAgB+B,GAAa,GACxD7hC,EAAUg7B,eAAiB6E,EAAgBgC,EAAY,IACvDxI,EAAW9sC,KAAKyT,EACjB,CACD,MAAMu5B,EAAgB77B,EAAKkB,KACzB46B,EAAc97B,EAAKkB,KACnBkjC,EAA0BpkC,EAAKkB,KACjC,IACE,MAAMmjC,EAAY5I,WAAWz7B,EAAMkB,EAAQw6B,EAAOC,EAAYC,EAAeC,EAAeC,EAAasI,GAA2B,EAAGA,EAA0B,GAAInI,GACrK/6B,GAAUmjC,CACX,CAAC,MAAO3uC,GACP,GAAIA,aAAc8kC,eAAgB,CAChCnvC,KAAK,GAAGqK,EAAG1I,qDACX,OAAOE,KAAKqjB,MAAMvQ,EAAM,CACtB8hC,aAAcpsC,EAAG+kC,WAEjC,CAAmB,GAAI/kC,aAAcglC,eAAgB,CACvCrvC,KAAK,GAAGqK,EAAG1I,mDACX,MAAM60C,CACP,CACD,MAAMnsC,CACP,CACD,MACF,KAAK,MACHwL,GAAU,EACV,MACF,KAAK,MACClB,EAAKkB,KAAY,KACnBA,IAEF,MACF,QACE,MAAMojC,EAAiBxF,mBAAmB9+B,EAAMkB,EAAS,EAAGA,EAAS,GACrE,GAAIojC,GAAgBvF,QAAS,CAC3B1zC,KAAK,yDAA2Di5C,EAAevF,SAC/E79B,EAASojC,EAAepjC,OACxB,KACD,CACD,IAAKojC,GAAkBpjC,GAAUlB,EAAK5T,OAAS,EAAG,CAChDf,KAAK,+FACL,MAAMw2C,CACP,CACD,MAAM,IAAItH,UAAU,qCAAuCkE,EAAWztC,SAAS,KAEnFytC,EAAat9B,WAAWnB,EAAMkB,GAC9BA,GAAU,CACX,CACD,IAAKw6B,EACH,MAAM,IAAInB,UAAU,0CAEtBrtC,KAAKqZ,MAAQm1B,EAAMgF,eACnBxzC,KAAKsZ,OAASk1B,EAAMjB,UACpBvtC,KAAK60C,KAAOA,EACZ70C,KAAK80C,MAAQA,EACb90C,KAAKyuC,WAAa,GAClB,IAAK,MAAMr5B,KAAao5B,EAAMC,WAAY,CACxC,MAAM0D,EAAoB6C,EAAmB5/B,EAAUshC,gBACnDvE,IACF/8B,EAAU+8B,kBAAoBA,GAEhCnyC,KAAKyuC,WAAW9sC,KAAK,CACnBwpC,MAAO/1B,EAAU+1B,MACjBkM,OAAQvE,mBAAmBtE,EAAOp5B,GAClCkiC,OAAQliC,EAAU+7B,EAAI3C,EAAMiF,KAC5B8D,OAAQniC,EAAUxF,EAAI4+B,EAAMkF,KAC5BpF,cAAel5B,EAAUk5B,cACzBmD,gBAAiBr8B,EAAUq8B,iBAE9B,CACDzxC,KAAK00C,cAAgB10C,KAAKyuC,WAAWvvC,MAEtC,CACD,uBAAAs4C,CAAwBn+B,EAAOC,EAAQm+B,EAAc,OACnD,MAAMH,EAASt3C,KAAKqZ,MAAQA,EAC1Bk+B,EAASv3C,KAAKsZ,OAASA,EACzB,IAAIlE,EAAWsiC,EAAiBC,EAAiBC,EACjD,IAAIrwC,EAAGC,EAAGnG,EAAG6e,EAAGgG,EAChB,IAAIilB,EACJ,IAAIn3B,EAAS,EACb,IAAIqjC,EACJ,MAAM3C,EAAgB10C,KAAKyuC,WAAWvvC,OACtC,MAAM0T,EAAayG,EAAQC,EAASo7B,EACpC,MAAM5hC,EAAO,IAAI+N,kBAAkBjO,GACnC,MAAMilC,EAAoB,IAAIt1C,YAAY8W,GAC1C,MAAMy+B,EAAW,WACjB,IAAIC,EACJ,IAAK12C,EAAI,EAAGA,EAAIqzC,EAAerzC,IAAK,CAClC+T,EAAYpV,KAAKyuC,WAAWptC,GAC5Bq2C,EAAkBtiC,EAAUkiC,OAASA,EACrCK,EAAkBviC,EAAUmiC,OAASA,EACrCvjC,EAAS3S,EACTg2C,EAASjiC,EAAUiiC,OACnBO,EAAoBxiC,EAAUk5B,cAAgB,GAAK,EACnD,GAAIoJ,IAAoBK,EAAqB,CAC3C,IAAKxwC,EAAI,EAAGA,EAAI8R,EAAO9R,IAAK,CAC1B2Y,EAAI,EAAI3Y,EAAImwC,EACZG,EAAkBtwC,IAAM2Y,EAAI43B,IAAa,EAAI53B,EAAI,CAClD,CACD63B,EAAsBL,CACvB,CACD,IAAKlwC,EAAI,EAAGA,EAAI8R,EAAQ9R,IAAK,CAC3B0Y,EAAI,EAAI1Y,EAAImwC,EACZxM,EAAQyM,GAAqB13B,EAAI43B,IAAa53B,EAAI,IAAM,EACxD,IAAK3Y,EAAI,EAAGA,EAAI8R,EAAO9R,IAAK,CAC1BuL,EAAKkB,GAAUqjC,EAAOlM,EAAQ0M,EAAkBtwC,IAChDyM,GAAU0gC,CACX,CACF,CACF,CACD,IAAIn8C,EAAYyH,KAAKu0C,iBAChBkD,GAAe/C,IAAkB,GAAMn8C,IAC1CA,EAAY,IAAIs7B,WAAW,EAAE,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,OAErE,GAAIt7B,EACF,IAAK8I,EAAI,EAAGA,EAAIuR,GACd,IAAKsN,EAAI,EAAGgG,EAAI,EAAGhG,EAAIw0B,EAAex0B,IAAK7e,IAAK6kB,GAAK,EACnDpT,EAAKzR,IAAMyR,EAAKzR,GAAK9I,EAAU2tB,IAAM,GAAK3tB,EAAU2tB,EAAI,GAI9D,OAAOpT,CACR,CACD,4BAAIklC,GACF,OAAIh4C,KAAK80C,QACE90C,KAAK80C,MAAMiB,cAElB/1C,KAAK00C,gBAAkB,EACrB10C,KAAKw0C,kBAAoB,IAElBx0C,KAAKyuC,WAAW,GAAGtD,QAAU,IAAQnrC,KAAKyuC,WAAW,GAAGtD,QAAU,IAAQnrC,KAAKyuC,WAAW,GAAGtD,QAAU,IAKhHnrC,KAAKw0C,kBAAoB,CAI9B,CACD,gBAAAyD,CAAiBnlC,GACf,IAAIsX,EAAG8tB,EAAIC,EACX,IAAK,IAAI92C,EAAI,EAAGnC,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG,CACxD+oB,EAAItX,EAAKzR,GACT62C,EAAKplC,EAAKzR,EAAI,GACd82C,EAAKrlC,EAAKzR,EAAI,GACdyR,EAAKzR,GAAK+oB,EAAI,QAAU,MAAQ+tB,EAChCrlC,EAAKzR,EAAI,GAAK+oB,EAAI,QAAU,KAAQ8tB,EAAK,KAAQC,EACjDrlC,EAAKzR,EAAI,GAAK+oB,EAAI,QAAU,MAAQ8tB,CACrC,CACD,OAAOplC,CACR,CACD,iBAAAslC,CAAkBtlC,EAAMulC,GACtB,IAAK,IAAIh3C,EAAI,EAAG6e,EAAI,EAAGhhB,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG6e,GAAK,EAAG,CACvE,MAAMkK,EAAItX,EAAKzR,GACf,MAAM62C,EAAKplC,EAAKzR,EAAI,GACpB,MAAM82C,EAAKrlC,EAAKzR,EAAI,GACpBg3C,EAAIn4B,GAAKkK,EAAI,QAAU,MAAQ+tB,EAC/BE,EAAIn4B,EAAI,GAAKkK,EAAI,QAAU,KAAQ8tB,EAAK,KAAQC,EAChDE,EAAIn4B,EAAI,GAAKkK,EAAI,QAAU,MAAQ8tB,EACnCG,EAAIn4B,EAAI,GAAK,GACd,CACD,OAAOm4B,CACR,CACD,iBAAAC,CAAkBxlC,GAChB,IAAIsX,EAAG8tB,EAAIC,EAAIjyB,EACf,IAAIlS,EAAS,EACb,IAAK,IAAI3S,EAAI,EAAGnC,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG,CACxD+oB,EAAItX,EAAKzR,GACT62C,EAAKplC,EAAKzR,EAAI,GACd82C,EAAKrlC,EAAKzR,EAAI,GACd6kB,EAAIpT,EAAKzR,EAAI,GACbyR,EAAKkB,KAA+BkkC,IAAO,oBAAsBA,EAAK,oBAAuBC,EAAK,mBAAqB/tB,EAAI,mBAAsBlE,EAAI,kBAAnI,gBAAwJiyB,IAAO,oBAAuBA,EAAK,oBAAuB/tB,EAAI,mBAAsBlE,EAAI,kBAAoBkE,GAAK,oBAAuBA,EAAI,mBAAsBlE,EAAI,iBAAoBA,IAAM,oBAAuBA,EAAI,kBACrYpT,EAAKkB,KAAY,iBAAmBkkC,GAAM,oBAAsBA,EAAK,oBAAuBC,EAAK,oBAAuB/tB,EAAI,oBAAuBlE,EAAI,kBAAqBiyB,IAAO,oBAAuBA,EAAK,mBAAsB/tB,EAAI,oBAAuBlE,EAAI,kBAAqBkE,GAAK,mBAAsBA,EAAI,mBAAsBlE,EAAI,iBAAoBA,IAAM,oBAAuBA,EAAI,kBACvYpT,EAAKkB,KAA+BkkC,IAAO,oBAAuBA,EAAK,oBAAsBC,EAAK,kBAAqB/tB,EAAI,mBAAsBlE,EAAI,kBAAnI,gBAAwJiyB,IAAO,oBAAsBA,EAAK,oBAAuB/tB,EAAI,oBAAuBlE,EAAI,kBAAqBkE,GAAK,mBAAsBA,EAAI,mBAAsBlE,EAAI,kBAAqBA,IAAM,oBAAuBA,EAAI,gBACvY,CACD,OAAOpT,EAAKpR,SAAS,EAAGsS,EACzB,CACD,kBAAAukC,CAAmBzlC,GACjB,IAAK,IAAIzR,EAAI,EAAGnC,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG,CACxD,MAAM+oB,EAAItX,EAAKzR,GACf,MAAM62C,EAAKplC,EAAKzR,EAAI,GACpB,MAAM82C,EAAKrlC,EAAKzR,EAAI,GACpB,MAAM6kB,EAAIpT,EAAKzR,EAAI,GACnByR,EAAKzR,GAAwB62C,IAAO,oBAAsBA,EAAK,oBAAuBC,EAAK,mBAAqB/tB,EAAI,mBAAsBlE,EAAI,kBAAnI,gBAAwJiyB,IAAO,oBAAuBA,EAAK,oBAAuB/tB,EAAI,mBAAsBlE,EAAI,kBAAoBkE,GAAK,oBAAuBA,EAAI,mBAAsBlE,EAAI,iBAAoBA,IAAM,oBAAuBA,EAAI,kBAC9XpT,EAAKzR,EAAI,GAAK,iBAAmB62C,GAAM,oBAAsBA,EAAK,oBAAuBC,EAAK,oBAAuB/tB,EAAI,oBAAuBlE,EAAI,kBAAqBiyB,IAAO,oBAAuBA,EAAK,mBAAsB/tB,EAAI,oBAAuBlE,EAAI,kBAAqBkE,GAAK,mBAAsBA,EAAI,mBAAsBlE,EAAI,iBAAoBA,IAAM,oBAAuBA,EAAI,kBACpYpT,EAAKzR,EAAI,GAAwB62C,IAAO,oBAAuBA,EAAK,oBAAsBC,EAAK,kBAAqB/tB,EAAI,mBAAsBlE,EAAI,kBAAnI,gBAAwJiyB,IAAO,oBAAsBA,EAAK,oBAAuB/tB,EAAI,oBAAuBlE,EAAI,kBAAqBkE,GAAK,mBAAsBA,EAAI,mBAAsBlE,EAAI,kBAAqBA,IAAM,oBAAuBA,EAAI,iBACnYpT,EAAKzR,EAAI,GAAK,GACf,CACD,OAAOyR,CACR,CACD,kBAAA0lC,CAAmB1lC,GACjB,IAAIsX,EAAG8tB,EAAIC,EACX,IAAK,IAAI92C,EAAI,EAAGnC,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG,CACxD+oB,EAAItX,EAAKzR,GACT62C,EAAKplC,EAAKzR,EAAI,GACd82C,EAAKrlC,EAAKzR,EAAI,GACdyR,EAAKzR,GAAK,QAAU+oB,EAAI,MAAQ+tB,EAChCrlC,EAAKzR,EAAI,GAAK,QAAU+oB,EAAI,KAAQ8tB,EAAK,KAAQC,EACjDrlC,EAAKzR,EAAI,GAAK,QAAU+oB,EAAI,MAAQ8tB,CACrC,CACD,OAAOplC,CACR,CACD,iBAAA2lC,CAAkB3lC,GAChB,IAAInN,EAAGf,EAAG4C,EAAG0e,EACb,IAAIlS,EAAS,EACb,IAAK,IAAI3S,EAAI,EAAGnC,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG,CACxDsE,EAAImN,EAAKzR,GACTuD,EAAIkO,EAAKzR,EAAI,GACbmG,EAAIsL,EAAKzR,EAAI,GACb6kB,EAAIpT,EAAKzR,EAAI,GACbyR,EAAKkB,KAAY,IAAMrO,IAAM,qBAAyBA,EAAI,qBAAwBf,EAAI,qBAAwB4C,EAAI,oBAAuB0e,EAAI,oBAAsBthB,GAAK,sBAA0BA,EAAI,qBAAyB4C,EAAI,qBAAwB0e,EAAI,oBAAuB1e,IAAM,qBAAyBA,EAAI,qBAAwB0e,EAAI,mBAAsBA,GAAK,qBAAwBA,EAAI,mBAC5YpT,EAAKkB,KAAY,IAAMrO,GAAK,sBAAyBA,EAAI,oBAAuBf,EAAI,sBAAyB4C,EAAI,qBAAwB0e,EAAI,mBAAsBthB,IAAM,sBAAyBA,EAAI,qBAAwB4C,EAAI,qBAAwB0e,EAAI,mBAAsB1e,GAAK,qBAAyBA,EAAI,sBAAyB0e,EAAI,oBAAuBA,GAAK,qBAAwBA,EAAI,mBAC3YpT,EAAKkB,KAAY,IAAMrO,GAAK,sBAA0BA,EAAI,sBAAyBf,EAAI,qBAAwB4C,EAAI,sBAA2B0e,EAAI,oBAAuBthB,GAAK,sBAAyBA,EAAI,qBAAwB4C,EAAI,qBAAwB0e,EAAI,oBAAuB1e,GAAK,qBAAuBA,EAAI,qBAAwB0e,EAAI,mBAAsBA,GAAK,qBAAwBA,EAAI,kBAC9Y,CACD,OAAOpT,EAAKpR,SAAS,EAAGsS,EACzB,CACD,kBAAA0kC,CAAmB5lC,GACjB,IAAK,IAAIzR,EAAI,EAAGnC,EAAS4T,EAAK5T,OAAQmC,EAAInC,EAAQmC,GAAK,EAAG,CACxD,MAAMsE,EAAImN,EAAKzR,GACf,MAAMuD,EAAIkO,EAAKzR,EAAI,GACnB,MAAMmG,EAAIsL,EAAKzR,EAAI,GACnB,MAAM6kB,EAAIpT,EAAKzR,EAAI,GACnByR,EAAKzR,GAAK,IAAMsE,IAAM,qBAAyBA,EAAI,qBAAwBf,EAAI,qBAAwB4C,EAAI,oBAAuB0e,EAAI,oBAAsBthB,GAAK,sBAA0BA,EAAI,qBAAyB4C,EAAI,qBAAwB0e,EAAI,oBAAuB1e,IAAM,qBAAyBA,EAAI,qBAAwB0e,EAAI,mBAAsBA,GAAK,qBAAwBA,EAAI,mBACrYpT,EAAKzR,EAAI,GAAK,IAAMsE,GAAK,sBAAyBA,EAAI,oBAAuBf,EAAI,sBAAyB4C,EAAI,qBAAwB0e,EAAI,mBAAsBthB,IAAM,sBAAyBA,EAAI,qBAAwB4C,EAAI,qBAAwB0e,EAAI,mBAAsB1e,GAAK,qBAAyBA,EAAI,sBAAyB0e,EAAI,oBAAuBA,GAAK,qBAAwBA,EAAI,mBACxYpT,EAAKzR,EAAI,GAAK,IAAMsE,GAAK,sBAA0BA,EAAI,sBAAyBf,EAAI,qBAAwB4C,EAAI,sBAA2B0e,EAAI,oBAAuBthB,GAAK,sBAAyBA,EAAI,qBAAwB4C,EAAI,qBAAwB0e,EAAI,oBAAuB1e,GAAK,qBAAuBA,EAAI,qBAAwB0e,EAAI,mBAAsBA,GAAK,qBAAwBA,EAAI,mBAC1YpT,EAAKzR,EAAI,GAAK,GACf,CACD,OAAOyR,CACR,CACD,OAAA6lC,EAAQt/B,MACNA,EAAKC,OACLA,EAAMs/B,UACNA,EAAY,MAAKC,SACjBA,EAAW,MAAKpB,YAChBA,EAAc,QAEd,GAAIz3C,KAAK00C,cAAgB,EACvB,MAAM,IAAIrH,UAAU,0BAEtB,MAAMv6B,EAAO9S,KAAKw3C,wBAAwBn+B,EAAOC,EAAQm+B,GACzD,GAAIz3C,KAAK00C,gBAAkB,IAAMkE,GAAaC,GAAW,CACvD,MAAMvkC,EAAMxB,EAAK5T,QAAU05C,EAAY,EAAI,GAC3C,MAAME,EAAW,IAAIj4B,kBAAkBvM,GACvC,IAAIN,EAAS,EACb,GAAI4kC,EACFxL,WAAWt6B,EAAM,IAAIvQ,YAAYu2C,EAASt2C,cAE1C,IAAK,MAAMu2C,KAAajmC,EAAM,CAC5BgmC,EAAS9kC,KAAY+kC,EACrBD,EAAS9kC,KAAY+kC,EACrBD,EAAS9kC,KAAY+kC,CACtB,CAEH,OAAOD,CACR,CAAM,GAAI94C,KAAK00C,gBAAkB,GAAK10C,KAAKg4C,yBAA0B,CACpE,GAAIY,EAAW,CACb,MAAME,EAAW,IAAIj4B,kBAAkB/N,EAAK5T,OAAS,EAAI,GACzD,OAAOc,KAAKo4C,kBAAkBtlC,EAAMgmC,EACrC,CACD,OAAO94C,KAAKi4C,iBAAiBnlC,EACnC,CAAW,GAAI9S,KAAK00C,gBAAkB,EAAG,CACnC,GAAI10C,KAAKg4C,yBACP,OAAIY,EACK54C,KAAKu4C,mBAAmBzlC,GAE7B+lC,EACK74C,KAAKs4C,kBAAkBxlC,GAEzB9S,KAAKw4C,mBAAmB1lC,GAC1B,GAAI8lC,EACT,OAAO54C,KAAK04C,mBAAmB5lC,GAC1B,GAAI+lC,EACT,OAAO74C,KAAKy4C,kBAAkB3lC,EAEjC,CACD,OAAOA,CACR,EAQH,MAAMkmC,mBAAmBjrB,aACvBjH,SAAkCnkB,YAAYG,wBAC9C,WAAA7C,CAAYub,EAAQuT,EAAa/K,GAC/B5jB,MAAM2uB,GACN/uB,KAAKwb,OAASA,EACdxb,KAAKqO,KAAOmN,EAAOnN,KACnBrO,KAAK+uB,YAAcA,EACnB/uB,KAAKgkB,OAASA,CACf,CACD,6BAAWywB,GACT,OAAOl1C,OAAOS,KAAM,qBAAsBA,MAAK8C,EAA2BC,aAAak2C,gBAAgB,cAAgB7tC,QAAQI,QAAQ,OACxI,CACD,iBAAO0tC,EAAWp2C,wBAChBA,EAA0B,QAE1B9C,MAAK8C,EAA2BA,CACjC,CACD,SAAIhC,GACF,OAAOvB,OAAOS,KAAM,QAASA,KAAKwb,OAAOlL,SAAStQ,KAAK+uB,aACxD,CACD,YAAAT,CAAaC,GAAa,CAC1B,SAAAF,GACEruB,KAAK0uB,aACN,CACD,eAAIyqB,GACF,MAAMA,EAAc,CAClB9E,qBAAiBtzC,EACjBuzC,oBAAgBvzC,GAElB,MAAMq4C,EAAYp5C,KAAKqO,KAAKhB,SAAS,IAAK,UAC1C,IAAKrN,KAAK44C,WAAa54C,KAAK64C,WAAal1C,MAAM2J,QAAQ8rC,GAAY,CACjE,MAAMC,EAAmBr5C,KAAKqO,KAAK/f,IAAI,MAAO,qBAAuB,EACrE,MAAMgrD,EAAkBF,EAAUl6C,OAClC,MAAM3G,EAAY,IAAIs7B,WAAWylB,GACjC,IAAIC,EAAkB,MACtB,MAAMC,GAAY,GAAKH,GAAoB,EAC3C,IAAK,IAAIh4C,EAAI,EAAGA,EAAIi4C,EAAiBj4C,GAAK,EAAG,CAC3C9I,EAAU8I,GAAyC,KAAnC+3C,EAAU/3C,EAAI,GAAK+3C,EAAU/3C,IAAY,EACzD9I,EAAU8I,EAAI,GAAK+3C,EAAU/3C,GAAKm4C,EAAW,EACzCjhD,EAAU8I,KAAO,KAAO9I,EAAU8I,EAAI,KAAO,IAC/Ck4C,EAAkB,KAErB,CACGA,IACFJ,EAAY9E,gBAAkB97C,EAEjC,CACD,GAAIyH,KAAKgkB,kBAAkB3X,KAAM,CAC/B,MAAMioC,EAAiBt0C,KAAKgkB,OAAO11B,IAAI,kBACnCsP,OAAOC,UAAUy2C,KACnB6E,EAAY7E,eAAiBA,EAEhC,CACD,OAAO/0C,OAAOS,KAAM,cAAem5C,EACpC,CACD,EAAAM,CAAkB3mC,GAChB,IAAK,IAAIzR,EAAI,EAAGoH,EAAKqK,EAAK5T,OAAS,EAAGmC,EAAIoH,EAAIpH,IAC5C,GAAIyR,EAAKzR,KAAO,KAAQyR,EAAKzR,EAAI,KAAO,IAAM,CACxCA,EAAI,IACNyR,EAAOA,EAAKpR,SAASL,IAEvB,KACD,CAEH,OAAOyR,CACR,CACD,WAAA4b,CAAY5tB,GACV,GAAId,KAAKmuB,IACP,OAAOnuB,KAAKwC,OAEd1B,EAAQd,MAAKy5C,EAAkB34C,GAASd,KAAKc,OAC7C,MAAM44C,EAAY,IAAItF,UAAUp0C,KAAKm5C,aACrCO,EAAUr2B,MAAMviB,GAChB,MAAMgS,EAAO4mC,EAAUf,QAAQ,CAC7Bt/B,MAAOrZ,KAAK25C,UACZrgC,OAAQtZ,KAAK45C,WACbhB,UAAW54C,KAAK44C,UAChBC,SAAU74C,KAAK64C,SACfpB,YAAa,OAEfz3C,KAAKwC,OAASsQ,EACd9S,KAAKkuB,aAAepb,EAAK5T,OACzBc,KAAKmuB,IAAM,KACX,OAAOnuB,KAAKwC,MACb,CACD,iCAAImO,GACF,OAAO3Q,KAAKwb,OAAO9K,OACpB,CACD,0BAAME,GACJ,UAAYooC,WAAWvE,mBACrB,OAAO,KAET,MAAM0E,EAAcn5C,KAAKm5C,YACzB,GAAIA,EAAY9E,gBACd,OAAO,KAET,IAAInsC,EACJ,IACE,MAAMpH,EAAQd,KAAK2Q,qCAAwC3Q,KAAKwb,OAAO/K,iBAAoBzQ,KAAKc,MAChG,IAAKA,EACH,OAAO,KAET,MAAMgS,EAAO9S,MAAKy5C,EAAkB34C,GACpC,IAAKszC,UAAUK,mBAAmB3hC,EAAMqmC,EAAY7E,gBAClD,OAAO,KAETpsC,EAAU,IAAInF,aAAa,CACzB+P,OACAzjB,KAAM,aACNwqD,gBAAiB,QAEnB,aAAc3xC,EAAQI,UAAUwxC,KACjC,CAAC,MAAOj8B,GACP1f,KAAK,mCAAmC0f,OACxC,OAAO,IACb,CAAc,QACR3V,GAAS6sB,OACV,CACF,EAIH,IAAIglB,GAAW,MACb,IAAIC,SAAqBC,UAAY,YAAcA,SAASC,eAAeh7B,SAAMne,EACjF,OAAO,SAAUo5C,EAAY,IAC3B,IAAIC,EACJ,IAAIC,EAASF,EACb,IAAIG,EAAqBC,EACN,IAAInvC,SAAQ,CAACI,EAASiR,KACvC69B,EAAsB9uC,EACtB+uC,EAAqB99B,CAAM,IAE7B,IAAI+9B,EAAqB,KACzB,IAAIC,EAAwB,MAC5BJ,EAAO/xC,OAAS,SAAUxH,GAAO4zC,cAC/BA,EAAgB,EAACgG,kBACjBA,EAAoB,MAAKC,YACzBA,EAAc,QAEd,MAAM9tC,EAAO/L,EAAM5B,OACnB,MAAM07C,EAAMP,EAAOQ,QAAQhuC,GAC3BwtC,EAAOS,OAAOntC,IAAI7M,EAAO85C,GACzB,MAAMG,EAAMV,EAAOW,YAAYJ,EAAK/tC,EAAM6nC,EAAgB,EAAIA,EAAgB,IAAKgG,IAAqBC,GACxGN,EAAOY,MAAML,GACb,GAAIG,EAAK,CACP,MACEG,cAAeA,GACbb,EACJ,GAAIa,EAAe,QACVb,EAAOa,cACd,OAAOA,CACR,CACD,MAAO,eACR,CACD,MACEC,UAAWA,GACTd,EACJA,EAAOc,UAAY,KACnB,OAAOA,CACb,EACI,IAAIC,EAAkBjtD,OAAOktD,OAAO,CAAE,EAAEhB,GAExC,IAAIiB,EAAc,iBAIlB,IAAIC,EAAkB,GACtB,IAAsBC,EACtB,GAAIhB,GAAsBC,EAAuB,CAC3CA,EACFc,EAAkBE,KAAKC,SAASC,YAChB1B,UAAY,aAAeA,SAASC,gBACpDqB,EAAkBtB,SAASC,cAAch7B,KAEvC86B,IACFuB,EAAkBvB,GAGlBuB,EADEA,EAAgBx8C,WAAW,SACX,GAEAw8C,EAAgBK,OAAO,EAAGL,EAAgBM,QAAQ,SAAU,IAAIC,YAAY,KAAO,GAE/Fr9C,IACN,IAAIs9C,EAAM,IAAIC,eACdD,EAAIE,KAAK,MAAOx9C,EAAK,OACrBs9C,EAAIv9B,KAAK,MACT,OAAOu9B,EAAIG,YAAY,EAErBzB,IACFe,EAAa/8C,IACX,IAAIs9C,EAAM,IAAIC,eACdD,EAAIE,KAAK,MAAOx9C,EAAK,OACrBs9C,EAAII,aAAe,cACnBJ,EAAIv9B,KAAK,MACT,OAAO,IAAIzc,WAAWg6C,EAAIK,SAAS,GAG3B,CAAC39C,EAAK49C,EAAQC,KACxBpvC,MAAMzO,EAAK,CACT89C,YAAa,gBACZz/B,MAAKs/B,GACFA,EAASI,GACJJ,EAAS3iC,cAEXrO,QAAQqR,OAAO,IAAIpe,MAAM+9C,EAAS17C,OAAS,MAAQ07C,EAAS39C,QAClEqe,KAAKu/B,EAAQC,EAAQ,CAEhC,CACI,IAAIjE,EAAMgC,EAAc,OAAKp8C,QAAQC,IAAIqe,KAAKte,SAC9C,IAAI6gB,EAAMu7B,EAAiB,UAAKp8C,QAAQw+C,MAAMlgC,KAAKte,SACnD9P,OAAOktD,OAAOhB,EAAQe,GACtBA,EAAkB,KACdf,EAAkB,WAAgBA,EAAkB,UACpDA,EAAoB,cAAGiB,EAAcjB,EAAoB,aACzDA,EAAa,MAAWA,EAAa,KACzC,IAAIqC,EACArC,EAAmB,aAAGqC,EAAarC,EAAmB,YAC1D,SAASsC,mBAAmB7tB,GAC1B,IAAIzmB,EAAU8C,KAAK2jB,GACnB,IAAIhuB,EAAQ,IAAIiB,WAAWsG,EAAQnJ,QACnC,IAAK,IAAImC,EAAI,EAAGA,EAAIgH,EAAQnJ,SAAUmC,EACpCP,EAAMO,GAAKgH,EAAQrG,WAAWX,GAEhC,OAAOP,CACR,CACD,SAAS87C,kBAAkBC,GACzB,GAAKC,UAAUD,GAGf,OAAOF,mBAAmBE,EAAS13C,MAAM43C,EAAc79C,QACxD,CACD,IAAI89C,EACJ,IAAIC,EAAQ,MACZ,IAAIC,EAAOpC,EAAiCqC,EAC5C,SAASC,oBACP,IAAIh5C,EAAI44C,EAAWx6C,OACnB63C,EAAc,MAAI6C,EAAQ,IAAIjlB,UAAU7zB,GACxCi2C,EAAe,OAAa,IAAIrH,WAAW5uC,GAC3Ci2C,EAAe,OAAIS,EAAS,IAAI/4C,WAAWqC,GAC3Ci2C,EAAgB,QAAc,IAAIt6B,YAAY3b,GAC9Ci2C,EAAe,OAAa,IAAIxmB,WAAWzvB,GAC3Ci2C,EAAgB,QAAI8C,EAAU,IAAI56C,YAAY6B,GAC9Ci2C,EAAgB,QAAc,IAAIh1B,aAAajhB,GAC/Ci2C,EAAgB,QAAc,IAAIgD,aAAaj5C,EAChD,CACD,IAAIk5C,EAAe,GACnB,IAAIC,EAAa,GACjB,IAAIC,EAAgB,GAEpB,SAASC,SACP,GAAIpD,EAAe,OAAG,QACTA,EAAe,QAAK,aAAYA,EAAe,OAAI,CAACA,EAAe,SAC9E,MAAOA,EAAe,OAAEn7C,OACtBw+C,YAAYrD,EAAe,OAAEprB,QAEhC,CACD0uB,qBAAqBL,EACtB,CACD,SAASM,cACc,KACrBD,qBAAqBJ,EACtB,CACD,SAASM,UACP,GAAIxD,EAAgB,QAAG,QACVA,EAAgB,SAAK,aAAYA,EAAgB,QAAI,CAACA,EAAgB,UACjF,MAAOA,EAAgB,QAAEn7C,OACvB4+C,aAAazD,EAAgB,QAAEprB,QAElC,CACD0uB,qBAAqBH,EACtB,CACD,SAASE,YAAYK,GACnBT,EAAaU,QAAQD,EACtB,CACD,SAASE,UAAUF,GACjBR,EAAWS,QAAQD,EACpB,CACD,SAASD,aAAaC,GACpBP,EAAcQ,QAAQD,EACvB,CACD,IAAIG,EAAkB,EACtB,IAAIC,EAAuB,KAC3B,IAAIC,EAAwB,KAC5B,SAASC,iBAAiBrmB,GACxBkmB,IACA7D,EAA+B,yBAAI6D,EACpC,CACD,SAASI,oBAAoBtmB,GAC3BkmB,IACA7D,EAA+B,yBAAI6D,GACnC,GAAIA,GAAmB,EAAG,CACxB,GAAIC,IAAyB,KAAM,CACjCI,cAAcJ,GACdA,EAAuB,IACxB,CACD,GAAIC,EAAuB,CACzB,IAAII,EAAWJ,EACfA,EAAwB,KACxBI,GACD,CACF,CACF,CACD,IAAIzB,EAAgB,wCACpB,IAAID,UAAYD,GAAYA,EAAS99C,WAAWg+C,GAChD,SAAS0B,iBACP,IAAIC,EAAI,w7+UACR,OAAOA,CACR,CACD,IAAIC,EACJ,SAASC,cAAcC,GACrB,GAAIA,GAAQF,GAAkBjC,EAC5B,OAAO,IAAI36C,WAAW26C,GAExB,IAAIoC,EAASlC,kBAAkBiC,GAC/B,GAAIC,EACF,OAAOA,EAET,GAAItD,EACF,OAAOA,EAAWqD,GAEpB,KAAM,0JACP,CACD,SAASE,gBAAgBF,EAAM9gD,GAC7B,IAAIihD,EACJ,IAAIF,EAASF,cAAcC,GAC3BG,EAAS,IAAIC,YAAY5E,OAAOyE,GAChC,IAAII,EAAW,IAAID,YAAYE,SAASH,EAAQjhD,GAChD,MAAO,CAACmhD,EAAUF,EACnB,CACD,SAASI,iBACP,MAAO,CACL15C,EAAG25C,EAEN,CACD,SAASC,aACP,IAAIvhD,EAAOqhD,iBACX,SAASG,gBAAgBL,EAAUF,GACjCQ,EAAcN,EAASnxD,QACvBivD,EAAawC,EAAe,EAC5BpC,oBACAa,UAAUuB,EAAe,GACzBlB,oBAAoB,oBACpB,OAAOkB,CACR,CACDnB,iBAAiB,oBACjB,GAAIhE,EAAwB,gBAC1B,IACE,OAAOA,EAAwB,gBAAEt8C,EAAMwhD,gBACxC,CAAC,MAAOxiC,GACP+B,EAAI,sDAAsD/B,KAC1Dw9B,EAAmBx9B,EACpB,CAEE4hC,IAAgBA,EAAiBF,kBACtC,IAAIprC,EAAS0rC,gBAAgBJ,EAAgB5gD,GAC7C,OAAOwhD,gBAAgBlsC,EAAO,GAC/B,CACD,IAAIsqC,qBAAuB8B,IACzB,MAAOA,EAAUvgD,OAAS,EACxBugD,EAAUxwB,OAAVwwB,CAAkBpF,EACnB,EAEiBA,EAAsB,cAC1C,IAAIqF,uBAAyB,CAACvgC,EAAMD,EAAKlU,IAAQ8vC,EAAO6E,WAAWxgC,EAAMD,EAAKA,EAAMlU,GACpF,SAAS40C,eAAeC,EAAWC,GACjCD,IAAc,EACd,MAAM1E,EAAYd,EAAOc,UAAY,IAAIt6B,kBAAkBi/B,GAC3D,MAAMC,EAAQ1F,EAAO2F,OAAOt+C,SAASm+C,EAAWA,EAAYC,GAC5D3E,EAAUxtC,IAAIoyC,EACf,CACD,SAASE,eAAeC,EAAWL,EAAWM,EAAWL,GACvDI,IAAc,EACdL,IAAc,EACdM,IAAc,EACd,MAAMhF,EAAYd,EAAOc,UAAY,IAAIt6B,kBAAkBi/B,EAAY,GACvE,MAAMM,EAAQ/F,EAAO2F,OAAOt+C,SAASw+C,EAAWA,EAAYJ,GAC5D,MAAMC,EAAQ1F,EAAO2F,OAAOt+C,SAASm+C,EAAWA,EAAYC,GAC5D,MAAMO,EAAQhG,EAAO2F,OAAOt+C,SAASy+C,EAAWA,EAAYL,GAC5D,IAAK,IAAIz+C,EAAI,EAAGA,EAAIy+C,EAAWz+C,IAAK,CAClC85C,EAAU,EAAI95C,GAAK++C,EAAM/+C,GACzB85C,EAAU,EAAI95C,EAAI,GAAK0+C,EAAM1+C,GAC7B85C,EAAU,EAAI95C,EAAI,GAAKg/C,EAAMh/C,EAC9B,CACF,CACD,SAASi/C,eAAeJ,EAAWL,EAAWM,EAAWI,EAAWT,GAClEI,IAAc,EACdL,IAAc,EACdM,IAAc,EACdI,IAAc,EACd,MAAMpF,EAAYd,EAAOc,UAAY,IAAIt6B,kBAAkBi/B,EAAY,GACvE,MAAMM,EAAQ/F,EAAO2F,OAAOt+C,SAASw+C,EAAWA,EAAYJ,GAC5D,MAAMC,EAAQ1F,EAAO2F,OAAOt+C,SAASm+C,EAAWA,EAAYC,GAC5D,MAAMO,EAAQhG,EAAO2F,OAAOt+C,SAASy+C,EAAWA,EAAYL,GAC5D,MAAMU,EAAQnG,EAAO2F,OAAOt+C,SAAS6+C,EAAWA,EAAYT,GAC5D,IAAK,IAAIz+C,EAAI,EAAGA,EAAIy+C,EAAWz+C,IAAK,CAClC85C,EAAU,EAAI95C,GAAK++C,EAAM/+C,GACzB85C,EAAU,EAAI95C,EAAI,GAAK0+C,EAAM1+C,GAC7B85C,EAAU,EAAI95C,EAAI,GAAKg/C,EAAMh/C,GAC7B85C,EAAU,EAAI95C,EAAI,GAAKm/C,EAAMn/C,EAC9B,CACF,CACD,IAAIo/C,WAAa,IAAM,WACvB,IAAIC,WAAa7zC,IACf,IAAIzI,EAAI44C,EAAWx6C,OACnB,IAAIm+C,GAAS9zC,EAAOzI,EAAEyO,WAAa,OAAS,MAC5C,IACEmqC,EAAW4D,KAAKD,GAChBvD,oBACA,OAAO,CACf,CAAQ,MAAOrgC,GAAK,GAEhB,IAAI8jC,wBAA0BC,IAC5B,IAAIC,EAAUjG,EAAO57C,OACrB4hD,KAAmB,EACnB,IAAIE,EAAcP,aAClB,GAAIK,EAAgBE,EAClB,OAAO,MAET,IAAIC,QAAU,CAAC15C,EAAG25C,IAAa35C,GAAK25C,EAAW35C,EAAI25C,GAAYA,EAC/D,IAAK,IAAIC,EAAU,EAAGA,GAAW,EAAGA,GAAW,EAAG,CAChD,IAAIC,EAAoBL,GAAW,EAAI,GAAKI,GAC5CC,EAAoB7/C,KAAKC,IAAI4/C,EAAmBN,EAAgB,WAChE,IAAIO,EAAU9/C,KAAKC,IAAIw/C,EAAaC,QAAQ1/C,KAAK+D,IAAIw7C,EAAeM,GAAoB,QACxF,IAAIE,EAAcZ,WAAWW,GAC7B,GAAIC,EACF,OAAO,IAEV,CACD,OAAO,KAAK,EAEd,IAAIC,EAAM,CAAA,EACV,IAAIC,kBAAoB,IAAMlG,GAAe,iBAC7C,IAAImG,cAAgB,KAClB,IAAKA,cAAcC,QAAS,CAC1B,IAAIC,UAAe1+C,WAAa,UAAYA,UAAU2+C,WAAa3+C,UAAU2+C,UAAU,IAAM,KAAK/F,QAAQ,IAAK,KAAO,SACtH,IAAIgG,EAAM,CACRC,KAAM,WACNC,QAAS,WACTC,KAAM,IACNC,IAAK,IACLC,KAAM,iBACNC,KAAMR,EACN13C,EAAGu3C,qBAEL,IAAK,IAAIj6C,KAAKg6C,EACRA,EAAIh6C,UAAOxG,SAAkB8gD,EAAIt6C,GAAQs6C,EAAIt6C,GAAKg6C,EAAIh6C,GAE5D,IAAIm6C,EAAU,GACd,IAAK,IAAIn6C,KAAKs6C,EACZH,EAAQ//C,KAAK,GAAG4F,KAAKs6C,EAAIt6C,MAE3Bk6C,cAAcC,QAAUA,CACzB,CACD,OAAOD,cAAcC,OAAO,EAE9B,IAAIU,cAAgB,CAACtgD,EAAKU,KACxB,IAAK,IAAInB,EAAI,EAAGA,EAAIS,EAAI5C,SAAUmC,EAChC67C,EAAM16C,KAAYV,EAAIE,WAAWX,GAEnC67C,EAAM16C,GAAU,CAAC,EAEnB,IAAI6/C,aAAe,CAACC,EAAWC,KAC7B,IAAIC,EAAU,EACdf,gBAAgBgB,SAAQ,CAACC,EAAQrhD,KAC/B,IAAIu5C,EAAM2H,EAAcC,EACxBrF,EAAQmF,EAAYjhD,EAAI,GAAK,GAAKu5C,EAClCwH,cAAcM,EAAQ9H,GACtB4H,GAAWE,EAAOxjD,OAAS,CAAC,IAE9B,OAAO,CAAC,EAEV,IAAIyjD,mBAAqB,CAACC,EAAgBC,KACxC,IAAInB,EAAUD,gBACdtE,EAAQyF,GAAkB,GAAKlB,EAAQxiD,OACvC,IAAIsjD,EAAU,EACdd,EAAQe,SAAQC,GAAUF,GAAWE,EAAOxjD,OAAS,IACrDi+C,EAAQ0F,GAAqB,GAAKL,EAClC,OAAO,CAAC,EAEV,IAAIM,UAAYC,GAAM,GACtB,IAAIC,2BAA6B,CAACC,EAAIC,IAAOA,EAAK,UAAY,EAAI,UAAYD,GAAMA,IAAO,GAAKC,EAAK,WAAaC,IAClH,SAASC,SAASL,EAAIM,EAAYC,EAAaC,EAAQrP,GACxC8O,2BAA2BK,EAAYC,GACpD,OAAO,EACR,CACD,IAAIE,EAAmB,CAAC,KAAM,GAAI,IAClC,IAAIC,SAAqBt7C,aAAe,YAAc,IAAIA,YAAY,aAAUpH,EAChF,IAAI2iD,kBAAoB,CAACC,EAAaC,EAAKC,KACzC,IAAIC,EAASF,EAAMC,EACnB,IAAIE,EAASH,EACb,MAAOD,EAAYI,MAAaA,GAAUD,KAAWC,EACrD,GAAIA,EAASH,EAAM,IAAMD,EAAYnhD,QAAUihD,EAC7C,OAAOA,EAAYn7C,OAAOq7C,EAAYjiD,SAASkiD,EAAKG,IAEtD,IAAIjiD,EAAM,GACV,MAAO8hD,EAAMG,EAAQ,CACnB,IAAIC,EAAKL,EAAYC,KACrB,GAAMI,EAAK,IAAX,CAIA,IAAIC,EAAKN,EAAYC,KAAS,GAC9B,IAAKI,EAAK,MAAQ,IAAlB,CAIA,IAAIE,EAAKP,EAAYC,KAAS,GAE5BI,GADGA,EAAK,MAAQ,KACVA,EAAK,KAAO,GAAKC,GAAM,EAAIC,GAE3BF,EAAK,IAAM,GAAKC,GAAM,GAAKC,GAAM,EAAIP,EAAYC,KAAS,GAElE,GAAII,EAAK,MACPliD,GAAOb,OAAOC,aAAa8iD,OACtB,CACL,IAAI5vC,EAAK4vC,EAAK,MACdliD,GAAOb,OAAOC,aAAa,MAAQkT,GAAM,GAAI,MAAQA,EAAK,KAC3D,CAZA,MAFCtS,GAAOb,OAAOC,cAAc8iD,EAAK,KAAO,EAAIC,EAH7C,MAFCniD,GAAOb,OAAOC,aAAa8iD,EAoB9B,CACD,OAAOliD,CAAG,EAEZ,IAAIqiD,UAAY,CAAC3oC,EAAQ4oC,KACvB,IAAI5hD,EAASghD,EAAiBhoC,GAC9B,GAAI4oC,IAAS,GAAKA,IAAS,GAAI,EAC5B5oC,IAAW,EAAI68B,EAAMv5B,GAAK4kC,kBAAkBlhD,EAAQ,IACrDA,EAAOtD,OAAS,CACxB,MACQsD,EAAOb,KAAKyiD,EACb,EAEH,IAAIC,aAAe,CAACzJ,EAAKiJ,IAAmBjJ,EAAM8I,kBAAkB5I,EAAQF,EAAKiJ,GAAkB,GACnG,IAAIS,UAAY,CAACvB,EAAIwB,EAAKC,EAAQC,KAChC,IAAIz5C,EAAM,EACV,IAAK,IAAI3J,EAAI,EAAGA,EAAImjD,EAAQnjD,IAAK,CAC/B,IAAIu5C,EAAMuC,EAAQoH,GAAO,GACzB,IAAIjwC,EAAM6oC,EAAQoH,EAAM,GAAK,GAC7BA,GAAO,EACP,IAAK,IAAIrkC,EAAI,EAAGA,EAAI5L,EAAK4L,IACvBikC,UAAUpB,EAAIjI,EAAOF,EAAM16B,IAE7BlV,GAAOsJ,CACR,CACD6oC,EAAQsH,GAAQ,GAAKz5C,EACrB,OAAO,CAAC,EAEV,SAAS05C,cAAc7E,EAAWC,GAChCD,IAAc,EACd,MAAM1E,EAAYd,EAAOc,UAAY,IAAIt6B,kBAAkBi/B,EAAY,GACvE,MAAMC,EAAQ1F,EAAO2F,OAAOt+C,SAASm+C,EAAWA,EAAYC,GAC5D,IAAK,IAAIz+C,EAAI,EAAGA,EAAIy+C,EAAWz+C,IAAK,CAClC85C,EAAU,EAAI95C,GAAK85C,EAAU,EAAI95C,EAAI,GAAK85C,EAAU,EAAI95C,EAAI,GAAK0+C,EAAM1+C,GACvE85C,EAAU,EAAI95C,EAAI,GAAK,GACxB,CACF,CACD,SAASsjD,eAAe9E,EAAWU,EAAWT,GAC5CD,IAAc,EACdU,IAAc,EACd,MAAMpF,EAAYd,EAAOc,UAAY,IAAIt6B,kBAAkBi/B,EAAY,GACvE,MAAMC,EAAQ1F,EAAO2F,OAAOt+C,SAASm+C,EAAWA,EAAYC,GAC5D,MAAMU,EAAQnG,EAAO2F,OAAOt+C,SAAS6+C,EAAWA,EAAYT,GAC5D,IAAK,IAAIz+C,EAAI,EAAGA,EAAIy+C,EAAWz+C,IAAK,CAClC85C,EAAU,EAAI95C,GAAK85C,EAAU,EAAI95C,EAAI,GAAK85C,EAAU,EAAI95C,EAAI,GAAK0+C,EAAM1+C,GACvE85C,EAAU,EAAI95C,EAAI,GAAKm/C,EAAMn/C,EAC9B,CACF,CACD,SAASujD,gBAAgBC,GACvB,MAAM/kD,EAAUukD,aAAaQ,IAC5BxK,EAAOl8C,MAAQF,QAAQE,MAAM,aAAa2B,IAC5C,CACD,SAASglD,aAAa5E,EAAWL,EAAWM,EAAWL,GACrDI,IAAc,EACdL,IAAc,EACdM,IAAc,EACd,MAAMhF,EAAYd,EAAOc,UAAY,IAAIt6B,kBAAkBi/B,EAAY,GACvE,MAAMM,EAAQ/F,EAAO2F,OAAOt+C,SAASw+C,EAAWA,EAAYJ,GAC5D,MAAMC,EAAQ1F,EAAO2F,OAAOt+C,SAASm+C,EAAWA,EAAYC,GAC5D,MAAMO,EAAQhG,EAAO2F,OAAOt+C,SAASy+C,EAAWA,EAAYL,GAC5D,IAAK,IAAIz+C,EAAI,EAAGA,EAAIy+C,EAAWz+C,IAAK,CAClC85C,EAAU,EAAI95C,GAAK++C,EAAM/+C,GACzB85C,EAAU,EAAI95C,EAAI,GAAK0+C,EAAM1+C,GAC7B85C,EAAU,EAAI95C,EAAI,GAAKg/C,EAAMh/C,GAC7B85C,EAAU,EAAI95C,EAAI,GAAK,GACxB,CACF,CACD,SAAS0jD,mBAAmBF,GAC1B,MAAM/kD,EAAUukD,aAAaQ,GACxBxK,EAAOa,cAGVb,EAAOa,eAAiB,KAAOp7C,EAF/Bu6C,EAAOa,cAAgBp7C,CAI1B,CACD,IAAIu/C,EAAc,CAChB15C,EAAG+5C,uBACHv7C,EAAGy7C,eACHlB,EAAGuB,eACHljC,EAAGujC,eACHp6B,EAAG26B,wBACH1L,EAAGkN,aACHz9C,EAAG+9C,mBACH9+C,EAAGi/C,UACH5iC,EAAGkjC,SACHh/C,EAAGkgD,UACHp2D,EAAGw2D,cACHrjD,EAAGsjD,eACH72D,EAAG82D,gBACHzT,EAAG2T,aACHp/C,EAAGq/C,oBAEL,IAAIvF,EAAcF,aACOE,EAAe,EAC1BnF,EAAgB,QAAImF,EAAe,EACrCnF,EAAc,MAAImF,EAAe,EAC3BnF,EAAoB,YAAImF,EAAe,EACzD,IAAIwF,EACJ5G,EAAwB,SAAS6G,YAC1BD,GAAWE,MACXF,IAAW5G,EAAwB6G,UAC9C,EACI,SAASC,MACP,KAAIhH,EAAkB,GAAtB,CAGAT,SACA,KAAIS,EAAkB,GAatB,GAAI7D,EAAkB,UAAG,CACvBA,EAAkB,UAAE,cACpB8K,YAAW,WACTA,YAAW,WACT9K,EAAkB,UAAE,GACrB,GAAE,GACH+K,OACD,GAAE,EACX,MACQA,OAxBD,CAKD,SAASA,QACP,IAAIJ,EAAJ,CACAA,EAAY,KACZ3K,EAAkB,UAAI,KACtB,IAAI4C,EAAJ,CACAW,cACAtD,EAAoBD,GAChBA,EAA6B,sBAAGA,EAA6B,uBACjEwD,SAJkB,CAHI,CAQvB,CAYF,CACD,GAAIxD,EAAgB,QAAG,QACVA,EAAgB,SAAK,aAAYA,EAAgB,QAAI,CAACA,EAAgB,UACjF,MAAOA,EAAgB,QAAEn7C,OAAS,EAChCm7C,EAAgB,QAAElM,KAAlBkM,EAEH,CACD6K,MACA9K,EAAYC,EACZ,OAAOD,CACX,CACC,EAzhBc,GA0hBc,MAAMiL,GAAY,GAK/C,MAAMC,iBAAiB1lD,EACrB,WAAAK,CAAYjC,GACVoC,MAAMpC,EAAK,WACZ,EAEH,MAAMunD,SACJz+B,SAAiB,KACjB,aAAOxe,CAAOwK,EAAMtC,GAClBA,IAAmB,CAAA,EACnBxQ,MAAKg/C,IAAYqG,GAAS,CACxBlnD,KAAMA,OAER,MAAMg9C,EAAYn7C,MAAKg/C,EAAQ12C,OAAOwK,EAAMtC,GAC5C,UAAW2qC,IAAc,SACvB,MAAM,IAAImK,SAASnK,GAErB,OAAOA,CACR,CACD,cAAOqK,GACLxlD,MAAKg/C,EAAU,IAChB,CACD,2BAAOyG,CAAqBjqC,GAC1B,IAAIkqC,EAAUlqC,EAAOnL,UACrB,MAAOq1C,GAAW,EAAG,CACnB,MAAMC,EAAUD,EAChBA,EAAUlqC,EAAOnL,UACjB,MAAMlQ,EAAOwlD,GAAW,EAAID,EAC5B,GAAIvlD,IAAS,MAAQ,CACnBqb,EAAO7J,KAAK,GACZ,MAAMi0C,EAAOpqC,EAAOpK,aAAe,EACnC,MAAMy0C,EAAOrqC,EAAOpK,aAAe,EACnC,MAAM00C,EAAQtqC,EAAOpK,aAAe,EACpC,MAAM20C,EAAQvqC,EAAOpK,aAAe,EACpCoK,EAAO7J,KAAK,IACZ,MAAMq0C,EAAOxqC,EAAOvK,YACpB,MAAO,CACLoI,MAAOusC,EAAOE,EACdxsC,OAAQusC,EAAOE,EACf1M,iBAAkB,EAClB9C,gBAAiByP,EAEpB,CACF,CACD,MAAM,IAAIV,SAAS,qCACpB,EAOH,MAAMW,kBAAkBl4B,aACtB,WAAA9tB,CAAYub,EAAQuT,EAAa/K,GAC/B5jB,MAAM2uB,GACN/uB,KAAKwb,OAASA,EACdxb,KAAKqO,KAAOmN,EAAOnN,KACnBrO,KAAK+uB,YAAcA,EACnB/uB,KAAKgkB,OAASA,CACf,CACD,SAAIljB,GACF,OAAOvB,OAAOS,KAAM,QAASA,KAAKwb,OAAOlL,SAAStQ,KAAK+uB,aACxD,CACD,YAAAT,CAAaC,GAAa,CAC1B,SAAAF,CAAU7d,GACRxQ,KAAK0uB,YAAY,KAAMle,EACxB,CACD,WAAAke,CAAY5tB,EAAO0P,GACjB,GAAIxQ,KAAKmuB,IACP,OAAOnuB,KAAKwC,OAEd1B,IAAUd,KAAKc,MACfd,KAAKwC,OAAS+iD,SAASj9C,OAAOxH,EAAO0P,GACrCxQ,KAAKkuB,aAAeluB,KAAKwC,OAAOtD,OAChCc,KAAKmuB,IAAM,KACX,OAAOnuB,KAAKwC,MACb,CACD,iCAAImO,GACF,OAAO3Q,KAAKwb,OAAO9K,OACpB,EAKH,MAAMw1C,kBAAkBn4B,aACtB,WAAA9tB,CAAY6B,EAAKitB,EAAao3B,GAC5B/lD,MAAM2uB,GACN/uB,KAAK8B,IAAMA,EACX9B,KAAKqO,KAAOvM,EAAIuM,KAChBrO,KAAKomD,WAAa,EAClBpmD,KAAKqmD,WAAa,EAClB,MAAMC,EAAuB,KAC7B,MAAMC,EAAW,CACfJ,cACAvtB,WAAY,EACZ4tB,SAAU,IACVC,iBAAkB,IAAI1kD,WAAWukD,GACjCI,kBAAmB,IAAI3mC,YAAYumC,GACnCK,oBAAqB,IAAI5mC,YAAYumC,GACrCM,gBAAiB,IAAI7kD,WAAWukD,GAChCO,sBAAuB,GAEzB,IAAK,IAAIxlD,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAC5BklD,EAASE,iBAAiBplD,GAAKA,EAC/BklD,EAASG,kBAAkBrlD,GAAK,CACjC,CACDrB,KAAKumD,SAAWA,CACjB,CACD,QAAA/tB,CAAS30B,GACP,IAAIwiD,EAAarmD,KAAKqmD,WACtB,IAAID,EAAapmD,KAAKomD,WACtB,MAAOC,EAAaxiD,EAAG,CACrB,MAAM8B,EAAI3F,KAAK8B,IAAIuO,UACnB,GAAI1K,KAAO,EAAG,CACZ3F,KAAKmuB,IAAM,KACX,OAAO,IACR,CACDi4B,EAAaA,GAAc,EAAIzgD,EAC/B0gD,GAAc,CACf,CACDrmD,KAAKqmD,WAAaA,GAAcxiD,EAChC7D,KAAKomD,WAAaA,EAClBpmD,KAAK8mD,SAAW,KAChB,OAAOV,IAAeC,GAAc,GAAKxiD,GAAK,CAC/C,CACD,SAAAwqB,GACE,MAAM04B,EAAY,IAChBC,EAAmBD,EACrB,IAAIE,EAAuBF,EAAY,EACvC,IAAI1lD,EAAG6e,EAAG4F,EACV,MAAMygC,EAAWvmD,KAAKumD,SACtB,IAAKA,EACH,OAEF,MAAMJ,EAAcI,EAASJ,YAC7B,IAAIK,EAAWD,EAASC,SACxB,MAAMC,EAAmBF,EAASE,iBAClC,MAAMC,EAAoBH,EAASG,kBACnC,MAAMC,EAAsBJ,EAASI,oBACrC,IAAI/tB,EAAa2tB,EAAS3tB,WAC1B,IAAIsuB,EAAWX,EAASW,SACxB,MAAMN,EAAkBL,EAASK,gBACjC,IAAIC,EAAwBN,EAASM,sBACrC,IAAIM,EAAgB,EACpB,IAAIC,EAAsBpnD,KAAKkuB,aAC/B,IAAI1rB,EAASxC,KAAKsuB,aAAatuB,KAAKkuB,aAAe+4B,GACnD,IAAK5lD,EAAI,EAAGA,EAAI0lD,EAAW1lD,IAAK,CAC9B,MAAMlB,EAAOH,KAAKw4B,SAASI,GAC3B,MAAMyuB,EAAUR,EAAwB,EACxC,GAAI1mD,EAAO,IAAK,CACdymD,EAAgB,GAAKzmD,EACrB0mD,EAAwB,CAChC,KAAa,MAAI1mD,GAAQ,KAUZ,IAAIA,IAAS,IAAK,CACvBy4B,EAAa,EACb4tB,EAAW,IACXK,EAAwB,EACxB,QACR,CACQ7mD,KAAKmuB,IAAM,YACJnuB,KAAKumD,SACZ,KACD,CAlBC,GAAIpmD,EAAOqmD,EAAU,CACnBK,EAAwBH,EAAkBvmD,GAC1C,IAAK+f,EAAI2mC,EAAwB,EAAG/gC,EAAI3lB,EAAM+f,GAAK,EAAGA,IAAK,CACzD0mC,EAAgB1mC,GAAKumC,EAAiB3gC,GACtCA,EAAI6gC,EAAoB7gC,EACzB,CACX,MACU8gC,EAAgBC,KAA2BD,EAAgB,EAW9D,CACD,GAAIS,EAAS,CACXV,EAAoBH,GAAYU,EAChCR,EAAkBF,GAAYE,EAAkBQ,GAAY,EAC5DT,EAAiBD,GAAYI,EAAgB,GAC7CJ,IACA5tB,EAAa4tB,EAAWL,EAAcK,EAAWL,EAAc,EAAIvtB,EAAar3B,KAAKC,IAAID,KAAKrD,IAAIsoD,EAAWL,GAAe,kBAAqB,EAAG,IAAM,CAC3J,CACDe,EAAW/mD,EACXgnD,GAAiBN,EACjB,GAAII,EAAuBE,EAAe,CACxC,GACEF,GAAwBD,QACjBC,EAAuBE,GAChC3kD,EAASxC,KAAKsuB,aAAatuB,KAAKkuB,aAAe+4B,EAChD,CACD,IAAK/mC,EAAI,EAAGA,EAAI2mC,EAAuB3mC,IACrC1d,EAAO4kD,KAAyBR,EAAgB1mC,EAEnD,CACDqmC,EAASC,SAAWA,EACpBD,EAAS3tB,WAAaA,EACtB2tB,EAASW,SAAWA,EACpBX,EAASM,sBAAwBA,EACjC7mD,KAAKkuB,aAAek5B,CACrB,EAOH,MAAME,wBAAwBv5B,aAC5B,WAAA9tB,CAAY6B,EAAKitB,EAAa/K,GAC5B5jB,MAAM2uB,GACN,KAAM/K,aAAkB3X,MACtB,OAAOvK,EAET,MAAMylD,EAAYvnD,KAAKunD,UAAYvjC,EAAO11B,IAAI,cAAgB,EAC9D,GAAIi5D,GAAa,EACf,OAAOzlD,EAET,GAAIylD,IAAc,IAAMA,EAAY,IAAMA,EAAY,IACpD,MAAM,IAAI5mD,YAAY,0BAA0B4mD,KAElDvnD,KAAKquB,UAAYk5B,IAAc,EAAIvnD,KAAKwnD,cAAgBxnD,KAAKynD,aAC7DznD,KAAK8B,IAAMA,EACX9B,KAAKqO,KAAOvM,EAAIuM,KAChB,MAAMq5C,EAAS1nD,KAAK0nD,OAAS1jC,EAAO11B,IAAI,WAAa,EACrD,MAAM4yB,EAAOlhB,KAAKkhB,KAAO8C,EAAO11B,IAAI,MAAO,qBAAuB,EAClE,MAAMgjC,EAAUtxB,KAAKsxB,QAAUtN,EAAO11B,IAAI,YAAc,EACxD0R,KAAK2nD,SAAWD,EAASxmC,EAAO,GAAK,EACrClhB,KAAK4nD,SAAWt2B,EAAUo2B,EAASxmC,EAAO,GAAK,EAC/C,OAAOlhB,IACR,CACD,aAAAwnD,GACE,MAAMI,EAAW5nD,KAAK4nD,SACtB,MAAM15B,EAAeluB,KAAKkuB,aAC1B,MAAM1rB,EAASxC,KAAKsuB,aAAaJ,EAAe05B,GAChD,MAAM1mC,EAAOlhB,KAAKkhB,KAClB,MAAMwmC,EAAS1nD,KAAK0nD,OACpB,MAAMG,EAAW7nD,KAAK8B,IAAIwO,SAASs3C,GACnC5nD,KAAKmuB,KAAO05B,EAAS3oD,OACrB,GAAIc,KAAKmuB,IACP,OAEF,IAAI25B,EAAQ,EACVC,EAAS,EACX,IAAIC,EAAS,EACXC,EAAU,EACZ,IAAIl3C,EAAMmd,EACV,IAAI7sB,EACJ,GAAI6f,IAAS,GAAKwmC,IAAW,EAC3B,IAAKrmD,EAAI,EAAGA,EAAIumD,IAAYvmD,EAAG,CAC7B,IAAIsE,EAAIkiD,EAASxmD,GAAKymD,EACtBniD,GAAKA,GAAK,EACVA,GAAKA,GAAK,EACVA,GAAKA,GAAK,EACVmiD,GAASniD,EAAI,IAAM,EACnBnD,EAAOuO,KAASpL,CACjB,MACI,GAAIub,IAAS,EAAG,CACrB,IAAK7f,EAAI,EAAGA,EAAIqmD,IAAUrmD,EACxBmB,EAAOuO,KAAS82C,EAASxmD,GAE3B,KAAOA,EAAIumD,IAAYvmD,EAAG,CACxBmB,EAAOuO,GAAOvO,EAAOuO,EAAM22C,GAAUG,EAASxmD,GAC9C0P,GACD,CACP,MAAW,GAAImQ,IAAS,GAAI,CACtB,MAAMgnC,EAAgBR,EAAS,EAC/B,IAAKrmD,EAAI,EAAGA,EAAI6mD,IAAiB7mD,EAC/BmB,EAAOuO,KAAS82C,EAASxmD,GAE3B,KAAOA,EAAIumD,EAAUvmD,GAAK,EAAG,CAC3B,MAAM8mD,IAAQN,EAASxmD,GAAK,MAAS,IAAMwmD,EAASxmD,EAAI,GAAK,OAAUmB,EAAOuO,EAAMm3C,GAAiB,MAAS,IAAM1lD,EAAOuO,EAAMm3C,EAAgB,GAAK,KACtJ1lD,EAAOuO,KAASo3C,GAAO,EAAI,IAC3B3lD,EAAOuO,KAASo3C,EAAM,GACvB,CACP,KAAW,CACL,MAAMC,EAAY,IAAIrmD,WAAW2lD,EAAS,GAC1C,MAAMW,GAAW,GAAKnnC,GAAQ,EAC9B,IAAIhB,EAAI,EACNgG,EAAIgI,EACN,MAAMoD,EAAUtxB,KAAKsxB,QACrB,IAAKjwB,EAAI,EAAGA,EAAIiwB,IAAWjwB,EACzB,IAAK,IAAIinD,EAAK,EAAGA,EAAKZ,IAAUY,EAAI,CAClC,GAAIN,EAAS9mC,EAAM,CACjB4mC,EAAQA,GAAS,EAAID,EAAS3nC,KAAO,IACrC8nC,GAAU,CACX,CACDI,EAAUE,GAAMF,EAAUE,IAAOR,GAASE,EAAS9mC,GAAQmnC,EAC3DL,GAAU9mC,EACV6mC,EAASA,GAAU7mC,EAAOknC,EAAUE,GACpCL,GAAW/mC,EACX,GAAI+mC,GAAW,EAAG,CAChBzlD,EAAO0jB,KAAO6hC,GAAUE,EAAU,EAAI,IACtCA,GAAW,CACZ,CACF,CAECA,EAAU,IACZzlD,EAAO0jB,MAAQ6hC,GAAU,EAAIE,IAAYH,GAAS,GAAK,EAAIG,GAAW,GAEzE,CACDjoD,KAAKkuB,cAAgB05B,CACtB,CACD,YAAAH,GACE,MAAMG,EAAW5nD,KAAK4nD,SACtB,MAAMD,EAAW3nD,KAAK2nD,SACtB,MAAMJ,EAAYvnD,KAAK8B,IAAIuO,UAC3B,MAAMw3C,EAAW7nD,KAAK8B,IAAIwO,SAASs3C,GACnC5nD,KAAKmuB,KAAO05B,EAAS3oD,OACrB,GAAIc,KAAKmuB,IACP,OAEF,MAAMD,EAAeluB,KAAKkuB,aAC1B,MAAM1rB,EAASxC,KAAKsuB,aAAaJ,EAAe05B,GAChD,IAAIW,EAAU/lD,EAAOd,SAASwsB,EAAe05B,EAAU15B,GACnDq6B,EAAQrpD,SAAW,IACrBqpD,EAAU,IAAIxmD,WAAW6lD,IAE3B,IAAIvmD,EAEFmnD,EACA7iD,EAFAua,EAAIgO,EAGN,OAAQq5B,GACN,KAAK,EACH,IAAKlmD,EAAI,EAAGA,EAAIumD,IAAYvmD,EAC1BmB,EAAO0d,KAAO2nC,EAASxmD,GAEzB,MACF,KAAK,EACH,IAAKA,EAAI,EAAGA,EAAIsmD,IAAYtmD,EAC1BmB,EAAO0d,KAAO2nC,EAASxmD,GAEzB,KAAOA,EAAIumD,IAAYvmD,EAAG,CACxBmB,EAAO0d,GAAK1d,EAAO0d,EAAIynC,GAAYE,EAASxmD,GAAK,IACjD6e,GACD,CACD,MACF,KAAK,EACH,IAAK7e,EAAI,EAAGA,EAAIumD,IAAYvmD,EAC1BmB,EAAO0d,KAAOqoC,EAAQlnD,GAAKwmD,EAASxmD,GAAK,IAE3C,MACF,KAAK,EACH,IAAKA,EAAI,EAAGA,EAAIsmD,IAAYtmD,EAC1BmB,EAAO0d,MAAQqoC,EAAQlnD,IAAM,GAAKwmD,EAASxmD,GAE7C,KAAOA,EAAIumD,IAAYvmD,EAAG,CACxBmB,EAAO0d,IAAMqoC,EAAQlnD,GAAKmB,EAAO0d,EAAIynC,IAAa,GAAKE,EAASxmD,GAAK,IACrE6e,GACD,CACD,MACF,KAAK,EACH,IAAK7e,EAAI,EAAGA,EAAIsmD,IAAYtmD,EAAG,CAC7BmnD,EAAKD,EAAQlnD,GACbsE,EAAIkiD,EAASxmD,GACbmB,EAAO0d,KAAOsoC,EAAK7iD,CACpB,CACD,KAAOtE,EAAIumD,IAAYvmD,EAAG,CACxBmnD,EAAKD,EAAQlnD,GACb,MAAMonD,EAASF,EAAQlnD,EAAIsmD,GAC3B,MAAMe,EAAOlmD,EAAO0d,EAAIynC,GACxB,MAAMhjD,EAAI+jD,EAAOF,EAAKC,EACtB,IAAIE,EAAKhkD,EAAI+jD,EACTC,EAAK,IACPA,GAAMA,GAER,IAAIC,EAAKjkD,EAAI6jD,EACTI,EAAK,IACPA,GAAMA,GAER,IAAIC,EAAKlkD,EAAI8jD,EACTI,EAAK,IACPA,GAAMA,GAERljD,EAAIkiD,EAASxmD,GAEXmB,EAAO0d,KADLyoC,GAAMC,GAAMD,GAAME,EACNH,EAAO/iD,EACZijD,GAAMC,EACDL,EAAK7iD,EAEL8iD,EAAS9iD,CAE1B,CACD,MACF,QACE,MAAM,IAAIhF,YAAY,0BAA0B4mD,KAEpDvnD,KAAKkuB,cAAgB05B,CACtB,EAKH,MAAMkB,wBAAwB/6B,aAC5B,WAAA9tB,CAAY6B,EAAKitB,GACf3uB,MAAM2uB,GACN/uB,KAAK8B,IAAMA,EACX9B,KAAKqO,KAAOvM,EAAIuM,IACjB,CACD,SAAAggB,GACE,MAAM06B,EAAe/oD,KAAK8B,IAAIwO,SAAS,GACvC,IAAKy4C,GAAgBA,EAAa7pD,OAAS,GAAK6pD,EAAa,KAAO,IAAK,CACvE/oD,KAAKmuB,IAAM,KACX,MACD,CACD,IAAI3rB,EACJ,IAAI0rB,EAAeluB,KAAKkuB,aACxB,IAAIrqB,EAAIklD,EAAa,GACrB,GAAIllD,EAAI,IAAK,CACXrB,EAASxC,KAAKsuB,aAAaJ,EAAerqB,EAAI,GAC9CrB,EAAO0rB,KAAkB66B,EAAa,GACtC,GAAIllD,EAAI,EAAG,CACT,MAAMmtB,EAAShxB,KAAK8B,IAAIwO,SAASzM,GACjCrB,EAAOmL,IAAIqjB,EAAQ9C,GACnBA,GAAgBrqB,CACjB,CACP,KAAW,CACLA,EAAI,IAAMA,EACV,MAAMO,EAAI2kD,EAAa,GACvBvmD,EAASxC,KAAKsuB,aAAaJ,EAAerqB,EAAI,GAC9C,IAAK,IAAIxC,EAAI,EAAGA,EAAIwC,EAAGxC,IACrBmB,EAAO0rB,KAAkB9pB,CAE5B,CACDpE,KAAKkuB,aAAeA,CACrB,EAkBH,MAAM86B,GAAsB,IAC5B,SAASC,uBAAuBnoD,GAC9B,MAAMM,EAAS,GACbqH,EAAK3H,EAAM5B,OACb,IAAImC,EAAI,EACR,MAAOA,EAAIoH,EAAK,EACdrH,EAAOO,KAAKb,EAAMO,MAAQ,EAAIP,EAAMO,MAElCA,EAAIoH,GACNrH,EAAOO,KAAKb,EAAMO,IAEpB,OAAOoH,EAAK,IAAMxH,OAAOC,aAAaC,MAAM,KAAMC,EACpD,CACA,MAAM8nD,OACJ,WAAAjpD,EAAYkpD,MACVA,EAAK78C,KACLA,EAAI88C,aACJA,EAAe,MAAKC,aACpBA,EAAe,QAEfrpD,KAAKmpD,MAAQA,EACbnpD,KAAKsM,KAAOA,EACZtM,KAAKopD,aAAeA,EACpBppD,KAAKqpD,aAAeA,EACpBrpD,KAAKspD,WAAan7D,OAAO0d,OAAO,MAChC7L,KAAKupD,SAAW,EAChBvpD,KAAKwpD,QACN,CACD,MAAAA,GACExpD,KAAKypD,KAAOzpD,KAAKmpD,MAAMO,SACvB1pD,KAAK2pD,KAAO3pD,KAAKmpD,MAAMO,QACxB,CACD,KAAAz6B,GACE,GAAIjvB,KAAK2pD,gBAAgBz9C,KAAOlM,KAAK2pD,KAAKx9C,MAAQ,KAAM,CACtDnM,KAAKypD,KAAOzpD,KAAK2pD,KACjB3pD,KAAK2pD,KAAO,IAClB,KAAW,CACL3pD,KAAKypD,KAAOzpD,KAAK2pD,KACjB3pD,KAAK2pD,KAAO3pD,KAAKmpD,MAAMO,QACxB,CACF,CACD,QAAAE,GACE,IACE5pD,KAAKivB,QACL,OAAO,IACR,CAAC,MAAOlS,GACP,GAAIA,aAAaxK,qBACf,MAAMwK,EAER,OAAO,KACR,CACF,CACD,MAAA2sC,CAAOG,EAAkB,MACvB,MAAMJ,EAAOzpD,KAAKypD,KAClBzpD,KAAKivB,QACL,GAAIw6B,aAAgBv9C,IAClB,OAAQu9C,EAAKt9C,KACX,IAAK,KACH,OAAOnM,KAAK8pD,gBAAgBD,GAC9B,IAAK,IACH,MAAM7V,EAAQ,GACd,OAAQnkC,MAAM7P,KAAKypD,KAAM,MAAQzpD,KAAKypD,OAAS99C,EAC7CqoC,EAAMryC,KAAK3B,KAAK0pD,OAAOG,IAEzB,GAAI7pD,KAAKypD,OAAS99C,EAAK,CACrB,GAAI3L,KAAKqpD,aACP,OAAOrV,EAET,MAAM,IAAIxhC,mBAAmB,4BAC9B,CACDxS,KAAKivB,QACL,OAAO+kB,EACT,IAAK,KACH,MAAM3lC,EAAO,IAAIhC,KAAKrM,KAAKsM,MAC3B,OAAQuD,MAAM7P,KAAKypD,KAAM,OAASzpD,KAAKypD,OAAS99C,EAAK,CACnD,KAAM3L,KAAKypD,gBAAgBx9C,MAAO,CAChClO,KAAK,mDACLiC,KAAKivB,QACL,QACD,CACD,MAAMhhC,EAAM+R,KAAKypD,KAAK1pD,KACtBC,KAAKivB,QACL,GAAIjvB,KAAKypD,OAAS99C,EAChB,MAEF0C,EAAKV,IAAI1f,EAAK+R,KAAK0pD,OAAOG,GAC3B,CACD,GAAI7pD,KAAKypD,OAAS99C,EAAK,CACrB,GAAI3L,KAAKqpD,aACP,OAAOh7C,EAET,MAAM,IAAImE,mBAAmB,iCAC9B,CACD,GAAI3C,MAAM7P,KAAK2pD,KAAM,UACnB,OAAO3pD,KAAKopD,aAAeppD,KAAK+pD,WAAW17C,EAAMw7C,GAAmBx7C,EAEtErO,KAAKivB,QACL,OAAO5gB,EACT,QACE,OAAOo7C,EAGb,GAAI7rD,OAAOC,UAAU4rD,GAAO,CAC1B,GAAI7rD,OAAOC,UAAUmC,KAAKypD,OAAS55C,MAAM7P,KAAK2pD,KAAM,KAAM,CACxD,MAAM/6C,EAAM3B,IAAI3e,IAAIm7D,EAAMzpD,KAAKypD,MAC/BzpD,KAAKivB,QACLjvB,KAAKivB,QACL,OAAOrgB,CACR,CACD,OAAO66C,CACR,CACD,cAAWA,IAAS,UACdI,EACKA,EAAgBG,cAAcP,GAIlCA,CACR,CACD,0BAAAQ,CAA2BzuC,GACzB,MAAMvlB,EAAI,GACRi0D,EAAI,GACJC,EAAQ,GACRC,EAAK,GACLC,EAAK,GACLC,EAAM,EACR,MAAMC,cACFA,GACEvqD,KAAKmpD,MACTjW,EAAW13B,EAAOzK,IAClBlN,EAAI,GACN,IACEuQ,EACAo2C,EAFEC,EAAQ,EAGZ,OAAQr2C,EAAKoH,EAAOnL,cAAgB,EAClC,GAAIo6C,IAAU,EACZA,EAAQr2C,IAAOne,EAAI,EAAI,OAClB,GAAIw0D,IAAU,EACnBA,EAAQr2C,IAAO81C,EAAI,EAAI,OAEvB,GAAI91C,IAAO+1C,GAAS/1C,IAAOg2C,GAAMh2C,IAAOi2C,EAAI,CAC1CG,EAAahvC,EAAOzK,IACpB,MAAM25C,EAAiBlvC,EAAOxK,UAAUnN,GACxC,MAAM4E,EAAKiiD,EAAexrD,OAC1B,GAAIuJ,IAAO,EACT,MAEF,IAAK,IAAIpH,EAAI,EAAGA,EAAIoH,EAAIpH,IAAK,CAC3B+S,EAAKs2C,EAAerpD,GACpB,IAAI+S,IAAOk2C,GAAOI,EAAerpD,EAAI,KAAOipD,KAGxCl2C,IAAOg2C,GAAMh2C,IAAOi2C,IAAOj2C,EAAK+1C,GAAS/1C,EAAK,MAAO,CACvDq2C,EAAQ,EACR,KACD,CACF,CACD,GAAIA,IAAU,EACZ,SAEF,IAAKF,EAAe,CAClBpsD,KAAK,oEACL,QACD,CACD,MAAMwsD,EAAW,IAAIC,MAAM,IAAIpxC,OAAOkxC,EAAevlD,SAAUolD,GAC/DI,EAASE,eAAiB,OAC1B,IAAIC,EAAU,EACd,MAAO,KAAM,CACX,MAAMC,EAAUJ,EAASjB,SACzB,GAAIqB,IAAYp/C,EAAK,CACnB8+C,EAAQ,EACR,KACD,CACD,GAAIM,aAAmB7+C,IAAvB,CACE,MAAM8+C,EAAeT,EAAcQ,EAAQ5+C,KAC3C,IAAK6+C,EAAc,CACjBP,EAAQ,EACR,KAChB,CAAqB,GAAIO,EAAaC,aAAeH,GAAWE,EAAaF,QAAUA,IAAYE,EAAaF,QAChG,MAEFA,EAAU,CAEX,MACDA,GACD,CACD,GAAIL,IAAU,EACZ,KAEZ,MACUA,EAAQ,EAId,GAAIr2C,KAAQ,EAAG,CACbjW,KAAK,+FACL,GAAIqsD,EAAY,CACdrsD,KAAK,4DACLqd,EAAO7J,OAAO6J,EAAOzK,IAAMy5C,GAC5B,CACF,CACD,IAAIzW,EAAY,EAChBv4B,EAAO7J,MAAMoiC,GACb3/B,EAAKoH,EAAO3K,WACZ2K,EAAO7J,KAAKoiC,GACP5/B,aAAaC,IAChB2/B,IAEF,OAAOv4B,EAAOzK,IAAMgjC,EAAYb,CACjC,CACD,4BAAAgY,CAA6B1vC,GAC3B,MAAM03B,EAAW13B,EAAOzK,IACxB,IACE3M,EACA+mD,EAFEC,EAAW,MAGf,OAAQhnD,EAAIoX,EAAOnL,cAAgB,EACjC,GAAIjM,IAAM,IAAV,CAGA,OAAQoX,EAAOnL,WACb,KAAK,EACH,MACF,KAAK,IACHmL,EAAO7J,MAAM,GACb,MACF,KAAK,IACHy5C,EAAW,KACX,MACF,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,IACHD,EAAe3vC,EAAOvK,YAClBk6C,EAAe,EACjB3vC,EAAO7J,KAAKw5C,EAAe,GAE3B3vC,EAAO7J,MAAM,GAEf,MAEJ,GAAIy5C,EACF,KAzDD,CA4DH,MAAMlsD,EAASsc,EAAOzK,IAAMmiC,EAC5B,GAAI9uC,KAAO,EAAG,CACZjG,KAAK,oFACLqd,EAAO7J,MAAMzS,GACb,OAAOc,KAAKiqD,2BAA2BzuC,EACxC,CACDxb,KAAKqrD,mBAAmB7vC,GACxB,OAAOtc,CACR,CACD,gCAAAosD,CAAiC9vC,GAC/B,MAAM+vC,EAAQ,IACZC,EAAK,GACP,MAAMtY,EAAW13B,EAAOzK,IACxB,IAAIqD,EACJ,OAAQA,EAAKoH,EAAOnL,cAAgB,EAClC,GAAI+D,IAAOm3C,EAAO,CAChB,MAAME,EAAWjwC,EAAOzK,IACxBqD,EAAKoH,EAAO3K,WACZ,MAAOsD,aAAaC,GAAK,CACvBoH,EAAO7J,OACPyC,EAAKoH,EAAO3K,UACb,CACD,GAAIuD,IAAOo3C,EAAI,CACbhwC,EAAO7J,OACP,KACD,CACD,GAAI6J,EAAOzK,IAAM06C,EAAU,CACzB,MAAMC,EAAUlwC,EAAOxK,UAAU,GACjC,GAAI06C,EAAQ,KAAO,IAAQA,EAAQ,KAAO,GACxC,KAEH,CACF,CAEH,MAAMxsD,EAASsc,EAAOzK,IAAMmiC,EAC5B,GAAI9+B,KAAQ,EAAG,CACbjW,KAAK,wFACLqd,EAAO7J,MAAMzS,GACb,OAAOc,KAAKiqD,2BAA2BzuC,EACxC,CACDxb,KAAKqrD,mBAAmB7vC,GACxB,OAAOtc,CACR,CACD,iCAAAysD,CAAkCnwC,GAChC,MAAMgwC,EAAK,GACX,MAAMtY,EAAW13B,EAAOzK,IACxB,IAAIqD,EACJ,OAAQA,EAAKoH,EAAOnL,cAAgB,EAClC,GAAI+D,IAAOo3C,EACT,MAGJ,MAAMtsD,EAASsc,EAAOzK,IAAMmiC,EAC5B,GAAI9+B,KAAQ,EAAG,CACbjW,KAAK,yFACLqd,EAAO7J,MAAMzS,GACb,OAAOc,KAAKiqD,2BAA2BzuC,EACxC,CACDxb,KAAKqrD,mBAAmB7vC,GACxB,OAAOtc,CACR,CACD,kBAAAmsD,CAAmB7vC,GACjB,MAAMvlB,EAAI,GACRi0D,EAAI,GACN,IACE91C,EADEq2C,EAAQ,EAEZ,OAAQr2C,EAAKoH,EAAOnL,cAAgB,EAClC,GAAIo6C,IAAU,EACZA,EAAQr2C,IAAOne,EAAI,EAAI,OAClB,GAAIw0D,IAAU,EACnBA,EAAQr2C,IAAO81C,EAAI,EAAI,OAClB,GAAIO,IAAU,EACnB,KAGL,CACD,eAAAX,CAAgBD,GACd,MAAMV,EAAQnpD,KAAKmpD,MACnB,MAAM3tC,EAAS2tC,EAAM3tC,OACrB,MAAMowC,EAAUz9D,OAAO0d,OAAO,MAC9B,IAAIggD,EACJ,OAAQh8C,MAAM7P,KAAKypD,KAAM,OAASzpD,KAAKypD,OAAS99C,EAAK,CACnD,KAAM3L,KAAKypD,gBAAgBx9C,MACzB,MAAM,IAAItL,YAAY,wCAExB,MAAM1S,EAAM+R,KAAKypD,KAAK1pD,KACtBC,KAAKivB,QACL,GAAIjvB,KAAKypD,OAAS99C,EAChB,MAEFigD,EAAQ39D,GAAO+R,KAAK0pD,OAAOG,EAC5B,CACGV,EAAM2C,uBAAyB,IACjCD,EAAarwC,EAAOzK,IAAMo4C,EAAM2C,qBAElC,MAAMj9B,EAAS7uB,KAAKsM,KAAKiX,WAAWqoC,EAAQh1D,GAAKg1D,EAAQG,QACzD,IAAIC,EACJ,GAAIn9B,aAAkB5iB,KACpB+/C,EAAan9B,EAAO9uB,UACf,GAAI4D,MAAM2J,QAAQuhB,GAAS,CAChC,MAAMo9B,EAAajsD,KAAKsM,KAAKiX,WAAWsL,EAAO,IAC3Co9B,aAAsBhgD,OACxB+/C,EAAaC,EAAWlsD,KAE3B,CACD,MAAMmzC,EAAW13B,EAAOzK,IACxB,IAAI7R,EACJ,OAAQ8sD,GACN,IAAK,MACL,IAAK,YACH9sD,EAASc,KAAKkrD,6BAA6B1vC,GAC3C,MACF,IAAK,MACL,IAAK,gBACHtc,EAASc,KAAKsrD,iCAAiC9vC,GAC/C,MACF,IAAK,MACL,IAAK,iBACHtc,EAASc,KAAK2rD,kCAAkCnwC,GAChD,MACF,QACEtc,EAASc,KAAKiqD,2BAA2BzuC,GAE7C,IAAI+G,EACJ,GAAIrjB,EAAS8pD,IAAuB6C,EAAa,EAAG,CAClD,MAAMK,EAAmB1wC,EAAOzK,IAChCyK,EAAOzK,IAAMo4C,EAAM2C,oBACnBvpC,EAAW0mC,uBAAuBztC,EAAOlL,SAASu7C,EAAa3sD,IAC/Dsc,EAAOzK,IAAMm7C,EACb,MAAMC,EAAansD,KAAKspD,WAAW/mC,GACnC,GAAI4pC,SAAeprD,EAAW,CAC5Bf,KAAK2pD,KAAOz9C,IAAI5d,IAAI,MACpB0R,KAAKivB,QACLk9B,EAAWv6C,QACX,OAAOu6C,CACR,CACF,CACD,MAAM99C,EAAO,IAAIhC,KAAKrM,KAAKsM,MAC3B,IAAK,MAAMre,KAAO29D,EAChBv9C,EAAKV,IAAI1f,EAAK29D,EAAQ39D,IAExB,IAAIm+D,EAAc5wC,EAAO1J,cAAcohC,EAAUh0C,EAAQmP,GACrDw7C,IACFuC,EAAcvC,EAAgBwC,aAAaD,EAAaltD,IAE1DktD,EAAcpsD,KAAK6uB,OAAOu9B,EAAa/9C,EAAMnP,GAC7CktD,EAAY/9C,KAAOA,EACnB,GAAIkU,SAAaxhB,EAAW,CAC1BqrD,EAAY7pC,SAAW,iBAAgBviB,KAAKupD,SAC5CvpD,KAAKspD,WAAW/mC,GAAY6pC,CAC7B,CACDpsD,KAAK2pD,KAAOz9C,IAAI5d,IAAI,MACpB0R,KAAKivB,QACL,OAAOm9B,CACR,CACD,EAAAE,CAAkBpZ,GAChB,MAAM13B,OACJA,GACExb,KAAKmpD,MACT3tC,EAAOzK,IAAMmiC,EACb,MAAMqZ,EAAoB,KAC1B,MAAMC,EAAkB,EACxB,MAAMC,EAAgB,IAAI1qD,WAAW,CAAC,IAAM,IAAM,MAClD,MAAM2qD,EAAYD,EAAcvtD,OAChC,MAAMytD,EAAoB,CAAC,IAAI5qD,WAAW,CAAC,IAAM,IAAM,IAAM,IAAM,GAAM,MAAQ,IAAIA,WAAW,CAAC,IAAM,IAAM,IAAM,GAAM,MAAQ,IAAIA,WAAW,CAAC,IAAM,IAAM,IAAM,IAAM,MACzK,MAAM6qD,EAAeJ,EAAkBE,EACvC,MAAOlxC,EAAOzK,IAAMyK,EAAO/J,IAAK,CAC9B,MAAMo7C,EAAYrxC,EAAOxK,UAAUu7C,GACnC,MAAMO,EAAaD,EAAU3tD,OAASstD,EACtC,GAAIM,GAAc,EAChB,MAEF,IAAI/7C,EAAM,EACV,MAAOA,EAAM+7C,EAAY,CACvB,IAAI5sC,EAAI,EACR,MAAOA,EAAIwsC,GAAaG,EAAU97C,EAAMmP,KAAOusC,EAAcvsC,GAC3DA,IAEF,GAAIA,GAAKwsC,EAAW,CAClB,IAAIK,EAAQ,MACZ,IAAK,MAAMC,KAAQL,EAAmB,CACpC,MAAMM,EAAUD,EAAK9tD,OACrB,IAAIgnB,EAAI,EACR,MAAOA,EAAI+mC,GAAWJ,EAAU97C,EAAMmP,EAAIgG,KAAO8mC,EAAK9mC,GACpDA,IAEF,GAAIA,GAAK0mC,EAAc,CACrBG,EAAQ,KACR,KACD,CACD,GAAI7mC,GAAK+mC,EAAS,CAChB,MAAMC,EAAWL,EAAU97C,EAAMmP,EAAIgG,GACrC,GAAI/R,aAAa+4C,GAAW,CAC1BnvD,KAAK,UAAU8C,cAAc,IAAI4rD,KAAkBO,8CACnDD,EAAQ,IACT,CACD,KACD,CACF,CACD,GAAIA,EAAO,CACTvxC,EAAOzK,KAAOA,EACd,OAAOyK,EAAOzK,IAAMmiC,CACrB,CACF,CACDniC,GACD,CACDyK,EAAOzK,KAAO+7C,CACf,CACD,OAAQ,CACT,CACD,UAAA/C,CAAW17C,EAAMw7C,GACf,MAAMV,EAAQnpD,KAAKmpD,MACnB,IAAI3tC,EAAS2tC,EAAM3tC,OACnB2tC,EAAMgE,iBACN,MAAMja,EAAW13B,EAAOzK,IAAM,EAC9B,IAAI7R,EAASmP,EAAK/f,IAAI,UACtB,IAAKsP,OAAOC,UAAUqB,GAAS,CAC7BnB,KAAK,eAAemB,GAAUA,EAAO4E,0BACrC5E,EAAS,CACV,CACDsc,EAAOzK,IAAMmiC,EAAWh0C,EACxBiqD,EAAMiE,WACN,GAAIptD,KAAK4pD,YAAc/5C,MAAM7P,KAAK2pD,KAAM,aACtC3pD,KAAKivB,YACA,CACL/vB,EAASc,MAAKssD,EAAkBpZ,GAChC,GAAIh0C,EAAS,EACX,MAAM,IAAIyB,YAAY,8BAExBwoD,EAAMiE,WACNptD,KAAKivB,QACLjvB,KAAKivB,OACN,CACDjvB,KAAKivB,QACLzT,EAASA,EAAO1J,cAAcohC,EAAUh0C,EAAQmP,GAC5Cw7C,IACFruC,EAASquC,EAAgBwC,aAAa7wC,EAAQtc,IAEhDsc,EAASxb,KAAK6uB,OAAOrT,EAAQnN,EAAMnP,GACnCsc,EAAOnN,KAAOA,EACd,OAAOmN,CACR,CACD,MAAAqT,CAAOrT,EAAQnN,EAAMnP,GACnB,IAAI2vB,EAASxgB,EAAK/f,IAAI,IAAK,UAC3B,IAAI01B,EAAS3V,EAAK/f,IAAI,KAAM,eAC5B,GAAIugC,aAAkB5iB,KAAM,CACtBtI,MAAM2J,QAAQ0W,IAChB7lB,KAAK,gEAEP,OAAO6B,KAAKqtD,WAAW7xC,EAAQqT,EAAO9uB,KAAMb,EAAQ8kB,EACrD,CACD,IAAI+K,EAAc7vB,EAClB,GAAIyE,MAAM2J,QAAQuhB,GAAS,CACzB,MAAMy+B,EAAcz+B,EACpB,MAAM0+B,EAAcvpC,EACpB,IAAK,IAAI3iB,EAAI,EAAGoH,EAAK6kD,EAAYpuD,OAAQmC,EAAIoH,IAAMpH,EAAG,CACpDwtB,EAAS7uB,KAAKsM,KAAKiX,WAAW+pC,EAAYjsD,IAC1C,KAAMwtB,aAAkB5iB,MACtB,MAAM,IAAItL,YAAY,oBAAoBkuB,MAE5C7K,EAAS,KACLrgB,MAAM2J,QAAQigD,IAAgBlsD,KAAKksD,IACrCvpC,EAAShkB,KAAKsM,KAAKiX,WAAWgqC,EAAYlsD,KAE5Cma,EAASxb,KAAKqtD,WAAW7xC,EAAQqT,EAAO9uB,KAAMgvB,EAAa/K,GAC3D+K,EAAc,IACf,CACF,CACD,OAAOvT,CACR,CACD,UAAA6xC,CAAW7xC,EAAQzb,EAAMgvB,EAAa/K,GACpC,GAAI+K,IAAgB,EAAG,CACrB5wB,KAAK,UAAU4B,cACf,OAAO,IAAI6Z,UACZ,CACD,IACE,OAAQ7Z,GACN,IAAK,KACL,IAAK,cACH,OAAIikB,EACK,IAAIsjC,gBAAgB,IAAIpzB,YAAY1Y,EAAQuT,GAAcA,EAAa/K,GAEzE,IAAIkQ,YAAY1Y,EAAQuT,GACjC,IAAK,MACL,IAAK,YACH,IAAIo3B,EAAc,EAClB,GAAIniC,EAAQ,CACNA,EAAOpW,IAAI,iBACbu4C,EAAcniC,EAAO11B,IAAI,gBAE3B,OAAO,IAAIg5D,gBAAgB,IAAIpB,UAAU1qC,EAAQuT,EAAao3B,GAAcp3B,EAAa/K,EAC1F,CACD,OAAO,IAAIkiC,UAAU1qC,EAAQuT,EAAao3B,GAC5C,IAAK,MACL,IAAK,YACH,OAAO,IAAInN,WAAWx9B,EAAQuT,EAAa/K,GAC7C,IAAK,MACL,IAAK,YACH,OAAO,IAAIiiC,UAAUzqC,EAAQuT,EAAa/K,GAC5C,IAAK,MACL,IAAK,gBACH,OAAO,IAAIqL,cAAc7T,EAAQuT,GACnC,IAAK,MACL,IAAK,iBACH,OAAO,IAAIU,eAAejU,EAAQuT,GACpC,IAAK,MACL,IAAK,iBACH,OAAO,IAAI2E,eAAelY,EAAQuT,EAAa/K,GACjD,IAAK,KACL,IAAK,kBACH,OAAO,IAAI8kC,gBAAgBttC,EAAQuT,GACrC,IAAK,cACH,OAAO,IAAIgd,YAAYvwB,EAAQuT,EAAa/K,GAEhD7lB,KAAK,WAAW4B,wBAChB,OAAOyb,CACR,CAAC,MAAOhT,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,oBAAoBqK,MACzB,OAAO,IAAIoR,UACZ,CACF,EAEH,MAAM4zC,GAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnxB,SAASC,WAAWr5C,GAClB,OAAIA,GAAM,IAAQA,GAAM,GACfA,EAAK,GAEVA,GAAM,IAAQA,GAAM,IAAQA,GAAM,IAAQA,GAAM,IAC7B,GAAbA,EAAK,KAEP,CACV,CACA,MAAMw2C,MACJ,WAAA3qD,CAAYub,EAAQ+uC,EAAgB,MAClCvqD,KAAKwb,OAASA,EACdxb,KAAKotD,WACLptD,KAAKoB,OAAS,GACdpB,KAAKuqD,cAAgBA,EACrBvqD,KAAK0tD,kBAAoB,EACzB1tD,KAAK8rD,qBAAuB,CAC7B,CACD,QAAAsB,GACE,OAAOptD,KAAK2tD,YAAc3tD,KAAKwb,OAAOnL,SACvC,CACD,QAAAu9C,GACE,OAAO5tD,KAAKwb,OAAO3K,UACpB,CACD,SAAAg9C,GACE,IAAIz5C,EAAKpU,KAAK2tD,YACd,IAAIG,EAAY,MAChB,IAAIC,EAAW,EACf,IAAIlhC,EAAO,EACX,GAAIzY,IAAO,GAAM,CACfyY,GAAQ,EACRzY,EAAKpU,KAAKotD,WACNh5C,IAAO,KACTA,EAAKpU,KAAKotD,WAElB,MAAeh5C,IAAO,KAChBA,EAAKpU,KAAKotD,YAEZ,GAAIh5C,IAAO,IAAQA,IAAO,GACxB,GACEA,EAAKpU,KAAKotD,iBACHh5C,IAAO,IAAQA,IAAO,IAEjC,GAAIA,IAAO,GAAM,CACf25C,EAAW,GACX35C,EAAKpU,KAAKotD,UACX,CACD,GAAIh5C,EAAK,IAAQA,EAAK,GAAM,CAC1B,MAAMpW,EAAM,mBAAmBiD,OAAOC,aAAakT,gBAAiBA,KACpE,GAAID,aAAaC,IAAOA,KAAQ,EAAG,CACjCrW,KAAK,sBAAsBC,OAC3B,OAAO,CACR,CACD,MAAM,IAAI2C,YAAY3C,EACvB,CACD,IAAIgwD,EAAY55C,EAAK,GACrB,IAAI65C,EAAa,EACjB,IAAIC,EAAiB,EACrB,OAAQ95C,EAAKpU,KAAKotD,aAAe,EAC/B,GAAIh5C,GAAM,IAAQA,GAAM,GAAM,CAC5B,MAAM+5C,EAAe/5C,EAAK,GAC1B,GAAI05C,EACFG,EAAaA,EAAa,GAAKE,MAC1B,CACDJ,IAAa,IACfA,GAAY,IAEdC,EAAYA,EAAY,GAAKG,CAC9B,CACT,MAAa,GAAI/5C,IAAO,GAAM,CACtB,GAAI25C,IAAa,EAGf,MAFAA,EAAW,CAIrB,MAAa,GAAI35C,IAAO,GAChBjW,KAAK,wDACA,IAAIiW,IAAO,IAAQA,IAAO,IAU/B,MATAA,EAAKpU,KAAK4tD,WACV,GAAIx5C,IAAO,IAAQA,IAAO,GAAM,CAC9B85C,EAAiB95C,IAAO,IAAQ,EAAI,EACpCpU,KAAKotD,UACN,MAAM,GAAIh5C,EAAK,IAAQA,EAAK,GAC3B,MAEF05C,EAAY,IAGb,CAECC,IAAa,IACfC,GAAaD,GAEXD,IACFE,GAAa,KAAOE,EAAiBD,IAEvC,OAAOphC,EAAOmhC,CACf,CACD,SAAAt8C,GACE,IAAI08C,EAAW,EACf,IAAIzxC,EAAO,MACX,MAAMvb,EAASpB,KAAKoB,OACpBA,EAAOlC,OAAS,EAChB,IAAIkV,EAAKpU,KAAKotD,WACd,MAAO,KAAM,CACX,IAAIiB,EAAe,MACnB,OAAQj6C,EAAK,GACX,KAAM,EACJjW,KAAK,uBACLwe,EAAO,KACP,MACF,KAAK,KACDyxC,EACFhtD,EAAOO,KAAK,KACZ,MACF,KAAK,GACH,KAAMysD,IAAa,EAAG,CACpBpuD,KAAKotD,WACLzwC,EAAO,IACnB,MACYvb,EAAOO,KAAK,KAEd,MACF,KAAK,GACHyS,EAAKpU,KAAKotD,WACV,OAAQh5C,GACN,KAAM,EACJjW,KAAK,uBACLwe,EAAO,KACP,MACF,KAAK,IACHvb,EAAOO,KAAK,MACZ,MACF,KAAK,IACHP,EAAOO,KAAK,MACZ,MACF,KAAK,IACHP,EAAOO,KAAK,MACZ,MACF,KAAK,GACHP,EAAOO,KAAK,MACZ,MACF,KAAK,IACHP,EAAOO,KAAK,MACZ,MACF,KAAK,GACL,KAAK,GACL,KAAK,GACHP,EAAOO,KAAKV,OAAOC,aAAakT,IAChC,MACF,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,IAAI7M,EAAI6M,EAAK,GACbA,EAAKpU,KAAKotD,WACViB,EAAe,KACf,GAAIj6C,GAAM,IAAQA,GAAM,GAAM,CAC5B7M,GAAKA,GAAK,IAAM6M,EAAK,IACrBA,EAAKpU,KAAKotD,WACV,GAAIh5C,GAAM,IAAQA,GAAM,GAAM,CAC5Bi6C,EAAe,MACf9mD,GAAKA,GAAK,IAAM6M,EAAK,GACtB,CACF,CACDhT,EAAOO,KAAKV,OAAOC,aAAaqG,IAChC,MACF,KAAK,GACCvH,KAAK4tD,aAAe,IACtB5tD,KAAKotD,WAEP,MACF,KAAK,GACH,MACF,QACEhsD,EAAOO,KAAKV,OAAOC,aAAakT,IAChC,MAEJ,MACF,QACEhT,EAAOO,KAAKV,OAAOC,aAAakT,IAChC,MAEJ,GAAIuI,EACF,MAEG0xC,IACHj6C,EAAKpU,KAAKotD,WAEb,CACD,OAAOhsD,EAAOQ,KAAK,GACpB,CACD,OAAA0sD,GACE,IAAIl6C,EAAIm6C,EACR,MAAMntD,EAASpB,KAAKoB,OACpBA,EAAOlC,OAAS,EAChB,OAAQkV,EAAKpU,KAAKotD,aAAe,IAAMI,GAAap5C,GAClD,GAAIA,IAAO,GAAM,CACfA,EAAKpU,KAAKotD,WACV,GAAII,GAAap5C,GAAK,CACpBjW,KAAK,8EACLiD,EAAOO,KAAK,KACZ,KACD,CACD,MAAM4F,EAAIkmD,WAAWr5C,GACrB,GAAI7M,KAAO,EAAG,CACZgnD,EAAan6C,EACbA,EAAKpU,KAAKotD,WACV,MAAMvmD,EAAK4mD,WAAWr5C,GACtB,GAAIvN,KAAQ,EAAG,CACb1I,KAAK,iCAAiC8C,OAAOC,aAAakT,8BAC1DhT,EAAOO,KAAK,IAAKV,OAAOC,aAAaqtD,IACrC,GAAIf,GAAap5C,GACf,MAEFhT,EAAOO,KAAKV,OAAOC,aAAakT,IAChC,QACD,CACDhT,EAAOO,KAAKV,OAAOC,aAAaqG,GAAK,EAAIV,GACnD,MACUzF,EAAOO,KAAK,IAAKV,OAAOC,aAAakT,GAE/C,MACQhT,EAAOO,KAAKV,OAAOC,aAAakT,IAGhChT,EAAOlC,OAAS,KAClBf,KAAK,kDAAkDiD,EAAOlC,UAEhE,OAAO+M,KAAK3d,IAAI8S,EAAOQ,KAAK,IAC7B,CACD,cAAAipD,CAAez2C,GACb,MAAMo6C,EAA0B,EAC5BxuD,KAAK0tD,sBAAwBc,EAI7BxuD,KAAK0tD,kBAAoBc,GAG7BrwD,KAAK,8CAA8CiW,KANjDjW,KAAK,yDAOR,CACD,YAAAswD,GACE,MAAMrtD,EAASpB,KAAKoB,OACpBA,EAAOlC,OAAS,EAChB,IAAIkV,EAAKpU,KAAK2tD,YACd,IAAIj+B,GAAc,EAChBG,GAAS,EACX7vB,KAAK0tD,kBAAoB,EACzB,MAAO,KAAM,CACX,GAAIt5C,EAAK,EAAG,CACVjW,KAAK,2BACL,KACR,CAAa,GAAIiW,IAAO,GAAM,CACtBpU,KAAKotD,WACL,KACD,CAAM,GAAII,GAAap5C,KAAQ,EAAzB,CAILyb,EAAQ49B,WAAWr5C,GACnB,GAAIyb,KAAW,EACb7vB,KAAK6qD,eAAez2C,QACf,GAAIsb,KAAgB,EACzBA,EAAaG,MACR,CACLzuB,EAAOO,KAAKV,OAAOC,aAAawuB,GAAc,EAAIG,IAClDH,GAAc,CACf,CACDtb,EAAKpU,KAAKotD,UACX,MAbCh5C,EAAKpU,KAAKotD,UAcb,CACG19B,KAAgB,GAClBtuB,EAAOO,KAAKV,OAAOC,aAAawuB,GAAc,IAEhD,OAAOtuB,EAAOQ,KAAK,GACpB,CACD,MAAA8nD,GACE,IAAIgF,EAAU,MACd,IAAIt6C,EAAKpU,KAAK2tD,YACd,MAAO,KAAM,CACX,GAAIv5C,EAAK,EACP,OAAOzI,EAET,GAAI+iD,EACEt6C,IAAO,IAAQA,IAAO,KACxBs6C,EAAU,YAEP,GAAIt6C,IAAO,GAChBs6C,EAAU,UACL,GAAIlB,GAAap5C,KAAQ,EAC9B,MAEFA,EAAKpU,KAAKotD,UACX,CACD,OAAQh5C,EAAK,GACX,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAOpU,KAAK6tD,YACd,KAAK,GACH,OAAO7tD,KAAK0R,YACd,KAAK,GACH,OAAO1R,KAAKsuD,UACd,KAAK,GACHtuD,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAI,KACjB,KAAK,GACH0R,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAI,KACjB,KAAK,GACH8lB,EAAKpU,KAAKotD,WACV,GAAIh5C,IAAO,GAAM,CACfpU,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAI,KAChB,CACD,OAAO0R,KAAKyuD,eACd,KAAK,GACHr6C,EAAKpU,KAAKotD,WACV,GAAIh5C,IAAO,GAAM,CACfpU,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAI,KAChB,CACD,OAAO4d,IAAI5d,IAAI,KACjB,KAAK,IACH0R,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAI,KACjB,KAAK,IACH0R,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAI,KACjB,KAAK,GACH0R,KAAKotD,WACL,MAAM,IAAIzsD,YAAY,sBAAsByT,KAEhD,IAAItS,EAAMb,OAAOC,aAAakT,GAC9B,GAAIA,EAAK,IAAQA,EAAK,IAAM,CAC1B,MAAMu6C,EAAS3uD,KAAK4tD,WACpB,GAAIe,GAAU,IAAQA,GAAU,IAAM,CACpC3uD,KAAKotD,WACL,OAAOlhD,IAAI5d,IAAIwT,EAChB,CACF,CACD,MAAMyoD,EAAgBvqD,KAAKuqD,cAC3B,IAAIqE,EAAoBrE,IAAgBzoD,UAASf,EACjD,OAAQqT,EAAKpU,KAAKotD,aAAe,IAAMI,GAAap5C,GAAK,CACvD,MAAMy6C,EAAkB/sD,EAAMb,OAAOC,aAAakT,GAClD,GAAIw6C,GAAqBrE,EAAcsE,UAAqB9tD,EAC1D,MAEF,GAAIe,EAAI5C,SAAW,IACjB,MAAM,IAAIyB,YAAY,2BAA2BmB,EAAI5C,UAEvD4C,EAAM+sD,EACND,EAAoBrE,IAAgBzoD,UAASf,CAC9C,CACD,GAAIe,IAAQ,OACV,OAAO,KAET,GAAIA,IAAQ,QACV,OAAO,MAET,GAAIA,IAAQ,OACV,OAAO,KAELA,IAAQ,OACV9B,KAAK8rD,oBAAsB9rD,KAAKwb,OAAOzK,KAEzC,OAAO7E,IAAI5d,IAAIwT,EAChB,CACD,cAAAqrD,GACE,IAAI/4C,EAAKpU,KAAK2tD,YACd,MAAOv5C,GAAM,EAAG,CACd,GAAIA,IAAO,GAAM,CACfA,EAAKpU,KAAKotD,WACNh5C,IAAO,IACTpU,KAAKotD,WAEP,KACR,CAAa,GAAIh5C,IAAO,GAAM,CACtBpU,KAAKotD,WACL,KACD,CACDh5C,EAAKpU,KAAKotD,UACX,CACF,EAEH,MAAM0B,cACJ,aAAOjjD,CAAO2P,GACZ,SAASuzC,OAAOC,EAASjvD,EAAMkvD,EAAiB,OAC9C,MAAM1gE,EAAMygE,EAAQ1gE,IAAIyR,GACxB,GAAInC,OAAOC,UAAUtP,KAAS0gE,EAAiB1gE,GAAO,EAAIA,EAAM,GAC9D,OAAOA,EAET,MAAM,IAAI8P,MAAM,QAAQ0B,2DACzB,CACD,SAASmvD,SAASF,GAChB,MAAMG,EAAQH,EAAQ1gE,IAAI,KAC1B,IAAI8gE,EACJ,GAAIzrD,MAAM2J,QAAQ6hD,MAAYC,EAAcD,EAAMjwD,UAAY,GAAKkwD,IAAgB,GAAI,CACrF,IAAK,IAAIjkB,EAAQ,EAAGA,EAAQikB,EAAajkB,IAAS,CAChD,MAAMkkB,EAAOF,EAAMhkB,GACnB,KAAMvtC,OAAOC,UAAUwxD,IAASA,EAAO,GACrC,MAAM,IAAIhxD,MAAM,SAAS8sC,iDAE5B,CACD,OAAOgkB,CACR,CACD,MAAM,IAAI9wD,MAAM,yDACjB,CACD,MAAMixD,EAAS,IAAIpG,OAAO,CACxBC,MAAO,IAAIyB,MAAMpvC,GACjBlP,KAAM,OAER,MAAMijD,EAAOD,EAAO5F,SACpB,MAAM8F,EAAOF,EAAO5F,SACpB,MAAM+F,EAAOH,EAAO5F,SACpB,MAAMsF,EAAUM,EAAO5F,SACvB,IAAIn7D,EAAK2Q,EACT,KAAMtB,OAAOC,UAAU0xD,IAAS3xD,OAAOC,UAAU2xD,IAAS3/C,MAAM4/C,EAAM,QAAUT,aAAmB3iD,aAAgB9d,EAAMygE,EAAQ1gE,IAAI,iBAAmB,UAAYC,EAAM,GACxK,OAAO,KACF,IAAK2Q,EAAS6vD,OAAOC,EAAS,QAAUxzC,EAAOtc,OACpD,MAAM,IAAIb,MAAM,uFAElB,MAAO,CACLa,SACAiwD,MAAOD,SAASF,GAChBU,kBAAmBX,OAAOC,EAAS,KACnCW,SAAUZ,OAAOC,EAAS,KAC1BY,SAAUb,OAAOC,EAAS,KAC1Ba,sBAAuBd,OAAOC,EAAS,KACvCc,UAAWd,EAAQphD,IAAI,KAAOmhD,OAAOC,EAAS,IAAK,MAAQ,EAE9D,EAWH,MAAMe,GAAiB,CAAC,iBAAkB,kBAAmB,oBAAqB,oBAAqB,WAAY,WAAY,OAAQ,YAAa,YAAa,OAAQ,cAAe,cAAe,cAAe,cAAe,cAAe,eAAgB,eAAgB,cAAe,cAAe,QAAS,aAAc,aAAc,QAAS,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,eAAgB,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,OAAQ,OAAQ,SAAU,SAAU,YAAa,YAAa,SAAU,SAAU,SAAU,SAAU,YAAa,YAAa,YAAa,YAAa,cAAe,cAAe,QAAS,QAAS,QAAS,aAAc,aAAc,QAAS,WAAY,WAAY,OAAQ,OAAQ,YAAa,YAAa,UAAW,UAAW,aAAc,aAAc,YAAa,YAAa,QAAS,QAAS,cAAe,cAAe,aAAc,aAAc,IAAK,aAAc,aAAc,aAAc,aAAc,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,aAAc,aAAc,UAAW,WAAY,YAAa,YAAa,QAAS,cAAe,cAAe,QAAS,cAAe,iBAAkB,iBAAkB,cAAe,cAAe,cAAe,WAAY,QAAS,QAAS,SAAU,SAAU,QAAS,gBAAiB,gBAAiB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,gBAAiB,gBAAiB,eAAgB,eAAgB,gBAAiB,gBAAiB,gBAAiB,gBAAiB,eAAgB,eAAgB,gBAAiB,mBAAoB,mBAAoB,gBAAiB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,gBAAiB,gBAAiB,qBAAsB,qBAAsB,qBAAsB,qBAAsB,oBAAqB,oBAAqB,sBAAuB,mBAAoB,mBAAoB,sBAAuB,sBAAuB,0BAA2B,0BAA2B,eAAgB,eAAgB,gBAAiB,gBAAiB,gBAAiB,gBAAiB,eAAgB,eAAgB,IAAK,aACj9E,MAAMC,GAAgB,GAAK,GAAK,EAChC,MAAMC,KACJ,WAAAhwD,CAAYiwD,EAAc,OACxBlwD,KAAKmwD,gBAAkB,CAAC,GAAI,GAAI,GAAI,IACpCnwD,KAAKowD,mBAAqB,EAC1BpwD,KAAKuM,KAAO,GACZvM,KAAKD,KAAO,GACZC,KAAKmtB,SAAW,MAChBntB,KAAKotB,QAAU,KACfptB,KAAKkwD,YAAcA,CACpB,CACD,iBAAAxiC,CAAkB7pB,EAAGwsD,EAAKC,GACxBtwD,KAAKmwD,gBAAgBtsD,EAAI,GAAGlC,KAAK0uD,EAAKC,GACtCtwD,KAAKowD,oBACN,CACD,WAAAxiC,CAAYyiC,EAAKC,EAAMC,GACrB,GAAID,EAAOD,EAAML,GACf,MAAM,IAAI3xD,MAAM,oDAElB,MAAOgyD,GAAOC,EACZtwD,KAAKuM,KAAK8jD,KAASE,GAEtB,CACD,UAAA1iC,CAAWwiC,EAAKC,EAAMC,GACpB,GAAID,EAAOD,EAAML,GACf,MAAM,IAAI3xD,MAAM,mDAElB,MAAM6uD,EAAWqD,EAAOrxD,OAAS,EACjC,MAAOmxD,GAAOC,EAAM,CAClBtwD,KAAKuM,KAAK8jD,KAASE,EACnB,MAAMC,EAAeD,EAAOvuD,WAAWkrD,GAAY,EAC/CsD,EAAe,IACjBD,EAASA,EAAOh7C,UAAU,EAAG23C,EAAW,GAAKjsD,OAAOC,aAAaqvD,EAAOvuD,WAAWkrD,EAAW,GAAK,GAAK,KAG1GqD,EAASA,EAAOh7C,UAAU,EAAG23C,GAAYjsD,OAAOC,aAAasvD,EAC9D,CACF,CACD,iBAAAC,CAAkBJ,EAAKC,EAAMtc,GAC3B,GAAIsc,EAAOD,EAAML,GACf,MAAM,IAAI3xD,MAAM,0DAElB,MAAMoK,EAAKurC,EAAM90C,OACjB,IAAImC,EAAI,EACR,MAAOgvD,GAAOC,GAAQjvD,EAAIoH,EAAI,CAC5BzI,KAAKuM,KAAK8jD,GAAOrc,EAAM3yC,OACrBgvD,CACH,CACF,CACD,MAAA1iC,CAAOzO,EAAKwxC,GACV1wD,KAAKuM,KAAK2S,GAAOwxC,CAClB,CACD,MAAAp+C,CAAOnS,GACL,OAAOH,KAAKuM,KAAKpM,EAClB,CACD,QAAAwwD,CAASxwD,GACP,OAAOH,KAAKuM,KAAKpM,UAAUY,CAC5B,CACD,OAAA0hD,CAAQjE,GACN,MAAMrpC,EAAMnV,KAAKuM,KACjB,MAAMrN,EAASiW,EAAIjW,OACnB,GAAIA,GAAU,MACZ,IAAK,IAAImC,EAAI,EAAGA,EAAInC,EAAQmC,IACtB8T,EAAI9T,UAAON,GACby9C,EAASn9C,EAAG8T,EAAI9T,SAIpB,IAAK,MAAMA,KAAK8T,EACdqpC,EAASn9C,EAAG8T,EAAI9T,GAGrB,CACD,UAAAuvD,CAAWpxD,GACT,MAAM2V,EAAMnV,KAAKuM,KACjB,GAAI4I,EAAIjW,QAAU,MAChB,OAAOiW,EAAI07C,QAAQrxD,GAErB,IAAK,MAAMkJ,KAAYyM,EACrB,GAAIA,EAAIzM,KAAclJ,EACpB,OAAOkJ,EAAW,EAGtB,OAAQ,CACT,CACD,MAAAooD,GACE,OAAO9wD,KAAKuM,IACb,CACD,YAAAwkD,CAAajvD,EAAKkS,EAAQqkC,GACxB,IAAI1yC,EAAI,EACR,MAAMwqD,EAAkBnwD,KAAKmwD,gBAC7B,IAAK,IAAItsD,EAAI,EAAGmtD,EAAKb,EAAgBjxD,OAAQ2E,EAAImtD,EAAIntD,IAAK,CACxD8B,GAAKA,GAAK,EAAI7D,EAAIE,WAAWgS,EAASnQ,MAAQ,EAC9C,MAAMotD,EAAiBd,EAAgBtsD,GACvC,IAAK,IAAIqiB,EAAI,EAAGoiC,EAAK2I,EAAe/xD,OAAQgnB,EAAIoiC,GAAK,CACnD,MAAM+H,EAAMY,EAAe/qC,KAC3B,MAAMoqC,EAAOW,EAAe/qC,KAC5B,GAAIvgB,GAAK0qD,GAAO1qD,GAAK2qD,EAAM,CACzBjY,EAAI6Y,SAAWvrD,EACf0yC,EAAIn5C,OAAS2E,EAAI,EACjB,MACD,CACF,CACF,CACDw0C,EAAI6Y,SAAW,EACf7Y,EAAIn5C,OAAS,CACd,CACD,iBAAAiyD,CAAkBzoD,GAChB,MAAMynD,EAAkBnwD,KAAKmwD,gBAC7B,IAAK,IAAItsD,EAAI,EAAGmtD,EAAKb,EAAgBjxD,OAAQ2E,EAAImtD,EAAIntD,IAAK,CACxD,MAAMotD,EAAiBd,EAAgBtsD,GACvC,IAAK,IAAIqiB,EAAI,EAAGoiC,EAAK2I,EAAe/xD,OAAQgnB,EAAIoiC,GAAK,CACnD,MAAM+H,EAAMY,EAAe/qC,KAC3B,MAAMoqC,EAAOW,EAAe/qC,KAC5B,GAAIxd,GAAY2nD,GAAO3nD,GAAY4nD,EACjC,OAAOzsD,EAAI,CAEd,CACF,CACD,OAAO,CACR,CACD,UAAI3E,GACF,OAAOc,KAAKuM,KAAKrN,MAClB,CACD,kBAAIkyD,GACF,KAAMpxD,KAAKD,OAAS,cAAgBC,KAAKD,OAAS,cAChD,OAAO,MAET,GAAIC,KAAKuM,KAAKrN,SAAW,MACvB,OAAO,MAET,IAAK,IAAImC,EAAI,EAAGA,EAAI,MAASA,IAC3B,GAAIrB,KAAKuM,KAAKlL,KAAOA,EACnB,OAAO,MAGX,OAAO,IACR,EAEH,MAAMgwD,qBAAqBpB,KACzB,WAAAhwD,CAAYktB,EAAUtpB,GACpBzD,QACAJ,KAAKmtB,SAAWA,EAChBntB,KAAK0tB,kBAAkB7pB,EAAG,EAAG,MAC9B,CACD,WAAA+pB,CAAYyiC,EAAKC,EAAMC,GACrBnyD,YAAY,8BACb,CACD,UAAAyvB,CAAWwiC,EAAKC,EAAMC,GACpBnyD,YAAY,6BACb,CACD,iBAAAqyD,CAAkBJ,EAAKC,EAAMtc,GAC3B51C,YAAY,oCACb,CACD,MAAAuvB,CAAOzO,EAAKwxC,GACVtyD,YAAY,4BACb,CACD,MAAAkU,CAAOnS,GACL,OAAOvC,OAAOC,UAAUsC,IAASA,GAAQ,MAASA,OAAOY,CAC1D,CACD,QAAA4vD,CAASxwD,GACP,OAAOvC,OAAOC,UAAUsC,IAASA,GAAQ,KAC1C,CACD,OAAAsiD,CAAQjE,GACN,IAAK,IAAIn9C,EAAI,EAAGA,GAAK,MAAQA,IAC3Bm9C,EAASn9C,EAAGA,EAEf,CACD,UAAAuvD,CAAWpxD,GACT,OAAO5B,OAAOC,UAAU2B,IAAUA,GAAS,MAASA,GAAS,CAC9D,CACD,MAAAsxD,GACE,MAAM37C,EAAM,IAAIxR,MAAM,OACtB,IAAK,IAAItC,EAAI,EAAGA,GAAK,MAAQA,IAC3B8T,EAAI9T,GAAKA,EAEX,OAAO8T,CACR,CACD,UAAIjW,GACF,OAAO,KACR,CACD,kBAAIkyD,GACFhzD,YAAY,oCACb,EAEH,SAASkzD,SAASxvD,GAChB,IAAI4D,EAAI,EACR,IAAK,IAAIrE,EAAI,EAAGA,EAAIS,EAAI5C,OAAQmC,IAC9BqE,EAAIA,GAAK,EAAI5D,EAAIE,WAAWX,GAE9B,OAAOqE,IAAM,CACf,CACA,SAAS6rD,aAAahjE,GACpB,UAAWA,IAAQ,SACjB,MAAM,IAAIoS,YAAY,mCAE1B,CACA,SAAS6wD,UAAUjjE,GACjB,IAAKqP,OAAOC,UAAUtP,GACpB,MAAM,IAAIoS,YAAY,gCAE1B,CACA,SAAS8wD,YAAYzkC,EAAMm8B,GACzB,MAAO,KAAM,CACX,IAAI56D,EAAM46D,EAAMO,SAChB,GAAIn7D,IAAQod,EACV,MAEF,GAAIkE,MAAMthB,EAAK,aACb,OAEFgjE,aAAahjE,GACb,MAAM2wB,EAAMoyC,SAAS/iE,GACrBA,EAAM46D,EAAMO,SACZ6H,aAAahjE,GACb,MAAMmiE,EAAMniE,EACZy+B,EAAKW,OAAOzO,EAAKwxC,EAClB,CACH,CACA,SAASgB,aAAa1kC,EAAMm8B,GAC1B,MAAO,KAAM,CACX,IAAI56D,EAAM46D,EAAMO,SAChB,GAAIn7D,IAAQod,EACV,MAEF,GAAIkE,MAAMthB,EAAK,cACb,OAEFgjE,aAAahjE,GACb,MAAM8hE,EAAMiB,SAAS/iE,GACrBA,EAAM46D,EAAMO,SACZ6H,aAAahjE,GACb,MAAM+hE,EAAOgB,SAAS/iE,GACtBA,EAAM46D,EAAMO,SACZ,GAAI9rD,OAAOC,UAAUtP,WAAeA,IAAQ,SAAU,CACpD,MAAMgiE,EAAS3yD,OAAOC,UAAUtP,GAAO0S,OAAOC,aAAa3S,GAAOA,EAClEy+B,EAAKa,WAAWwiC,EAAKC,EAAMC,EAC5B,KAAM,KAAI1gD,MAAMthB,EAAK,KASpB,MAT0B,CAC1BA,EAAM46D,EAAMO,SACZ,MAAM1V,EAAQ,GACd,OAAQnkC,MAAMthB,EAAK,MAAQA,IAAQod,EAAK,CACtCqoC,EAAMryC,KAAKpT,GACXA,EAAM46D,EAAMO,QACb,CACD18B,EAAKyjC,kBAAkBJ,EAAKC,EAAMtc,EACxC,CAEK,CACF,CACD,MAAM,IAAIrzC,YAAY,oBACxB,CACA,SAASgxD,aAAa3kC,EAAMm8B,GAC1B,MAAO,KAAM,CACX,IAAI56D,EAAM46D,EAAMO,SAChB,GAAIn7D,IAAQod,EACV,MAEF,GAAIkE,MAAMthB,EAAK,cACb,OAEFgjE,aAAahjE,GACb,MAAM2wB,EAAMoyC,SAAS/iE,GACrBA,EAAM46D,EAAMO,SACZ8H,UAAUjjE,GACV,MAAMmiE,EAAMniE,EACZy+B,EAAKW,OAAOzO,EAAKwxC,EAClB,CACH,CACA,SAASkB,cAAc5kC,EAAMm8B,GAC3B,MAAO,KAAM,CACX,IAAI56D,EAAM46D,EAAMO,SAChB,GAAIn7D,IAAQod,EACV,MAEF,GAAIkE,MAAMthB,EAAK,eACb,OAEFgjE,aAAahjE,GACb,MAAM8hE,EAAMiB,SAAS/iE,GACrBA,EAAM46D,EAAMO,SACZ6H,aAAahjE,GACb,MAAM+hE,EAAOgB,SAAS/iE,GACtBA,EAAM46D,EAAMO,SACZ8H,UAAUjjE,GACV,MAAMgiE,EAAShiE,EACfy+B,EAAKY,YAAYyiC,EAAKC,EAAMC,EAC7B,CACH,CACA,SAASsB,oBAAoB7kC,EAAMm8B,GACjC,MAAO,KAAM,CACX,IAAI56D,EAAM46D,EAAMO,SAChB,GAAIn7D,IAAQod,EACV,MAEF,GAAIkE,MAAMthB,EAAK,qBACb,OAEF,UAAWA,IAAQ,SACjB,MAEF,MAAM8hE,EAAMiB,SAAS/iE,GACrBA,EAAM46D,EAAMO,SACZ,UAAWn7D,IAAQ,SACjB,MAEF,MAAM+hE,EAAOgB,SAAS/iE,GACtBy+B,EAAKU,kBAAkBn/B,EAAI2Q,OAAQmxD,EAAKC,EACzC,CACD,MAAM,IAAI3vD,YAAY,2BACxB,CACA,SAASmxD,WAAW9kC,EAAMm8B,GACxB,MAAM56D,EAAM46D,EAAMO,SACd9rD,OAAOC,UAAUtP,KACnBy+B,EAAKG,WAAa5+B,EAEtB,CACA,SAASwjE,cAAc/kC,EAAMm8B,GAC3B,MAAM56D,EAAM46D,EAAMO,SACdn7D,aAAe0d,OACjB+gB,EAAKjtB,KAAOxR,EAAIwR,KAEpB,CACA+0B,eAAek9B,UAAUhlC,EAAMm8B,EAAO8I,EAAkB7kC,GACtD,IAAI8kC,EAAUC,EACdC,EAAS,MAAO,KACd,IACE,MAAM7jE,EAAM46D,EAAMO,SAClB,GAAIn7D,IAAQod,EACV,MACK,GAAIpd,aAAe0d,KAAM,CAC1B1d,EAAIwR,OAAS,QACf+xD,WAAW9kC,EAAMm8B,GACR56D,EAAIwR,OAAS,YACtBgyD,cAAc/kC,EAAMm8B,GAEtB+I,EAAW3jE,CACnB,MAAa,GAAIA,aAAe2d,IACxB,OAAQ3d,EAAI4d,KACV,IAAK,UACH,MAAMimD,EACR,IAAK,UACCF,aAAoBjmD,OACtBkmD,EAAkBD,EAASnyD,MAE7B,MACF,IAAK,sBACH8xD,oBAAoB7kC,EAAMm8B,GAC1B,MACF,IAAK,cACHsI,YAAYzkC,EAAMm8B,GAClB,MACF,IAAK,eACHwI,aAAa3kC,EAAMm8B,GACnB,MACF,IAAK,eACHuI,aAAa1kC,EAAMm8B,GACnB,MACF,IAAK,gBACHyI,cAAc5kC,EAAMm8B,GACpB,MAGP,CAAC,MAAO3gD,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,sBAAwBqK,GAC7B,QACD,EAEE4kB,GAAW+kC,IACd/kC,EAAU+kC,GAEZ,OAAI/kC,EACKilC,WAAWrlC,EAAMilC,EAAkB7kC,GAErCJ,CACT,CACA8H,eAAeu9B,WAAWrlC,EAAMilC,EAAkB7kC,GAChDJ,EAAKI,cAAgBklC,kBAAkBllC,EAAS6kC,GAChD,GAAIjlC,EAAKojC,qBAAuB,EAAG,CACjC,MAAMmC,EAAqBvlC,EAAKI,QAAQ+iC,gBACxC,IAAK,IAAI9uD,EAAI,EAAGA,EAAIkxD,EAAmBrzD,OAAQmC,IAC7C2rB,EAAKmjC,gBAAgB9uD,GAAKkxD,EAAmBlxD,GAAG8D,QAElD6nB,EAAKojC,mBAAqBpjC,EAAKI,QAAQgjC,kBACxC,CACDpjC,EAAKI,QAAQq1B,SAAQ,SAAUx0D,EAAKuR,GAC7BwtB,EAAK2jC,SAAS1iE,IACjB++B,EAAKW,OAAO1/B,EAAKuR,EAEvB,IACE,OAAOwtB,CACT,CACA8H,eAAew9B,kBAAkBvyD,EAAMkyD,GACrC,GAAIlyD,IAAS,aACX,OAAO,IAAIsxD,aAAa,MAAO,GAC1B,GAAItxD,IAAS,aAClB,OAAO,IAAIsxD,aAAa,KAAM,GAEhC,IAAKtB,GAAe5sD,SAASpD,GAC3B,MAAM,IAAI1B,MAAM,sBAAwB0B,GAE1C,IAAKkyD,EACH,MAAM,IAAI5zD,MAAM,8CAElB,MAAMm0D,SACJA,EAAQC,aACRA,SACQR,EAAiBlyD,GAC3B,MAAMitB,EAAO,IAAIijC,KAAK,MACtB,GAAIwC,EACF,OAAO,IAAI1lC,kBAAmB99B,QAAQujE,EAAUxlC,GAAMI,GAAWilC,WAAWrlC,EAAMilC,EAAkB7kC,KAEtG,MAAM+7B,EAAQ,IAAIyB,MAAM,IAAIpxC,OAAOg5C,IACnC,OAAOR,UAAUhlC,EAAMm8B,EAAO8I,EAAkB,KAClD,CACA,MAAMS,YACJ,mBAAa7mD,EAAO5D,SAClBA,EAAQgqD,iBACRA,EAAgB7kC,QAChBA,IAEA,GAAInlB,aAAoBgE,KACtB,OAAOqmD,kBAAkBrqD,EAASlI,KAAMkyD,GACnC,GAAIhqD,aAAoBiI,WAAY,CACzC,MAAMyiD,QAAmBX,UAAU,IAAI/B,KAAQ,IAAIrF,MAAM3iD,GAAWgqD,EAAkB7kC,GACtF,OAAIulC,EAAWvB,eACNkB,kBAAkBK,EAAW5yD,KAAMkyD,GAErCU,CACR,CACD,MAAM,IAAIt0D,MAAM,qBACjB,EAIH,MAAMu0D,GAAkB,CAAC,UAAW,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,aAAc,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,YAAa,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,aAAc,OAAQ,WAAY,WAAY,MAAO,SAAU,UAAW,WAAY,cAAe,eAAgB,gBAAiB,gBAAiB,iBAAkB,KAAM,KAAM,SAAU,SAAU,YAAa,iBAAkB,YAAa,SAAU,iBAAkB,eAAgB,gBAAiB,iBAAkB,WAAY,cAAe,eAAgB,QAAS,QAAS,aAAc,QAAS,SAAU,QAAS,YAAa,WAAY,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,KAAM,cAAe,SAAU,SAAU,KAAM,eAAgB,KAAM,WAAY,SAAU,SAAU,KAAM,aAAc,cAAe,aAAc,KAAM,YAAa,MAAO,UAAW,YAAa,QAAS,aAAc,SAAU,YAAa,SAAU,QAAS,gBAAiB,cAAe,aAAc,QAAS,MAAO,WAAY,gBAAiB,YAAa,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,UAC3vE,MAAMC,GAAgB,CAAC,UAAW,QAAS,cAAe,oBAAqB,iBAAkB,iBAAkB,iBAAkB,aAAc,oBAAqB,qBAAsB,iBAAkB,iBAAkB,QAAS,SAAU,SAAU,WAAY,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,QAAS,YAAa,gBAAiB,sBAAuB,iBAAkB,gBAAiB,YAAa,YAAa,eAAgB,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,KAAM,KAAM,KAAM,MAAO,MAAO,oBAAqB,qBAAsB,kBAAmB,iBAAkB,aAAc,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,gBAAiB,YAAa,SAAU,aAAc,kBAAmB,eAAgB,cAAe,cAAe,cAAe,gBAAiB,aAAc,aAAc,iBAAkB,cAAe,aAAc,iBAAkB,cAAe,YAAa,eAAgB,aAAc,UAAW,gBAAiB,oBAAqB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,gBAAiB,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,aAAc,UAAW,gBAAiB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,mBAAoB,iBAAkB,WAAY,cAAe,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,UAAW,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,aAAc,kBACj2E,MAAMC,GAAsB,CAAC,UAAW,QAAS,iBAAkB,iBAAkB,oBAAqB,qBAAsB,iBAAkB,iBAAkB,QAAS,SAAU,SAAU,WAAY,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,QAAS,YAAa,gBAAiB,sBAAuB,iBAAkB,YAAa,YAAa,eAAgB,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,KAAM,KAAM,KAAM,MAAO,MAAO,oBAAqB,qBAAsB,iBAAkB,gBAAiB,YAAa,SAAU,eAAgB,aAAc,iBAAkB,aAAc,UAAW,gBAAiB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,iBAGjxC,MAAMC,GAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,cAAe,oBAAqB,GAAI,iBAAkB,iBAAkB,iBAAkB,aAAc,oBAAqB,qBAAsB,iBAAkB,iBAAkB,QAAS,SAAU,SAAU,WAAY,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,QAAS,YAAa,gBAAiB,sBAAuB,iBAAkB,gBAAiB,GAAI,YAAa,YAAa,eAAgB,YAAa,YAAa,GAAI,GAAI,GAAI,YAAa,GAAI,GAAI,YAAa,YAAa,YAAa,YAAa,GAAI,GAAI,YAAa,YAAa,YAAa,GAAI,KAAM,KAAM,KAAM,MAAO,MAAO,oBAAqB,GAAI,qBAAsB,kBAAmB,iBAAkB,aAAc,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,gBAAiB,YAAa,SAAU,aAAc,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,kBAAmB,eAAgB,cAAe,GAAI,GAAI,cAAe,cAAe,gBAAiB,aAAc,aAAc,GAAI,iBAAkB,GAAI,GAAI,cAAe,GAAI,GAAI,aAAc,iBAAkB,GAAI,GAAI,cAAe,YAAa,eAAgB,GAAI,GAAI,GAAI,aAAc,UAAW,gBAAiB,oBAAqB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,GAAI,GAAI,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,gBAAiB,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,aAAc,UAAW,gBAAiB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,mBAAoB,iBAAkB,WAAY,cAAe,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,UAAW,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,aAAc,kBACnsF,MAAMC,GAAoB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,cAAe,oBAAqB,eAAgB,iBAAkB,iBAAkB,iBAAkB,aAAc,oBAAqB,qBAAsB,iBAAkB,iBAAkB,QAAS,SAAU,SAAU,WAAY,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,QAAS,YAAa,GAAI,sBAAuB,GAAI,gBAAiB,GAAI,GAAI,GAAI,GAAI,WAAY,GAAI,GAAI,aAAc,UAAW,gBAAiB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,MAAO,MAAO,oBAAqB,GAAI,qBAAsB,kBAAmB,iBAAkB,aAAc,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,gBAAiB,YAAa,SAAU,aAAc,GAAI,GAAI,YAAa,eAAgB,GAAI,GAAI,GAAI,GAAI,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,aAAc,gBAAiB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,GAAI,gBAAiB,eAAgB,gBAAiB,cAAe,gBAAiB,gBAAiB,cAAe,GAAI,eAAgB,cAAe,GAAI,gBAAiB,GAAI,aAAc,YAAa,eAAgB,GAAI,gBAAiB,iBAAkB,cAAe,GAAI,iBAAkB,GAAI,GAAI,aAAc,GAAI,eAAgB,eAAgB,cAAe,UAAW,cAAe,oBAAqB,cAAe,cAAe,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,eAAgB,GAAI,GAAI,GAAI,GAAI,GAAI,UAAW,aAAc,iBAAkB,GAAI,GAAI,GAAI,GAAI,kBAAmB,GAAI,iBAAkB,GAAI,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,eAAgB,eAAgB,GAAI,YAAa,YAAa,YAAa,GAAI,GAAI,YAAa,YAAa,YAAa,GAAI,GAAI,GAAI,GAAI,GAAI,YAAa,cAAe,aAAc,cAAe,YAAa,YAAa,YAAa,gBAAiB,iBAAkB,iBAAkB,YAAa,GAAI,GAAI,GAAI,IACptF,MAAMC,GAAmB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,cAAe,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,QAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,GAAI,YAAa,QAAS,WAAY,SAAU,SAAU,YAAa,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,WAAY,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,OAAQ,WAAY,UAAW,SAAU,YAAa,aAAc,aAAc,YAAa,YAAa,QAAS,WAAY,WAAY,KAAM,SAAU,WAAY,YAAa,YAAa,eAAgB,MAAO,KAAM,cAAe,YAAa,UAAW,KAAM,WAAY,cAAe,eAAgB,QAAS,KAAM,SAAU,eAAgB,aAAc,aAAc,UAAW,SAAU,cAAe,QAAS,gBAAiB,iBAAkB,WAAY,QAAS,SAAU,SAAU,SAAU,KAAM,KAAM,SAAU,SAAU,eAAgB,gBAAiB,YAAa,aAAc,SAAU,UAAW,YAAa,YAAa,WAAY,WAAY,gBAAiB,iBAAkB,KAAM,KAAM,YAAa,iBAAkB,iBAAkB,eAAgB,cAAe,cAAe,cAAe,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,QAAS,SAAU,SAAU,cAAe,SAAU,WAAY,aAAc,QAAS,SAAU,QAAS,YAAa,OAAQ,UAAW,eAAgB,SAAU,SACl0E,MAAMC,GAAmB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,aAAc,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,YAAa,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,aAAc,OAAQ,WAAY,WAAY,MAAO,SAAU,UAAW,WAAY,cAAe,eAAgB,gBAAiB,gBAAiB,iBAAkB,KAAM,KAAM,GAAI,SAAU,SAAU,YAAa,iBAAkB,GAAI,YAAa,SAAU,iBAAkB,eAAgB,gBAAiB,iBAAkB,WAAY,cAAe,GAAI,eAAgB,GAAI,QAAS,QAAS,aAAc,QAAS,SAAU,QAAS,YAAa,WAAY,GAAI,OAAQ,UAAW,GAAI,eAAgB,SAAU,QAAS,SAAU,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,cAAe,GAAI,GAAI,GAAI,GAAI,SAAU,SAAU,KAAM,eAAgB,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,GAAI,GAAI,GAAI,WAAY,GAAI,GAAI,SAAU,SAAU,KAAM,aAAc,GAAI,GAAI,GAAI,IAC/wD,MAAMC,GAAkB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,cAAe,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,QAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,SAAU,OAAQ,SAAU,iBAAkB,SAAU,eAAgB,WAAY,SAAU,YAAa,aAAc,cAAe,SAAU,gBAAiB,KAAM,SAAU,SAAU,SAAU,SAAU,YAAa,aAAc,eAAgB,gBAAiB,SAAU,SAAU,SAAU,QAAS,YAAa,SAAU,iBAAkB,KAAM,SAAU,SAAU,YAAa,QAAS,aAAc,OAAQ,WAAY,WAAY,MAAO,YAAa,UAAW,WAAY,YAAa,cAAe,gBAAiB,aAAc,SAAU,aAAc,SAAU,SAAU,YAAa,cAAe,gBAAiB,QAAS,KAAM,YAAa,iBAAkB,UAAW,cAAe,eAAgB,iBAAkB,aAAc,UAAW,gBAAiB,eAAgB,SAAU,SAAU,cAAe,SAAU,YAAa,QAAS,KAAM,WAAY,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,MAAO,SAAU,SAAU,SAAU,cAAe,SAAU,YAAa,WAAY,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,aAAc,SAAU,SAAU,cAAe,SAAU,YAAa,QAAS,KAAM,WAAY,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,MAAO,SAAU,SAAU,SAAU,cAAe,SAAU,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,aACl0E,MAAMC,GAAoB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,SAAU,YAAa,aAAc,cAAe,UAAW,YAAa,WAAY,YAAa,aAAc,eAAgB,OAAQ,QAAS,QAAS,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,YAAa,QAAS,OAAQ,MAAO,QAAS,UAAW,MAAO,QAAS,MAAO,OAAQ,SAAU,QAAS,SAAU,KAAM,KAAM,UAAW,KAAM,QAAS,MAAO,QAAS,MAAO,UAAW,SAAU,QAAS,KAAM,MAAO,OAAQ,cAAe,YAAa,eAAgB,gBAAiB,aAAc,YAAa,QAAS,OAAQ,MAAO,QAAS,UAAW,MAAO,QAAS,MAAO,OAAQ,OAAQ,QAAS,SAAU,KAAM,KAAM,UAAW,KAAM,QAAS,MAAO,QAAS,MAAO,UAAW,SAAU,QAAS,KAAM,MAAO,OAAQ,YAAa,MAAO,aAAc,UAAW,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,OAAQ,WAAY,SAAU,YAAa,WAAY,WAAY,SAAU,OAAQ,UAAW,QAAS,QAAS,YAAa,YAAa,UAAW,aAAc,YAAa,SAAU,YAAa,SAAU,eAAgB,WAAY,eAAgB,cAAe,SAAU,SAAU,WAAY,cAAe,cAAe,WAAY,cAAe,eAAgB,iBAAkB,QAAS,WAAY,WAAY,cAAe,iBAAkB,aAAc,WAAY,eAAgB,QAAS,iBAAkB,iBAAkB,YAAa,eAAgB,eAAgB,UAAW,aAAc,QAAS,WAAY,gBAAiB,iBAAkB,iBAAkB,UAAW,UAAW,UAAW,aAAc,aAAc,YAAa,eAAgB,eAAgB,aAAc,gBAAiB,eAAgB,UAAW,YAAa,eAAgB,gBAAiB,gBAAiB,YAAa,cAAe,cAAe,cAAe,gBAAiB,gBAAiB,gBAAiB,cAAe,eAAgB,cAAe,UAAW,GAAI,aAAc,WAAY,aAAc,aAAc,aAAc,eAAgB,eAAgB,eAAgB,iBAAkB,iBAAkB,iBAAkB,eAAgB,gBAAiB,eAAgB,IACh8E,MAAMC,GAAuB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,QAAS,KAAM,KAAM,OAAQ,KAAM,KAAM,KAAM,OAAQ,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,GAAI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,GAAI,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,IACxtD,SAASC,YAAYC,GACnB,OAAQA,GACN,IAAK,kBACH,OAAOJ,GACT,IAAK,mBACH,OAAOD,GACT,IAAK,mBACH,OAAOD,GACT,IAAK,oBACH,OAAOG,GACT,IAAK,uBACH,OAAOC,GACT,IAAK,iBACH,OAAON,GACT,IAAK,oBACH,OAAOC,GACT,QACE,OAAO,KAEb,CAMA,MAAMQ,GAAmB,GACzB,MAAMC,GAAqB,CAAC,UAAW,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,aAAc,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,YAAa,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,aAAc,OAAQ,WAAY,WAAY,MAAO,SAAU,UAAW,WAAY,cAAe,eAAgB,gBAAiB,gBAAiB,iBAAkB,KAAM,KAAM,SAAU,SAAU,YAAa,iBAAkB,YAAa,SAAU,iBAAkB,eAAgB,gBAAiB,iBAAkB,WAAY,cAAe,eAAgB,QAAS,QAAS,aAAc,QAAS,SAAU,QAAS,YAAa,WAAY,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,KAAM,cAAe,SAAU,SAAU,KAAM,eAAgB,KAAM,WAAY,SAAU,SAAU,KAAM,aAAc,cAAe,aAAc,KAAM,YAAa,MAAO,UAAW,YAAa,QAAS,aAAc,SAAU,YAAa,SAAU,QAAS,gBAAiB,cAAe,aAAc,QAAS,MAAO,WAAY,gBAAiB,YAAa,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,SAAU,WAAY,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,YAAa,SAAU,cAAe,oBAAqB,iBAAkB,iBAAkB,iBAAkB,aAAc,oBAAqB,qBAAsB,iBAAkB,iBAAkB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,gBAAiB,sBAAuB,iBAAkB,gBAAiB,YAAa,YAAa,eAAgB,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,KAAM,MAAO,MAAO,oBAAqB,qBAAsB,kBAAmB,iBAAkB,aAAc,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,gBAAiB,YAAa,SAAU,aAAc,kBAAmB,eAAgB,cAAe,cAAe,cAAe,gBAAiB,aAAc,aAAc,iBAAkB,cAAe,aAAc,iBAAkB,cAAe,YAAa,eAAgB,oBAAqB,YAAa,eAAgB,cAAe,eAAgB,WAAY,YAAa,eAAgB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,cAAe,cAAe,gBAAiB,eAAgB,eAAgB,cAAe,gBAAiB,gBAAiB,eAAgB,eAAgB,iBAAkB,iBAAkB,gBAAiB,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,aAAc,UAAW,gBAAiB,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,cAAe,mBAAoB,iBAAkB,WAAY,cAAe,cAAe,cAAe,mBAAoB,cAAe,iBAAkB,UAAW,cAAe,cAAe,cAAe,mBAAoB,iBAAkB,cAAe,aAAc,iBAAkB,UAAW,UAAW,UAAW,UAAW,QAAS,OAAQ,OAAQ,QAAS,SAAU,UAAW,QAAS,YACxhJ,MAAMC,GAA2B,IACjC,MAAMC,GAA2B,CAAC,KAAM,CACtC37B,GAAI,QACJx2B,IAAK,EACLoyD,cAAe,KACfC,KAAM,MACL,KAAM,CACP77B,GAAI,QACJx2B,IAAK,EACLoyD,cAAe,KACfC,KAAM,MACL,CACD77B,GAAI,UACJx2B,IAAK,EACLoyD,cAAe,MACd,CACD57B,GAAI,UACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,UACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,UACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,YACJx2B,IAAK,EACLsyD,WAAY,MACX,KAAM,CACP97B,GAAI,WACJx2B,IAAK,EACLuyD,WAAY,MACX,CACD/7B,GAAI,SACJx2B,IAAK,EACLuyD,WAAY,MACX,KAAM,KAAM,CACb/7B,GAAI,UACJx2B,IAAK,EACLoyD,cAAe,MACd,KAAM,KAAM,KAAM,CACnB57B,GAAI,UACJx2B,IAAK,EACLoyD,cAAe,KACfC,KAAM,MACL,CACD77B,GAAI,WACJx2B,IAAK,EACLoyD,cAAe,MACd,CACD57B,GAAI,WACJx2B,IAAK,EACLoyD,cAAe,MACd,CACD57B,GAAI,UACJx2B,IAAK,EACLoyD,cAAe,MACd,CACD57B,GAAI,UACJx2B,IAAK,EACLoyD,cAAe,MACd,CACD57B,GAAI,UACJx2B,IAAK,EACLoyD,cAAe,KACfC,KAAM,MACL,CACD77B,GAAI,aACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,aACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,YACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,YACJx2B,IAAK,EACLsyD,WAAY,MACX,KAAM,CACP97B,GAAI,YACJx2B,IAAK,EACLuyD,WAAY,MACX,CACD/7B,GAAI,YACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,YACJx2B,IAAK,EACLsyD,WAAY,OAEd,MAAME,GAA6B,CAAC,KAAM,KAAM,KAAM,CACpDh8B,GAAI,MACJx2B,IAAK,EACLyyD,YAAa,GACZ,CACDj8B,GAAI,KACJx2B,IAAK,EACLyyD,YAAa,GACZ,CACDj8B,GAAI,MACJx2B,IAAK,EACLyyD,WAAY,GACX,KAAM,KAAM,KAAM,CACnBj8B,GAAI,MACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,MACJx2B,IAAK,EACLyyD,YAAa,EACb,OAAAC,CAAQznC,EAAO0e,GACb1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,EACrD,GACA,CACDnT,GAAI,MACJx2B,IAAK,EACLyyD,YAAa,EACb,OAAAC,CAAQznC,EAAO0e,GACb1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,EACrD,GACA,CACDnT,GAAI,MACJx2B,IAAK,EACLyyD,YAAa,EACb,OAAAC,CAAQznC,EAAO0e,GACb1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,EACrD,GACA,KAAM,CACPnT,GAAI,MACJx2B,IAAK,EACLyyD,WAAY,EACZ,OAAAC,CAAQznC,EAAO0e,GACb1e,EAAM0e,EAAQ,IAAM1e,EAAM0e,EAAQ,EACnC,GACA,CACDnT,GAAI,KACJx2B,IAAK,EACLyyD,YAAa,GACZ,KAAM,KAAM,CACbj8B,GAAI,OACJx2B,IAAK,EACLyyD,YAAa,GACZ,KAAM,CACPj8B,GAAI,MACJx2B,IAAK,EACLyyD,YAAa,GACZ,CACDj8B,GAAI,MACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,SACJx2B,IAAK,EACLyyD,YAAa,GACZ,CACDj8B,GAAI,SACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,MACJx2B,IAAK,EACLyyD,YAAa,EACb,OAAAC,CAAQznC,EAAO0e,GACb1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,GAAK1e,EAAM0e,EAAQ,EACrD,GACA,KAAM,CACPnT,GAAI,OACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,MACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,OACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,QACJx2B,IAAK,EACLyyD,WAAY,GACX,CACDj8B,GAAI,OACJx2B,IAAK,EACLyyD,YAAa,GACZ,KAAM,KAAM,KAAM,CACnBj8B,GAAI,QACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,OACJx2B,IAAK,GACLsyD,WAAY,MACX,CACD97B,GAAI,SACJx2B,IAAK,EACLsyD,WAAY,MACX,CACD97B,GAAI,QACJx2B,IAAK,GACLsyD,WAAY,OAEd,MAAMK,UACJ,WAAAl0D,CAAY4+C,EAAMzwC,EAAYgmD,GAC5Bp0D,KAAKc,MAAQ+9C,EAAKvuC,WAClBtQ,KAAKoO,WAAaA,EAClBpO,KAAKo0D,sBAAwBA,CAC9B,CACD,KAAA/wC,GACE,MAAMjV,EAAapO,KAAKoO,WACxB,MAAMimD,EAAM,IAAIC,IAChBt0D,KAAKq0D,IAAMA,EACX,MAAMnnC,EAASltB,KAAKu0D,cACpB,MAAMC,EAAYx0D,KAAKy0D,WAAWvnC,EAAOwnC,QACzC,MAAMC,EAAe30D,KAAKy0D,WAAWD,EAAUE,QAC/C,MAAME,EAAc50D,KAAKy0D,WAAWE,EAAaD,QACjD,MAAMG,EAAkB70D,KAAKy0D,WAAWG,EAAYF,QACpD,MAAMI,EAAgB90D,KAAK+0D,UAAUJ,EAAapmE,IAAID,IAAI,IAC1D,MAAM0mE,EAAUh1D,KAAKi1D,WAAWC,WAAYJ,EAAeT,EAAI3S,SAC/D2S,EAAInnC,OAASA,EAAO3+B,IACpB8lE,EAAIc,MAAQn1D,KAAKo1D,eAAeZ,EAAUjmE,KAC1C8lE,EAAI3S,QAAU1hD,KAAKq1D,iBAAiBT,EAAYrmE,KAChD8lE,EAAIW,QAAUA,EACdX,EAAIQ,gBAAkBA,EAAgBtmE,IACtCyR,KAAKs1D,iBAAiBjB,EAAIW,SAC1BX,EAAIkB,UAAYP,EAAQQ,QAAQ,OAChC,MAAMC,EAAmBT,EAAQjyC,UAAU,eAC3C,MAAM2yC,EAAkB11D,KAAKy0D,WAAWgB,GAAkBlnE,IAC1D,MAAMonE,EAAaX,EAAQjyC,UAAU,cACjC4yC,IACFvnD,EAAWunD,WAAaA,GAE1B,MAAMC,EAAWZ,EAAQjyC,UAAU,YACnC,GAAI6yC,EAAU,CACZxnD,EAAWynD,OAASt0D,KAAK+D,IAAIswD,EAAS,GAAIA,EAAS,IACnDxnD,EAAW0nD,QAAUv0D,KAAKC,IAAIo0D,EAAS,GAAIA,EAAS,IACpDxnD,EAAW2nD,aAAe,IAC3B,CACD,IAAIC,EAAS/tD,EACb,GAAIosD,EAAIkB,UAAW,CACjB,MAAMU,EAAej2D,KAAKy0D,WAAWO,EAAQjyC,UAAU,YAAYx0B,IACnE,IAAK,IAAI8S,EAAI,EAAGoH,EAAKwtD,EAAah1C,MAAO5f,EAAIoH,IAAMpH,EAAG,CACpD,MAAM60D,EAAUD,EAAa3nE,IAAI+S,GACjC,MAAM80D,EAAWn2D,KAAKi1D,WAAWC,WAAYl1D,KAAK+0D,UAAUmB,GAAU7B,EAAI3S,SAC1E1hD,KAAKs1D,iBAAiBa,GACtB9B,EAAI+B,QAAQz0D,KAAKw0D,EAClB,CACDluD,EAAW,KACX+tD,EAAUh2D,KAAKq2D,cAAcrB,EAAQjyC,UAAU,WAAY2yC,EAAgBz0C,MAAOozC,EAAI3S,QAAS,MAC/F2S,EAAIiC,SAAWt2D,KAAKu2D,cAAcvB,EAAQjyC,UAAU,YAAa2yC,EAAgBz0C,MACvF,KAAW,CACL+0C,EAAUh2D,KAAKq2D,cAAcrB,EAAQjyC,UAAU,WAAY2yC,EAAgBz0C,MAAOozC,EAAI3S,QAAS,OAC/Fz5C,EAAWjI,KAAKw2D,cAAcxB,EAAQjyC,UAAU,YAAa3U,EAAYimD,EAAI3S,QAASsU,EAAQA,QAC/F,CACD3B,EAAI2B,QAAUA,EACd3B,EAAIpsD,SAAWA,EACf,MAAMwuD,EAAsBz2D,KAAK02D,iBAAiB,CAChDC,YAAajB,EACbkB,eAAgB5B,EAAQ6B,YAAYC,WACpCjC,gBAAiBA,EAAgBtmE,IACjC+nE,SAAUjC,EAAIiC,SACdF,QAAS/B,EAAI+B,QACbS,YAAa7B,EAAQ6B,cAEvBxC,EAAIsC,YAAcF,EAAoBE,YACtCtC,EAAI0C,MAAQN,EAAoBM,MAChC1C,EAAI2C,OAASP,EAAoBO,OACjC,OAAO3C,CACR,CACD,WAAAE,GACE,IAAIzzD,EAAQd,KAAKc,MACjB,MAAMm2D,EAAcn2D,EAAM5B,OAC1B,IAAI8U,EAAS,EACb,MAAOA,EAASijD,GAAen2D,EAAMkT,KAAY,IAC7CA,EAEJ,GAAIA,GAAUijD,EACZ,MAAM,IAAIt2D,YAAY,sBAExB,GAAIqT,IAAW,EAAG,CAChBjW,KAAK,uBACL+C,EAAQA,EAAMY,SAASsS,GACvBhU,KAAKc,MAAQA,CACd,CACD,MAAMu0C,EAAQv0C,EAAM,GACpB,MAAMw0C,EAAQx0C,EAAM,GACpB,MAAMo2D,EAAUp2D,EAAM,GACtB,MAAMq2D,EAAUr2D,EAAM,GACtB,MAAMosB,EAAS,IAAIkqC,UAAU/hB,EAAOC,EAAO4hB,EAASC,GACpD,MAAO,CACL5oE,IAAK2+B,EACLwnC,OAAQwC,EAEX,CACD,SAAAnC,CAAU1mD,GACR,IAAI0C,EAAM,EACV,SAASsmD,eACP,IAAI73D,EAAQ6O,EAAK0C,KACjB,GAAIvR,IAAU,GACZ,OAAO83D,oBACF,GAAI93D,IAAU,GAAI,CACvBA,EAAQ6O,EAAK0C,KACbvR,GAASA,GAAS,GAAK6O,EAAK0C,MAAU,KAAO,GAC7C,OAAOvR,CACf,CAAa,GAAIA,IAAU,GAAI,CACvBA,EAAQ6O,EAAK0C,KACbvR,EAAQA,GAAS,EAAI6O,EAAK0C,KAC1BvR,EAAQA,GAAS,EAAI6O,EAAK0C,KAC1BvR,EAAQA,GAAS,EAAI6O,EAAK0C,KAC1B,OAAOvR,CACR,CAAM,GAAIA,GAAS,IAAMA,GAAS,IACjC,OAAOA,EAAQ,IACV,GAAIA,GAAS,KAAOA,GAAS,IAClC,OAAuB,KAAfA,EAAQ,KAAa6O,EAAK0C,KAAS,IACtC,GAAIvR,GAAS,KAAOA,GAAS,IAClC,OAAyB,KAAfA,EAAQ,KAAc6O,EAAK0C,KAAS,IAEhD5S,KAAK,yBAA2BqB,EAAQ,4BACxC,OAAO2jD,GACR,CACD,SAASmU,oBACP,IAAIx1D,EAAM,GACV,MAAMqsB,EAAM,GACZ,MAAM7b,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KACxF,MAAMpT,EAASmP,EAAKnP,OACpB,MAAO6R,EAAM7R,EAAQ,CACnB,MAAMkF,EAAIiK,EAAK0C,KACf,MAAMI,EAAK/M,GAAK,EAChB,MAAMiN,EAAKjN,EAAI,GACf,GAAI+M,IAAOgd,EACT,MAEFrsB,GAAOwQ,EAAOnB,GACd,GAAIE,IAAO8c,EACT,MAEFrsB,GAAOwQ,EAAOjB,EACf,CACD,OAAOwG,WAAW/V,EACnB,CACD,IAAIy1D,EAAW,GACf,MAAMC,EAAU,GAChBzmD,EAAM,EACN,MAAMU,EAAMpD,EAAKnP,OACjB,MAAO6R,EAAMU,EAAK,CAChB,IAAIrN,EAAIiK,EAAK0C,GACb,GAAI3M,GAAK,GAAI,CACPA,IAAM,KACRA,EAAIA,GAAK,EAAIiK,IAAO0C,IAEtBymD,EAAQ71D,KAAK,CAACyC,EAAGmzD,IACjBA,EAAW,KACTxmD,CACV,MACQwmD,EAAS51D,KAAK01D,eAEjB,CACD,OAAOG,CACR,CACD,UAAA/C,CAAW1jD,GACT,MAAM0mD,EAAW,IAAIC,SACrB,MAAM52D,EAAQd,KAAKc,MACnB,MAAMmgB,EAAQngB,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KACxC,MAAM4mD,EAAU,GAChB,IAAIlmD,EAAMV,EACV,IAAI1P,EAAGoH,EACP,GAAIwY,IAAU,EAAG,CACf,MAAM22C,EAAa92D,EAAMiQ,KACzB,MAAMmiC,EAAWniC,GAAOkQ,EAAQ,GAAK22C,EAAa,EAClD,IAAKv2D,EAAI,EAAGoH,EAAKwY,EAAQ,EAAG5f,EAAIoH,IAAMpH,EAAG,CACvC,IAAI2S,EAAS,EACb,IAAK,IAAIkM,EAAI,EAAGA,EAAI03C,IAAc13C,EAAG,CACnClM,IAAW,EACXA,GAAUlT,EAAMiQ,IACjB,CACD4mD,EAAQh2D,KAAKuxC,EAAWl/B,EACzB,CACDvC,EAAMkmD,EAAQ12C,EACf,CACD,IAAK5f,EAAI,EAAGoH,EAAKkvD,EAAQz4D,OAAS,EAAGmC,EAAIoH,IAAMpH,EAAG,CAChD,MAAMw2D,EAAcF,EAAQt2D,GAC5B,MAAMy2D,EAAYH,EAAQt2D,EAAI,GAC9Bo2D,EAASroD,IAAItO,EAAMY,SAASm2D,EAAaC,GAC1C,CACD,MAAO,CACLvpE,IAAKkpE,EACL/C,OAAQjjD,EAEX,CACD,cAAA2jD,CAAejqB,GACb,MAAMgqB,EAAQ,GACd,IAAK,IAAI9zD,EAAI,EAAGoH,EAAK0iC,EAAMlqB,MAAO5f,EAAIoH,IAAMpH,EAAG,CAC7C,MAAMtB,EAAOorC,EAAM78C,IAAI+S,GACvB8zD,EAAMxzD,KAAKd,cAAcd,GAC1B,CACD,OAAOo1D,CACR,CACD,gBAAAE,CAAiBlqB,GACf,MAAMuW,EAAU,IAAIqW,WACpB,IAAK,IAAI12D,EAAI,EAAGoH,EAAK0iC,EAAMlqB,MAAO5f,EAAIoH,IAAMpH,EAAG,CAC7C,MAAMyR,EAAOq4B,EAAM78C,IAAI+S,GACvBqgD,EAAQtyC,IAAIvO,cAAciS,GAC3B,CACD,OAAO4uC,CACR,CACD,UAAAuT,CAAW+C,EAAM3pD,EAAMqzC,GACrB,MAAMuW,EAAU,IAAID,EAAKtW,GACzB,IAAK,MAAOzzD,EAAKuR,KAAU6O,EACzB4pD,EAAQC,SAASjqE,EAAKuR,GAExB,OAAOy4D,CACR,CACD,eAAAE,CAAgB1N,EAAO33C,EAAM8jD,EAAgB/B,GAC3C,IAAK/hD,GAAQ23C,EAAM2N,UAAY5E,GAC7B,OAAO,MAET,IAAI6E,EAAY5N,EAAM4N,UACtB,MAAM5rC,EAAQg+B,EAAMh+B,MACpB,IAAIvtB,EAAS4T,EAAK5T,OAClB,IAAK,IAAIghB,EAAI,EAAGA,EAAIhhB,GAAS,CAC3B,MAAMM,EAAQsT,EAAKoN,KACnB,IAAIo4C,EAAoB,KACxB,GAAI94D,IAAU,GAAI,CAChB,MAAMsmB,EAAIhT,EAAKoN,KACf,GAAI4F,IAAM,EAAG,CACXhT,EAAKoN,EAAI,GAAK,IACdpN,EAAKoN,EAAI,GAAK,GACdm4C,EAAY,CACtB,MACUC,EAAoBtE,GAA2BluC,EAEzD,MAAa,GAAItmB,IAAU,GAAI,CACvBitB,EAAM4rC,IAAcvlD,EAAKoN,IAAM,GAAKpN,EAAKoN,EAAI,IAAM,KAAO,GAC1DA,GAAK,EACLm4C,GACR,MAAa,GAAI74D,IAAU,GAAI,CACvB,GAAI64D,GAAa,EAAG,CAClBA,GAAa,EACb,GAAIr4D,KAAKo0D,oBAAqB,CAC5B3J,EAAM8N,KAAO9rC,EAAMtnB,MAAMkzD,EAAWA,EAAY,GAChD,OAAO,KACR,CACF,CACDC,EAAoB3E,GAAyBn0D,EAC9C,MAAM,GAAIA,GAAS,IAAMA,GAAS,IAAK,CACtCitB,EAAM4rC,GAAa74D,EAAQ,IAC3B64D,GACD,MAAM,GAAI74D,GAAS,KAAOA,GAAS,IAAK,CACvCitB,EAAM4rC,GAAa74D,EAAQ,KAAOA,EAAQ,KAAO,GAAKsT,EAAKoN,GAAK,MAAQ1gB,EAAQ,KAAO,GAAKsT,EAAKoN,GAAK,IACtGA,IACAm4C,GACR,MAAa,GAAI74D,IAAU,IAAK,CACxBitB,EAAM4rC,IAAcvlD,EAAKoN,IAAM,GAAKpN,EAAKoN,EAAI,IAAM,GAAKpN,EAAKoN,EAAI,IAAM,EAAIpN,EAAKoN,EAAI,IAAM,MAC1FA,GAAK,EACLm4C,GACD,MAAM,GAAI74D,IAAU,IAAMA,IAAU,GAAI,CACvCirD,EAAM0E,OAASkJ,GAAa,EAC5B,GAAI5N,EAAM0E,QAAU,EAAG,CACrBr8C,EAAK6sC,WAAWz/B,EAAI,EAAGA,GAAI,GAC3BA,GAAK,EACLhhB,GAAU,EACV,QACD,CACDghB,GAAKuqC,EAAM0E,MAAQ,GAAK,EACxBkJ,GAAa,EACbC,EAAoB3E,GAAyBn0D,EAC9C,KAAM,IAAIA,IAAU,IAAMA,IAAU,GAAI,CACvC,MAAMs3D,EAAat3D,IAAU,GAAKo3D,EAAiB/B,EACnD,IAAKiC,EAAY,CACfwB,EAAoB3E,GAAyBn0D,GAC7CrB,KAAK,0BAA4Bm6D,EAAkBtgC,IACnD,OAAO,KACR,CACD,IAAIwgC,EAAO,MACP1B,EAAW71C,MAAQ,KACrBu3C,EAAO,IACE1B,EAAW71C,MAAQ,QAC5Bu3C,EAAO,MAET,MAAMC,EAAahsC,IAAQ4rC,GAAaG,EACxC,GAAIC,EAAa,GAAKA,GAAc3B,EAAW71C,OAASnJ,MAAM2gD,GAAa,CACzEH,EAAoB3E,GAAyBn0D,GAC7CrB,KAAK,+BAAiCm6D,EAAkBtgC,IACxD,OAAO,KACR,CACDyyB,EAAM4N,UAAYA,EAClB5N,EAAM2N,YACN,MAAMM,EAAQ14D,KAAKm4D,gBAAgB1N,EAAOqM,EAAWxoE,IAAImqE,GAAa7B,EAAgB/B,GACtF,IAAK6D,EACH,OAAO,MAETjO,EAAM2N,YACNC,EAAY5N,EAAM4N,UAClB,QACR,CAAa,GAAI74D,IAAU,GAAI,CACvBirD,EAAM4N,UAAYA,EAClB,OAAO,IACR,CAAM,GAAI74D,IAAU,GAAK0gB,IAAMpN,EAAK5T,OAAQ,CAC3C4T,EAAKoN,EAAI,GAAK,GACdo4C,EAAoB3E,GAAyB,GACrD,KAAa,IAAIn0D,IAAU,EAAG,CACtBsT,EAAK6sC,WAAWz/B,EAAI,EAAGA,GAAI,GAC3BA,GAAK,EACLhhB,GAAU,EACV,QACR,CACQo5D,EAAoB3E,GAAyBn0D,EAC9C,EACD,GAAI84D,EAAmB,CACrB,GAAIA,EAAkBzE,KAAM,CAC1BpJ,EAAM0E,OAASkJ,GAAa,EAC5B,GAAI74D,IAAU,GAAKA,IAAU,GAC3BirD,EAAMkO,UAAY,UACb,GAAIlO,EAAMkO,YAAcn5D,IAAU,GAAKA,IAAU,IAAK,CAC3DrB,KAAK,qCACL2U,EAAKoN,EAAI,GAAK1gB,IAAU,EAAI,EAAI,EACjC,CACF,CACD,GAAI,QAAS84D,IACN7N,EAAMsJ,YAAcsE,EAAYC,EAAkB92D,IAAK,CAC1DrD,KAAK,6BAA+Bm6D,EAAkBtgC,GAAK,aAAeqgC,EAAY,eAAiBC,EAAkB92D,KACzH,GAAI62D,IAAc,EAAG,CACnBvlD,EAAKoN,EAAI,GAAK,GACd,OAAO,IACR,CACD,OAAO,KACR,CAEH,GAAIuqC,EAAMmO,oBAAsBN,EAAkB1E,cAAe,CAC/DnJ,EAAMmO,mBAAqB,MAC3BP,GAAaC,EAAkB92D,IAC3B62D,GAAa,GAAKC,EAAkBzE,KACtCwE,GAAa,EACJA,EAAY,GACrBl6D,KAAK,wDAEHk6D,EAAY,IACd5N,EAAMpxC,MAAQoT,EAAM4rC,EAAY,GAEnC,CACD,GAAI,eAAgBC,EAAmB,CACjC,YAAaA,GACfA,EAAkBpE,QAAQznC,EAAO4rC,GAEnCA,GAAaC,EAAkBrE,UACzC,MAAe,GAAIqE,EAAkB1E,cAC3ByE,EAAY,OACP,GAAIC,EAAkBxE,WAAY,CACvCuE,EAAY,EACZ5N,EAAMsJ,WAAa,KAC7B,MAAe,GAAIuE,EAAkBvE,WAAY,CACvCsE,EAAY,EACZ5N,EAAMsJ,WAAa,KACnBtJ,EAAMmO,mBAAqB,KAC5B,CACF,CACF,CACG15D,EAAS4T,EAAK5T,QAChB4T,EAAK7Z,KAAK,GAAIiG,GAEhBurD,EAAM4N,UAAYA,EAClB,OAAO,IACR,CACD,gBAAA3B,EAAiBC,YACfA,EAAWC,eACXA,EAAc/B,gBACdA,EAAeyB,SACfA,EAAQF,QACRA,EAAOS,YACPA,IAEA,MAAME,EAAQ,GACd,MAAMC,EAAS,GACf,MAAM/1C,EAAQ01C,EAAY11C,MAC1B,IAAK,IAAI5f,EAAI,EAAGA,EAAI4f,EAAO5f,IAAK,CAC9B,MAAMw3D,EAAalC,EAAYroE,IAAI+S,GACnC,MAAMopD,EAAQ,CACZ2N,UAAW,EACXC,UAAW,EACX5rC,MAAO,GACPsnC,WAAY,KACZ5E,MAAO,EACPyJ,mBAAoB,KACpBL,KAAM,KACNl/C,MAAO,KACPs/C,UAAW,OAEb,IAAID,EAAQ,KACZ,IAAII,EAAiB,KACrB,IAAIC,EAAmBlC,EACvB,GAAIP,GAAYF,EAAQl3D,OAAQ,CAC9B,MAAM85D,EAAU1C,EAAS2C,WAAW53D,GACpC,GAAI23D,KAAa,EAAG,CAClB76D,KAAK,oCACLu6D,EAAQ,KACT,CACD,GAAIM,GAAW5C,EAAQl3D,OAAQ,CAC7Bf,KAAK,qCACLu6D,EAAQ,KACT,CACD,GAAIA,EAAO,CACTK,EAAmB3C,EAAQ4C,GAASnC,YACpCiC,EAAiBC,EAAiBjC,UACnC,CACF,MAAUF,IACTkC,EAAiBlC,GAEf8B,IACFA,EAAQ14D,KAAKm4D,gBAAgB1N,EAAOoO,EAAYC,EAAgBjE,IAElE,GAAIpK,EAAMpxC,QAAU,KAAM,CACxB,MAAM6/C,EAAeH,EAAiBh2C,UAAU,iBAChDi0C,EAAO31D,GAAK63D,EAAezO,EAAMpxC,KACzC,KAAa,CACL,MAAM8/C,EAAeJ,EAAiBh2C,UAAU,iBAChDi0C,EAAO31D,GAAK83D,CACb,CACG1O,EAAM8N,OAAS,OACjBxB,EAAM11D,GAAKopD,EAAM8N,MAEdG,GACH/B,EAAYhpD,IAAItM,EAAG,IAAIU,WAAW,CAAC,KAEtC,CACD,MAAO,CACL40D,cACAI,QACAC,SAEH,CACD,sBAAAoC,CAAuBC,GACrB,MAAMxC,EAAc72D,KAAKi1D,WAAWqE,eAAgB,GAAID,EAAW3X,SACnE2X,EAAWnB,SAAS,GAAI,CAAC,EAAG,IAC5BmB,EAAWxC,YAAcA,CAC1B,CACD,gBAAAvB,CAAiB+D,GACf,IAAKA,EAAW7D,QAAQ,WAAY,CAClCx1D,KAAKo5D,uBAAuBC,GAC5B,MACD,CACD,MAAME,EAAgBF,EAAWt2C,UAAU,WAC3C,IAAKpf,MAAM2J,QAAQisD,IAAkBA,EAAcr6D,SAAW,EAAG,CAC/Dm6D,EAAWG,aAAa,WACxB,MACD,CACD,MAAM3sD,EAAO0sD,EAAc,GAC3B,MAAMvlD,EAASulD,EAAc,GAC7B,GAAI1sD,IAAS,GAAKmH,GAAUhU,KAAKc,MAAM5B,OAAQ,CAC7Cc,KAAKo5D,uBAAuBC,GAC5B,MACD,CACD,MAAMI,EAAiBzlD,EAASnH,EAChC,MAAM6sD,EAAW15D,KAAKc,MAAMY,SAASsS,EAAQylD,GAC7C,MAAMprD,EAAOrO,KAAK+0D,UAAU2E,GAC5B,MAAM7C,EAAc72D,KAAKi1D,WAAWqE,eAAgBjrD,EAAMgrD,EAAW3X,SACrE2X,EAAWxC,YAAcA,EACrBA,EAAY9zC,UAAU,qBAAuB,GAC/C8zC,EAAY8C,UAAU,kBAAmB,KAE3C,IAAK9C,EAAY9zC,UAAU,SACzB,OAEF,MAAM62C,EAAc/C,EAAY9zC,UAAU,SAC1C,MAAM82C,EAAiB7lD,EAAS4lD,EAChC,GAAIA,IAAgB,GAAKC,GAAkB75D,KAAKc,MAAM5B,OAAQ,CAC5Dc,KAAKo5D,uBAAuBC,GAC5B,MACD,CACD,MAAMvC,EAAa92D,KAAKy0D,WAAWoF,GACnChD,EAAYC,WAAaA,EAAWvoE,GACrC,CACD,aAAA8nE,CAActlD,EAAK7R,EAAQwiD,EAASoY,GAClC,GAAI/oD,IAAQ,EACV,OAAO,IAAIgpD,WAAW,KAAMC,GAA0BC,UAAWrH,IAC5D,GAAI7hD,IAAQ,EACjB,OAAO,IAAIgpD,WAAW,KAAMC,GAA0BE,OAAQrH,IACzD,GAAI9hD,IAAQ,EACjB,OAAO,IAAIgpD,WAAW,KAAMC,GAA0BG,cAAerH,IAEvE,MAAMhyD,EAAQd,KAAKc,MACnB,MAAMiR,EAAQhB,EACd,MAAMqpD,EAASt5D,EAAMiQ,KACrB,MAAMilD,EAAU,CAAC8D,EAAM,EAAI,WAC3B,IAAI9hC,EAAI/W,EAAO5f,EACfnC,GAAU,EACV,OAAQk7D,GACN,KAAK,EACH,IAAK/4D,EAAI,EAAGA,EAAInC,EAAQmC,IAAK,CAC3B22B,EAAKl3B,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KAC/BilD,EAAQr0D,KAAKm4D,EAAM9hC,EAAK0pB,EAAQpzD,IAAI0pC,GACrC,CACD,MACF,KAAK,EACH,MAAOg+B,EAAQ92D,QAAUA,EAAQ,CAC/B84B,EAAKl3B,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KAC/BkQ,EAAQngB,EAAMiQ,KACd,IAAK1P,EAAI,EAAGA,GAAK4f,EAAO5f,IACtB20D,EAAQr0D,KAAKm4D,EAAM9hC,IAAO0pB,EAAQpzD,IAAI0pC,KAEzC,CACD,MACF,KAAK,EACH,MAAOg+B,EAAQ92D,QAAUA,EAAQ,CAC/B84B,EAAKl3B,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KAC/BkQ,EAAQngB,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KAClC,IAAK1P,EAAI,EAAGA,GAAK4f,EAAO5f,IACtB20D,EAAQr0D,KAAKm4D,EAAM9hC,IAAO0pB,EAAQpzD,IAAI0pC,KAEzC,CACD,MACF,QACE,MAAM,IAAIr3B,YAAY,0BAE1B,MAAM8Q,EAAMV,EACZ,MAAMspD,EAAMv5D,EAAMY,SAASqQ,EAAON,GAClC,OAAO,IAAIsoD,WAAW,MAAOK,EAAQpE,EAASqE,EAC/C,CACD,aAAA7D,CAAczlD,EAAK3C,EAAYszC,EAASsU,GACtC,MAAM/tD,EAAW9Z,OAAO0d,OAAO,MAC/B,MAAM/K,EAAQd,KAAKc,MACnB,IAAIw5D,EAAa,MACjB,IAAIF,EAAQ/4D,EAAGoH,EACf,IAAI4xD,EAAM,KACV,SAASE,iBACP,MAAMC,EAAmB15D,EAAMiQ,KAC/B,IAAK1P,EAAI,EAAGA,EAAIm5D,EAAkBn5D,IAAK,CACrC,MAAMlB,EAAOW,EAAMiQ,KACnB,MAAM0pD,GAAO35D,EAAMiQ,MAAU,IAAMjQ,EAAMiQ,KAAS,KAClD9I,EAAS9H,GAAQ61D,EAAQnF,QAAQnP,EAAQpzD,IAAImsE,GAC9C,CACF,CACD,GAAI1pD,IAAQ,GAAKA,IAAQ,EAAG,CAC1BupD,EAAa,KACbF,EAASrpD,EACT,MAAM2pD,EAAe3pD,EAAMgiD,GAAiBG,GAC5C,IAAK7xD,EAAI,EAAGoH,EAAKutD,EAAQ92D,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC5C,MAAM8pC,EAAQuvB,EAAa7J,QAAQmF,EAAQ30D,IACvC8pC,KAAW,IACbljC,EAASkjC,GAAS9pC,EAErB,CACP,KAAW,CACL,MAAMs5D,EAAY5pD,EAClBqpD,EAASt5D,EAAMiQ,KACf,OAAQqpD,EAAS,KACf,KAAK,EACH,MAAMQ,EAAc95D,EAAMiQ,KAC1B,IAAK1P,EAAI,EAAGA,GAAKu5D,EAAav5D,IAC5B4G,EAASnH,EAAMiQ,MAAU1P,EAE3B,MACF,KAAK,EACH,MAAMw5D,EAAc/5D,EAAMiQ,KAC1B,IAAI+pD,EAAM,EACV,IAAKz5D,EAAI,EAAGA,EAAIw5D,EAAax5D,IAAK,CAChC,MAAM0Q,EAAQjR,EAAMiQ,KACpB,MAAM23C,EAAO5nD,EAAMiQ,KACnB,IAAK,IAAImP,EAAInO,EAAOmO,GAAKnO,EAAQ22C,EAAMxoC,IACrCjY,EAASiY,GAAK46C,GAEjB,CACD,MACF,QACE,MAAM,IAAIn6D,YAAY,4BAA4By5D,YAEtD,MAAMljC,EAAUnmB,EAChB,GAAIqpD,EAAS,IAAM,CACjBt5D,EAAM65D,IAAc,IACpBJ,gBACD,CACDF,EAAMv5D,EAAMY,SAASi5D,EAAWzjC,EACjC,CACDkjC,GAAU,IACV,OAAO,IAAIW,YAAYT,EAAYF,EAAQnyD,EAAUoyD,EACtD,CACD,aAAA9D,CAAcxlD,EAAK7R,GACjB,MAAM4B,EAAQd,KAAKc,MACnB,MAAMs5D,EAASt5D,EAAMiQ,KACrB,MAAMulD,EAAW,GACjB,IAAIj1D,EACJ,OAAQ+4D,GACN,KAAK,EACH,IAAK/4D,EAAI,EAAGA,EAAInC,IAAUmC,EAAG,CAC3B,MAAM22B,EAAKl3B,EAAMiQ,KACjBulD,EAAS30D,KAAKq2B,EACf,CACD,MACF,KAAK,EACH,MAAM6iC,EAAc/5D,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KAC9C,IAAK1P,EAAI,EAAGA,EAAIw5D,IAAex5D,EAAG,CAChC,IAAIuE,EAAQ9E,EAAMiQ,MAAU,EAAIjQ,EAAMiQ,KACtC,GAAI1P,IAAM,GAAKuE,IAAU,EAAG,CAC1BzH,KAAK,mFACLyH,EAAQ,CACT,CACD,MAAMozD,EAAUl4D,EAAMiQ,KACtB,MAAMkgB,EAAOnwB,EAAMiQ,IAAQ,EAAIjQ,EAAMiQ,EAAM,GAC3C,IAAK,IAAImP,EAAIta,EAAOsa,EAAI+Q,IAAQ/Q,EAC9Bo2C,EAAS30D,KAAKq3D,EAEjB,CACDjoD,GAAO,EACP,MACF,QACE,MAAM,IAAIpQ,YAAY,kCAAkCy5D,OAE5D,GAAI9D,EAASp3D,SAAWA,EACtB,MAAM,IAAIyB,YAAY,qCAExB,OAAO,IAAIq6D,YAAYZ,EAAQ9D,EAChC,EAEH,MAAMhC,IACJ,WAAAr0D,GACED,KAAKktB,OAAS,KACdltB,KAAKm1D,MAAQ,GACbn1D,KAAKg1D,QAAU,KACfh1D,KAAK0hD,QAAU,IAAIqW,WACnB/3D,KAAK60D,gBAAkB,KACvB70D,KAAKiI,SAAW,KAChBjI,KAAKg2D,QAAU,KACfh2D,KAAK22D,YAAc,KACnB32D,KAAKo2D,QAAU,GACfp2D,KAAKs2D,SAAW,KAChBt2D,KAAKu1D,UAAY,KAClB,CACD,mBAAA0F,GACE,GAAIj7D,KAAK22D,YAAY11C,OAAS,MAAO,CACnC9iB,KAAK,6DACL,MACD,CACD,MAAM+8D,EAAYl7D,KAAK22D,YAAYroE,IAAI,GACvC0R,KAAK22D,YAAYvnD,IAAI8rD,GACjBl7D,KAAKu1D,WACPv1D,KAAKs2D,SAASA,SAAS30D,KAAK3B,KAAKs2D,SAASA,SAAS,GAEtD,CACD,UAAA6E,CAAWnjC,GACT,GAAIA,EAAK,GAAKA,GAAMh4B,KAAK22D,YAAY11C,MACnC,OAAO,MAET,MAAMm6C,EAAQp7D,KAAK22D,YAAYroE,IAAI0pC,GACnC,OAAOojC,EAAMl8D,OAAS,CACvB,EAEH,MAAMk4D,UACJ,WAAAn3D,CAAYo1C,EAAOC,EAAO4hB,EAASC,GACjCn3D,KAAKq1C,MAAQA,EACbr1C,KAAKs1C,MAAQA,EACbt1C,KAAKk3D,QAAUA,EACfl3D,KAAKm3D,QAAUA,CAChB,EAEH,MAAMY,WACJ,WAAA93D,GACED,KAAK0hD,QAAU,EAChB,CACD,GAAApzD,CAAI68C,GACF,OAAIA,GAAS,GAAKA,GAASuoB,GAA2B,EAC7CD,GAAmBtoB,GAExBA,EAAQuoB,IAA4B1zD,KAAK0hD,QAAQxiD,OAC5Cc,KAAK0hD,QAAQvW,EAAQuoB,IAEvBD,GAAmB,EAC3B,CACD,MAAA4H,CAAOv5D,GACL,IAAIqpC,EAAQsoB,GAAmB5C,QAAQ/uD,GACvC,GAAIqpC,KAAW,EACb,OAAOA,EAETA,EAAQnrC,KAAK0hD,QAAQmP,QAAQ/uD,GAC7B,OAAIqpC,KAAW,EACNA,EAAQuoB,IAET,CACT,CACD,GAAAtkD,CAAI5P,GACFQ,KAAK0hD,QAAQ//C,KAAKnC,EACnB,CACD,SAAIyhB,GACF,OAAOjhB,KAAK0hD,QAAQxiD,MACrB,EAEH,MAAMw4D,SACJ,WAAAz3D,GACED,KAAKs7D,QAAU,GACft7D,KAAKd,OAAS,CACf,CACD,GAAAkQ,CAAI0D,GACF9S,KAAKd,QAAU4T,EAAK5T,OACpBc,KAAKs7D,QAAQ35D,KAAKmR,EACnB,CACD,GAAAnF,CAAIw9B,EAAOr4B,GACT9S,KAAKd,QAAU4T,EAAK5T,OAASc,KAAKs7D,QAAQnwB,GAAOjsC,OACjDc,KAAKs7D,QAAQnwB,GAASr4B,CACvB,CACD,GAAAxkB,CAAI68C,GACF,OAAOnrC,KAAKs7D,QAAQnwB,EACrB,CACD,SAAIlqB,GACF,OAAOjhB,KAAKs7D,QAAQp8D,MACrB,EAEH,MAAMq8D,QACJ,WAAAt7D,CAAYu7D,EAAQ9Z,GAClB1hD,KAAKy7D,aAAeD,EAAOC,aAC3Bz7D,KAAK07D,aAAeF,EAAOE,aAC3B17D,KAAK27D,SAAWH,EAAOG,SACvB37D,KAAK47D,MAAQJ,EAAOI,MACpB57D,KAAK67D,QAAUL,EAAOK,QACtB77D,KAAK87D,MAAQN,EAAOM,MACpB97D,KAAK0hD,QAAUA,EACf1hD,KAAK0N,OAASvf,OAAO0d,OAAO,KAC7B,CACD,QAAAqsD,CAASjqE,EAAKuR,GACZ,KAAMvR,KAAO+R,KAAKy7D,cAChB,OAAO,MAET,GAAIj8D,EAAMN,SAAW,EACnB,OAAO,KAET,IAAK,MAAM2nB,KAAOrnB,EAChB,GAAIsY,MAAM+O,GAAM,CACd1oB,KAAK,2BAA2BqB,eAAmBvR,OACnD,OAAO,IACR,CAEH,MAAMoB,EAAO2Q,KAAK47D,MAAM3tE,GACpBoB,IAAS,OAASA,IAAS,OAASA,IAAS,WAC/CmQ,EAAQA,EAAM,IAEhBQ,KAAK0N,OAAOzf,GAAOuR,EACnB,OAAO,IACR,CACD,SAAAm6D,CAAU55D,EAAMP,GACd,KAAMO,KAAQC,KAAK07D,cACjB,MAAM,IAAI/6D,YAAY,4BAA4BZ,MAEpDC,KAAK0N,OAAO1N,KAAK07D,aAAa37D,IAASP,CACxC,CACD,OAAAg2D,CAAQz1D,GACN,OAAOC,KAAK07D,aAAa37D,KAASC,KAAK0N,MACxC,CACD,SAAAqV,CAAUhjB,GACR,KAAMA,KAAQC,KAAK07D,cACjB,MAAM,IAAI/6D,YAAY,2BAA2BZ,MAEnD,MAAM9R,EAAM+R,KAAK07D,aAAa37D,GAC9B,OAAM9R,KAAO+R,KAAK0N,OAGX1N,KAAK0N,OAAOzf,GAFV+R,KAAK27D,SAAS1tE,EAGxB,CACD,YAAAurE,CAAaz5D,UACJC,KAAK0N,OAAO1N,KAAK07D,aAAa37D,GACtC,CACD,mBAAOg8D,CAAaC,GAClB,MAAMR,EAAS,CACbC,aAAc,CAAE,EAChBC,aAAc,CAAE,EAChBC,SAAU,CAAE,EACZC,MAAO,CAAE,EACTC,QAAS,CAAE,EACXC,MAAO,IAET,IAAK,MAAMpmD,KAASsmD,EAAQ,CAC1B,MAAM/tE,EAAM0V,MAAM2J,QAAQoI,EAAM,KAAOA,EAAM,GAAG,IAAM,GAAKA,EAAM,GAAG,GAAKA,EAAM,GAC/E8lD,EAAOC,aAAaxtE,GAAOynB,EAAM,GACjC8lD,EAAOE,aAAahmD,EAAM,IAAMznB,EAChCutE,EAAOI,MAAM3tE,GAAOynB,EAAM,GAC1B8lD,EAAOG,SAAS1tE,GAAOynB,EAAM,GAC7B8lD,EAAOK,QAAQ5tE,GAAO0V,MAAM2J,QAAQoI,EAAM,IAAMA,EAAM,GAAK,CAACA,EAAM,IAClE8lD,EAAOM,MAAMn6D,KAAK1T,EACnB,CACD,OAAOutE,CACR,EAEH,MAAMS,GAAmB,CAAC,CAAC,CAAC,GAAI,IAAK,MAAO,CAAC,MAAO,MAAO,OAAQ,MAAO,CAAC,CAAC,GAAI,IAAK,gBAAiB,MAAO,MAAO,CAAC,EAAG,UAAW,MAAO,MAAO,CAAC,EAAG,SAAU,MAAO,MAAO,CAAC,CAAC,GAAI,GAAI,YAAa,MAAO,MAAO,CAAC,EAAG,WAAY,MAAO,MAAO,CAAC,EAAG,aAAc,MAAO,MAAO,CAAC,EAAG,SAAU,MAAO,MAAO,CAAC,CAAC,GAAI,GAAI,eAAgB,MAAO,GAAI,CAAC,CAAC,GAAI,GAAI,cAAe,MAAO,GAAI,CAAC,CAAC,GAAI,GAAI,oBAAqB,OAAQ,KAAM,CAAC,CAAC,GAAI,GAAI,qBAAsB,MAAO,IAAK,CAAC,CAAC,GAAI,GAAI,YAAa,MAAO,GAAI,CAAC,CAAC,GAAI,GAAI,iBAAkB,MAAO,GAAI,CAAC,CAAC,GAAI,GAAI,aAAc,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,IAAK,CAAC,GAAI,WAAY,MAAO,MAAO,CAAC,EAAG,WAAY,CAAC,MAAO,MAAO,MAAO,OAAQ,CAAC,EAAG,EAAG,EAAG,IAAK,CAAC,CAAC,GAAI,GAAI,cAAe,MAAO,GAAI,CAAC,GAAI,OAAQ,QAAS,MAAO,CAAC,GAAI,UAAW,SAAU,GAAI,CAAC,GAAI,WAAY,SAAU,GAAI,CAAC,GAAI,cAAe,SAAU,GAAI,CAAC,GAAI,UAAW,CAAC,SAAU,UAAW,MAAO,CAAC,CAAC,GAAI,IAAK,aAAc,MAAO,MAAO,CAAC,CAAC,GAAI,IAAK,eAAgB,MAAO,MAAO,CAAC,CAAC,GAAI,IAAK,gBAAiB,QAAS,MAAO,CAAC,CAAC,GAAI,IAAK,iBAAkB,MAAO,GAAI,CAAC,CAAC,GAAI,IAAK,kBAAmB,MAAO,GAAI,CAAC,CAAC,GAAI,IAAK,cAAe,MAAO,GAAI,CAAC,CAAC,GAAI,IAAK,WAAY,MAAO,MAAO,CAAC,CAAC,GAAI,IAAK,UAAW,MAAO,MAAO,CAAC,CAAC,GAAI,IAAK,WAAY,SAAU,MAAO,CAAC,CAAC,GAAI,IAAK,UAAW,SAAU,MAAO,CAAC,CAAC,GAAI,IAAK,WAAY,MAAO,OACz0C,MAAM/G,mBAAmBqG,QACvB,iBAAWC,GACT,OAAOj8D,OAAOS,KAAM,SAAUA,KAAK+7D,aAAaE,IACjD,CACD,WAAAh8D,CAAYyhD,GACVthD,MAAM80D,WAAWsG,OAAQ9Z,GACzB1hD,KAAK62D,YAAc,IACpB,EAEH,MAAMqF,GAAuB,CAAC,CAAC,EAAG,aAAc,QAAS,MAAO,CAAC,EAAG,aAAc,QAAS,MAAO,CAAC,EAAG,cAAe,QAAS,MAAO,CAAC,EAAG,mBAAoB,QAAS,MAAO,CAAC,CAAC,GAAI,GAAI,YAAa,MAAO,SAAW,CAAC,CAAC,GAAI,IAAK,YAAa,MAAO,GAAI,CAAC,CAAC,GAAI,IAAK,WAAY,MAAO,GAAI,CAAC,GAAI,QAAS,MAAO,MAAO,CAAC,GAAI,QAAS,MAAO,MAAO,CAAC,CAAC,GAAI,IAAK,YAAa,QAAS,MAAO,CAAC,CAAC,GAAI,IAAK,YAAa,QAAS,MAAO,CAAC,CAAC,GAAI,IAAK,YAAa,MAAO,GAAI,CAAC,CAAC,GAAI,IAAK,gBAAiB,MAAO,GAAI,CAAC,CAAC,GAAI,IAAK,kBAAmB,MAAO,KAAO,CAAC,CAAC,GAAI,IAAK,oBAAqB,MAAO,GAAI,CAAC,GAAI,gBAAiB,MAAO,GAAI,CAAC,GAAI,gBAAiB,MAAO,GAAI,CAAC,GAAI,QAAS,SAAU,OAC9pB,MAAM5C,uBAAuBiC,QAC3B,iBAAWC,GACT,OAAOj8D,OAAOS,KAAM,SAAUA,KAAK+7D,aAAaG,IACjD,CACD,WAAAj8D,CAAYyhD,GACVthD,MAAMk5D,eAAekC,OAAQ9Z,GAC7B1hD,KAAK82D,WAAa,IACnB,EAEH,MAAMkD,GAA4B,CAChCC,UAAW,EACXC,OAAQ,EACRC,cAAe,GAEjB,MAAMJ,WACJ,WAAA95D,CAAYq6D,EAAYF,EAAQpE,EAASqE,GACvCr6D,KAAKs6D,WAAaA,EAClBt6D,KAAKo6D,OAASA,EACdp6D,KAAKg2D,QAAUA,EACfh2D,KAAKq6D,IAAMA,CACZ,EAEH,MAAMU,YACJ,WAAA96D,CAAYq6D,EAAYF,EAAQnyD,EAAUoyD,GACxCr6D,KAAKs6D,WAAaA,EAClBt6D,KAAKo6D,OAASA,EACdp6D,KAAKiI,SAAWA,EAChBjI,KAAKq6D,IAAMA,CACZ,EAEH,MAAMW,YACJ,WAAA/6D,CAAYm6D,EAAQ9D,GAClBt2D,KAAKo6D,OAASA,EACdp6D,KAAKs2D,SAAWA,CACjB,CACD,UAAA2C,CAAWkD,GACT,OAAIA,EAAa,GAAKA,GAAcn8D,KAAKs2D,SAASp3D,QACxC,EAEHc,KAAKs2D,SAAS6F,EACtB,EAEH,MAAMC,iBACJ,WAAAn8D,GACED,KAAK23D,QAAUxpE,OAAO0d,OAAO,KAC9B,CACD,UAAAwwD,CAAWpuE,GACT,OAAOA,KAAO+R,KAAK23D,OACpB,CACD,KAAA2E,CAAMruE,EAAKytD,GACT,GAAIztD,KAAO+R,KAAK23D,QACd,MAAM,IAAIh3D,YAAY,gCAAgC1S,KAExD+R,KAAK23D,QAAQ1pE,GAAOytD,CACrB,CACD,MAAA1nC,CAAOxU,GACL,IAAK,MAAMvR,KAAO+R,KAAK23D,QACrB33D,KAAK23D,QAAQ1pE,IAAQuR,CAExB,CACD,gBAAA+8D,CAAiBtuE,EAAKyf,EAAQ2pC,GAC5B,KAAMppD,KAAO+R,KAAK23D,SAChB,MAAM,IAAIh3D,YAAY,4BAA4B1S,KAEpD,MAAM6kB,EAAOukC,EAAOvkC,KACpB,MAAM0pD,EAAax8D,KAAK23D,QAAQ1pE,GAChC,MAAM4e,EAAO,EACb,IAAK,IAAIxL,EAAI,EAAGoH,EAAKiF,EAAOxO,OAAQmC,EAAIoH,IAAMpH,EAAG,CAC/C,MAAMmmC,EAAUnmC,EAAIwL,EAAO2vD,EAC3B,MAAMC,EAAUj1B,EAAU,EAC1B,MAAMk1B,EAAUl1B,EAAU,EAC1B,MAAMm1B,EAAUn1B,EAAU,EAC1B,MAAMo1B,EAAUp1B,EAAU,EAC1B,GAAI10B,EAAK00B,KAAa,IAAQ10B,EAAK2pD,KAAa,GAAK3pD,EAAK4pD,KAAa,GAAK5pD,EAAK6pD,KAAa,GAAK7pD,EAAK8pD,KAAa,EACnH,MAAM,IAAIj8D,YAAY,0CAExB,MAAMnB,EAAQkO,EAAOrM,GACrByR,EAAK00B,GAAW,GAChB10B,EAAK2pD,GAAWj9D,GAAS,GAAK,IAC9BsT,EAAK4pD,GAAWl9D,GAAS,GAAK,IAC9BsT,EAAK6pD,GAAWn9D,GAAS,EAAI,IAC7BsT,EAAK8pD,GAAWp9D,EAAQ,GACzB,CACF,EAEH,MAAMq9D,YACJ,WAAA58D,CAAYo0D,GACVr0D,KAAKq0D,IAAMA,CACZ,CACD,OAAAyI,GACE,MAAMzI,EAAMr0D,KAAKq0D,IACjB,MAAMhd,EAAS,CACbvkC,KAAM,GACN5T,OAAQ,EACR,GAAAkQ,CAAI0D,GACF,IACE9S,KAAK8S,KAAKnR,QAAQmR,EAC5B,CAAU,MACA9S,KAAK8S,KAAO9S,KAAK8S,KAAKunB,OAAOvnB,EAC9B,CACD9S,KAAKd,OAASc,KAAK8S,KAAK5T,MACzB,GAEH,MAAMguB,EAASltB,KAAK+8D,cAAc1I,EAAInnC,QACtCmqB,EAAOjoC,IAAI8d,GACX,MAAMsnC,EAAYx0D,KAAKg9D,iBAAiB3I,EAAIc,OAC5C9d,EAAOjoC,IAAIolD,GACX,GAAIH,EAAIkB,WACFlB,EAAIW,QAAQQ,QAAQ,cAAe,CACrC,MAAMrwC,EAAOkvC,EAAIW,QAAQjyC,UAAU,cACnCsxC,EAAIW,QAAQwE,aAAa,cACzB,IAAK,MAAMjrD,KAAW8lD,EAAI+B,QAAS,CACjC,IAAI9xC,EAASa,EAAKhgB,MAAM,GACpBoJ,EAAQinD,QAAQ,gBAClBlxC,EAAStgB,KAAKzL,UAAU+rB,EAAQ/V,EAAQwU,UAAU,gBAEpDxU,EAAQorD,UAAU,aAAcr1C,EACjC,CACF,CAEH,MAAM24C,EAAO5I,EAAIW,QAAQjyC,UAAU,QAC/Bk6C,GAAM/9D,OAAS,IACjBm1D,EAAIW,QAAQwE,aAAa,QAE3BnF,EAAIW,QAAQ2E,UAAU,UAAW,GACjC,IAAIuD,EAAWl9D,KAAKm9D,gBAAgB,CAAC9I,EAAIW,SAAU3d,EAAOn4C,OAAQm1D,EAAIkB,WACtEle,EAAOjoC,IAAI8tD,EAAS7lB,QACpB,MAAM+lB,EAAiBF,EAASG,SAAS,GACzC,MAAMzI,EAAc50D,KAAKs9D,mBAAmBjJ,EAAI3S,QAAQA,SACxDrK,EAAOjoC,IAAIwlD,GACX,MAAMC,EAAkB70D,KAAKu9D,aAAalJ,EAAIQ,iBAC9Cxd,EAAOjoC,IAAIylD,GACX,GAAIR,EAAIpsD,UAAYosD,EAAIW,QAAQQ,QAAQ,YACtC,GAAInB,EAAIpsD,SAASqyD,WACf8C,EAAeb,iBAAiB,WAAY,CAAClI,EAAIpsD,SAASmyD,QAAS/iB,OAC9D,CACL,MAAMpvC,EAAWjI,KAAKw9D,gBAAgBnJ,EAAIpsD,UAC1Cm1D,EAAeb,iBAAiB,WAAY,CAACllB,EAAOn4C,QAASm4C,GAC7DA,EAAOjoC,IAAInH,EACZ,CAEH,MAAM+tD,EAAUh2D,KAAKy9D,eAAepJ,EAAI2B,QAAS3B,EAAIsC,YAAY11C,MAAOozC,EAAI3S,QAAS2S,EAAIkB,WACzF6H,EAAeb,iBAAiB,UAAW,CAACllB,EAAOn4C,QAASm4C,GAC5DA,EAAOjoC,IAAI4mD,GACX,MAAMW,EAAc32D,KAAK09D,mBAAmBrJ,EAAIsC,aAChDyG,EAAeb,iBAAiB,cAAe,CAACllB,EAAOn4C,QAASm4C,GAChEA,EAAOjoC,IAAIunD,GACX,GAAItC,EAAIkB,UAAW,CACjB6H,EAAeb,iBAAiB,WAAY,CAACllB,EAAOn4C,QAASm4C,GAC7D,MAAMif,EAAWt2D,KAAK29D,gBAAgBtJ,EAAIiC,UAC1Cjf,EAAOjoC,IAAIknD,GACX4G,EAAWl9D,KAAKm9D,gBAAgB9I,EAAI+B,QAAS/e,EAAOn4C,OAAQ,MAC5Dk+D,EAAeb,iBAAiB,UAAW,CAACllB,EAAOn4C,QAASm4C,GAC5DA,EAAOjoC,IAAI8tD,EAAS7lB,QACpB,MAAMumB,EAAmBV,EAASG,SAClCr9D,KAAK69D,oBAAoBxJ,EAAI+B,QAASwH,EAAkBvmB,EACzD,CACDr3C,KAAK69D,oBAAoB,CAACxJ,EAAIW,SAAU,CAACoI,GAAiB/lB,GAC1DA,EAAOjoC,IAAI,CAAC,IACZ,OAAOioC,EAAOvkC,IACf,CACD,YAAAgrD,CAAat+D,GACX,OAAI5B,OAAOC,UAAU2B,GACZQ,KAAK+9D,cAAcv+D,GAErBQ,KAAKg+D,YAAYx+D,EACzB,CACD,4BAAWy+D,GACT,OAAO1+D,OAAOS,KAAM,oBAAqB,gDAC1C,CACD,WAAAg+D,CAAYhzD,GACV,IAAIxL,EAAQwL,EAAIlH,WAChB,MAAMc,EAAIi4D,YAAYoB,kBAAkBpvD,KAAKrP,GAC7C,GAAIoF,EAAG,CACL,MAAMs5D,EAAUrmD,WAAW,OAASjT,EAAE,IAAMA,EAAE,GAAK,GAAKA,EAAE,GAAG1F,SAC7DM,GAAS+B,KAAK+W,MAAMtN,EAAMkzD,GAAWA,GAASp6D,UAC/C,CACD,IAAIq6D,EAAU,GACd,IAAI98D,EAAGoH,EACP,IAAKpH,EAAI,EAAGoH,EAAKjJ,EAAMN,OAAQmC,EAAIoH,IAAMpH,EAAG,CAC1C,MAAMqE,EAAIlG,EAAM6B,GAEd88D,GADEz4D,IAAM,IACGlG,IAAQ6B,KAAO,IAAM,IAAM,IAC7BqE,IAAM,IACJ,IACFA,IAAM,IACJ,IAEAA,CAEd,CACDy4D,GAAWA,EAAQj/D,OAAS,EAAI,IAAM,KACtC,MAAMm5C,EAAM,CAAC,IACb,IAAKh3C,EAAI,EAAGoH,EAAK01D,EAAQj/D,OAAQmC,EAAIoH,EAAIpH,GAAK,EAC5Cg3C,EAAI12C,KAAKmN,SAASqvD,EAAQ5oD,UAAUlU,EAAGA,EAAI,GAAI,KAEjD,OAAOg3C,CACR,CACD,aAAA0lB,CAAcv+D,GACZ,IAAIW,EACJ,GAAIX,IAAU,KAAOA,GAAS,IAC5BW,EAAO,CAACX,EAAQ,UACX,GAAIA,GAAS,KAAOA,GAAS,KAAM,CACxCA,GAAS,IACTW,EAAO,CAAgB,KAAdX,GAAS,GAAUA,EAAQ,IACrC,MAAM,GAAIA,IAAU,MAAQA,IAAU,IAAK,CAC1CA,GAASA,EAAQ,IACjBW,EAAO,CAAgB,KAAdX,GAAS,GAAUA,EAAQ,IACrC,MACCW,EADSX,IAAU,OAASA,GAAS,MAC9B,CAAC,GAAMA,GAAS,EAAI,IAAMA,EAAQ,KAElC,CAAC,GAAMA,GAAS,GAAK,IAAMA,GAAS,GAAK,IAAMA,GAAS,EAAI,IAAMA,EAAQ,KAEnF,OAAOW,CACR,CACD,aAAA48D,CAAc7vC,GACZ,MAAO,CAACA,EAAOmoB,MAAOnoB,EAAOooB,MAAO,EAAGpoB,EAAOiqC,QAC/C,CACD,gBAAA6F,CAAiB7H,GACf,MAAMX,EAAY,IAAIkD,SACtB,IAAK,MAAM33D,KAAQo1D,EAAO,CACxB,MAAMj2D,EAASqC,KAAKC,IAAIzB,EAAKb,OAAQ,KACrC,IAAIk/D,EAAgB,IAAIz6D,MAAMzE,GAC9B,IAAK,IAAIghB,EAAI,EAAGA,EAAIhhB,EAAQghB,IAAK,CAC/B,IAAI5K,EAAOvV,EAAKmgB,IACZ5K,EAAO,KAAOA,EAAO,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,KAAOA,IAAS,OACvLA,EAAO,KAET8oD,EAAcl+C,GAAK5K,CACpB,CACD8oD,EAAgBA,EAAcx8D,KAAK,IAC/Bw8D,IAAkB,KACpBA,EAAgB,iBAElB5J,EAAUplD,IAAIvN,cAAcu8D,GAC7B,CACD,OAAOp+D,KAAKu9D,aAAa/I,EAC1B,CACD,eAAA2I,CAAgBkB,EAAOn/D,EAAQo/D,GAC7B,MAAMV,EAAmB,GACzB,IAAI3H,EAAe,IAAIyB,SACvB,IAAK,MAAMvB,KAAYkI,EAAO,CAC5B,GAAIC,EAAe,CACjBnI,EAASqD,aAAa,kBACtBrD,EAASqD,aAAa,mBACtBrD,EAASqD,aAAa,eACtBrD,EAASqD,aAAa,YACtBrD,EAASqD,aAAa,UACvB,CACD,MAAM+E,EAAkB,IAAInC,iBAC5B,MAAMoC,EAAex+D,KAAKy+D,YAAYtI,EAAUoI,GAChDX,EAAiBj8D,KAAK48D,GACtBtI,EAAa7mD,IAAIovD,GACjBD,EAAgBvqD,OAAO9U,EACxB,CACD+2D,EAAej2D,KAAKu9D,aAAatH,EAAc2H,GAC/C,MAAO,CACLP,SAAUO,EACVvmB,OAAQ4e,EAEX,CACD,mBAAA4H,CAAoBQ,EAAOhB,EAAUhmB,GACnC,IAAK,IAAIh2C,EAAI,EAAGoH,EAAK41D,EAAMn/D,OAAQmC,EAAIoH,IAAMpH,EAAG,CAC9C,MAAM80D,EAAWkI,EAAMh9D,GACvB,MAAMw1D,EAAcV,EAASU,YAC7B,IAAKA,IAAgBV,EAASX,QAAQ,WACpC,MAAM,IAAI70D,YAAY,uCAExB,MAAM+9D,EAAqB,IAAItC,iBAC/B,MAAMuC,EAAkB3+D,KAAKy+D,YAAY5H,EAAa6H,GACtD,IAAIE,EAAevnB,EAAOn4C,OAC1Bw/D,EAAmB1qD,OAAO4qD,GACrBD,EAAgBz/D,SACnB0/D,EAAe,GAEjBvB,EAASh8D,GAAGk7D,iBAAiB,UAAW,CAACoC,EAAgBz/D,OAAQ0/D,GAAevnB,GAChFA,EAAOjoC,IAAIuvD,GACX,GAAI9H,EAAYC,YAAcD,EAAYrB,QAAQ,SAAU,CAC1D,MAAMqJ,EAAQ7+D,KAAKu9D,aAAa1G,EAAYC,YAC5C4H,EAAmBnC,iBAAiB,QAAS,CAACoC,EAAgBz/D,QAASm4C,GACvEA,EAAOjoC,IAAIyvD,EACZ,CACF,CACF,CACD,WAAAJ,CAAYpwD,EAAMywD,GAChB,MAAMzmB,EAAM,GACZ,IAAK,MAAMpqD,KAAOogB,EAAKytD,MAAO,CAC5B,KAAM7tE,KAAOogB,EAAKX,QAChB,SAEF,IAAIA,EAASW,EAAKX,OAAOzf,GACzB,IAAI2tE,EAAQvtD,EAAKutD,MAAM3tE,GAClB0V,MAAM2J,QAAQsuD,KACjBA,EAAQ,CAACA,IAENj4D,MAAM2J,QAAQI,KACjBA,EAAS,CAACA,IAEZ,GAAIA,EAAOxO,SAAW,EAAtB,CAGA,IAAK,IAAIghB,EAAI,EAAGitB,EAAKyuB,EAAM18D,OAAQghB,EAAIitB,IAAMjtB,EAAG,CAC9C,MAAM7wB,EAAOusE,EAAM17C,GACnB,MAAM1gB,EAAQkO,EAAOwS,GACrB,OAAQ7wB,GACN,IAAK,MACL,IAAK,MACHgpD,EAAI12C,QAAQ3B,KAAK89D,aAAat+D,IAC9B,MACF,IAAK,SACH,MAAMO,EAAOsO,EAAKotD,aAAaxtE,GAC1B6wE,EAAczC,WAAWt8D,IAC5B++D,EAAcxC,MAAMv8D,EAAMs4C,EAAIn5C,QAEhCm5C,EAAI12C,KAAK,GAAM,EAAG,EAAG,EAAG,GACxB,MACF,IAAK,QACL,IAAK,QACH02C,EAAI12C,QAAQ3B,KAAK89D,aAAat+D,IAC9B,IAAK,IAAI0mB,EAAI,EAAGoiC,EAAK56C,EAAOxO,OAAQgnB,EAAIoiC,IAAMpiC,EAC5CmyB,EAAI12C,QAAQ3B,KAAK89D,aAAapwD,EAAOwY,KAEvC,MACF,QACE,MAAM,IAAIvlB,YAAY,wBAAwBtR,KAEnD,CACDgpD,EAAI12C,QAAQ0M,EAAKwtD,QAAQ5tE,GA3BxB,CA4BF,CACD,OAAOoqD,CACR,CACD,kBAAAilB,CAAmB5b,GACjB,MAAMkT,EAAc,IAAI8C,SACxB,IAAK,MAAMhV,KAAUhB,EACnBkT,EAAYxlD,IAAIvN,cAAc6gD,IAEhC,OAAO1iD,KAAKu9D,aAAa3I,EAC1B,CACD,kBAAA8I,CAAmB/G,GACjB,MAAMoI,EAAmB,IAAIrH,SAC7B,IAAK,IAAIr2D,EAAI,EAAGA,EAAIs1D,EAAY11C,MAAO5f,IAAK,CAC1C,MAAM+5D,EAAQzE,EAAYroE,IAAI+S,GAC1B+5D,EAAMl8D,SAAW,EAIrB6/D,EAAiB3vD,IAAIgsD,GAHnB2D,EAAiB3vD,IAAI,IAAIrN,WAAW,CAAC,IAAM,KAI9C,CACD,OAAO/B,KAAKu9D,aAAawB,EAC1B,CACD,cAAAtB,CAAezH,EAASgJ,EAAWtd,EAAS6T,GAC1C,IAAIld,EACJ,MAAM4mB,EAAsBD,EAAY,EACxC,GAAIzJ,EACFld,EAAM,IAAIt2C,WAAW,CAAC,EAAG,EAAG,EAAGk9D,GAAuB,EAAI,IAAMA,EAAsB,UACjF,CACL,MAAM//D,EAAS,EAAI+/D,EAAsB,EACzC5mB,EAAM,IAAIt2C,WAAW7C,GACrBm5C,EAAI,GAAK,EACT,IAAI6mB,EAAe,EACnB,MAAMC,EAAcnJ,EAAQA,QAAQ92D,OACpC,IAAIkgE,EAAS,MACb,IAAK,IAAI/9D,EAAI,EAAGA,EAAIg3C,EAAIn5C,OAAQmC,GAAK,EAAG,CACtC,IAAIo5D,EAAM,EACV,GAAIyE,EAAeC,EAAa,CAC9B,MAAMp/D,EAAOi2D,EAAQA,QAAQkJ,KAC7BzE,EAAM/Y,EAAQ2Z,OAAOt7D,GACrB,GAAI06D,KAAS,EAAG,CACdA,EAAM,EACN,IAAK2E,EAAQ,CACXA,EAAS,KACTjhE,KAAK,iBAAiB4B,mBACvB,CACF,CACF,CACDs4C,EAAIh3C,GAAKo5D,GAAO,EAAI,IACpBpiB,EAAIh3C,EAAI,GAAKo5D,EAAM,GACpB,CACF,CACD,OAAOz6D,KAAKq/D,kBAAkBhnB,EAC/B,CACD,eAAAmlB,CAAgBv1D,GACd,OAAOjI,KAAKq/D,kBAAkBp3D,EAASoyD,IACxC,CACD,eAAAsD,CAAgBrH,GACd,MAAM8D,EAAS9D,EAAS8D,OACxB,IAAI/hB,EAAKh3C,EACT,OAAQ+4D,GACN,KAAK,EACH/hB,EAAM,IAAIt2C,WAAW,EAAIu0D,EAASA,SAASp3D,QAC3Cm5C,EAAI,GAAK+hB,EACT,IAAK/4D,EAAI,EAAGA,EAAIi1D,EAASA,SAASp3D,OAAQmC,IACxCg3C,EAAIh3C,EAAI,GAAKi1D,EAASA,SAASj1D,GAEjC,MACF,KAAK,EACH,MAAM0Q,EAAQ,EACd,IAAIutD,EAAShJ,EAASA,SAAS,GAC/B,MAAMn4C,EAAS,CAACi8C,EAAQ,EAAG,EAAGroD,GAAS,EAAI,IAAMA,EAAQ,IAAMutD,GAC/D,IAAKj+D,EAAI,EAAGA,EAAIi1D,EAASA,SAASp3D,OAAQmC,IAAK,CAC7C,MAAMk+D,EAAYjJ,EAASA,SAASj1D,GACpC,GAAIk+D,IAAcD,EAAQ,CACxBnhD,EAAOxc,KAAKN,GAAK,EAAI,IAAMA,EAAI,IAAMk+D,GACrCD,EAASC,CACV,CACF,CACD,MAAMC,GAAarhD,EAAOjf,OAAS,GAAK,EACxCif,EAAO,GAAKqhD,GAAa,EAAI,IAC7BrhD,EAAO,GAAKqhD,EAAY,IACxBrhD,EAAOxc,KAAKN,GAAK,EAAI,IAAMA,EAAI,KAC/Bg3C,EAAM,IAAIt2C,WAAWoc,GACrB,MAEJ,OAAOne,KAAKq/D,kBAAkBhnB,EAC/B,CACD,iBAAAgnB,CAAkBvsD,GAChB,OAAOnP,MAAMC,KAAKkP,EACnB,CACD,YAAAyqD,CAAapyB,EAAOkyB,EAAW,IAC7B,MAAM/B,EAAUnwB,EAAMmwB,QACtB,MAAMr6C,EAAQq6C,EAAQp8D,OACtB,GAAI+hB,IAAU,EACZ,MAAO,CAAC,EAAG,GAEb,MAAMnO,EAAO,CAACmO,GAAS,EAAI,IAAMA,EAAQ,KACzC,IACE5f,EADEo+D,EAAa,EAEjB,IAAKp+D,EAAI,EAAGA,EAAI4f,IAAS5f,EACvBo+D,GAAcnE,EAAQj6D,GAAGnC,OAE3B,IAAI04D,EAEFA,EADE6H,EAAa,IACF,EACJA,EAAa,MACT,EACJA,EAAa,SACT,EAEA,EAEf3sD,EAAKnR,KAAKi2D,GACV,IAAIiC,EAAiB,EACrB,IAAKx4D,EAAI,EAAGA,EAAI4f,EAAQ,EAAG5f,IAAK,CAC1Bu2D,IAAe,EACjB9kD,EAAKnR,KAAKk4D,EAAiB,KAClBjC,IAAe,EACxB9kD,EAAKnR,KAAKk4D,GAAkB,EAAI,IAAMA,EAAiB,KAC9CjC,IAAe,EACxB9kD,EAAKnR,KAAKk4D,GAAkB,GAAK,IAAMA,GAAkB,EAAI,IAAMA,EAAiB,KAEpF/mD,EAAKnR,KAAKk4D,IAAmB,GAAK,IAAMA,GAAkB,GAAK,IAAMA,GAAkB,EAAI,IAAMA,EAAiB,KAEhHyB,EAAQj6D,KACVw4D,GAAkByB,EAAQj6D,GAAGnC,OAEhC,CACD,IAAKmC,EAAI,EAAGA,EAAI4f,EAAO5f,IAAK,CACtBg8D,EAASh8D,IACXg8D,EAASh8D,GAAG2S,OAAOlB,EAAK5T,QAE1B4T,EAAKnR,QAAQ25D,EAAQj6D,GACtB,CACD,OAAOyR,CACR,EAKH,MAAM4sD,GAAmBttD,uBAAsB,SAAUjL,GACvDA,EAAEuf,EAAI,GACNvf,EAAEw4D,GAAK,IACPx4D,EAAEy4D,QAAU,IACZz4D,EAAE04D,SAAW,IACb14D,EAAE24D,QAAU,MACZ34D,EAAE44D,OAAS,IACX54D,EAAE64D,YAAc,MAChB74D,EAAE84D,OAAS,IACX94D,EAAE+4D,YAAc,KAChB/4D,EAAEg5D,eAAiB,KACnBh5D,EAAEi5D,eAAiB,KACnBj5D,EAAEk5D,YAAc,KAChBl5D,EAAEm5D,gBAAkB,KACpBn5D,EAAEo5D,YAAc,KAChBp5D,EAAEq5D,OAAS,IACXr5D,EAAEs5D,QAAU,KACZt5D,EAAEu5D,YAAc,IAChBv5D,EAAEw5D,iBAAmB,KACrBx5D,EAAEy5D,oBAAsB,KACxBz5D,EAAE05D,iBAAmB,KACrB15D,EAAE25D,qBAAuB,KACzB35D,EAAE45D,iBAAmB,MACrB55D,EAAE65D,iBAAmB,KACrB75D,EAAE85D,MAAQ,MACV95D,EAAE+5D,WAAa,MACf/5D,EAAEg6D,UAAY,KACdh6D,EAAEi6D,UAAY,IACdj6D,EAAEk6D,UAAY,IACdl6D,EAAEm6D,kBAAoB,KACtBn6D,EAAEo6D,gBAAkB,IACpBp6D,EAAEq6D,eAAiB,MACnBr6D,EAAEs6D,UAAY,KACdt6D,EAAEu6D,WAAa,IACfv6D,EAAEw6D,OAAS,IACXx6D,EAAEy6D,YAAc,MAChBz6D,EAAE06D,WAAa,KACf16D,EAAE26D,YAAc,KAChB36D,EAAE46D,eAAiB,IACnB56D,EAAE66D,MAAQ,IACV76D,EAAE86D,WAAa,IACf96D,EAAE+6D,QAAU,IACZ/6D,EAAEg7D,WAAa,MACfh7D,EAAEi7D,QAAU,IACZj7D,EAAEk7D,MAAQ,IACVl7D,EAAEm7D,WAAa,IACfn7D,EAAEo7D,WAAa,KACfp7D,EAAEq7D,WAAa,MACfr7D,EAAEs7D,OAAS,MACXt7D,EAAEu7D,OAAS,IACXv7D,EAAEw7D,YAAc,MAChBx7D,EAAEy7D,YAAc,KAChBz7D,EAAE6iB,EAAI,GACN7iB,EAAE07D,QAAU,KACZ17D,EAAE27D,WAAa,KACf37D,EAAE47D,UAAY,KACd57D,EAAE67D,WAAa,KACf77D,EAAE87D,YAAc,KAChB97D,EAAE+7D,KAAO,IACT/7D,EAAEg8D,MAAQ,IACVh8D,EAAEi8D,WAAa,KACfj8D,EAAEk8D,WAAa,MACfl8D,EAAEm8D,WAAa,MACfn8D,EAAEo8D,OAAS,MACXp8D,EAAEq8D,QAAU,IACZr8D,EAAErQ,EAAI,GACNqQ,EAAEs8D,WAAa,KACft8D,EAAEu8D,OAAS,IACXv8D,EAAEw8D,MAAQ,MACVx8D,EAAEy8D,WAAa,MACfz8D,EAAE08D,OAAS,IACX18D,EAAE28D,SAAW,IACb38D,EAAE48D,cAAgB,KAClB58D,EAAE68D,cAAgB,MAClB78D,EAAE88D,QAAU,KACZ98D,EAAE+8D,YAAc,IAChB/8D,EAAEg9D,KAAO,IACTh9D,EAAEi9D,WAAa,IACfj9D,EAAEk9D,aAAe,MACjBl9D,EAAEm9D,YAAc,KAChBn9D,EAAEo9D,qBAAuB,KACzBp9D,EAAEq9D,YAAc,KAChBr9D,EAAEs9D,8BAAgC,KAClCt9D,EAAEu9D,qBAAuB,KACzBv9D,EAAEw9D,oBAAsB,KACxBx9D,EAAEy9D,aAAe,KACjBz9D,EAAE09D,sBAAwB,KAC1B19D,EAAE29D,0BAA4B,KAC9B39D,EAAE49D,IAAM,IACR59D,EAAE69D,MAAQ,IACV79D,EAAE89D,gBAAkB,MACpB99D,EAAE+9D,WAAa,MACf/9D,EAAEg+D,WAAa,KACfh+D,EAAEi+D,OAAS,MACXj+D,EAAEhR,EAAI,GACNgR,EAAEk+D,GAAK,IACPl+D,EAAEm+D,QAAU,IACZn+D,EAAEo+D,WAAa,KACfp+D,EAAEq+D,SAAW,IACbr+D,EAAEs+D,OAAS,IACXt+D,EAAEu+D,SAAW,KACbv+D,EAAEw+D,QAAU,KACZx+D,EAAEy+D,iBAAmB,KACrBz+D,EAAE0+D,OAAS,IACX1+D,EAAE2+D,WAAa,KACf3+D,EAAE4+D,UAAY,KACd5+D,EAAE6+D,WAAa,KACf7+D,EAAE8+D,UAAY,KACd9+D,EAAE++D,MAAQ,KACV/+D,EAAEg/D,WAAa,IACfh/D,EAAEi/D,MAAQ,IACVj/D,EAAEk/D,SAAW,MACbl/D,EAAEm/D,cAAgB,MAClBn/D,EAAEo/D,cAAgB,MAClBp/D,EAAEq/D,cAAgB,MAClBr/D,EAAEs/D,aAAe,IACjBt/D,EAAEu/D,YAAc,KAChBv/D,EAAEw/D,WAAa,KACfx/D,EAAEy/D,WAAa,MACfz/D,EAAE0/D,eAAiB,MACnB1/D,EAAE2/D,OAAS,IACX3/D,EAAE4/D,OAAS,MACX5/D,EAAE6/D,QAAU,IACZ7/D,EAAE8/D,GAAK,IACP9/D,EAAE+/D,QAAU,IACZ//D,EAAEggE,qBAAuB,KACzBhgE,EAAEigE,YAAc,KAChBjgE,EAAEkgE,aAAe,KACjBlgE,EAAElR,EAAI,GACNkR,EAAEmgE,OAAS,IACXngE,EAAEogE,YAAc,MAChBpgE,EAAEqgE,OAAS,IACXrgE,EAAEsgE,OAAS,IACXtgE,EAAEugE,cAAgB,KAClBvgE,EAAEwgE,YAAc,KAChBxgE,EAAEygE,QAAU,KACZzgE,EAAE0gE,YAAc,IAChB1gE,EAAE2gE,iBAAmB,KACrB3gE,EAAE4gE,iBAAmB,KACrB5gE,EAAE6gE,oBAAsB,KACxB7gE,EAAE8gE,iBAAmB,KACrB9gE,EAAE+gE,qBAAuB,KACzB/gE,EAAEghE,iBAAmB,MACrBhhE,EAAEihE,iBAAmB,KACrBjhE,EAAEkhE,UAAY,KACdlhE,EAAEmhE,UAAY,IACdnhE,EAAEohE,UAAY,IACdphE,EAAEqhE,eAAiB,MACnBrhE,EAAEshE,KAAO,IACTthE,EAAEuhE,WAAa,IACfvhE,EAAEwhE,UAAY,KACdxhE,EAAEyhE,WAAa,KACfzhE,EAAE0hE,OAAS,IACX1hE,EAAE2hE,YAAc,MAChB3hE,EAAE4hE,WAAa,KACf5hE,EAAE6hE,WAAa,KACf7hE,EAAE8hE,WAAa,KACf9hE,EAAE+hE,eAAiB,IACnB/hE,EAAEgiE,kBAAoB,KACtBhiE,EAAEiiE,WAAa,KACfjiE,EAAEkiE,YAAc,KAChBliE,EAAEmiE,QAAU,IACZniE,EAAEoiE,aAAe,KACjBpiE,EAAEqiE,aAAe,KACjBriE,EAAEsiE,WAAa,KACftiE,EAAEuiE,WAAa,MACfviE,EAAEwiE,WAAa,KACfxiE,EAAEyiE,oBAAsB,KACxBziE,EAAE0iE,IAAM,IACR1iE,EAAE2iE,cAAgB,KAClB3iE,EAAE4iE,eAAiB,KACnB5iE,EAAE6iE,QAAU,IACZ7iE,EAAE8iE,MAAQ,IACV9iE,EAAE+iE,QAAU,IACZ/iE,EAAEgjE,aAAe,IACjBhjE,EAAEijE,WAAa,KACfjjE,EAAEkjE,UAAY,IACdljE,EAAEmjE,kBAAoB,KACtBnjE,EAAEojE,WAAa,KACfpjE,EAAEqjE,oBAAsB,KACxBrjE,EAAEsjE,IAAM,IACRtjE,EAAEujE,OAAS,MACXvjE,EAAEwjE,IAAM,IACRxjE,EAAEyjE,WAAa,KACfzjE,EAAE0jE,SAAW,IACb1jE,EAAE2jE,IAAM,IACR3jE,EAAE4jE,SAAW,MACb5jE,EAAE6jE,OAAS,KACX7jE,EAAE8jE,YAAc,KAChB9jE,EAAE+jE,KAAO,KACT/jE,EAAEgkE,IAAM,IACRhkE,EAAEikE,SAAW,IACbjkE,EAAEkkE,YAAc,IAChBlkE,EAAEvQ,EAAI,GACNuQ,EAAEmkE,QAAU,KACZnkE,EAAEokE,WAAa,KACfpkE,EAAEqkE,YAAc,KAChBrkE,EAAEskE,UAAY,IACdtkE,EAAEukE,MAAQ,IACVvkE,EAAEwkE,aAAe,KACjBxkE,EAAEykE,UAAY,KACdzkE,EAAE0kE,WAAa,MACf1kE,EAAE2kE,UAAY,KACd3kE,EAAE4kE,OAAS,MACX5kE,EAAEsf,EAAI,GACNtf,EAAE6kE,SAAW,MACb7kE,EAAE8kE,OAAS,IACX9kE,EAAE+kE,MAAQ,IACV/kE,EAAEglE,aAAe,IACjBhlE,EAAEilE,aAAe,KACjBjlE,EAAEklE,OAAS,IACXllE,EAAEmlE,OAAS,IACXnlE,EAAEolE,SAAW,IACbplE,EAAEqlE,QAAU,KACZrlE,EAAEslE,YAAc,IAChBtlE,EAAEulE,aAAe,IACjBvlE,EAAEwlE,KAAO,IACTxlE,EAAEylE,WAAa,IACfzlE,EAAE0lE,WAAa,KACf1lE,EAAE2lE,aAAe,KACjB3lE,EAAE4lE,sBAAwB,KAC1B5lE,EAAE6lE,kBAAoB,KACtB7lE,EAAE8lE,kBAAoB,KACtB9lE,EAAE+lE,MAAQ,IACV/lE,EAAEgmE,YAAc,KAChBhmE,EAAEimE,YAAc,KAChBjmE,EAAEkmE,QAAU,KACZlmE,EAAEmmE,WAAa,MACfnmE,EAAEomE,MAAQ,MACVpmE,EAAEqmE,WAAa,MACfrmE,EAAEsmE,OAAS,MACXtmE,EAAEumE,WAAa,IACfvmE,EAAEwmE,QAAU,IACZxmE,EAAEymE,EAAI,GACNzmE,EAAE0mE,OAAS,KACX1mE,EAAE2mE,OAAS,KACX3mE,EAAE4mE,OAAS,KACX5mE,EAAE6mE,OAAS,KACX7mE,EAAE8mE,SAAW,MACb9mE,EAAE+mE,oBAAsB,KACxB/mE,EAAEgnE,oBAAsB,KACxBhnE,EAAEinE,iBAAmB,KACrBjnE,EAAEknE,KAAO,IACTlnE,EAAEmnE,YAAc,KAChBnnE,EAAEonE,SAAW,KACbpnE,EAAEqnE,QAAU,KACZrnE,EAAEsnE,YAAc,IAChBtnE,EAAEunE,UAAY,KACdvnE,EAAEwnE,WAAa,KACfxnE,EAAEynE,UAAY,KACdznE,EAAE0nE,WAAa,MACf1nE,EAAE2nE,WAAa,KACf3nE,EAAE4nE,WAAa,IACf5nE,EAAE6nE,OAAS,MACX7nE,EAAE8nE,aAAe,MACjB9nE,EAAE+nE,kBAAoB,MACtB/nE,EAAEgoE,SAAW,MACbhoE,EAAE+iD,EAAI,GACN/iD,EAAEioE,WAAa,KACfjoE,EAAEkoE,GAAK,IACPloE,EAAEmoE,WAAa,KACfnoE,EAAEooE,OAAS,IACXpoE,EAAEqoE,YAAc,MAChBroE,EAAEsoE,OAAS,IACXtoE,EAAEuoE,OAAS,IACXvoE,EAAEwoE,QAAU,KACZxoE,EAAEyoE,YAAc,IAChBzoE,EAAE0oE,iBAAmB,MACrB1oE,EAAE2oE,UAAY,KACd3oE,EAAE4oE,UAAY,IACd5oE,EAAE6oE,UAAY,IACd7oE,EAAE8oE,eAAiB,KACnB9oE,EAAE+oE,kBAAoB,KACtB/oE,EAAEgpE,eAAiB,MACnBhpE,EAAEipE,KAAO,IACTjpE,EAAEkpE,WAAa,IACflpE,EAAEmpE,UAAY,KACdnpE,EAAEopE,gBAAkB,KACpBppE,EAAEqpE,WAAa,KACfrpE,EAAEspE,SAAW,KACbtpE,EAAEupE,OAAS,IACXvpE,EAAEwpE,YAAc,MAChBxpE,EAAEypE,WAAa,KACfzpE,EAAE0pE,WAAa,KACf1pE,EAAE2pE,eAAiB,IACnB3pE,EAAE4pE,gBAAkB,KACpB5pE,EAAE6pE,QAAU,IACZ7pE,EAAE8pE,gBAAkB,KACpB9pE,EAAE+pE,WAAa,MACf/pE,EAAEgqE,YAAc,KAChBhqE,EAAEiqE,WAAa,KACfjqE,EAAEkqE,QAAU,IACZlqE,EAAEmqE,KAAO,IACTnqE,EAAEoqE,YAAc,IAChBpqE,EAAEqqE,aAAe,IACjBrqE,EAAEsqE,UAAY,IACdtqE,EAAEuqE,OAAS,MACXvqE,EAAEwqE,QAAU,IACZxqE,EAAEyqE,OAAS,IACXzqE,EAAE0qE,YAAc,KAChB1qE,EAAE2qE,gBAAkB,KACpB3qE,EAAE4qE,wBAA0B,KAC5B5qE,EAAE6qE,EAAI,GACN7qE,EAAE8qE,WAAa,KACf9qE,EAAE+qE,QAAU,KACZ/qE,EAAEgrE,YAAc,IAChBhrE,EAAEirE,WAAa,KACfjrE,EAAEkrE,aAAe,KACjBlrE,EAAEmrE,WAAa,MACfnrE,EAAEorE,OAAS,MACXprE,EAAExQ,EAAI,GACNwQ,EAAEqrE,SAAW,MACbrrE,EAAEsrE,SAAW,MACbtrE,EAAEurE,kBAAoB,KACtBvrE,EAAEwrE,OAAS,KACXxrE,EAAEyrE,WAAa,KACfzrE,EAAE0rE,oBAAsB,KACxB1rE,EAAE2rE,eAAiB,KACnB3rE,EAAE4rE,MAAQ,IACV5rE,EAAE6rE,iBAAmB,KACrB7rE,EAAE8rE,yBAA2B,KAC7B9rE,EAAE+rE,OAAS,IACX/rE,EAAEgsE,SAAW,IACbhsE,EAAEisE,QAAU,KACZjsE,EAAEksE,aAAe,IACjBlsE,EAAEmsE,UAAY,KACdnsE,EAAEosE,YAAc,KAChBpsE,EAAEqsE,YAAc,KAChBrsE,EAAEssE,YAAc,KAChBtsE,EAAEusE,WAAa,IACfvsE,EAAEwsE,MAAQ,IACVxsE,EAAEysE,YAAc,KAChBzsE,EAAE0sE,WAAa,KACf1sE,EAAE2sE,WAAa,MACf3sE,EAAE4sE,cAAgB,KAClB5sE,EAAE6sE,WAAa,IACf7sE,EAAE8sE,YAAc,KAChB9sE,EAAE+sE,OAAS,MACX/sE,EAAEyf,EAAI,GACNzf,EAAEgtE,GAAK,IACPhtE,EAAEitE,GAAK,MACPjtE,EAAEktE,OAAS,IACXltE,EAAEmtE,OAAS,IACXntE,EAAEotE,OAAS,IACXptE,EAAEqtE,SAAW,IACbrtE,EAAEstE,QAAU,KACZttE,EAAEutE,iBAAmB,KACrBvtE,EAAEwtE,aAAe,IACjBxtE,EAAEytE,KAAO,IACTztE,EAAE0tE,WAAa,IACf1tE,EAAE2tE,UAAY,KACd3tE,EAAE4tE,gBAAkB,KACpB5tE,EAAE6tE,aAAe,KACjB7tE,EAAE8tE,GAAK,IACP9tE,EAAE+tE,YAAc,KAChB/tE,EAAEguE,WAAa,KACfhuE,EAAEiuE,WAAa,MACfjuE,EAAEkuE,OAAS,IACXluE,EAAEmuE,YAAc,MAChBnuE,EAAEouE,OAAS,MACXpuE,EAAEukB,EAAI,GACNvkB,EAAEquE,SAAW,MACbruE,EAAEsuE,OAAS,MACXtuE,EAAEuuE,YAAc,MAChBvuE,EAAEwuE,OAAS,KACXxuE,EAAEyuE,QAAU,KACZzuE,EAAE0uE,WAAa,KACf1uE,EAAE2uE,UAAY,KACd3uE,EAAE4uE,YAAc,KAChB5uE,EAAE6uE,WAAa,MACf7uE,EAAE8uE,OAAS,MACX9uE,EAAE+uE,QAAU,IACZ/uE,EAAEgvE,GAAK,IACPhvE,EAAEwkB,EAAI,GACNxkB,EAAEivE,GAAK,IACPjvE,EAAEkvE,OAAS,IACXlvE,EAAEmvE,OAAS,IACXnvE,EAAEovE,SAAW,IACbpvE,EAAEqvE,QAAU,KACZrvE,EAAEsvE,iBAAmB,KACrBtvE,EAAEuvE,aAAe,IACjBvvE,EAAEwvE,WAAa,KACfxvE,EAAEyvE,UAAY,KACdzvE,EAAE0vE,UAAY,IACd1vE,EAAE2vE,UAAY,KACd3vE,EAAE4vE,GAAK,IACP5vE,EAAE6vE,YAAc,KAChB7vE,EAAE8vE,WAAa,KACf9vE,EAAE+vE,WAAa,MACf/vE,EAAEgwE,YAAc,KAChBhwE,EAAEiwE,OAAS,MACXjwE,EAAEkwE,OAAS,IACXlwE,EAAEmwE,YAAc,MAChBnwE,EAAEowE,GAAK,IACPpwE,EAAE7P,EAAI,GACN6P,EAAEqwE,GAAK,IACPrwE,EAAEswE,QAAU,MACZtwE,EAAEuwE,OAAS,IACXvwE,EAAEwwE,YAAc,MAChBxwE,EAAEywE,gBAAkB,KACpBzwE,EAAE0wE,wBAA0B,KAC5B1wE,EAAE2wE,OAAS,IACX3wE,EAAE4wE,OAAS,IACX5wE,EAAE6wE,eAAiB,IACnB7wE,EAAE8wE,QAAU,KACZ9wE,EAAE+wE,YAAc,IAChB/wE,EAAEgxE,iBAAmB,KACrBhxE,EAAEixE,oBAAsB,KACxBjxE,EAAEkxE,iBAAmB,KACrBlxE,EAAEmxE,qBAAuB,KACzBnxE,EAAEoxE,iBAAmB,MACrBpxE,EAAEqxE,iBAAmB,KACrBrxE,EAAEsxE,UAAY,KACdtxE,EAAEuxE,UAAY,IACdvxE,EAAEwxE,UAAY,IACdxxE,EAAEyxE,UAAY,IACdzxE,EAAE0xE,kBAAoB,KACtB1xE,EAAE2xE,eAAiB,MACnB3xE,EAAE4xE,UAAY,KACd5xE,EAAE6xE,YAAc,MAChB7xE,EAAE8xE,OAAS,IACX9xE,EAAE+xE,YAAc,MAChB/xE,EAAEgyE,WAAa,KACfhyE,EAAEiyE,IAAM,KACRjyE,EAAEkyE,WAAa,KACflyE,EAAEmyE,MAAQ,IACVnyE,EAAEoyE,WAAa,KACfpyE,EAAEqyE,cAAgB,KAClBryE,EAAEsyE,WAAa,KACftyE,EAAEuyE,eAAiB,KACnBvyE,EAAEwyE,WAAa,KACfxyE,EAAEyyE,cAAgB,IAClBzyE,EAAE0yE,GAAK,IACP1yE,EAAE2yE,eAAiB,IACnB3yE,EAAE4yE,QAAU,IACZ5yE,EAAE6yE,aAAe,KACjB7yE,EAAE8yE,aAAe,KACjB9yE,EAAE+yE,MAAQ,KACV/yE,EAAEgzE,cAAgB,KAClBhzE,EAAEizE,WAAa,IACfjzE,EAAEkzE,mBAAqB,KACvBlzE,EAAEmzE,mBAAqB,KACvBnzE,EAAEozE,WAAa,IACfpzE,EAAEqzE,QAAU,IACZrzE,EAAEszE,aAAe,IACjBtzE,EAAEuzE,WAAa,MACfvzE,EAAEwzE,SAAW,KACbxzE,EAAEyzE,QAAU,IACZzzE,EAAE0zE,cAAgB,IAClB1zE,EAAE2zE,MAAQ,IACV3zE,EAAE4zE,OAAS,IACX5zE,EAAE6zE,YAAc,IAChB7zE,EAAE8zE,YAAc,MAChB9zE,EAAE+zE,OAAS,MACX/zE,EAAEg0E,aAAe,IACjBh0E,EAAEi0E,WAAa,KACfj0E,EAAEk0E,OAAS,IACXl0E,EAAEm0E,YAAc,KAChBn0E,EAAEo0E,eAAiB,KACnBp0E,EAAEq0E,YAAc,MAChBr0E,EAAEs0E,EAAI,GACNt0E,EAAEu0E,OAAS,KACXv0E,EAAEw0E,QAAU,KACZx0E,EAAEy0E,WAAa,KACfz0E,EAAE00E,WAAa,KACf10E,EAAE20E,YAAc,KAChB30E,EAAE40E,qBAAuB,KACzB50E,EAAE60E,IAAM,IACR70E,EAAE80E,MAAQ,IACV90E,EAAE+0E,GAAK,IACP/0E,EAAEg1E,aAAe,KACjBh1E,EAAEi1E,WAAa,MACfj1E,EAAEk1E,IAAM,IACRl1E,EAAEm1E,YAAc,KAChBn1E,EAAEo1E,OAAS,MACXp1E,EAAEq1E,EAAI,GACNr1E,EAAEs1E,QAAU,KACZt1E,EAAEu1E,WAAa,MACfv1E,EAAEw1E,OAAS,MACXx1E,EAAEy1E,EAAI,GACNz1E,EAAE01E,WAAa,KACf11E,EAAE21E,OAAS,IACX31E,EAAE41E,OAAS,IACX51E,EAAE61E,SAAW,IACb71E,EAAE81E,QAAU,KACZ91E,EAAE+1E,aAAe,IACjB/1E,EAAEg2E,UAAY,IACdh2E,EAAEi2E,WAAa,KACfj2E,EAAEk2E,UAAY,KACdl2E,EAAEm2E,gBAAkB,KACpBn2E,EAAEo2E,YAAc,KAChBp2E,EAAEq2E,SAAW,KACbr2E,EAAEs2E,IAAM,IACRt2E,EAAEu2E,UAAY,MACdv2E,EAAEw2E,eAAiB,IACnBx2E,EAAEy2E,WAAa,KACfz2E,EAAE02E,WAAa,MACf12E,EAAE22E,OAAS,MACX32E,EAAE42E,eAAiB,IACnB52E,EAAE62E,uBAAyB,IAC3B72E,EAAE82E,EAAI,GACN92E,EAAE+2E,SAAW,KACb/2E,EAAEg3E,SAAW,KACbh3E,EAAEi3E,SAAW,KACbj3E,EAAEk3E,SAAW,KACbl3E,EAAEm3E,SAAW,KACbn3E,EAAEo3E,SAAW,KACbp3E,EAAEq3E,SAAW,KACbr3E,EAAEs3E,SAAW,KACbt3E,EAAEu3E,SAAW,KACbv3E,EAAEw3E,SAAW,KACbx3E,EAAEy3E,SAAW,KACbz3E,EAAE03E,SAAW,KACb13E,EAAE23E,SAAW,KACb33E,EAAE43E,SAAW,KACb53E,EAAE63E,SAAW,KACb73E,EAAE83E,SAAW,KACb93E,EAAE+3E,SAAW,KACb/3E,EAAEg4E,SAAW,KACbh4E,EAAEi4E,SAAW,KACbj4E,EAAEk4E,SAAW,KACbl4E,EAAEm4E,SAAW,KACbn4E,EAAEo4E,SAAW,KACbp4E,EAAEq4E,SAAW,KACbr4E,EAAEs4E,SAAW,KACbt4E,EAAEu4E,SAAW,KACbv4E,EAAEw4E,SAAW,KACbx4E,EAAEy4E,SAAW,KACbz4E,EAAE04E,SAAW,KACb14E,EAAE24E,SAAW,KACb34E,EAAE44E,SAAW,KACb54E,EAAE64E,SAAW,KACb74E,EAAE84E,SAAW,KACb94E,EAAE+4E,SAAW,KACb/4E,EAAEg5E,SAAW,KACbh5E,EAAEi5E,SAAW,KACbj5E,EAAEk5E,SAAW,KACbl5E,EAAEm5E,SAAW,KACbn5E,EAAEo5E,SAAW,KACbp5E,EAAEq5E,SAAW,KACbr5E,EAAEs5E,SAAW,KACbt5E,EAAEu5E,OAAS,IACXv5E,EAAEw5E,gBAAkB,KACpBx5E,EAAEy5E,WAAa,IACfz5E,EAAE05E,OAAS,IACX15E,EAAE25E,gBAAkB,KACpB35E,EAAE45E,YAAc,MAChB55E,EAAE65E,SAAW,IACb75E,EAAE85E,MAAQ,IACV95E,EAAE+5E,cAAgB,KAClB/5E,EAAEg6E,sBAAwB,KAC1Bh6E,EAAEi6E,QAAU,KACZj6E,EAAEk6E,YAAc,IAChBl6E,EAAEm6E,aAAe,IACjBn6E,EAAEo6E,WAAa,KACfp6E,EAAEq6E,UAAY,KACdr6E,EAAEs6E,mBAAqB,KACvBt6E,EAAEu6E,YAAc,KAChBv6E,EAAEw6E,WAAa,KACfx6E,EAAEy6E,YAAc,KAChBz6E,EAAE06E,YAAc,KAChB16E,EAAE26E,cAAgB,KAClB36E,EAAE46E,WAAa,IACf56E,EAAE66E,aAAe,KACjB76E,EAAE86E,YAAc,KAChB96E,EAAE+6E,MAAQ,IACV/6E,EAAEg7E,SAAW,KACbh7E,EAAEi7E,WAAa,MACfj7E,EAAEk7E,iBAAmB,KACrBl7E,EAAEm7E,OAAS,MACXn7E,EAAEo7E,YAAc,IAChBp7E,EAAEq7E,EAAI,GACNr7E,EAAEs7E,IAAM,IACRt7E,EAAEu7E,KAAO,IACTv7E,EAAEw7E,OAAS,IACXx7E,EAAEy7E,SAAW,IACbz7E,EAAE07E,QAAU,KACZ17E,EAAE27E,iBAAmB,KACrB37E,EAAE47E,aAAe,IACjB57E,EAAE67E,WAAa,KACf77E,EAAE87E,UAAY,KACd97E,EAAE+7E,WAAa,KACf/7E,EAAEg8E,oBAAsB,KACxBh8E,EAAEi8E,SAAW,KACbj8E,EAAEk8E,cAAgB,KAClBl8E,EAAEm8E,MAAQ,IACVn8E,EAAEo8E,MAAQ,IACVp8E,EAAEq8E,MAAQ,IACVr8E,EAAEs8E,WAAa,MACft8E,EAAEu8E,WAAa,KACfv8E,EAAEw8E,WAAa,MACfx8E,EAAEy8E,aAAe,KACjBz8E,EAAE08E,WAAa,KACf18E,EAAE28E,WAAa,MACf38E,EAAE48E,WAAa,KACf58E,EAAE68E,SAAW,IACb78E,EAAE88E,QAAU,IACZ98E,EAAE+8E,QAAU,IACZ/8E,EAAEg9E,eAAiB,IACnBh9E,EAAEi9E,YAAc,KAChBj9E,EAAEk9E,aAAe,KACjBl9E,EAAEm9E,OAAS,MACXn9E,EAAEo9E,YAAc,KAChBp9E,EAAEq9E,SAAW,KACbr9E,EAAE/Q,EAAI,GACN+Q,EAAEs9E,OAAS,IACXt9E,EAAEu9E,YAAc,MAChBv9E,EAAEw9E,OAAS,IACXx9E,EAAEy9E,OAAS,IACXz9E,EAAE09E,QAAU,KACZ19E,EAAE29E,YAAc,IAChB39E,EAAE49E,iBAAmB,KACrB59E,EAAE69E,iBAAmB,MACrB79E,EAAE89E,UAAY,KACd99E,EAAE+9E,UAAY,IACd/9E,EAAEg+E,UAAY,IACdh+E,EAAEi+E,UAAY,IACdj+E,EAAEk+E,eAAiB,IACnBl+E,EAAEm+E,eAAiB,KACnBn+E,EAAEo+E,eAAiB,IACnBp+E,EAAEq+E,kBAAoB,KACtBr+E,EAAEs+E,eAAiB,IACnBt+E,EAAEu+E,gBAAkB,IACpBv+E,EAAEw+E,eAAiB,MACnBx+E,EAAEy+E,UAAY,KACdz+E,EAAE0+E,OAAS,IACX1+E,EAAE2+E,YAAc,MAChB3+E,EAAE4+E,WAAa,KACf5+E,EAAE6+E,MAAQ,IACV7+E,EAAE8+E,WAAa,KACf9+E,EAAE++E,cAAgB,KAClB/+E,EAAEg/E,WAAa,KACfh/E,EAAEi/E,eAAiB,KACnBj/E,EAAEk/E,WAAa,KACfl/E,EAAEm/E,cAAgB,IAClBn/E,EAAEo/E,sBAAwB,KAC1Bp/E,EAAEq/E,eAAiB,IACnBr/E,EAAEs/E,WAAa,KACft/E,EAAEu/E,QAAU,IACZv/E,EAAEw/E,gBAAkB,KACpBx/E,EAAEy/E,gBAAkB,KACpBz/E,EAAE0/E,WAAa,MACf1/E,EAAE2/E,QAAU,IACZ3/E,EAAE4/E,QAAU,IACZ5/E,EAAE6/E,SAAW,IACb7/E,EAAE8/E,4BAA8B,IAChC9/E,EAAE+/E,eAAiB,IACnB//E,EAAEggF,gBAAkB,IACpBhgF,EAAEigF,+BAAiC,IACnCjgF,EAAEkgF,kBAAoB,IACtBlgF,EAAEmgF,aAAe,IACjBngF,EAAEogF,MAAQ,IACVpgF,EAAEqgF,eAAiB,KACnBrgF,EAAEsgF,OAAS,MACXtgF,EAAEugF,kBAAoB,KACtBvgF,EAAEwgF,wBAA0B,KAC5BxgF,EAAEygF,OAAS,IACXzgF,EAAE0gF,YAAc,KAChB1gF,EAAE2gF,YAAc,KAChB3gF,EAAEtQ,EAAI,GACNsQ,EAAE4gF,QAAU,KACZ5gF,EAAE6gF,UAAY,KACd7gF,EAAE8gF,WAAa,KACf9gF,EAAE+gF,YAAc,KAChB/gF,EAAEghF,MAAQ,IACVhhF,EAAEihF,WAAa,MACfjhF,EAAEkhF,WAAa,KACflhF,EAAEmhF,OAAS,MACXnhF,EAAEohF,OAAS,KACXphF,EAAEqhF,EAAI,GACNrhF,EAAEshF,OAAS,KACXthF,EAAEuhF,QAAU,KACZvhF,EAAEwhF,YAAc,IAChBxhF,EAAEyhF,UAAY,KACdzhF,EAAE0hF,WAAa,KACf1hF,EAAE2hF,UAAY,KACd3hF,EAAE4hF,OAAS,KACX5hF,EAAE6hF,WAAa,MACf7hF,EAAE8hF,OAAS,MACX9hF,EAAEjR,EAAI,GACNiR,EAAE+hF,QAAU,KACZ/hF,EAAEgiF,UAAY,KACdhiF,EAAEiiF,WAAa,KACfjiF,EAAEkiF,YAAc,KAChBliF,EAAEmiF,GAAK,IACPniF,EAAEoiF,WAAa,MACfpiF,EAAEqiF,OAAS,MACXriF,EAAEijB,EAAI,GACNjjB,EAAEsiF,OAAS,IACXtiF,EAAEuiF,YAAc,MAChBviF,EAAEwiF,YAAc,KAChBxiF,EAAEyiF,QAAU,KACZziF,EAAE0iF,YAAc,IAChB1iF,EAAE2iF,UAAY,IACd3iF,EAAE4iF,eAAiB,MACnB5iF,EAAE6iF,WAAa,KACf7iF,EAAE8iF,UAAY,KACd9iF,EAAE+iF,aAAe,KACjB/iF,EAAEgjF,qBAAuB,KACzBhjF,EAAEijF,OAAS,KACXjjF,EAAEkjF,MAAQ,IACVljF,EAAEmjF,WAAa,KACfnjF,EAAEojF,WAAa,KACfpjF,EAAEqjF,WAAa,KACfrjF,EAAEsjF,aAAe,KACjBtjF,EAAEujF,WAAa,MACfvjF,EAAEwjF,OAAS,MACXxjF,EAAEyjF,OAAS,KACXzjF,EAAE0jF,eAAiB,KACnB1jF,EAAE2jF,uBAAyB,KAC3B3jF,EAAE4jF,kBAAoB,KACtB5jF,EAAE6jF,0BAA4B,KAC9B7jF,EAAEkjB,EAAI,GACNljB,EAAE8jF,WAAa,KACf9jF,EAAE+jF,OAAS,IACX/jF,EAAEgkF,OAAS,IACXhkF,EAAEikF,YAAc,MAChBjkF,EAAEkkF,QAAU,KACZlkF,EAAEmkF,YAAc,KAChBnkF,EAAEokF,KAAO,IACTpkF,EAAEqkF,WAAa,IACfrkF,EAAEskF,UAAY,KACdtkF,EAAEukF,WAAa,KACfvkF,EAAEwkF,oBAAsB,KACxBxkF,EAAEykF,mBAAqB,KACvBzkF,EAAE0kF,KAAO,IACT1kF,EAAE2kF,YAAc,KAChB3kF,EAAE4kF,iBAAmB,KACrB5kF,EAAE6kF,YAAc,KAChB7kF,EAAE8kF,qBAAuB,KACzB9kF,EAAE+kF,oBAAsB,KACxB/kF,EAAEglF,WAAa,KACfhlF,EAAEilF,WAAa,MACfjlF,EAAEklF,OAAS,MACXllF,EAAEmlF,QAAU,IACZnlF,EAAEzB,EAAI,GACNyB,EAAEolF,UAAY,KACdplF,EAAEqlF,OAAS,IACXrlF,EAAEslF,OAAS,KACXtlF,EAAEulF,WAAa,KACfvlF,EAAEwlF,WAAa,KACfxlF,EAAEylF,gBAAkB,KACpBzlF,EAAE0lF,WAAa,MACf1lF,EAAE2lF,mBAAqB,KACvB3lF,EAAE4lF,gBAAkB,KACpB5lF,EAAE6lF,oBAAsB,KACxB7lF,EAAE8lF,yBAA2B,KAC7B9lF,EAAE+lF,qBAAuB,KACzB/lF,EAAEgmF,SAAW,KACbhmF,EAAEimF,UAAY,MACdjmF,EAAEkmF,OAAS,IACXlmF,EAAEmmF,YAAc,KAChBnmF,EAAEomF,eAAiB,KACnBpmF,EAAEqmF,eAAiB,KACnBrmF,EAAEsmF,YAAc,KAChBtmF,EAAEumF,gBAAkB,KACpBvmF,EAAEwmF,YAAc,KAChBxmF,EAAEymF,OAAS,IACXzmF,EAAE0mF,QAAU,KACZ1mF,EAAE2mF,YAAc,IAChB3mF,EAAE4mF,iBAAmB,KACrB5mF,EAAE6mF,oBAAsB,KACxB7mF,EAAE8mF,iBAAmB,KACrB9mF,EAAE+mF,qBAAuB,KACzB/mF,EAAEgnF,iBAAmB,KACrBhnF,EAAEinF,MAAQ,IACVjnF,EAAEknF,cAAgB,IAClBlnF,EAAEmnF,SAAW,IACbnnF,EAAEonF,UAAY,IACdpnF,EAAEqnF,UAAY,KACdrnF,EAAEsnF,YAAc,IAChBtnF,EAAEunF,aAAe,IACjBvnF,EAAEwnF,UAAY,KACdxnF,EAAEynF,UAAY,IACdznF,EAAE0nF,cAAgB,KAClB1nF,EAAE2nF,MAAQ,KACV3nF,EAAE4nF,UAAY,IACd5nF,EAAE6nF,kBAAoB,KACtB7nF,EAAE8nF,gBAAkB,IACpB9nF,EAAE+nF,UAAY,KACd/nF,EAAEgoF,WAAa,IACfhoF,EAAEioF,GAAK,IACPjoF,EAAEkoF,QAAU,IACZloF,EAAEmoF,SAAW,MACbnoF,EAAEooF,SAAW,IACbpoF,EAAEqoF,UAAY,KACdroF,EAAEsoF,UAAY,KACdtoF,EAAEuoF,UAAY,KACdvoF,EAAEwoF,UAAY,KACdxoF,EAAEyoF,UAAY,KACdzoF,EAAE0oF,UAAY,KACd1oF,EAAE2oF,UAAY,KACd3oF,EAAE4oF,UAAY,KACd5oF,EAAE6oF,UAAY,KACd7oF,EAAE8oF,UAAY,KACd9oF,EAAE+oF,UAAY,KACd/oF,EAAEgpF,UAAY,KACdhpF,EAAEipF,UAAY,KACdjpF,EAAEkpF,UAAY,KACdlpF,EAAEmpF,UAAY,KACdnpF,EAAEopF,UAAY,KACdppF,EAAEqpF,UAAY,KACdrpF,EAAEspF,UAAY,KACdtpF,EAAEupF,UAAY,KACdvpF,EAAEwpF,UAAY,KACdxpF,EAAEypF,UAAY,KACdzpF,EAAE0pF,UAAY,KACd1pF,EAAE2pF,UAAY,KACd3pF,EAAE4pF,UAAY,KACd5pF,EAAE6pF,UAAY,KACd7pF,EAAE8pF,UAAY,KACd9pF,EAAE+pF,UAAY,KACd/pF,EAAEgqF,UAAY,KACdhqF,EAAEiqF,UAAY,KACdjqF,EAAEkqF,UAAY,KACdlqF,EAAEmqF,UAAY,KACdnqF,EAAEoqF,UAAY,KACdpqF,EAAEqqF,UAAY,KACdrqF,EAAEsqF,UAAY,KACdtqF,EAAEuqF,UAAY,KACdvqF,EAAEwqF,UAAY,KACdxqF,EAAEyqF,UAAY,KACdzqF,EAAE0qF,UAAY,KACd1qF,EAAE2qF,UAAY,KACd3qF,EAAE4qF,UAAY,KACd5qF,EAAE6qF,UAAY,KACd7qF,EAAE8qF,UAAY,KACd9qF,EAAE+qF,UAAY,KACd/qF,EAAEgrF,UAAY,KACdhrF,EAAEirF,UAAY,KACdjrF,EAAEkrF,UAAY,KACdlrF,EAAEmrF,UAAY,KACdnrF,EAAEorF,UAAY,KACdprF,EAAEqrF,UAAY,MACdrrF,EAAEsrF,UAAY,MACdtrF,EAAEurF,UAAY,KACdvrF,EAAEwrF,UAAY,KACdxrF,EAAEyrF,UAAY,KACdzrF,EAAE0rF,UAAY,KACd1rF,EAAE2rF,UAAY,KACd3rF,EAAE4rF,UAAY,KACd5rF,EAAE6rF,UAAY,KACd7rF,EAAE8rF,UAAY,KACd9rF,EAAE+rF,UAAY,KACd/rF,EAAEgsF,UAAY,KACdhsF,EAAEisF,UAAY,KACdjsF,EAAEksF,UAAY,KACdlsF,EAAEmsF,UAAY,KACdnsF,EAAEosF,UAAY,KACdpsF,EAAEqsF,UAAY,KACdrsF,EAAEssF,UAAY,KACdtsF,EAAEusF,UAAY,KACdvsF,EAAEwsF,UAAY,KACdxsF,EAAEysF,UAAY,KACdzsF,EAAE0sF,UAAY,KACd1sF,EAAE2sF,UAAY,KACd3sF,EAAE4sF,UAAY,KACd5sF,EAAE6sF,UAAY,KACd7sF,EAAE8sF,UAAY,KACd9sF,EAAE+sF,UAAY,KACd/sF,EAAEgtF,UAAY,KACdhtF,EAAEitF,UAAY,KACdjtF,EAAEktF,UAAY,KACdltF,EAAEmtF,UAAY,KACdntF,EAAEotF,UAAY,KACdptF,EAAEqtF,UAAY,KACdrtF,EAAEstF,UAAY,KACdttF,EAAEutF,UAAY,KACdvtF,EAAEwtF,UAAY,KACdxtF,EAAEytF,UAAY,KACdztF,EAAE0tF,UAAY,KACd1tF,EAAE2tF,UAAY,KACd3tF,EAAE4tF,UAAY,KACd5tF,EAAE6tF,UAAY,KACd7tF,EAAE8tF,UAAY,KACd9tF,EAAE+tF,UAAY,KACd/tF,EAAEguF,UAAY,KACdhuF,EAAEiuF,UAAY,KACdjuF,EAAEkuF,UAAY,KACdluF,EAAEmuF,UAAY,KACdnuF,EAAEouF,UAAY,KACdpuF,EAAEquF,UAAY,KACdruF,EAAEsuF,UAAY,KACdtuF,EAAEuuF,UAAY,KACdvuF,EAAEwuF,UAAY,KACdxuF,EAAEyuF,UAAY,MACdzuF,EAAE0uF,UAAY,KACd1uF,EAAE2uF,UAAY,KACd3uF,EAAE4uF,UAAY,KACd5uF,EAAE6uF,UAAY,KACd7uF,EAAE8uF,UAAY,MACd9uF,EAAE+uF,UAAY,MACd/uF,EAAEgvF,UAAY,KACdhvF,EAAEivF,QAAU,KACZjvF,EAAEkvF,QAAU,KACZlvF,EAAEmvF,QAAU,KACZnvF,EAAEovF,UAAY,KACdpvF,EAAEqvF,UAAY,KACdrvF,EAAEsvF,UAAY,KACdtvF,EAAEuvF,UAAY,KACdvvF,EAAEwvF,UAAY,KACdxvF,EAAEyvF,UAAY,KACdzvF,EAAE0vF,UAAY,KACd1vF,EAAE2vF,UAAY,KACd3vF,EAAE4vF,UAAY,KACd5vF,EAAE6vF,UAAY,KACd7vF,EAAE8vF,UAAY,KACd9vF,EAAE+vF,UAAY,KACd/vF,EAAEgwF,UAAY,KACdhwF,EAAEiwF,UAAY,KACdjwF,EAAEkwF,UAAY,KACdlwF,EAAEmwF,UAAY,KACdnwF,EAAEowF,UAAY,KACdpwF,EAAEqwF,UAAY,KACdrwF,EAAEswF,UAAY,KACdtwF,EAAEuwF,UAAY,KACdvwF,EAAEwwF,UAAY,KACdxwF,EAAEywF,UAAY,KACdzwF,EAAE0wF,UAAY,KACd1wF,EAAE2wF,UAAY,KACd3wF,EAAE4wF,UAAY,KACd5wF,EAAE6wF,UAAY,KACd7wF,EAAE8wF,UAAY,KACd9wF,EAAE+wF,UAAY,KACd/wF,EAAEgxF,UAAY,KACdhxF,EAAEixF,UAAY,KACdjxF,EAAEkxF,UAAY,KACdlxF,EAAEmxF,UAAY,KACdnxF,EAAEoxF,UAAY,KACdpxF,EAAEqxF,UAAY,KACdrxF,EAAEsxF,UAAY,KACdtxF,EAAEuxF,UAAY,KACdvxF,EAAEwxF,UAAY,KACdxxF,EAAEyxF,UAAY,KACdzxF,EAAE0xF,UAAY,KACd1xF,EAAE2xF,UAAY,KACd3xF,EAAE4xF,UAAY,KACd5xF,EAAE6xF,UAAY,KACd7xF,EAAE8xF,UAAY,KACd9xF,EAAE+xF,UAAY,KACd/xF,EAAEgyF,UAAY,KACdhyF,EAAEiyF,UAAY,KACdjyF,EAAEkyF,UAAY,KACdlyF,EAAEmyF,UAAY,KACdnyF,EAAEoyF,UAAY,KACdpyF,EAAEqyF,UAAY,KACdryF,EAAEsyF,UAAY,KACdtyF,EAAEuyF,UAAY,KACdvyF,EAAEwyF,UAAY,KACdxyF,EAAEyyF,UAAY,KACdzyF,EAAE0yF,UAAY,KACd1yF,EAAE2yF,UAAY,KACd3yF,EAAE4yF,UAAY,KACd5yF,EAAE6yF,UAAY,KACd7yF,EAAE8yF,UAAY,KACd9yF,EAAE+yF,UAAY,KACd/yF,EAAEgzF,UAAY,KACdhzF,EAAEizF,UAAY,KACdjzF,EAAEkzF,UAAY,KACdlzF,EAAEmzF,UAAY,KACdnzF,EAAEozF,UAAY,KACdpzF,EAAEqzF,UAAY,KACdrzF,EAAEszF,UAAY,KACdtzF,EAAEuzF,UAAY,KACdvzF,EAAEwzF,UAAY,KACdxzF,EAAEyzF,UAAY,KACdzzF,EAAE0zF,UAAY,KACd1zF,EAAE2zF,UAAY,KACd3zF,EAAE4zF,UAAY,KACd5zF,EAAE6zF,UAAY,KACd7zF,EAAE8zF,UAAY,KACd9zF,EAAE+zF,UAAY,KACd/zF,EAAEg0F,UAAY,KACdh0F,EAAEi0F,UAAY,KACdj0F,EAAEk0F,UAAY,KACdl0F,EAAEm0F,UAAY,KACdn0F,EAAEo0F,UAAY,KACdp0F,EAAEq0F,UAAY,KACdr0F,EAAEs0F,UAAY,KACdt0F,EAAEu0F,UAAY,KACdv0F,EAAEw0F,UAAY,KACdx0F,EAAEy0F,UAAY,KACdz0F,EAAE00F,UAAY,KACd10F,EAAE20F,UAAY,KACd30F,EAAE40F,UAAY,KACd50F,EAAE60F,UAAY,KACd70F,EAAE80F,UAAY,KACd90F,EAAE+0F,UAAY,KACd/0F,EAAEg1F,UAAY,KACdh1F,EAAEi1F,UAAY,KACdj1F,EAAEk1F,UAAY,KACdl1F,EAAEm1F,UAAY,KACdn1F,EAAEo1F,UAAY,KACdp1F,EAAEq1F,UAAY,KACdr1F,EAAEs1F,UAAY,KACdt1F,EAAEu1F,UAAY,KACdv1F,EAAEw1F,UAAY,MACdx1F,EAAEy1F,UAAY,MACdz1F,EAAE01F,UAAY,MACd11F,EAAE21F,UAAY,MACd31F,EAAE41F,UAAY,KACd51F,EAAE61F,UAAY,KACd71F,EAAE81F,UAAY,KACd91F,EAAE+1F,UAAY,MACd/1F,EAAEg2F,UAAY,KACdh2F,EAAEi2F,UAAY,KACdj2F,EAAEk2F,UAAY,KACdl2F,EAAEm2F,UAAY,KACdn2F,EAAEo2F,UAAY,KACdp2F,EAAEq2F,UAAY,KACdr2F,EAAEs2F,UAAY,KACdt2F,EAAEu2F,UAAY,KACdv2F,EAAEw2F,UAAY,KACdx2F,EAAEy2F,UAAY,KACdz2F,EAAE02F,UAAY,KACd12F,EAAE22F,UAAY,KACd32F,EAAE42F,UAAY,KACd52F,EAAE62F,UAAY,KACd72F,EAAE82F,UAAY,KACd92F,EAAE+2F,UAAY,KACd/2F,EAAEg3F,UAAY,KACdh3F,EAAEi3F,UAAY,IACdj3F,EAAEk3F,UAAY,KACdl3F,EAAEm3F,UAAY,KACdn3F,EAAEo3F,UAAY,KACdp3F,EAAEq3F,UAAY,KACdr3F,EAAEs3F,UAAY,KACdt3F,EAAEu3F,UAAY,KACdv3F,EAAEw3F,UAAY,KACdx3F,EAAEy3F,UAAY,KACdz3F,EAAE03F,UAAY,IACd13F,EAAE23F,OAAS,IACX33F,EAAE43F,UAAY,KACd53F,EAAE63F,UAAY,KACd73F,EAAE83F,UAAY,MACd93F,EAAE+3F,WAAa,KACf/3F,EAAEg4F,UAAY,KACdh4F,EAAEi4F,WAAa,MACfj4F,EAAEk4F,OAAS,KACXl4F,EAAEm4F,YAAc,KAChBn4F,EAAEo4F,WAAa,KACfp4F,EAAEq4F,WAAa,KACfr4F,EAAEs4F,gBAAkB,KACpBt4F,EAAEu4F,UAAY,KACdv4F,EAAEw4F,eAAiB,MACnBx4F,EAAEy4F,iBAAmB,MACrBz4F,EAAE04F,gBAAkB,MACpB14F,EAAE24F,eAAiB,IACnB34F,EAAE44F,mBAAqB,KACvB54F,EAAE64F,gBAAkB,KACpB74F,EAAE84F,oBAAsB,KACxB94F,EAAE+4F,UAAY,MACd/4F,EAAEg5F,mBAAqB,MACvBh5F,EAAEi5F,QAAU,MACZj5F,EAAEk5F,KAAO,KACTl5F,EAAEm5F,WAAa,KACfn5F,EAAEo5F,iBAAmB,MACrBp5F,EAAEq5F,gBAAkB,MACpBr5F,EAAEs5F,qBAAuB,KACzBt5F,EAAEu5F,0BAA4B,MAC9Bv5F,EAAEw5F,qBAAuB,KACzBx5F,EAAEy5F,0BAA4B,MAC9Bz5F,EAAE05F,WAAa,KACf15F,EAAE25F,gBAAkB,MACpB35F,EAAE45F,qBAAuB,KACzB55F,EAAE65F,0BAA4B,MAC9B75F,EAAE85F,kBAAoB,KACtB95F,EAAE+5F,uBAAyB,MAC3B/5F,EAAEg6F,yBAA2B,MAC7Bh6F,EAAEi6F,wBAA0B,MAC5Bj6F,EAAEk6F,gBAAkB,MACpBl6F,EAAEm6F,iBAAmB,MACrBn6F,EAAEo6F,MAAQ,KACVp6F,EAAEq6F,SAAW,KACbr6F,EAAEs6F,MAAQ,IACVt6F,EAAEu6F,WAAa,IACfv6F,EAAEw6F,QAAU,IACZx6F,EAAEy6F,WAAa,MACfz6F,EAAE06F,UAAY,GACd16F,EAAE26F,mBAAqB,MACvB36F,EAAE46F,eAAiB,MACnB56F,EAAE66F,SAAW,MACb76F,EAAE86F,WAAa,MACf96F,EAAE+6F,YAAc,MAChB/6F,EAAEg7F,eAAiB,MACnBh7F,EAAEi7F,gBAAkB,MACpBj7F,EAAEk7F,eAAiB,KACnBl7F,EAAEyQ,MAAQ,KACVzQ,EAAEm7F,iBAAmB,MACrBn7F,EAAEo7F,yBAA2B,MAC7Bp7F,EAAEq7F,kBAAoB,MACtBr7F,EAAEs7F,0BAA4B,MAC9Bt7F,EAAEu7F,UAAY,KACdv7F,EAAEw7F,WAAa,KACfx7F,EAAEy7F,SAAW,KACbz7F,EAAE07F,UAAY,IACd17F,EAAE27F,aAAe,KACjB37F,EAAE47F,gBAAkB,KACpB57F,EAAE67F,aAAe,KACjB77F,EAAE87F,iBAAmB,KACrB97F,EAAE+7F,QAAU,IACZ/7F,EAAEg8F,aAAe,MACjBh8F,EAAEi8F,OAAS,KACXj8F,EAAEk8F,mBAAqB,KACvBl8F,EAAEm8F,cAAgB,IAClBn8F,EAAEo8F,MAAQ,MACVp8F,EAAEq8F,WAAa,KACfr8F,EAAEs8F,YAAc,KAChBt8F,EAAEu8F,mBAAqB,KACvBv8F,EAAEw8F,mBAAqB,KACvBx8F,EAAEy8F,aAAe,MACjBz8F,EAAE08F,YAAc,MAChB18F,EAAE28F,IAAM,KACR38F,EAAE48F,eAAiB,KACnB58F,EAAE68F,MAAQ,IACV78F,EAAE88F,WAAa,IACf98F,EAAE+8F,WAAa,KACf/8F,EAAEg9F,UAAY,KACdh9F,EAAEi9F,cAAgB,KAClBj9F,EAAEk9F,cAAgB,KAClBl9F,EAAEm9F,eAAiB,KACnBn9F,EAAEo9F,YAAc,KAChBp9F,EAAEq9F,aAAe,KACjBr9F,EAAEs9F,aAAe,KACjBt9F,EAAEu9F,aAAe,KACjBv9F,EAAEw9F,cAAgB,KAClBx9F,EAAEy9F,WAAa,KACfz9F,EAAE09F,UAAY,KACd19F,EAAE29F,cAAgB,KAClB39F,EAAE49F,eAAiB,KACnB59F,EAAE69F,eAAiB,KACnB79F,EAAE89F,iBAAmB,IACrB99F,EAAE+9F,iBAAmB,IACrB/9F,EAAEg+F,kBAAoB,IACtBh+F,EAAEi+F,eAAiB,IACnBj+F,EAAEk+F,aAAe,MACjBl+F,EAAEm+F,UAAY,KACdn+F,EAAEo+F,aAAe,KACjBp+F,EAAEq+F,mBAAqB,KACvBr+F,EAAEs+F,mBAAqB,KACvBt+F,EAAEu+F,eAAiB,KACnBv+F,EAAEw+F,WAAa,KACfx+F,EAAEy+F,oBAAsB,KACxBz+F,EAAE0+F,gBAAkB,MACpB1+F,EAAE2+F,mBAAqB,KACvB3+F,EAAE4+F,gBAAkB,KACpB5+F,EAAE6+F,aAAe,KACjB7+F,EAAE8+F,cAAgB,KAClB9+F,EAAE++F,QAAU,KACZ/+F,EAAEg/F,UAAY,KACdh/F,EAAEi/F,aAAe,KACjBj/F,EAAEk/F,gBAAkB,KACpBl/F,EAAEm/F,YAAc,KAChBn/F,EAAEo/F,kBAAoB,KACtBp/F,EAAEq/F,aAAe,KACjBr/F,EAAEs/F,aAAe,KACjBt/F,EAAEu/F,YAAc,MAChBv/F,EAAEw/F,YAAc,GAChBx/F,EAAEy/F,qBAAuB,MACzBz/F,EAAE0/F,WAAa,IACf1/F,EAAE2/F,oBAAsB,MACxB3/F,EAAE4/F,QAAU,IACZ5/F,EAAE6/F,cAAgB,IAClB7/F,EAAE8/F,eAAiB,MACnB9/F,EAAE+/F,eAAiB,MACnB//F,EAAEggG,wBAA0B,MAC5BhgG,EAAEigG,SAAW,GACbjgG,EAAEkgG,qBAAuB,KACzBlgG,EAAEmgG,eAAiB,KACnBngG,EAAEogG,aAAe,KACjBpgG,EAAEqgG,kBAAoB,MACtBrgG,EAAEsgG,cAAgB,MAClBtgG,EAAEugG,SAAW,KACbvgG,EAAEwgG,UAAY,MACdxgG,EAAEygG,oBAAsB,KACxBzgG,EAAE6yB,GAAK,GACP7yB,EAAE0gG,OAAS,IACX1gG,EAAE2gG,YAAc,MAChB3gG,EAAE4gG,QAAU,MACZ5gG,EAAE6gG,QAAU,IACZ7gG,EAAE8gG,UAAY,KACd9gG,EAAE+gG,WAAa,MACf/gG,EAAEghG,OAAS,KACXhhG,EAAEihG,WAAa,KACfjhG,EAAEkhG,WAAa,KACflhG,EAAEmhG,oBAAsB,KACxBnhG,EAAEohG,gBAAkB,KACpBphG,EAAEqhG,mBAAqB,KACvBrhG,EAAEshG,gBAAkB,KACpBthG,EAAEuhG,oBAAsB,KACxBvhG,EAAEwhG,aAAe,KACjBxhG,EAAEyhG,YAAc,KAChBzhG,EAAE0hG,KAAO,KACT1hG,EAAE2hG,iBAAmB,MACrB3hG,EAAE4hG,WAAa,KACf5hG,EAAE/C,EAAI,GACN+C,EAAE6hG,UAAY,KACd7hG,EAAE8hG,UAAY,GACd9hG,EAAE+hG,mBAAqB,MACvB/hG,EAAEgiG,OAAS,KACXhiG,EAAEiiG,WAAa,KACfjiG,EAAEkiG,WAAa,KACfliG,EAAEmiG,WAAa,MACfniG,EAAEoiG,SAAW,KACbpiG,EAAEqiG,WAAa,MACfriG,EAAEsiG,IAAM,IACRtiG,EAAEuiG,aAAe,MACjBviG,EAAEwiG,UAAY,MACdxiG,EAAEyiG,QAAU,KACZziG,EAAE0iG,WAAa,KACf1iG,EAAE2iG,UAAY,KACd3iG,EAAE4iG,qBAAuB,KACzB5iG,EAAE6iG,QAAU,KACZ7iG,EAAE8iG,WAAa,KACf9iG,EAAE+iG,UAAY,KACd/iG,EAAEgjG,eAAiB,MACnBhjG,EAAEijG,iBAAmB,MACrBjjG,EAAEkjG,WAAa,MACfljG,EAAEmjG,gBAAkB,MACpBnjG,EAAEojG,qBAAuB,MACzBpjG,EAAEqjG,sBAAwB,MAC1BrjG,EAAEsjG,mBAAqB,MACvBtjG,EAAEujG,WAAa,MACfvjG,EAAEwjG,YAAc,KAChBxjG,EAAEyjG,IAAM,KACRzjG,EAAE0jG,KAAO,IACT1jG,EAAE2jG,gBAAkB,IACpB3jG,EAAE4jG,UAAY,MACd5jG,EAAE6jG,gBAAkB,MACpB7jG,EAAE8jG,UAAY,KACd9jG,EAAE+jG,cAAgB,MAClB/jG,EAAEgkG,WAAa,KACfhkG,EAAEikG,QAAU,KACZjkG,EAAEkkG,YAAc,KAChBlkG,EAAEmkG,YAAc,KAChBnkG,EAAEokG,MAAQ,IACVpkG,EAAEqkG,WAAa,MACfrkG,EAAEskG,WAAa,MACftkG,EAAEukG,cAAgB,IAClBvkG,EAAEwkG,cAAgB,KAClBxkG,EAAEykG,WAAa,MACfzkG,EAAE0kG,YAAc,KAChB1kG,EAAE2kG,aAAe,KACjB3kG,EAAE4kG,0BAA4B,KAC9B5kG,EAAE6kG,yBAA2B,KAC7B7kG,EAAE8kG,0BAA4B,KAC9B9kG,EAAE+kG,2BAA6B,MAC/B/kG,EAAEglG,mCAAqC,MACvChlG,EAAEilG,4BAA8B,MAChCjlG,EAAEklG,oCAAsC,MACxCllG,EAAEmlG,uBAAyB,KAC3BnlG,EAAEolG,wBAA0B,KAC5BplG,EAAEqlG,eAAiB,KACnBrlG,EAAEslG,0BAA4B,KAC9BtlG,EAAEulG,2BAA6B,KAC/BvlG,EAAEwlG,iBAAmB,KACrBxlG,EAAEylG,iBAAmB,KACrBzlG,EAAE0lG,YAAc,KAChB1lG,EAAE2lG,UAAY,KACd3lG,EAAE4lG,uBAAyB,KAC3B5lG,EAAE6lG,wBAA0B,KAC5B7lG,EAAE8lG,6BAA+B,KACjC9lG,EAAE+lG,wBAA0B,KAC5B/lG,EAAEgmG,MAAQ,KACVhmG,EAAEimG,WAAa,KACfjmG,EAAE0uB,MAAQ,KACV1uB,EAAEkmG,WAAa,MACflmG,EAAEmmG,aAAe,KACjBnmG,EAAEomG,WAAa,MACfpmG,EAAEqmG,WAAa,MACfrmG,EAAEsmG,OAAS,KACXtmG,EAAEumG,SAAW,MACbvmG,EAAEwmG,QAAU,MACZxmG,EAAEymG,UAAY,IACdzmG,EAAE0mG,YAAc,MAChB1mG,EAAE2mG,aAAe,MACjB3mG,EAAE4mG,mBAAqB,MACvB5mG,EAAE6mG,eAAiB,MACnB7mG,EAAE8mG,YAAc,MAChB9mG,EAAE+mG,kBAAoB,MACtB/mG,EAAEgnG,WAAa,IACfhnG,EAAEinG,aAAe,MACjBjnG,EAAEknG,cAAgB,MAClBlnG,EAAEmnG,oBAAsB,MACxBnnG,EAAEonG,gBAAkB,MACpBpnG,EAAEqnG,aAAe,MACjBrnG,EAAEsnG,mBAAqB,MACvBtnG,EAAEunG,YAAc,GAChBvnG,EAAEwnG,cAAgB,MAClBxnG,EAAEynG,cAAgB,MAClBznG,EAAE0nG,qBAAuB,MACzB1nG,EAAE2nG,cAAgB,MAClB3nG,EAAE4nG,aAAe,GACjB5nG,EAAE6nG,eAAiB,MACnB7nG,EAAE8nG,eAAiB,MACnB9nG,EAAE+nG,sBAAwB,MAC1B/nG,EAAEgoG,eAAiB,MACnBhoG,EAAEioG,MAAQ,IACVjoG,EAAEkoG,cAAgB,IAClBloG,EAAEmoG,SAAW,IACbnoG,EAAEooG,sBAAwB,IAC1BpoG,EAAEqoG,iBAAmB,IACrBroG,EAAEsoG,uBAAyB,IAC3BtoG,EAAEuoG,eAAiB,IACnBvoG,EAAEwoG,uBAAyB,IAC3BxoG,EAAEyoG,UAAY,IACdzoG,EAAE0oG,QAAU,IACZ1oG,EAAE2oG,UAAY,MACd3oG,EAAE4oG,QAAU,IACZ5oG,EAAE6oG,WAAa,MACf7oG,EAAE8oG,WAAa,MACf9oG,EAAE+oG,OAAS,KACX/oG,EAAEgpG,cAAgB,KAClBhpG,EAAEipG,eAAiB,KACnBjpG,EAAEkpG,SAAW,KACblpG,EAAExB,EAAI,GACNwB,EAAEmpG,WAAa,KACfnpG,EAAEopG,UAAY,KACdppG,EAAEqpG,OAAS,IACXrpG,EAAEspG,OAAS,KACXtpG,EAAEupG,WAAa,KACfvpG,EAAEwpG,WAAa,KACfxpG,EAAEypG,UAAY,MACdzpG,EAAE0pG,mBAAqB,KACvB1pG,EAAE2pG,eAAiB,IACnB3pG,EAAE4pG,gBAAkB,KACpB5pG,EAAE6pG,oBAAsB,KACxB7pG,EAAE8pG,SAAW,KACb9pG,EAAE+pG,OAAS,KACX/pG,EAAEgqG,MAAQ,IACVhqG,EAAEiqG,cAAgB,IAClBjqG,EAAEkqG,SAAW,IACblqG,EAAEmqG,eAAiB,KACnBnqG,EAAEoqG,UAAY,MACdpqG,EAAEqqG,OAAS,IACXrqG,EAAEsqG,SAAW,IACbtqG,EAAEuqG,cAAgB,KAClBvqG,EAAEwqG,QAAU,KACZxqG,EAAEyqG,YAAc,IAChBzqG,EAAE0qG,MAAQ,IACV1qG,EAAE2qG,KAAO,IACT3qG,EAAE4qG,WAAa,IACf5qG,EAAE6qG,SAAW,MACb7qG,EAAE8qG,QAAU,IACZ9qG,EAAE+qG,WAAa,IACf/qG,EAAEgrG,KAAO,IACThrG,EAAEirG,WAAa,KACfjrG,EAAEkrG,aAAe,MACjBlrG,EAAEmrG,cAAgB,MAClBnrG,EAAEorG,aAAe,MACjBprG,EAAEqrG,aAAe,MACjBrrG,EAAEsrG,YAAc,KAChBtrG,EAAEurG,WAAa,KACfvrG,EAAEwrG,QAAU,KACZxrG,EAAEyrG,YAAc,KAChBzrG,EAAE0rG,YAAc,KAChB1rG,EAAE2rG,WAAa,MACf3rG,EAAE4rG,qBAAuB,KACzB5rG,EAAE6rG,UAAY,MACd7rG,EAAE8rG,YAAc,KAChB9rG,EAAE+rG,8BAAgC,KAClC/rG,EAAEgsG,qBAAuB,KACzBhsG,EAAEisG,oBAAsB,KACxBjsG,EAAEksG,aAAe,KACjBlsG,EAAEmsG,sBAAwB,KAC1BnsG,EAAEosG,0BAA4B,KAC9BpsG,EAAEqsG,IAAM,IACRrsG,EAAEssG,qBAAuB,MACzBtsG,EAAEusG,oBAAsB,MACxBvsG,EAAEwsG,oBAAsB,MACxBxsG,EAAEysG,cAAgB,MAClBzsG,EAAE0sG,mBAAqB,MACvB1sG,EAAE2sG,aAAe,KACjB3sG,EAAE4sG,YAAc,KAChB5sG,EAAE6sG,aAAe,KACjB7sG,EAAE8sG,YAAc,KAChB9sG,EAAE+sG,MAAQ,IACV/sG,EAAEgtG,mBAAqB,MACvBhtG,EAAEitG,kBAAoB,MACtBjtG,EAAEktG,kBAAoB,MACtBltG,EAAEmtG,YAAc,MAChBntG,EAAEotG,iBAAmB,MACrBptG,EAAEqtG,kBAAoB,MACtBrtG,EAAEstG,OAAS,KACXttG,EAAEutG,aAAe,IACjBvtG,EAAEwtG,eAAiB,KACnBxtG,EAAEytG,SAAW,KACbztG,EAAE0tG,WAAa,KACf1tG,EAAE2tG,iBAAmB,MACrB3tG,EAAE4tG,wBAA0B,KAC5B5tG,EAAE6tG,yBAA2B,KAC7B7tG,EAAE8tG,WAAa,IACf9tG,EAAE+tG,mBAAqB,IACvB/tG,EAAEguG,cAAgB,IAClBhuG,EAAEqH,MAAQ,KACVrH,EAAEiuG,cAAgB,IAClBjuG,EAAEkuG,YAAc,IAChBluG,EAAEmuG,aAAe,IACjBnuG,EAAEouG,eAAiB,IACnBpuG,EAAEquG,KAAO,KACTruG,EAAEsuG,cAAgB,KAClBtuG,EAAEuuG,cAAgB,KAClBvuG,EAAEwuG,cAAgB,MAClBxuG,EAAEyuG,WAAa,MACfzuG,EAAE0uG,gBAAkB,MACpB1uG,EAAE2uG,WAAa,KACf3uG,EAAE4uG,MAAQ,GACV5uG,EAAE6uG,cAAgB,KAClB7uG,EAAE8uG,eAAiB,MACnB9uG,EAAE+uG,UAAY,KACd/uG,EAAEgvG,WAAa,MACfhvG,EAAEivG,uBAAyB,IAC3BjvG,EAAEkvG,mBAAqB,IACvBlvG,EAAEmvG,MAAQ,GACVnvG,EAAEovG,cAAgB,IAClBpvG,EAAEqvG,mBAAqB,IACvBrvG,EAAEsvG,YAAc,MAChBtvG,EAAEuvG,YAAc,KAChBvvG,EAAEwvG,cAAgB,KAClBxvG,EAAEyvG,cAAgB,MAClBzvG,EAAE0vG,eAAiB,MACnB1vG,EAAE2vG,sBAAwB,IAC1B3vG,EAAE4vG,iBAAmB,IACrB5vG,EAAE6vG,WAAa,MACf7vG,EAAE8vG,cAAgB,MAClB9vG,EAAE+vG,oBAAsB,IACxB/vG,EAAEgwG,eAAiB,IACnBhwG,EAAEiwG,QAAU,KACZjwG,EAAEkwG,UAAY,KACdlwG,EAAEmwG,gBAAkB,KACpBnwG,EAAEowG,QAAU,KACZpwG,EAAEqwG,WAAa,EACfrwG,EAAEswG,WAAa,EACftwG,EAAEuwG,UAAY,EACdvwG,EAAEwwG,WAAa,GACfxwG,EAAEywG,UAAY,GACdzwG,EAAE0wG,WAAa,GACf1wG,EAAE2wG,WAAa,GACf3wG,EAAE4wG,WAAa,GACf5wG,EAAE6wG,WAAa,GACf7wG,EAAE8wG,WAAa,IACf9wG,EAAE+wG,WAAa,GACf/wG,EAAEgxG,UAAY,GACdhxG,EAAEixG,WAAa,EACfjxG,EAAEkxG,WAAa,EACflxG,EAAEmxG,WAAa,GACfnxG,EAAEoxG,WAAa,GACfpxG,EAAEqxG,WAAa,EACfrxG,EAAEsxG,UAAY,GACdtxG,EAAEuxG,UAAY,GACdvxG,EAAEwxG,UAAY,GACdxxG,EAAEyxG,UAAY,EACdzxG,EAAE0xG,UAAY,GACd1xG,EAAE2xG,WAAa,GACf3xG,EAAE4xG,YAAc,EAChB5xG,EAAE6xG,UAAY,GACd7xG,EAAE8xG,UAAY,GACd9xG,EAAE+xG,UAAY,GACd/xG,EAAEgyG,WAAa,EACfhyG,EAAEiyG,WAAa,EACfjyG,EAAEkyG,WAAa,GACflyG,EAAEmyG,WAAa,GACfnyG,EAAEoyG,UAAY,GACdpyG,EAAEqyG,UAAY,GACdryG,EAAEsyG,UAAY,IACdtyG,EAAEuyG,cAAgB,MAClBvyG,EAAEwyG,eAAiB,MACnBxyG,EAAEyyG,kBAAoB,MACtBzyG,EAAE0yG,2BAA6B,MAC/B1yG,EAAE2yG,0BAA4B,MAC9B3yG,EAAE4yG,mBAAqB,MACvB5yG,EAAE6yG,4BAA8B,MAChC7yG,EAAE8yG,2BAA6B,MAC/B9yG,EAAE+yG,kBAAoB,MACtB/yG,EAAEgzG,SAAW,MACbhzG,EAAEizG,cAAgB,MAClBjzG,EAAEkzG,OAAS,KACXlzG,EAAEmzG,SAAW,KACbnzG,EAAEozG,WAAa,IACfpzG,EAAEqzG,SAAW,KACbrzG,EAAEszG,QAAU,KACZtzG,EAAEuzG,SAAW,IACbvzG,EAAEwzG,SAAW,MACbxzG,EAAEyzG,QAAU,MACZzzG,EAAE0zG,SAAW,MACb1zG,EAAE2zG,QAAU,MACZ3zG,EAAErZ,EAAI,IACNqZ,EAAE4zG,WAAa,KACf5zG,EAAE6zG,UAAY,KACd7zG,EAAE8zG,UAAY,KACd9zG,EAAE+zG,OAAS,KACX/zG,EAAEg0G,eAAiB,MACnBh0G,EAAEi0G,iBAAmB,MACrBj0G,EAAEk0G,gBAAkB,MACpBl0G,EAAEm0G,OAAS,KACXn0G,EAAEo0G,aAAe,KACjBp0G,EAAEq0G,OAAS,KACXr0G,EAAEs0G,UAAY,KACdt0G,EAAEu0G,WAAa,KACfv0G,EAAEw0G,WAAa,KACfx0G,EAAEy0G,WAAa,MACfz0G,EAAE00G,WAAa,MACf10G,EAAE20G,UAAY,KACd30G,EAAE40G,MAAQ,KACV50G,EAAE60G,YAAc,MAChB70G,EAAE80G,kBAAoB,MACtB90G,EAAE+0G,YAAc,KAChB/0G,EAAEg1G,eAAiB,MACnBh1G,EAAEi1G,YAAc,KAChBj1G,EAAEk1G,eAAiB,KACnBl1G,EAAEm1G,qBAAuB,KACzBn1G,EAAEo1G,eAAiB,KACnBp1G,EAAEq1G,MAAQ,KACVr1G,EAAEs1G,YAAc,KAChBt1G,EAAEu1G,gBAAkB,KACpBv1G,EAAEw1G,yBAA2B,KAC7Bx1G,EAAEy1G,SAAW,MACbz1G,EAAE01G,oBAAsB,MACxB11G,EAAE21G,4BAA8B,MAChC31G,EAAE41G,qBAAuB,MACzB51G,EAAE61G,6BAA+B,MACjC71G,EAAE81G,wBAA0B,IAC5B91G,EAAE+1G,aAAe,KACjB/1G,EAAEg2G,cAAgB,KAClBh2G,EAAEi2G,SAAW,KACbj2G,EAAEk2G,SAAW,MACbl2G,EAAEm2G,YAAc,IAChBn2G,EAAEo2G,YAAc,KAChBp2G,EAAEq2G,WAAa,KACfr2G,EAAEs2G,cAAgB,IAClBt2G,EAAEu2G,eAAiB,IACnBv2G,EAAEw2G,YAAc,IAChBx2G,EAAEy2G,eAAiB,KACnBz2G,EAAE02G,wBAA0B,IAC5B12G,EAAE22G,UAAY,MACd32G,EAAE42G,SAAW,MACb52G,EAAE62G,OAAS,IACX72G,EAAE82G,SAAW,KACb92G,EAAE+2G,QAAU,KACZ/2G,EAAEg3G,iBAAmB,KACrBh3G,EAAEi3G,OAAS,IACXj3G,EAAEk3G,WAAa,KACfl3G,EAAEm3G,QAAU,KACZn3G,EAAEo3G,YAAc,KAChBp3G,EAAEq3G,YAAc,KAChBr3G,EAAEs3G,WAAa,KACft3G,EAAEu3G,gBAAkB,MACpBv3G,EAAEw3G,UAAY,KACdx3G,EAAEy3G,YAAc,KAChBz3G,EAAE03G,SAAW,KACb13G,EAAE23G,aAAe,KACjB33G,EAAE43G,aAAe,KACjB53G,EAAE63G,WAAa,KACf73G,EAAE83G,UAAY,KACd93G,EAAE+3G,uBAAyB,KAC3B/3G,EAAEg4G,wBAA0B,KAC5Bh4G,EAAEi4G,WAAa,KACfj4G,EAAEk4G,OAAS,IACXl4G,EAAEm4G,WAAa,KACfn4G,EAAEo4G,WAAa,MACfp4G,EAAEq4G,UAAY,KACdr4G,EAAEs4G,WAAa,MACft4G,EAAEu4G,WAAa,KACfv4G,EAAEw4G,YAAc,KAChBx4G,EAAEQ,MAAQ,IACVR,EAAEy4G,YAAc,IAChBz4G,EAAE04G,oCAAsC,KACxC14G,EAAE24G,KAAO,IACT34G,EAAE44G,WAAa,KACf54G,EAAE64G,QAAU,KACZ74G,EAAE84G,YAAc,KAChB94G,EAAE+4G,YAAc,KAChB/4G,EAAEg5G,MAAQ,IACVh5G,EAAEi5G,eAAiB,IACnBj5G,EAAEk5G,kBAAoB,IACtBl5G,EAAEm5G,QAAU,KACZn5G,EAAEo5G,iBAAmB,KACrBp5G,EAAEq5G,SAAW,IACbr5G,EAAEs5G,cAAgB,MAClBt5G,EAAEu5G,iBAAmB,IACrBv5G,EAAEw5G,YAAc,IAChBx5G,EAAEy5G,cAAgB,MAClBz5G,EAAE05G,cAAgB,IAClB15G,EAAE25G,WAAa,MACf35G,EAAE45G,WAAa,MACf55G,EAAE65G,UAAY,MACd75G,EAAE85G,OAAS,IACX95G,EAAE+5G,QAAU,KACZ/5G,EAAEg6G,cAAgB,KAClBh6G,EAAEi6G,YAAc,KAChBj6G,EAAEk6G,QAAU,KACZl6G,EAAEm6G,WAAa,KACfn6G,EAAEo6G,SAAW,MACbp6G,EAAEq6G,QAAU,IACZr6G,EAAEs6G,WAAa,MACft6G,EAAEu6G,QAAU,KACZv6G,EAAEw6G,YAAc,KAChBx6G,EAAEy6G,UAAY,KACdz6G,EAAE06G,WAAa,MACf16G,EAAE26G,WAAa,MACf36G,EAAE46G,OAAS,GACX56G,EAAE66G,eAAiB,MACnB76G,EAAE86G,gBAAkB,MACpB96G,EAAE+6G,eAAiB,MACnB/6G,EAAEg7G,YAAc,MAChBh7G,EAAEi7G,eAAiB,MACnBj7G,EAAEk7G,KAAO,KACTl7G,EAAEm7G,WAAa,MACfn7G,EAAEo7G,UAAY,IACdp7G,EAAEq7G,aAAe,IACjBr7G,EAAEs7G,YAAc,IAChBt7G,EAAEu7G,aAAe,IACjBv7G,EAAEw7G,YAAc,MAChBx7G,EAAEy7G,SAAW,IACbz7G,EAAE07G,SAAW,MACb17G,EAAE27G,mBAAqB,IACvB37G,EAAE47G,QAAU,KACZ57G,EAAE67G,aAAe,KACjB77G,EAAE87G,eAAiB,MACnB97G,EAAE+7G,qBAAuB,MACzB/7G,EAAEg8G,iBAAmB,IACrBh8G,EAAEi8G,YAAc,IAChBj8G,EAAEk8G,OAAS,KACXl8G,EAAEm8G,UAAY,MACdn8G,EAAEo8G,MAAQ,IACVp8G,EAAEq8G,QAAU,IACZr8G,EAAEs8G,WAAa,MACft8G,EAAEu8G,WAAa,MACfv8G,EAAEw8G,GAAK,IACPx8G,EAAEy8G,SAAW,IACbz8G,EAAE08G,QAAU,IACZ18G,EAAE28G,OAAS,IACX38G,EAAE48G,qBAAuB,KACzB58G,EAAE68G,YAAc,KAChB78G,EAAE88G,aAAe,KACjB98G,EAAE4V,EAAI,IACN5V,EAAE+8G,OAAS,IACX/8G,EAAEg9G,MAAQ,KACVh9G,EAAEi9G,SAAW,KACbj9G,EAAEk9G,UAAY,MACdl9G,EAAEm9G,OAAS,IACXn9G,EAAEo9G,YAAc,KAChBp9G,EAAEq9G,gBAAkB,KACpBr9G,EAAEs9G,qBAAuB,KACzBt9G,EAAEu9G,yBAA2B,KAC7Bv9G,EAAEw9G,OAAS,IACXx9G,EAAEy9G,cAAgB,KAClBz9G,EAAE09G,YAAc,KAChB19G,EAAE29G,gBAAkB,KACpB39G,EAAE49G,QAAU,KACZ59G,EAAE69G,YAAc,IAChB79G,EAAE89G,iBAAmB,KACrB99G,EAAE+9G,iBAAmB,KACrB/9G,EAAEg+G,oBAAsB,KACxBh+G,EAAEi+G,iBAAmB,KACrBj+G,EAAEk+G,qBAAuB,KACzBl+G,EAAEm+G,iBAAmB,KACrBn+G,EAAEo+G,UAAY,KACdp+G,EAAEq+G,UAAY,IACdr+G,EAAEs+G,MAAQ,KACVt+G,EAAEu+G,UAAY,IACdv+G,EAAEw+G,KAAO,IACTx+G,EAAEy+G,WAAa,IACfz+G,EAAE0+G,UAAY,KACd1+G,EAAE2+G,WAAa,KACf3+G,EAAE4+G,gBAAkB,KACpB5+G,EAAE6+G,WAAa,KACf7+G,EAAE8+G,OAAS,IACX9+G,EAAE++G,UAAY,KACd/+G,EAAEg/G,WAAa,KACfh/G,EAAEi/G,WAAa,MACfj/G,EAAEk/G,UAAY,MACdl/G,EAAEm/G,WAAa,KACfn/G,EAAEo/G,WAAa,MACfp/G,EAAEq/G,MAAQ,GACVr/G,EAAEs/G,YAAc,KAChBt/G,EAAEu/G,aAAe,KACjBv/G,EAAEw/G,YAAc,KAChBx/G,EAAEy/G,4BAA8B,MAChCz/G,EAAE0/G,UAAY,KACd1/G,EAAE2/G,eAAiB,KACnB3/G,EAAE4/G,cAAgB,KAClB5/G,EAAE6/G,eAAiB,KACnB7/G,EAAE8/G,cAAgB,KAClB9/G,EAAE+/G,cAAgB,KAClB//G,EAAEggH,gBAAkB,KACpBhgH,EAAEigH,cAAgB,MAClBjgH,EAAEkgH,iBAAmB,KACrBlgH,EAAEmgH,sBAAwB,MAC1BngH,EAAEogH,cAAgB,KAClBpgH,EAAEqgH,eAAiB,MACnBrgH,EAAEsgH,cAAgB,MAClBtgH,EAAEugH,WAAa,KACfvgH,EAAEwgH,YAAc,KAChBxgH,EAAEygH,aAAe,KACjBzgH,EAAE0gH,WAAa,KACf1gH,EAAE2gH,cAAgB,KAClB3gH,EAAE4gH,UAAY,KACd5gH,EAAE6gH,eAAiB,IACnB7gH,EAAE8gH,kBAAoB,KACtB9gH,EAAE+gH,UAAY,MACd/gH,EAAEghH,mBAAqB,MACvBhhH,EAAEihH,gBAAkB,KACpBjhH,EAAEkhH,QAAU,MACZlhH,EAAEmhH,WAAa,KACfnhH,EAAE0O,QAAU,KACZ1O,EAAEohH,aAAe,KACjBphH,EAAEqhH,YAAc,KAChBrhH,EAAEshH,aAAe,KACjBthH,EAAEuhH,YAAc,KAChBvhH,EAAEwhH,SAAW,KACbxhH,EAAEyhH,iBAAmB,KACrBzhH,EAAE0hH,QAAU,IACZ1hH,EAAE2hH,aAAe,KACjB3hH,EAAE4hH,aAAe,KACjB5hH,EAAE6hH,WAAa,KACf7hH,EAAE8hH,OAAS,KACX9hH,EAAE+hH,eAAiB,MACnB/hH,EAAEgiH,WAAa,MACfhiH,EAAEiiH,qBAAuB,KACzBjiH,EAAEkiH,SAAW,KACbliH,EAAEmiH,WAAa,MACfniH,EAAEoiH,WAAa,KACfpiH,EAAEqiH,OAAS,KACXriH,EAAEsiH,eAAiB,MACnBtiH,EAAEuiH,oBAAsB,KACxBviH,EAAEwiH,IAAM,IACRxiH,EAAEyiH,YAAc,MAChBziH,EAAE0iH,cAAgB,KAClB1iH,EAAE2iH,eAAiB,KACnB3iH,EAAE4iH,QAAU,KACZ5iH,EAAE6iH,QAAU,IACZ7iH,EAAE8iH,SAAW,MACb9iH,EAAE+iH,MAAQ,IACV/iH,EAAEgjH,YAAc,IAChBhjH,EAAEijH,cAAgB,IAClBjjH,EAAEkjH,oBAAsB,IACxBljH,EAAEmjH,kBAAoB,IACtBnjH,EAAEojH,OAAS,KACXpjH,EAAE+2D,QAAU,IACZ/2D,EAAEqjH,aAAe,IACjBrjH,EAAEsjH,MAAQ,GACVtjH,EAAEujH,eAAiB,MACnBvjH,EAAEwjH,WAAa,MACfxjH,EAAEyjH,cAAgB,KAClBzjH,EAAE0jH,YAAc,KAChB1jH,EAAE2jH,WAAa,MACf3jH,EAAE4jH,WAAa,KACf5jH,EAAE6jH,UAAY,IACd7jH,EAAE8jH,kBAAoB,KACtB9jH,EAAE+jH,WAAa,KACf/jH,EAAEgkH,oBAAsB,KACxBhkH,EAAEikH,IAAM,IACRjkH,EAAEkkH,QAAU,IACZlkH,EAAEmkH,WAAa,KACfnkH,EAAEokH,oBAAsB,KACxBpkH,EAAEqkH,gBAAkB,IACpBrkH,EAAEskH,iBAAmB,IACrBtkH,EAAEukH,eAAiB,MACnBvkH,EAAEwkH,eAAiB,MACnBxkH,EAAEykH,wBAA0B,MAC5BzkH,EAAE0kH,UAAY,KACd1kH,EAAE2kH,UAAY,MACd3kH,EAAE4kH,IAAM,IACR5kH,EAAE6kH,WAAa,KACf7kH,EAAE8kH,SAAW,IACb9kH,EAAE+kH,IAAM,IACR/kH,EAAEglH,OAAS,KACXhlH,EAAEilH,YAAc,KAChBjlH,EAAEklH,mBAAqB,KACvBllH,EAAEmlH,uBAAyB,KAC3BnlH,EAAEolH,cAAgB,KAClBplH,EAAEqlH,kBAAoB,KACtBrlH,EAAEslH,QAAU,IACZtlH,EAAEulH,SAAW,MACbvlH,EAAEwlH,KAAO,KACTxlH,EAAEylH,kBAAoB,KACtBzlH,EAAE0lH,eAAiB,KACnB1lH,EAAE2lH,mBAAqB,KACvB3lH,EAAE4lH,OAAS,GACX5lH,EAAE6lH,eAAiB,KACnB7lH,EAAE8lH,UAAY,KACd9lH,EAAE+lH,WAAa,IACf/lH,EAAEgmH,gBAAkB,MACpBhmH,EAAEimH,gBAAkB,MACpBjmH,EAAEkmH,YAAc,MAChBlmH,EAAEmmH,YAAc,KAChBnmH,EAAEomH,IAAM,IACRpmH,EAAEqmH,SAAW,IACbrmH,EAAEsmH,QAAU,IACZtmH,EAAEumH,YAAc,IAChBvmH,EAAEwmH,QAAU,IACZxmH,EAAEu3C,EAAI,IACNv3C,EAAEymH,OAAS,KACXzmH,EAAE0mH,WAAa,KACf1mH,EAAE2mH,WAAa,KACf3mH,EAAE4mH,YAAc,KAChB5mH,EAAE6mH,eAAiB,KACnB7mH,EAAE8mH,eAAiB,KACnB9mH,EAAE+mH,UAAY,MACd/mH,EAAEgnH,QAAU,KACZhnH,EAAEinH,WAAa,KACfjnH,EAAEknH,UAAY,KACdlnH,EAAEmnH,YAAc,KAChBnnH,EAAEonH,eAAiB,MACnBpnH,EAAEqnH,iBAAmB,MACrBrnH,EAAEsnH,gBAAkB,MACpBtnH,EAAEunH,UAAY,IACdvnH,EAAEwnH,OAAS,KACXxnH,EAAEynH,GAAK,MACPznH,EAAE0nH,IAAM,MACR1nH,EAAE2nH,IAAM,MACR3nH,EAAE4nH,MAAQ,MACV5nH,EAAE6nH,IAAM,MACR7nH,EAAE8nH,MAAQ,MACV9nH,EAAE+nH,GAAK,MACP/nH,EAAEgoH,IAAM,MACRhoH,EAAEioH,cAAgB,KAClBjoH,EAAEkoH,aAAe,KACjBloH,EAAEmoH,cAAgB,KAClBnoH,EAAEooH,WAAa,KACfpoH,EAAEqoH,UAAY,KACdroH,EAAEsoH,WAAa,KACftoH,EAAEuoH,SAAW,KACbvoH,EAAEwoH,eAAiB,MACnBxoH,EAAEyoH,qBAAuB,MACzBzoH,EAAE0oH,eAAiB,KACnB1oH,EAAE2oH,SAAW,KACb3oH,EAAE4oH,eAAiB,KACnB5oH,EAAE6oH,SAAW,KACb7oH,EAAE8oH,eAAiB,KACnB9oH,EAAE+oH,QAAU,KACZ/oH,EAAEgpH,cAAgB,KAClBhpH,EAAEipH,WAAa,KACfjpH,EAAEkpH,iBAAmB,KACrBlpH,EAAEmpH,iBAAmB,IACrBnpH,EAAEopH,QAAU,KACZppH,EAAEqpH,aAAe,KACjBrpH,EAAEspH,KAAO,GACTtpH,EAAEupH,WAAa,KACfvpH,EAAEwpH,YAAc,KAChBxpH,EAAEypH,WAAa,KACfzpH,EAAE0pH,2BAA6B,MAC/B1pH,EAAE2pH,SAAW,KACb3pH,EAAE4pH,YAAc,KAChB5pH,EAAE6pH,aAAe,KACjB7pH,EAAE8pH,aAAe,KACjB9pH,EAAE+pH,eAAiB,KACnB/pH,EAAEgqH,aAAe,MACjBhqH,EAAEiqH,qBAAuB,MACzBjqH,EAAEkqH,aAAe,KACjBlqH,EAAEmqH,cAAgB,MAClBnqH,EAAEoqH,aAAe,MACjBpqH,EAAEqqH,UAAY,KACdrqH,EAAEsqH,WAAa,KACftqH,EAAEuqH,YAAc,KAChBvqH,EAAEwqH,UAAY,KACdxqH,EAAEyqH,aAAe,KACjBzqH,EAAE0qH,SAAW,KACb1qH,EAAE2qH,GAAK,MACP3qH,EAAE4qH,IAAM,MACR5qH,EAAE6qH,OAAS,IACX7qH,EAAE8qH,WAAa,MACf9qH,EAAE+qH,SAAW,MACb/qH,EAAEgrH,UAAY,KACdhrH,EAAEirH,SAAW,KACbjrH,EAAEkrH,YAAc,KAChBlrH,EAAEmrH,OAAS,KACXnrH,EAAEorH,KAAO,GACTprH,EAAEqrH,WAAa,KACfrrH,EAAEsrH,YAAc,KAChBtrH,EAAEurH,WAAa,KACfvrH,EAAEwrH,2BAA6B,MAC/BxrH,EAAEyrH,SAAW,KACbzrH,EAAE0rH,aAAe,KACjB1rH,EAAE2rH,aAAe,KACjB3rH,EAAE4rH,eAAiB,KACnB5rH,EAAE6rH,aAAe,MACjB7rH,EAAE8rH,qBAAuB,MACzB9rH,EAAE+rH,aAAe,KACjB/rH,EAAEgsH,cAAgB,MAClBhsH,EAAEisH,qBAAuB,KACzBjsH,EAAEksH,aAAe,MACjBlsH,EAAEmsH,UAAY,KACdnsH,EAAEosH,WAAa,KACfpsH,EAAEqsH,YAAc,KAChBrsH,EAAEssH,UAAY,KACdtsH,EAAEusH,aAAe,KACjBvsH,EAAEwsH,eAAiB,KACnBxsH,EAAEysH,cAAgB,KAClBzsH,EAAE0sH,eAAiB,KACnB1sH,EAAE2sH,SAAW,KACb3sH,EAAE4sH,kBAAoB,IACtB5sH,EAAE6sH,OAAS,KACX7sH,EAAE8sH,SAAW,KACb9sH,EAAE+sH,MAAQ,KACV/sH,EAAEhD,EAAI,IACNgD,EAAEgtH,UAAY,KACdhtH,EAAEitH,OAAS,IACXjtH,EAAEktH,OAAS,KACXltH,EAAEmtH,UAAY,KACdntH,EAAEotH,eAAiB,MACnBptH,EAAEqtH,iBAAmB,MACrBrtH,EAAEstH,gBAAkB,MACpBttH,EAAEutH,WAAa,KACfvtH,EAAEwtH,WAAa,KACfxtH,EAAEytH,WAAa,MACfztH,EAAE0tH,WAAa,MACf1tH,EAAEid,MAAQ,IACVjd,EAAE2tH,gBAAkB,IACpB3tH,EAAE4tH,cAAgB,IAClB5tH,EAAE6tH,aAAe,KACjB7tH,EAAE8tH,UAAY,MACd9tH,EAAE+tH,OAAS,IACX/tH,EAAEguH,OAAS,IACXhuH,EAAEiuH,SAAW,IACbjuH,EAAEkuH,QAAU,KACZluH,EAAEmuH,YAAc,IAChBnuH,EAAEouH,aAAe,IACjBpuH,EAAEquH,KAAO,IACTruH,EAAEsuH,WAAa,IACftuH,EAAEuuH,WAAa,KACfvuH,EAAEwuH,WAAa,MACfxuH,EAAEyuH,WAAa,MACfzuH,EAAE0uH,mBAAqB,KACvB1uH,EAAE2uH,mBAAqB,KACvB3uH,EAAE4uH,aAAe,KACjB5uH,EAAE6uH,mBAAqB,KACvB7uH,EAAE8uH,WAAa,IACf9uH,EAAE+uH,sBAAwB,KAC1B/uH,EAAEgvH,gBAAkB,KACpBhvH,EAAEivH,SAAW,MACbjvH,EAAEkvH,WAAa,KACflvH,EAAEmvH,aAAe,KACjBnvH,EAAEovH,QAAU,KACZpvH,EAAEqvH,YAAc,KAChBrvH,EAAEsvH,YAAc,KAChBtvH,EAAEuvH,YAAc,KAChBvvH,EAAEwvH,iBAAmB,MACrBxvH,EAAEyvH,mBAAqB,MACvBzvH,EAAE0vH,kBAAoB,MACtB1vH,EAAE2vH,sBAAwB,KAC1B3vH,EAAE4vH,kBAAoB,KACtB5vH,EAAE6vH,kBAAoB,KACtB7vH,EAAE8vH,SAAW,KACb9vH,EAAE+vH,aAAe,KACjB/vH,EAAEgwH,MAAQ,IACVhwH,EAAEiwH,UAAY,MACdjwH,EAAEkwH,WAAa,MACflwH,EAAEmwH,WAAa,MACfnwH,EAAEowH,YAAc,KAChBpwH,EAAEqwH,MAAQ,KACVrwH,EAAEswH,YAAc,MAChBtwH,EAAEuwH,kBAAoB,MACtBvwH,EAAEwwH,YAAc,KAChBxwH,EAAEywH,YAAc,KAChBzwH,EAAE0wH,sBAAwB,IAC1B1wH,EAAE2wH,YAAc,IAChB3wH,EAAE4wH,oBAAsB,IACxB5wH,EAAE6wH,eAAiB,IACnB7wH,EAAE8wH,oBAAsB,IACxB9wH,EAAE+wH,uBAAyB,IAC3B/wH,EAAEgxH,4BAA8B,IAChChxH,EAAEixH,kBAAoB,IACtBjxH,EAAEkxH,0BAA4B,IAC9BlxH,EAAEmxH,QAAU,KACZnxH,EAAEoxH,WAAa,MACfpxH,EAAEqxH,WAAa,MACfrxH,EAAEsxH,WAAa,MACftxH,EAAEuxH,OAAS,KACXvxH,EAAEwxH,UAAY,MACdxxH,EAAEyxH,SAAW,KACbzxH,EAAE0xH,MAAQ,GACV1xH,EAAE2xH,cAAgB,IAClB3xH,EAAE4xH,SAAW,IACb5xH,EAAE6xH,UAAY,IACd7xH,EAAE8xH,UAAY,KACd9xH,EAAE+xH,YAAc,IAChB/xH,EAAEgyH,eAAiB,MACnBhyH,EAAEiyH,aAAe,IACjBjyH,EAAEkyH,QAAU,GACZlyH,EAAEmyH,aAAe,KACjBnyH,EAAEoyH,mBAAqB,KACvBpyH,EAAEqyH,iBAAmB,MACrBryH,EAAEsyH,oBAAsB,KACxBtyH,EAAEuyH,cAAgB,KAClBvyH,EAAEwyH,iBAAmB,KACrBxyH,EAAEyyH,aAAe,MACjBzyH,EAAE0yH,QAAU,IACZ1yH,EAAE2yH,QAAU,IACZ3yH,EAAE4yH,WAAa,MACf5yH,EAAE6yH,cAAgB,IAClB7yH,EAAE8yH,eAAiB,IACnB9yH,EAAE+yH,cAAgB,KAClB/yH,EAAEgzH,eAAiB,KACnBhzH,EAAEizH,WAAa,MACfjzH,EAAEkzH,aAAe,MACjBlzH,EAAEmzH,SAAW,MACbnzH,EAAEgqC,EAAI,IACNhqC,EAAEozH,oBAAsB,KACxBpzH,EAAEqzH,eAAiB,KACnBrzH,EAAEszH,UAAY,KACdtzH,EAAEuzH,oBAAsB,KACxBvzH,EAAEwzH,OAAS,KACXxzH,EAAEyzH,WAAa,KACfzzH,EAAE0zH,WAAa,KACf1zH,EAAE2zH,UAAY,KACd3zH,EAAE4zH,eAAiB,MACnB5zH,EAAE6zH,iBAAmB,MACrB7zH,EAAE8zH,WAAa,MACf9zH,EAAE+zH,gBAAkB,MACpB/zH,EAAEg0H,YAAc,MAChBh0H,EAAEi0H,WAAa,MACfj0H,EAAEk0H,oBAAsB,MACxBl0H,EAAEm0H,eAAiB,KACnBn0H,EAAEo0H,YAAc,KAChBp0H,EAAEq0H,eAAiB,KACnBr0H,EAAEs0H,aAAe,MACjBt0H,EAAEu0H,iBAAmB,KACrBv0H,EAAEw0H,kBAAoB,KACtBx0H,EAAEy0H,mBAAqB,KACvBz0H,EAAE00H,SAAW,MACb10H,EAAE20H,WAAa,KACf30H,EAAE40H,aAAe,KACjB50H,EAAE60H,aAAe,KACjB70H,EAAE80H,aAAe,KACjB90H,EAAE+0H,iBAAmB,KACrB/0H,EAAEg1H,uBAAyB,KAC3Bh1H,EAAEi1H,wBAA0B,KAC5Bj1H,EAAEk1H,qBAAuB,KACzBl1H,EAAEm1H,YAAc,KAChBn1H,EAAEo1H,cAAgB,KAClBp1H,EAAEq1H,cAAgB,KAClBr1H,EAAEs1H,cAAgB,KAClBt1H,EAAEu1H,kBAAoB,KACtBv1H,EAAEw1H,wBAA0B,KAC5Bx1H,EAAEy1H,yBAA2B,KAC7Bz1H,EAAE01H,sBAAwB,KAC1B11H,EAAE21H,WAAa,KACf31H,EAAE41H,aAAe,KACjB51H,EAAE61H,aAAe,KACjB71H,EAAE81H,aAAe,KACjB91H,EAAE+1H,iBAAmB,KACrB/1H,EAAEg2H,uBAAyB,KAC3Bh2H,EAAEi2H,wBAA0B,KAC5Bj2H,EAAEk2H,qBAAuB,KACzBl2H,EAAEm2H,KAAO,IACTn2H,EAAEo2H,UAAY,MACdp2H,EAAEq2H,YAAc,KAChBr2H,EAAEs2H,SAAW,KACbt2H,EAAEu2H,QAAU,KACZv2H,EAAEw2H,YAAc,IAChBx2H,EAAEy2H,UAAY,KACdz2H,EAAE02H,WAAa,KACf12H,EAAE22H,UAAY,KACd32H,EAAE42H,GAAK,KACP52H,EAAE62H,MAAQ,KACV72H,EAAE82H,eAAiB,KACnB92H,EAAE+2H,eAAiB,KACnB/2H,EAAEg3H,SAAW,MACbh3H,EAAEi3H,eAAiB,MACnBj3H,EAAEk3H,gBAAkB,KACpBl3H,EAAEm3H,UAAY,KACdn3H,EAAEo3H,SAAW,KACbp3H,EAAEq3H,qBAAuB,MACzBr3H,EAAEs3H,qBAAuB,MACzBt3H,EAAEu3H,eAAiB,MACnBv3H,EAAEw3H,yBAA2B,MAC7Bx3H,EAAEy3H,4BAA8B,MAChCz3H,EAAE03H,uBAAyB,MAC3B13H,EAAE23H,iBAAmB,MACrB33H,EAAE43H,WAAa,MACf53H,EAAE63H,sBAAwB,MAC1B73H,EAAE83H,gBAAkB,MACpB93H,EAAE+3H,gBAAkB,MACpB/3H,EAAEg4H,WAAa,MACfh4H,EAAEi4H,oBAAsB,MACxBj4H,EAAEk4H,gBAAkB,MACpBl4H,EAAEm4H,SAAW,IACbn4H,EAAEo4H,aAAe,MACjBp4H,EAAEq4H,IAAM,KACRr4H,EAAEs4H,UAAY,KACdt4H,EAAEu4H,MAAQ,IACVv4H,EAAEw4H,cAAgB,IAClBx4H,EAAEy4H,mBAAqB,MACvBz4H,EAAE04H,kBAAoB,MACtB14H,EAAE24H,kBAAoB,MACtB34H,EAAE44H,YAAc,MAChB54H,EAAE64H,iBAAmB,MACrB74H,EAAE84H,WAAa,MACf94H,EAAE+4H,WAAa,MACf/4H,EAAEg5H,oBAAsB,MACxBh5H,EAAEi5H,MAAQ,KACVj5H,EAAEk5H,QAAU,KACZl5H,EAAEm5H,QAAU,KACZn5H,EAAEo5H,QAAU,KACZp5H,EAAEq5H,YAAc,KAChBr5H,EAAEs5H,kBAAoB,KACtBt5H,EAAEu5H,mBAAqB,KACvBv5H,EAAEw5H,gBAAkB,KACpBx5H,EAAEy5H,WAAa,KACfz5H,EAAE05H,WAAa,MACf15H,EAAE25H,WAAa,KACf35H,EAAE45H,UAAY,KACd55H,EAAE65H,WAAa,MACf75H,EAAE85H,WAAa,MACf95H,EAAE+5H,oBAAsB,MACxB/5H,EAAEg6H,MAAQ,KACVh6H,EAAEi6H,QAAU,KACZj6H,EAAEk6H,QAAU,KACZl6H,EAAEm6H,QAAU,KACZn6H,EAAEo6H,YAAc,KAChBp6H,EAAEq6H,kBAAoB,KACtBr6H,EAAEs6H,mBAAqB,KACvBt6H,EAAEu6H,gBAAkB,KACpBv6H,EAAEw6H,aAAe,KACjBx6H,EAAEy6H,cAAgB,IAClBz6H,EAAE06H,QAAU,IACZ16H,EAAE26H,wBAA0B,IAC5B36H,EAAE46H,sBAAwB,IAC1B56H,EAAE66H,WAAa,MACf76H,EAAE86H,WAAa,KACf96H,EAAE+6H,cAAgB,KAClB/6H,EAAEg7H,QAAU,IACZh7H,EAAEi7H,WAAa,KACfj7H,EAAEk7H,MAAQ,KACVl7H,EAAEm7H,OAAS,KACXn7H,EAAEo7H,UAAY,IACdp7H,EAAEq7H,QAAU,IACZr7H,EAAEs7H,WAAa,MACft7H,EAAEu7H,aAAe,MACjBv7H,EAAEw7H,WAAa,MACfx7H,EAAEy7H,oBAAsB,MACxBz7H,EAAE07H,aAAe,IACjB17H,EAAE27H,gBAAkB,IACpB37H,EAAE47H,GAAK,IACP57H,EAAE67H,OAAS,GACX77H,EAAE87H,eAAiB,MACnB97H,EAAE+7H,gBAAkB,MACpB/7H,EAAEg8H,YAAc,MAChBh8H,EAAEi8H,eAAiB,MACnBj8H,EAAEk8H,UAAY,KACdl8H,EAAE9F,EAAI,IACN8F,EAAEm8H,OAAS,IACXn8H,EAAEo8H,WAAa,KACfp8H,EAAEq8H,SAAW,KACbr8H,EAAEs8H,UAAY,MACdt8H,EAAEu8H,OAAS,IACXv8H,EAAEw8H,OAAS,IACXx8H,EAAEy8H,QAAU,KACZz8H,EAAE08H,YAAc,IAChB18H,EAAE28H,UAAY,KACd38H,EAAE48H,UAAY,IACd58H,EAAE68H,qBAAuB,MACzB78H,EAAE88H,oBAAsB,MACxB98H,EAAE+8H,yBAA2B,MAC7B/8H,EAAEg9H,qBAAuB,MACzBh9H,EAAEi9H,wBAA0B,MAC5Bj9H,EAAEk9H,iBAAmB,MACrBl9H,EAAEm9H,iBAAmB,MACrBn9H,EAAEo9H,qBAAuB,MACzBp9H,EAAEq9H,+BAAiC,MACnCr9H,EAAEs9H,yBAA2B,MAC7Bt9H,EAAEu9H,sBAAwB,MAC1Bv9H,EAAEw9H,2BAA6B,MAC/Bx9H,EAAEy9H,2BAA6B,MAC/Bz9H,EAAE09H,yBAA2B,MAC7B19H,EAAE29H,2BAA6B,MAC/B39H,EAAE49H,0BAA4B,MAC9B59H,EAAE69H,qBAAuB,MACzB79H,EAAE89H,qBAAuB,MACzB99H,EAAE+9H,sBAAwB,MAC1B/9H,EAAEg+H,yBAA2B,MAC7Bh+H,EAAEi+H,uBAAyB,MAC3Bj+H,EAAEk+H,sBAAwB,MAC1Bl+H,EAAEm+H,sBAAwB,MAC1Bn+H,EAAEo+H,qBAAuB,MACzBp+H,EAAEq+H,0BAA4B,MAC9Br+H,EAAEs+H,sBAAwB,MAC1Bt+H,EAAEu+H,qBAAuB,MACzBv+H,EAAEw+H,qBAAuB,MACzBx+H,EAAEy+H,kBAAoB,MACtBz+H,EAAE0+H,uBAAyB,MAC3B1+H,EAAE2+H,sBAAwB,MAC1B3+H,EAAE4+H,0BAA4B,MAC9B5+H,EAAE6+H,yBAA2B,MAC7B7+H,EAAE8+H,uBAAyB,MAC3B9+H,EAAE++H,wBAA0B,MAC5B/+H,EAAEg/H,qBAAuB,MACzBh/H,EAAEi/H,wBAA0B,MAC5Bj/H,EAAEk/H,iBAAmB,MACrBl/H,EAAEm/H,wBAA0B,MAC5Bn/H,EAAEo/H,sBAAwB,MAC1Bp/H,EAAEq/H,sBAAwB,MAC1Br/H,EAAEs/H,oBAAsB,MACxBt/H,EAAEu/H,0BAA4B,MAC9Bv/H,EAAEw/H,sBAAwB,MAC1Bx/H,EAAEy/H,qBAAuB,MACzBz/H,EAAE0/H,gBAAkB,MACpB1/H,EAAE2/H,qBAAuB,MACzB3/H,EAAE4/H,oBAAsB,MACxB5/H,EAAE6/H,oBAAsB,MACxB7/H,EAAE8/H,mBAAqB,MACvB9/H,EAAE+/H,qBAAuB,MACzB//H,EAAEggI,oBAAsB,MACxBhgI,EAAEigI,MAAQ,KACVjgI,EAAEkgI,UAAY,IACdlgI,EAAEmgI,eAAiB,KACnBngI,EAAEogI,kBAAoB,KACtBpgI,EAAEqgI,UAAY,KACdrgI,EAAEsgI,gBAAkB,KACpBtgI,EAAEugI,WAAa,KACfvgI,EAAEwgI,mBAAqB,MACvBxgI,EAAEygI,kBAAoB,MACtBzgI,EAAE0gI,kBAAoB,MACtB1gI,EAAE2gI,YAAc,MAChB3gI,EAAE4gI,iBAAmB,MACrB5gI,EAAE6gI,OAAS,IACX7gI,EAAE8gI,UAAY,KACd9gI,EAAE+gI,UAAY,KACd/gI,EAAEghI,UAAY,MACdhhI,EAAEihI,WAAa,KACfjhI,EAAEkhI,UAAY,KACdlhI,EAAEmhI,WAAa,KACfnhI,EAAEohI,OAAS,KACXphI,EAAEqhI,WAAa,KACfrhI,EAAEshI,WAAa,KACfthI,EAAEuhI,gBAAkB,KACpBvhI,EAAEwhI,eAAiB,IACnBxhI,EAAEyhI,gBAAkB,KACpBzhI,EAAE0hI,mBAAqB,KACvB1hI,EAAE2hI,gBAAkB,KACpB3hI,EAAE4hI,oBAAsB,KACxB5hI,EAAE6hI,GAAK,IACP7hI,EAAE8hI,UAAY,MACd9hI,EAAE+hI,mBAAqB,MACvB/hI,EAAEgiI,QAAU,MACZhiI,EAAEiiI,KAAO,IACTjiI,EAAEkiI,WAAa,KACfliI,EAAEmiI,QAAU,IACZniI,EAAEoiI,gBAAkB,KACpBpiI,EAAEqiI,0BAA4B,KAC9BriI,EAAEsiI,eAAiB,KACnBtiI,EAAEuiI,WAAa,MACfviI,EAAEy5B,UAAY,KACdz5B,EAAEwiI,SAAW,KACbxiI,EAAEyiI,YAAc,KAChBziI,EAAE0iI,SAAW,KACb1iI,EAAE2iI,eAAiB,KACnB3iI,EAAE4iI,WAAa,KACf5iI,EAAE6iI,WAAa,MACf7iI,EAAE8iI,YAAc,KAChB9iI,EAAE+iI,WAAa,KACf/iI,EAAEgjI,aAAe,KACjBhjI,EAAEijI,WAAa,MACfjjI,EAAEkjI,UAAY,KACdljI,EAAEmjI,UAAY,KACdnjI,EAAEojI,aAAe,KACjBpjI,EAAEqjI,WAAa,KACfrjI,EAAEsjI,QAAU,IACZtjI,EAAEujI,KAAO,IACTvjI,EAAEwjI,aAAe,IACjBxjI,EAAEyjI,kBAAoB,IACtBzjI,EAAE0jI,UAAY,IACd1jI,EAAE2jI,UAAY,IACd3jI,EAAE4jI,OAAS,KACX5jI,EAAE6jI,YAAc,KAChB7jI,EAAE8jI,eAAiB,MACnB9jI,EAAE+jI,eAAiB,MACnB/jI,EAAEgkI,wBAA0B,MAC5BhkI,EAAEikI,cAAgB,KAClBjkI,EAAEkkI,QAAU,IACZlkI,EAAEmkI,UAAY,MACdnkI,EAAEokI,kBAAoB,MACtBpkI,EAAEqkI,kBAAoB,MACtBrkI,EAAEskI,OAAS,IACXtkI,EAAEukI,YAAc,KAChBvkI,EAAEwkI,WAAa,MACfxkI,EAAEykI,WAAa,KACfzkI,EAAE0kI,kBAAoB,KACtB1kI,EAAE2kI,eAAiB,KACnB3kI,EAAE4kI,mBAAqB,KACvB5kI,EAAE6kI,gBAAkB,KACpB7kI,EAAE8kI,wBAA0B,KAC5B9kI,EAAE+Y,EAAI,IACN/Y,EAAE+kI,WAAa,KACf/kI,EAAEglI,UAAY,KACdhlI,EAAEilI,OAAS,KACXjlI,EAAEklI,WAAa,KACfllI,EAAEmlI,WAAa,KACfnlI,EAAEolI,UAAY,MACdplI,EAAEqlI,OAAS,IACXrlI,EAAEslI,QAAU,KACZtlI,EAAEulI,YAAc,IAChBvlI,EAAEwlI,aAAe,IACjBxlI,EAAEylI,eAAiB,IACnBzlI,EAAE0lI,WAAa,KACf1lI,EAAE2lI,WAAa,KACf3lI,EAAE4lI,gBAAkB,MACpB5lI,EAAE6lI,kBAAoB,MACtB7lI,EAAE8lI,iBAAmB,MACrB9lI,EAAE+lI,UAAY,KACd/lI,EAAEgmI,eAAiB,MACnBhmI,EAAEimI,WAAa,KACfjmI,EAAEkmI,QAAU,KACZlmI,EAAEmmI,YAAc,KAChBnmI,EAAEomI,YAAc,KAChBpmI,EAAEqmI,aAAe,KACjBrmI,EAAEsmI,IAAM,MACRtmI,EAAEumI,WAAa,MACfvmI,EAAEwmI,OAAS,KACXxmI,EAAEymI,UAAY,IACdzmI,EAAE+e,EAAI,IACN/e,EAAE0mI,kBAAoB,KACtB1mI,EAAE2mI,UAAY,KACd3mI,EAAE4mI,OAAS,KACX5mI,EAAE6mI,WAAa,KACf7mI,EAAE8mI,oBAAsB,KACxB9mI,EAAE+mI,OAAS,KACX/mI,EAAEgnI,IAAM,KACRhnI,EAAEinI,UAAY,KACdjnI,EAAEknI,UAAY,MACdlnI,EAAEmnI,gBAAkB,MACpBnnI,EAAEonI,eAAiB,MACnBpnI,EAAEqnI,UAAY,KACdrnI,EAAEsnI,iBAAmB,MACrBtnI,EAAEunI,gBAAkB,MACpBvnI,EAAEwnI,cAAgB,MAClBxnI,EAAEynI,WAAa,KACfznI,EAAE0nI,WAAa,KACf1nI,EAAE2nI,WAAa,MACf3nI,EAAE4nI,eAAiB,KACnB5nI,EAAE6nI,WAAa,MACf7nI,EAAE8nI,oBAAsB,MACxB9nI,EAAE+nI,MAAQ,IACV/nI,EAAEgoI,iBAAmB,KACrBhoI,EAAEioI,oBAAsB,MACxBjoI,EAAEkoI,sBAAwB,MAC1BloI,EAAEmoI,oBAAsB,MACxBnoI,EAAEooI,yBAA2B,MAC7BpoI,EAAEqoI,cAAgB,MAClBroI,EAAEsoI,kBAAoB,KACtBtoI,EAAEuoI,+BAAiC,KACnCvoI,EAAEwoI,gBAAkB,MACpBxoI,EAAEyoI,SAAW,MACbzoI,EAAE0oI,YAAc,KAChB1oI,EAAE2oI,eAAiB,KACnB3oI,EAAE4oI,iBAAmB,KACrB5oI,EAAE6oI,6BAA+B,MACjC7oI,EAAE8oI,yBAA2B,KAC7B9oI,EAAE+oI,UAAY,MACd/oI,EAAEgpI,WAAa,MACfhpI,EAAEipI,OAAS,IACXjpI,EAAEkpI,SAAW,IACblpI,EAAEmpI,QAAU,KACZnpI,EAAEopI,aAAe,IACjBppI,EAAEqpI,UAAY,KACdrpI,EAAEspI,YAAc,KAChBtpI,EAAEupI,WAAa,MACfvpI,EAAEwpI,WAAa,MACfxpI,EAAEypI,oBAAsB,MACxBzpI,EAAE0pI,YAAc,KAChB1pI,EAAE2pI,gBAAkB,MACpB3pI,EAAE4pI,aAAe,IACjB5pI,EAAE6pI,WAAa,KACf7pI,EAAE8pI,YAAc,KAChB9pI,EAAE+pI,QAAU,KACZ/pI,EAAEgqI,YAAc,KAChBhqI,EAAEiqI,YAAc,KAChBjqI,EAAEkqI,WAAa,KACflqI,EAAEmqI,gBAAkB,MACpBnqI,EAAEoqI,kBAAoB,MACtBpqI,EAAEqqI,iBAAmB,MACrBrqI,EAAEsqI,WAAa,IACftqI,EAAEuqI,SAAW,KACbvqI,EAAEwqI,aAAe,KACjBxqI,EAAEyqI,qBAAuB,MACzBzqI,EAAE0qI,oBAAsB,MACxB1qI,EAAE2qI,oBAAsB,MACxB3qI,EAAE4qI,cAAgB,MAClB5qI,EAAE6qI,mBAAqB,MACvB7qI,EAAE8qI,YAAc,KAChB9qI,EAAE+qI,YAAc,KAChB/qI,EAAEgrI,aAAe,KACjBhrI,EAAEirI,aAAe,KACjBjrI,EAAEkrI,WAAa,KACflrI,EAAEmrI,MAAQ,IACVnrI,EAAEorI,eAAiB,KACnBprI,EAAEqrI,UAAY,MACdrrI,EAAEsrI,WAAa,MACftrI,EAAEurI,WAAa,MACfvrI,EAAEwrI,oBAAsB,MACxBxrI,EAAEyrI,iBAAmB,MACrBzrI,EAAE0rI,kBAAoB,MACtB1rI,EAAE2rI,WAAa,MACf3rI,EAAE4rI,oBAAsB,MACxB5rI,EAAE6rI,mBAAqB,MACvB7rI,EAAE8rI,mBAAqB,MACvB9rI,EAAE+rI,aAAe,MACjB/rI,EAAEgsI,kBAAoB,MACtBhsI,EAAEisI,iBAAmB,MACrBjsI,EAAEksI,YAAc,KAChBlsI,EAAEmsI,WAAa,KACfnsI,EAAEosI,SAAW,MACbpsI,EAAEqsI,cAAgB,MAClBrsI,EAAEssI,WAAa,MACftsI,EAAEusI,gBAAkB,MACpBvsI,EAAEwsI,WAAa,MACfxsI,EAAEysI,WAAa,MACfzsI,EAAE0sI,UAAY,KACd1sI,EAAE2sI,WAAa,MACf3sI,EAAE4sI,oBAAsB,MACxB5sI,EAAE6sI,YAAc,MAChB7sI,EAAE8sI,cAAgB,KAClB9sI,EAAE+sI,qBAAuB,MACzB/sI,EAAEgtI,WAAa,IACfhtI,EAAEitI,OAAS,KACXjtI,EAAEktI,UAAY,MACdltI,EAAEmtI,YAAc,KAChBntI,EAAEotI,SAAW,MACbptI,EAAEqtI,QAAU,IACZrtI,EAAEstI,WAAa,MACfttI,EAAEutI,WAAa,MACfvtI,EAAEwtI,oBAAsB,MACxBxtI,EAAEytI,SAAW,MACbztI,EAAE0tI,SAAW,MACb1tI,EAAEguC,EAAI,IACNhuC,EAAE2tI,UAAY,KACd3tI,EAAE4tI,OAAS,IACX5tI,EAAE6tI,OAAS,KACX7tI,EAAE8tI,WAAa,KACf9tI,EAAE+tI,WAAa,KACf/tI,EAAEguI,gBAAkB,KACpBhuI,EAAEiuI,mBAAqB,MACvBjuI,EAAEkuI,6BAA+B,MACjCluI,EAAEmuI,gCAAkC,MACpCnuI,EAAEouI,6BAA+B,MACjCpuI,EAAEquI,gCAAkC,MACpCruI,EAAEsuI,sBAAwB,MAC1BtuI,EAAEuuI,6BAA+B,MACjCvuI,EAAEwuI,gCAAkC,MACpCxuI,EAAEyuI,UAAY,KACdzuI,EAAE0uI,OAAS,IACX1uI,EAAE2uI,aAAe,IACjB3uI,EAAE4uI,MAAQ,KACV5uI,EAAE6uI,YAAc,MAChB7uI,EAAE8uI,kBAAoB,MACtB9uI,EAAE+uI,YAAc,KAChB/uI,EAAEgvI,eAAiB,MACnBhvI,EAAEivI,oBAAsB,MACxBjvI,EAAEkvI,iBAAmB,MACrBlvI,EAAEmvI,qBAAuB,MACzBnvI,EAAEovI,qBAAuB,MACzBpvI,EAAEqvI,wBAA0B,MAC5BrvI,EAAEsvI,gBAAkB,MACpBtvI,EAAEuvI,wBAA0B,MAC5BvvI,EAAEwvI,qBAAuB,MACzBxvI,EAAEyvI,YAAc,KAChBzvI,EAAE0vI,KAAO,IACT1vI,EAAE2vI,MAAQ,IACV3vI,EAAE4vI,UAAY,MACd5vI,EAAE6vI,OAAS,IACX7vI,EAAE8vI,SAAW,IACb9vI,EAAE+vI,QAAU,KACZ/vI,EAAEgwI,iBAAmB,KACrBhwI,EAAEiwI,aAAe,IACjBjwI,EAAEkwI,KAAO,IACTlwI,EAAEmwI,WAAa,IACfnwI,EAAEowI,UAAY,KACdpwI,EAAEqwI,gBAAkB,KACpBrwI,EAAEswI,kBAAoB,IACtBtwI,EAAEuwI,iBAAmB,IACrBvwI,EAAEwwI,KAAO,GACTxwI,EAAEywI,UAAY,KACdzwI,EAAE0wI,mBAAqB,KACvB1wI,EAAE2wI,cAAgB,MAClB3wI,EAAE4wI,iBAAmB,KACrB5wI,EAAE6wI,cAAgB,KAClB7wI,EAAE8wI,cAAgB,KAClB9wI,EAAE+wI,UAAY,MACd/wI,EAAEgxI,KAAO,IACThxI,EAAEixI,QAAU,KACZjxI,EAAEkxI,eAAiB,IACnBlxI,EAAEmxI,KAAO,KACTnxI,EAAEoxI,aAAe,KACjBpxI,EAAEqxI,GAAK,IACPrxI,EAAEsxI,YAAc,KAChBtxI,EAAEuxI,GAAK,MACPvxI,EAAEwxI,QAAU,KACZxxI,EAAEyxI,YAAc,KAChBzxI,EAAE0xI,WAAa,KACf1xI,EAAE2xI,SAAW,KACb3xI,EAAE4xI,iBAAmB,KACrB5xI,EAAE6xI,cAAgB,KAClB7xI,EAAE8xI,0BAA4B,KAC9B9xI,EAAE+xI,uBAAyB,KAC3B/xI,EAAEgyI,aAAe,IACjBhyI,EAAEiyI,WAAa,MACfjyI,EAAEkyI,SAAW,MACblyI,EAAEmyI,YAAc,KAChBnyI,EAAEoyI,WAAa,KACfpyI,EAAEqyI,WAAa,IACfryI,EAAEsyI,mBAAqB,KACvBtyI,EAAEuyI,UAAY,KACdvyI,EAAEwyI,WAAa,KACfxyI,EAAEyyI,MAAQ,IACVzyI,EAAE0yI,kBAAoB,MACtB1yI,EAAE2yI,WAAa,IACf3yI,EAAE4yI,cAAgB,MAClB5yI,EAAE6yI,QAAU,KACZ7yI,EAAE8yI,OAAS,KACX9yI,EAAE+yI,OAAS,IACX/yI,EAAEgzI,QAAU,KACZhzI,EAAEizI,UAAY,MACdjzI,EAAEkzI,QAAU,KACZlzI,EAAEmzI,OAAS,KACXnzI,EAAEozI,gBAAkB,KACpBpzI,EAAEqzI,aAAe,KACjBrzI,EAAEszI,yBAA2B,KAC7BtzI,EAAEuzI,sBAAwB,KAC1BvzI,EAAEwzI,SAAW,MACbxzI,EAAEvC,EAAI,IACNuC,EAAEyzI,UAAY,KACdzzI,EAAE0zI,OAAS,IACX1zI,EAAE2zI,eAAiB,IACnB3zI,EAAE4zI,UAAY,IACd5zI,EAAE6zI,aAAe,IACjB7zI,EAAE8zI,gBAAkB,MACpB9zI,EAAE+zI,OAAS,KACX/zI,EAAEg0I,OAAS,KACXh0I,EAAEi0I,WAAa,KACfj0I,EAAEk0I,WAAa,KACfl0I,EAAEm0I,eAAiB,KACnBn0I,EAAEo0I,mBAAqB,KACvBp0I,EAAEq0I,WAAa,MACfr0I,EAAEs0I,uBAAyB,MAC3Bt0I,EAAEu0I,wBAA0B,MAC5Bv0I,EAAEw0I,gBAAkB,KACpBx0I,EAAEy0I,yBAA2B,MAC7Bz0I,EAAE00I,iBAAmB,MACrB10I,EAAE20I,kBAAoB,MACtB30I,EAAE40I,UAAY,KACd50I,EAAE60I,mBAAqB,MACvB70I,EAAE80I,mBAAqB,MACvB90I,EAAE+0I,eAAiB,KACnB/0I,EAAEg1I,kBAAoB,MACtBh1I,EAAEi1I,cAAgB,KAClBj1I,EAAEk1I,kBAAoB,MACtBl1I,EAAEm1I,mBAAqB,MACvBn1I,EAAEo1I,WAAa,KACfp1I,EAAEq1I,oBAAsB,MACxBr1I,EAAEs1I,kBAAoB,MACtBt1I,EAAEu1I,mBAAqB,MACvBv1I,EAAEw1I,WAAa,KACfx1I,EAAEy1I,oBAAsB,MACxBz1I,EAAE01I,aAAe,KACjB11I,EAAE21I,WAAa,MACf31I,EAAE41I,oBAAsB,MACxB51I,EAAE61I,KAAO,KACT71I,EAAE81I,cAAgB,MAClB91I,EAAE+1I,YAAc,KAChB/1I,EAAEg2I,KAAO,KACTh2I,EAAEi2I,mBAAqB,KACvBj2I,EAAEk2I,SAAW,MACbl2I,EAAEm2I,UAAY,MACdn2I,EAAEo2I,SAAW,MACbp2I,EAAEq2I,QAAU,KACZr2I,EAAEs2I,aAAe,MACjBt2I,EAAEu2I,WAAa,KACfv2I,EAAEw2I,UAAY,KACdx2I,EAAEy2I,WAAa,KACfz2I,EAAE02I,gBAAkB,MACpB12I,EAAE22I,kBAAoB,MACtB32I,EAAE42I,iBAAmB,MACrB52I,EAAE62I,sBAAwB,MAC1B72I,EAAE82I,uBAAyB,MAC3B92I,EAAE+2I,cAAgB,MAClB/2I,EAAEg3I,WAAa,MACfh3I,EAAEi3I,eAAiB,MACnBj3I,EAAEk3I,WAAa,MACfl3I,EAAEm3I,oBAAsB,MACxBn3I,EAAEo3I,IAAM,KACRp3I,EAAEq3I,UAAY,MACdr3I,EAAEs3I,gBAAkB,MACpBt3I,EAAEu3I,UAAY,KACdv3I,EAAEw3I,YAAc,KAChBx3I,EAAEy3I,aAAe,KACjBz3I,EAAE03I,mBAAqB,KACvB13I,EAAE23I,uBAAyB,KAC3B33I,EAAE43I,iBAAmB,KACrB53I,EAAE63I,MAAQ,IACV73I,EAAE83I,UAAY,MACd93I,EAAE+3I,2BAA6B,MAC/B/3I,EAAEg4I,OAAS,IACXh4I,EAAEi4I,mBAAqB,MACvBj4I,EAAEk4I,kBAAoB,MACtBl4I,EAAEm4I,kBAAoB,MACtBn4I,EAAEo4I,YAAc,MAChBp4I,EAAEq4I,mBAAqB,MACvBr4I,EAAEs4I,iBAAmB,MACrBt4I,EAAEu4I,iBAAmB,MACrBv4I,EAAEw4I,gBAAkB,MACpBx4I,EAAEy4I,WAAa,MACfz4I,EAAE04I,WAAa,MACf14I,EAAE24I,oBAAsB,MACxB34I,EAAE44I,MAAQ,KACV54I,EAAE64I,cAAgB,IAClB74I,EAAE84I,YAAc,KAChB94I,EAAE+4I,SAAW,IACb/4I,EAAEg5I,UAAY,KACdh5I,EAAEi5I,OAAS,KACXj5I,EAAEk5I,gBAAkB,MACpBl5I,EAAEm5I,WAAa,MACfn5I,EAAEo5I,eAAiB,IACnBp5I,EAAEq5I,SAAW,MACbr5I,EAAEs5I,cAAgB,MAClBt5I,EAAEu5I,WAAa,MACfv5I,EAAEw5I,gBAAkB,MACpBx5I,EAAEy5I,WAAa,MACfz5I,EAAE05I,WAAa,MACf15I,EAAE25I,WAAa,MACf35I,EAAE45I,oBAAsB,MACxB55I,EAAE65I,UAAY,MACd75I,EAAE85I,SAAW,KACb95I,EAAE+5I,aAAe,MACjB/5I,EAAEg6I,oBAAsB,MACxBh6I,EAAEi6I,OAAS,KACXj6I,EAAEk6I,UAAY,MACdl6I,EAAEm6I,SAAW,MACbn6I,EAAEo6I,UAAY,MACdp6I,EAAEq6I,QAAU,IACZr6I,EAAEs6I,GAAK,IACPt6I,EAAEu6I,IAAM,IACRv6I,EAAEw6I,UAAY,MACdx6I,EAAEy6I,YAAc,KAChBz6I,EAAE06I,SAAW,KACb16I,EAAE26I,UAAY,MACd36I,EAAE46I,QAAU,IACZ56I,EAAE66I,UAAY,MACd76I,EAAE86I,WAAa,MACf96I,EAAE+6I,WAAa,MACf/6I,EAAEg7I,oBAAsB,MACxBh7I,EAAEi7I,UAAY,MACdj7I,EAAEk7I,SAAW,IACbl7I,EAAEm7I,UAAY,MACdn7I,EAAEo7I,YAAc,KAChBp7I,EAAEq7I,gBAAkB,KACpBr7I,EAAEs7I,YAAc,KAChBt7I,EAAEu7I,eAAiB,KACnBv7I,EAAEw7I,cAAgB,KAClBx7I,EAAEy7I,eAAiB,KACnBz7I,EAAE07I,UAAY,MACd17I,EAAE27I,UAAY,MACd37I,EAAE47I,UAAY,MACd57I,EAAE67I,aAAe,MACjB77I,EAAE87I,SAAW,MACb97I,EAAE+7I,aAAe,MACjB/7I,EAAEg8I,SAAW,MACbh8I,EAAEtD,EAAI,IACNsD,EAAEi8I,UAAY,KACdj8I,EAAEk8I,MAAQ,KACVl8I,EAAEm8I,OAAS,IACXn8I,EAAEo8I,OAAS,KACXp8I,EAAEq8I,WAAa,KACfr8I,EAAEs8I,WAAa,KACft8I,EAAEu8I,WAAa,MACfv8I,EAAEw8I,WAAa,MACfx8I,EAAEy8I,oBAAsB,MACxBz8I,EAAE08I,YAAc,IAChB18I,EAAE28I,SAAW,MACb38I,EAAE48I,UAAY,MACd58I,EAAE68I,QAAU,IACZ78I,EAAE88I,OAAS,IACX98I,EAAE+8I,SAAW,IACb/8I,EAAEg9I,QAAU,KACZh9I,EAAEi9I,iBAAmB,KACrBj9I,EAAEk9I,aAAe,IACjBl9I,EAAEm9I,WAAa,KACfn9I,EAAEo9I,UAAY,KACdp9I,EAAEq9I,WAAa,MACfr9I,EAAEs9I,WAAa,MACft9I,EAAEu9I,oBAAsB,MACxBv9I,EAAEw9I,cAAgB,KAClBx9I,EAAEy9I,SAAW,MACbz9I,EAAE09I,WAAa,KACf19I,EAAE29I,QAAU,KACZ39I,EAAE49I,YAAc,KAChB59I,EAAE69I,YAAc,KAChB79I,EAAE89I,WAAa,KACf99I,EAAE+9I,UAAY,MACd/9I,EAAEg+I,UAAY,IACdh+I,EAAEi+I,eAAiB,IACnBj+I,EAAEk+I,mBAAqB,MACvBl+I,EAAEm+I,kBAAoB,MACtBn+I,EAAEo+I,iBAAmB,MACrBp+I,EAAEq+I,kBAAoB,MACtBr+I,EAAEs+I,iBAAmB,MACrBt+I,EAAEu+I,YAAc,MAChBv+I,EAAEw+I,mBAAqB,MACvBx+I,EAAEy+I,iBAAmB,MACrBz+I,EAAE0+I,gBAAkB,MACpB1+I,EAAE2+I,kBAAoB,MACtB3+I,EAAE4+I,WAAa,MACf5+I,EAAE6+I,WAAa,MACf7+I,EAAE8+I,oBAAsB,MACxB9+I,EAAE++I,iBAAmB,MACrB/+I,EAAEg/I,aAAe,KACjBh/I,EAAEi/I,KAAO,GACTj/I,EAAEk/I,WAAa,KACfl/I,EAAEm/I,YAAc,KAChBn/I,EAAEo/I,WAAa,KACfp/I,EAAEq/I,2BAA6B,MAC/Br/I,EAAEs/I,SAAW,KACbt/I,EAAEu/I,aAAe,KACjBv/I,EAAEw/I,aAAe,KACjBx/I,EAAEy/I,eAAiB,KACnBz/I,EAAE0/I,aAAe,MACjB1/I,EAAE2/I,qBAAuB,MACzB3/I,EAAE4/I,aAAe,KACjB5/I,EAAE6/I,cAAgB,MAClB7/I,EAAE8/I,aAAe,MACjB9/I,EAAE+/I,UAAY,KACd//I,EAAEggJ,WAAa,KACfhgJ,EAAEigJ,YAAc,KAChBjgJ,EAAEkgJ,UAAY,KACdlgJ,EAAEmgJ,aAAe,KACjBngJ,EAAEogJ,eAAiB,KACnBpgJ,EAAEqgJ,cAAgB,KAClBrgJ,EAAEsgJ,eAAiB,KACnBtgJ,EAAEugJ,SAAW,KACbvgJ,EAAEwgJ,GAAK,IACPxgJ,EAAEygJ,YAAc,KAChBzgJ,EAAE0gJ,UAAY,MACd1gJ,EAAE2gJ,mBAAqB,MACvB3gJ,EAAE4gJ,cAAgB,IAClB5gJ,EAAE6gJ,WAAa,KACf7gJ,EAAE8gJ,WAAa,MACf9gJ,EAAE+gJ,SAAW,MACb/gJ,EAAEghJ,WAAa,KACfhhJ,EAAEihJ,QAAU,KACZjhJ,EAAEkhJ,YAAc,KAChBlhJ,EAAEmhJ,YAAc,KAChBnhJ,EAAEohJ,SAAW,KACbphJ,EAAEqhJ,WAAa,MACfrhJ,EAAEshJ,WAAa,MACfthJ,EAAEuhJ,oBAAsB,MACxBvhJ,EAAEwhJ,iBAAmB,IACrBxhJ,EAAEyhJ,UAAY,KACdzhJ,EAAE0hJ,SAAW,KACb1hJ,EAAE2hJ,WAAa,KACf3hJ,EAAE4hJ,gBAAkB,MACpB5hJ,EAAE6hJ,iBAAmB,KACrB7hJ,EAAE8hJ,sBAAwB,MAC1B9hJ,EAAE+hJ,kBAAoB,MACtB/hJ,EAAEgiJ,sBAAwB,MAC1BhiJ,EAAEiiJ,uBAAyB,MAC3BjiJ,EAAEkiJ,iBAAmB,MACrBliJ,EAAEmiJ,sBAAwB,MAC1BniJ,EAAEoiJ,uBAAyB,MAC3BpiJ,EAAEqiJ,oBAAsB,MACxBriJ,EAAEsiJ,YAAc,KAChBtiJ,EAAEuiJ,WAAa,KACfviJ,EAAEwiJ,aAAe,KACjBxiJ,EAAEyiJ,SAAW,KACbziJ,EAAE0iJ,WAAa,KACf1iJ,EAAE2iJ,mBAAqB,KACvB3iJ,EAAE4iJ,kBAAoB,KACtB5iJ,EAAE6iJ,aAAe,KACjB7iJ,EAAE8iJ,QAAU,KACZ9iJ,EAAE+iJ,gBAAkB,KACpB/iJ,EAAEgjJ,YAAc,KAChBhjJ,EAAEijJ,YAAc,KAChBjjJ,EAAEkjJ,UAAY,KACdljJ,EAAEmjJ,YAAc,KAChBnjJ,EAAEojJ,YAAc,KAChBpjJ,EAAEqjJ,YAAc,KAChBrjJ,EAAEsjJ,OAAS,KACXtjJ,EAAEujJ,SAAW,MACbvjJ,EAAEwjJ,UAAY,KACdxjJ,EAAEyjJ,OAAS,IACXzjJ,EAAE0jJ,GAAK,IACP1jJ,EAAE2jJ,WAAa,MACf3jJ,EAAE4jJ,WAAa,MACf5jJ,EAAE6jJ,oBAAsB,MACxB7jJ,EAAE8jJ,aAAe,KACjB9jJ,EAAE+jJ,UAAY,KACd/jJ,EAAEgkJ,cAAgB,KAClBhkJ,EAAEikJ,cAAgB,KAClBjkJ,EAAEkkJ,WAAa,GACflkJ,EAAEmkJ,oBAAsB,MACxBnkJ,EAAEokJ,gBAAkB,MACpBpkJ,EAAEqkJ,iBAAmB,IACrBrkJ,EAAEskJ,sBAAwB,IAC1BtkJ,EAAEukJ,OAAS,KACXvkJ,EAAEwkJ,IAAM,KACRxkJ,EAAEykJ,UAAY,MACdzkJ,EAAE0kJ,gBAAkB,MACpB1kJ,EAAE2kJ,UAAY,KACd3kJ,EAAE4kJ,SAAW,MACb5kJ,EAAE6kJ,SAAW,MACb7kJ,EAAE8kJ,WAAa,KACf9kJ,EAAE+kJ,QAAU,KACZ/kJ,EAAEglJ,YAAc,KAChBhlJ,EAAEilJ,YAAc,KAChBjlJ,EAAEjZ,EAAI,IACNiZ,EAAEklJ,OAAS,IACXllJ,EAAEmlJ,SAAW,KACbnlJ,EAAEolJ,QAAU,IACZplJ,EAAEqlJ,gBAAkB,KACpBrlJ,EAAEslJ,wBAA0B,KAC5BtlJ,EAAEulJ,SAAW,KACbvlJ,EAAEwlJ,UAAY,MACdxlJ,EAAEylJ,OAAS,IACXzlJ,EAAE0lJ,YAAc,KAChB1lJ,EAAE2lJ,gBAAkB,KACpB3lJ,EAAE4lJ,qBAAuB,KACzB5lJ,EAAE6lJ,yBAA2B,KAC7B7lJ,EAAE8lJ,OAAS,IACX9lJ,EAAE+lJ,QAAU,KACZ/lJ,EAAEgmJ,YAAc,IAChBhmJ,EAAEimJ,iBAAmB,KACrBjmJ,EAAEkmJ,oBAAsB,KACxBlmJ,EAAEmmJ,iBAAmB,KACrBnmJ,EAAEomJ,qBAAuB,KACzBpmJ,EAAEqmJ,iBAAmB,KACrBrmJ,EAAEsmJ,UAAY,KACdtmJ,EAAEumJ,UAAY,IACdvmJ,EAAEwmJ,UAAY,IACdxmJ,EAAEymJ,MAAQ,KACVzmJ,EAAE0mJ,UAAY,IACd1mJ,EAAE2mJ,kBAAoB,KACtB3mJ,EAAE4mJ,UAAY,KACd5mJ,EAAE6mJ,GAAK,IACP7mJ,EAAE8mJ,SAAW,MACb9mJ,EAAE+mJ,OAAS,IACX/mJ,EAAEgnJ,UAAY,IACdhnJ,EAAEinJ,OAAS,IACXjnJ,EAAEknJ,UAAY,KACdlnJ,EAAEmnJ,WAAa,KACfnnJ,EAAEonJ,UAAY,MACdpnJ,EAAEqnJ,WAAa,KACfrnJ,EAAEsnJ,MAAQ,IACVtnJ,EAAEunJ,WAAa,KACfvnJ,EAAEwnJ,cAAgB,KAClBxnJ,EAAEynJ,WAAa,KACfznJ,EAAE0nJ,eAAiB,KACnB1nJ,EAAE2nJ,WAAa,KACf3nJ,EAAE4nJ,cAAgB,IAClB5nJ,EAAE6nJ,GAAK,IACP7nJ,EAAE8nJ,eAAiB,IACnB9nJ,EAAE+nJ,UAAY,MACd/nJ,EAAEgoJ,mBAAqB,MACvBhoJ,EAAEioJ,QAAU,MACZjoJ,EAAEkoJ,UAAY,KACdloJ,EAAEmoJ,QAAU,IACZnoJ,EAAEooJ,aAAe,KACjBpoJ,EAAEqoJ,aAAe,KACjBroJ,EAAEsoJ,OAAS,KACXtoJ,EAAEuoJ,MAAQ,IACVvoJ,EAAEwoJ,OAAS,IACXxoJ,EAAEyoJ,cAAgB,KAClBzoJ,EAAE0oJ,iBAAmB,IACrB1oJ,EAAE2oJ,mBAAqB,KACvB3oJ,EAAE4oJ,mBAAqB,KACvB5oJ,EAAE6oJ,WAAa,IACf7oJ,EAAE8oJ,WAAa,KACf9oJ,EAAE+oJ,QAAU,IACZ/oJ,EAAEgpJ,aAAe,IACjBhpJ,EAAEipJ,WAAa,MACfjpJ,EAAEkpJ,IAAM,GACRlpJ,EAAEmpJ,UAAY,KACdnpJ,EAAEopJ,WAAa,KACfppJ,EAAEqpJ,UAAY,KACdrpJ,EAAEspJ,0BAA4B,MAC9BtpJ,EAAEupJ,QAAU,KACZvpJ,EAAEwpJ,eAAiB,KACnBxpJ,EAAEypJ,UAAY,KACdzpJ,EAAE0pJ,UAAY,MACd1pJ,EAAE2pJ,YAAc,KAChB3pJ,EAAE4pJ,YAAc,KAChB5pJ,EAAE6pJ,cAAgB,KAClB7pJ,EAAE8pJ,QAAU,IACZ9pJ,EAAE+pJ,YAAc,MAChB/pJ,EAAEgqJ,oBAAsB,MACxBhqJ,EAAEiqJ,YAAc,KAChBjqJ,EAAEkqJ,aAAe,MACjBlqJ,EAAEmqJ,oBAAsB,KACxBnqJ,EAAEoqJ,YAAc,MAChBpqJ,EAAEqqJ,SAAW,KACbrqJ,EAAEsqJ,UAAY,KACdtqJ,EAAEuqJ,WAAa,KACfvqJ,EAAEwqJ,WAAa,IACfxqJ,EAAEyqJ,SAAW,KACbzqJ,EAAE0qJ,YAAc,IAChB1qJ,EAAE2qJ,QAAU,KACZ3qJ,EAAE4qJ,SAAW,KACb5qJ,EAAE6qJ,QAAU,IACZ7qJ,EAAE8qJ,cAAgB,IAClB9qJ,EAAE+qJ,WAAa,KACf/qJ,EAAEgrJ,gBAAkB,KACpBhrJ,EAAEirJ,MAAQ,IACVjrJ,EAAEkrJ,OAAS,KACXlrJ,EAAEmrJ,WAAa,KACfnrJ,EAAEorJ,OAAS,KACXprJ,EAAEqrJ,YAAc,IAChBrrJ,EAAEsrJ,aAAe,IACjBtrJ,EAAEurJ,WAAa,KACfvrJ,EAAEwrJ,WAAa,KACfxrJ,EAAEyrJ,oBAAsB,KACxBzrJ,EAAE0rJ,OAAS,IACX1rJ,EAAE2rJ,YAAc,IAChB3rJ,EAAE4rJ,eAAiB,MACnB5rJ,EAAE6rJ,eAAiB,MACnB7rJ,EAAE8rJ,wBAA0B,MAC5B9rJ,EAAE+rJ,aAAe,IACjB/rJ,EAAEgsJ,UAAY,MACdhsJ,EAAEisJ,WAAa,KACfjsJ,EAAEksJ,OAAS,IACXlsJ,EAAEmsJ,YAAc,KAChBnsJ,EAAEosJ,eAAiB,KACnBpsJ,EAAEqsJ,WAAa,MACfrsJ,EAAEssJ,SAAW,KACbtsJ,EAAEusJ,mBAAqB,MACvBvsJ,EAAEwsJ,YAAc,IAChBxsJ,EAAEysJ,eAAiB,MACnBzsJ,EAAE0sJ,gBAAkB,MACpB1sJ,EAAE2sJ,aAAe,MACjB3sJ,EAAE4sJ,UAAY,IACd5sJ,EAAE6sJ,kBAAoB,KACtB7sJ,EAAE8sJ,eAAiB,KACnB9sJ,EAAE+sJ,mBAAqB,KACvB/sJ,EAAExC,EAAI,IACNwC,EAAEgtJ,aAAe,MACjBhtJ,EAAEitJ,eAAiB,MACnBjtJ,EAAEktJ,UAAY,KACdltJ,EAAEmtJ,OAAS,KACXntJ,EAAEotJ,OAAS,KACXptJ,EAAEqtJ,SAAW,KACbrtJ,EAAEstJ,OAAS,KACXttJ,EAAEutJ,WAAa,KACfvtJ,EAAEwtJ,WAAa,KACfxtJ,EAAEytJ,WAAa,MACfztJ,EAAE0tJ,cAAgB,KAClB1tJ,EAAE2tJ,WAAa,MACf3tJ,EAAE4tJ,0BAA4B,KAC9B5tJ,EAAE6tJ,iBAAmB,KACrB7tJ,EAAE8tJ,cAAgB,MAClB9tJ,EAAE+tJ,UAAY,IACd/tJ,EAAEguJ,SAAW,KACbhuJ,EAAEiuJ,UAAY,GACdjuJ,EAAEkuJ,sBAAwB,MAC1BluJ,EAAEmuJ,YAAc,MAChBnuJ,EAAEouJ,YAAc,MAChBpuJ,EAAEquJ,kBAAoB,KACtBruJ,EAAEsuJ,mBAAqB,MACvBtuJ,EAAEuuJ,eAAiB,MACnBvuJ,EAAEwuJ,kBAAoB,KACtBxuJ,EAAEyuJ,YAAc,MAChBzuJ,EAAE0uJ,kBAAoB,MACtB1uJ,EAAE2uJ,WAAa,GACf3uJ,EAAE4uJ,uBAAyB,MAC3B5uJ,EAAE6uJ,aAAe,MACjB7uJ,EAAE8uJ,aAAe,MACjB9uJ,EAAE+uJ,mBAAqB,KACvB/uJ,EAAEgvJ,oBAAsB,MACxBhvJ,EAAEivJ,gBAAkB,MACpBjvJ,EAAEkvJ,mBAAqB,KACvBlvJ,EAAEmvJ,aAAe,MACjBnvJ,EAAEovJ,mBAAqB,MACvBpvJ,EAAEqvJ,YAAc,KAChBrvJ,EAAEsvJ,YAAc,KAChBtvJ,EAAEuvJ,aAAe,KACjBvvJ,EAAEwvJ,SAAW,MACbxvJ,EAAEyvJ,MAAQ,KACVzvJ,EAAE0vJ,QAAU,KACZ1vJ,EAAE2vJ,QAAU,KACZ3vJ,EAAE4vJ,QAAU,KACZ5vJ,EAAE6vJ,YAAc,KAChB7vJ,EAAE8vJ,kBAAoB,KACtB9vJ,EAAE+vJ,mBAAqB,KACvB/vJ,EAAEgwJ,gBAAkB,KACpBhwJ,EAAEiwJ,YAAc,KAChBjwJ,EAAEkwJ,UAAY,MACdlwJ,EAAEmwJ,QAAU,KACZnwJ,EAAEowJ,WAAa,KACfpwJ,EAAEqwJ,GAAK,KACPrwJ,EAAEswJ,WAAa,KACftwJ,EAAEuwJ,SAAW,MACbvwJ,EAAEwwJ,eAAiB,MACnBxwJ,EAAEywJ,YAAc,MAChBzwJ,EAAE0wJ,oBAAsB,MACxB1wJ,EAAE2wJ,UAAY,KACd3wJ,EAAE4wJ,YAAc,KAChB5wJ,EAAE6wJ,SAAW,KACb7wJ,EAAE8wJ,eAAiB,MACnB9wJ,EAAE+wJ,iBAAmB,MACrB/wJ,EAAEgxJ,WAAa,MACfhxJ,EAAEixJ,gBAAkB,MACpBjxJ,EAAEkxJ,WAAa,MACflxJ,EAAEmxJ,qBAAuB,KACzBnxJ,EAAEoxJ,aAAe,MACjBpxJ,EAAEqxJ,QAAU,GACZrxJ,EAAEsxJ,cAAgB,KAClBtxJ,EAAEuxJ,iBAAmB,MACrBvxJ,EAAEwxJ,aAAe,MACjBxxJ,EAAEyxJ,OAAS,GACXzxJ,EAAE0xJ,eAAiB,KACnB1xJ,EAAE2xJ,eAAiB,IACnB3xJ,EAAE4xJ,gBAAkB,MACpB5xJ,EAAE6xJ,eAAiB,MACnB7xJ,EAAE8xJ,gBAAkB,MACpB9xJ,EAAE+xJ,YAAc,MAChB/xJ,EAAEgyJ,eAAiB,MACnBhyJ,EAAEiyJ,oBAAsB,IACxBjyJ,EAAEkyJ,cAAgB,KAClBlyJ,EAAEmyJ,YAAc,KAChBnyJ,EAAEoyJ,OAAS,KACXpyJ,EAAEqyJ,SAAW,MACbryJ,EAAEsyJ,WAAa,KACftyJ,EAAEuyJ,QAAU,KACZvyJ,EAAEwyJ,YAAc,KAChBxyJ,EAAEyyJ,YAAc,KAChBzyJ,EAAE0yJ,IAAM,IACR1yJ,EAAE2yJ,KAAO,IACT3yJ,EAAE4yJ,qBAAuB,MACzB5yJ,EAAE6yJ,oBAAsB,MACxB7yJ,EAAE8yJ,oBAAsB,MACxB9yJ,EAAE+yJ,cAAgB,MAClB/yJ,EAAEgzJ,mBAAqB,MACvBhzJ,EAAEizJ,SAAW,IACbjzJ,EAAEkzJ,YAAc,KAChBlzJ,EAAEmzJ,eAAiB,IACnBnzJ,EAAEozJ,MAAQ,IACVpzJ,EAAEqzJ,YAAc,KAChBrzJ,EAAEszJ,aAAe,KACjBtzJ,EAAEuzJ,eAAiB,KACnBvzJ,EAAEwzJ,GAAK,IACPxzJ,EAAEyzJ,mBAAqB,MACvBzzJ,EAAE0zJ,kBAAoB,MACtB1zJ,EAAE2zJ,iBAAmB,MACrB3zJ,EAAE4zJ,kBAAoB,MACtB5zJ,EAAE6zJ,kBAAoB,MACtB7zJ,EAAE8zJ,YAAc,MAChB9zJ,EAAE+zJ,iBAAmB,MACrB/zJ,EAAEg0J,sBAAwB,MAC1Bh0J,EAAEi0J,gBAAkB,MACpBj0J,EAAEk0J,sBAAwB,MAC1Bl0J,EAAEm0J,mBAAqB,MACvBn0J,EAAEo0J,kBAAoB,MACtBp0J,EAAEq0J,WAAa,MACfr0J,EAAEs0J,WAAa,MACft0J,EAAEu0J,cAAgB,IAClBv0J,EAAEw0J,aAAe,KACjBx0J,EAAEy0J,cAAgB,KAClBz0J,EAAE00J,eAAiB,KACnB10J,EAAE20J,KAAO,GACT30J,EAAE40J,aAAe,IACjB50J,EAAE60J,WAAa,KACf70J,EAAE80J,UAAY,IACd90J,EAAE+0J,QAAU,IACZ/0J,EAAEg1J,cAAgB,MAClBh1J,EAAEi1J,UAAY,MACdj1J,EAAEk1J,aAAe,KACjBl1J,EAAEm1J,WAAa,MACfn1J,EAAEo1J,SAAW,MACbp1J,EAAEq1J,WAAa,MACfr1J,EAAEs1J,uBAAyB,KAC3Bt1J,EAAEu1J,uBAAyB,KAC3Bv1J,EAAEw1J,wBAA0B,KAC5Bx1J,EAAEy1J,qBAAuB,KACzBz1J,EAAE01J,WAAa,MACf11J,EAAE21J,UAAY,KACd31J,EAAE41J,WAAa,MACf51J,EAAE61J,eAAiB,MACnB71J,EAAE81J,OAAS,KACX91J,EAAE+1J,SAAW,KACb/1J,EAAEg2J,aAAe,KACjBh2J,EAAEi2J,SAAW,IACbj2J,EAAEk2J,cAAgB,KAClBl2J,EAAEm2J,QAAU,KACZn2J,EAAEo2J,WAAa,KACfp2J,EAAEq2J,cAAgB,MAClBr2J,EAAEs2J,UAAY,KACdt2J,EAAEu2J,aAAe,KACjBv2J,EAAEw2J,eAAiB,KACnBx2J,EAAEy2J,WAAa,KACfz2J,EAAE02J,aAAe,KACjB12J,EAAE22J,IAAM,IACR32J,EAAE42J,YAAc,KAChB52J,EAAE62J,yBAA2B,KAC7B72J,EAAE82J,SAAW,MACb92J,EAAE+2J,WAAa,MACf/2J,EAAEg3J,WAAa,MACfh3J,EAAEi3J,SAAW,MACbj3J,EAAEk3J,SAAW,MACbl3J,EAAE2e,EAAI,IACN3e,EAAEm3J,OAAS,KACXn3J,EAAEo3J,YAAc,KAChBp3J,EAAEq3J,UAAY,KACdr3J,EAAEs3J,eAAiB,MACnBt3J,EAAEu3J,iBAAmB,MACrBv3J,EAAEw3J,gBAAkB,MACpBx3J,EAAEy3J,OAAS,KACXz3J,EAAE03J,SAAW,KACb13J,EAAE23J,SAAW,KACb33J,EAAE43J,SAAW,KACb53J,EAAE63J,SAAW,KACb73J,EAAE83J,SAAW,KACb93J,EAAE+3J,SAAW,KACb/3J,EAAEg4J,SAAW,KACbh4J,EAAEi4J,aAAe,KACjBj4J,EAAEk4J,mBAAqB,KACvBl4J,EAAEm4J,kBAAoB,KACtBn4J,EAAEo4J,wBAA0B,KAC5Bp4J,EAAEq4J,yBAA2B,KAC7Br4J,EAAEs4J,sBAAwB,KAC1Bt4J,EAAEu4J,oBAAsB,KACxBv4J,EAAEw4J,iBAAmB,KACrBx4J,EAAEy4J,iBAAmB,KACrBz4J,EAAE04J,UAAY,MACd14J,EAAE24J,QAAU,KACZ34J,EAAE44J,MAAQ,IACV54J,EAAE64J,WAAa,MACf74J,EAAE84J,IAAM,KACR94J,EAAE+4J,UAAY,MACd/4J,EAAEg5J,gBAAkB,MACpBh5J,EAAEi5J,UAAY,KACdj5J,EAAEk5J,OAAS,KACXl5J,EAAEm5J,YAAc,KAChBn5J,EAAEo5J,OAAS,KACXp5J,EAAEq5J,SAAW,KACbr5J,EAAEs5J,SAAW,KACbt5J,EAAEu5J,SAAW,KACbv5J,EAAEw5J,aAAe,KACjBx5J,EAAEy5J,mBAAqB,KACvBz5J,EAAE05J,oBAAsB,KACxB15J,EAAE25J,iBAAmB,KACrB35J,EAAE45J,SAAW,GACb55J,EAAE65J,eAAiB,KACnB75J,EAAE85J,iBAAmB,KACrB95J,EAAE+5J,aAAe,IACjB/5J,EAAEg6J,kBAAoB,MACtBh6J,EAAEi6J,cAAgB,IAClBj6J,EAAEk6J,kBAAoB,MACtBl6J,EAAEm6J,cAAgB,MAClBn6J,EAAEo6J,SAAW,GACbp6J,EAAEq6J,aAAe,KACjBr6J,EAAEs6J,aAAe,KACjBt6J,EAAEu6J,kBAAoB,MACtBv6J,EAAEw6J,cAAgB,MAClBx6J,EAAEy6J,sBAAwB,MAC1Bz6J,EAAE06J,cAAgB,KAClB16J,EAAE26J,UAAY,KACd36J,EAAE46J,kBAAoB,KACtB56J,EAAE66J,cAAgB,KAClB76J,EAAE86J,WAAa,KACf96J,EAAE+6J,YAAc,IAChB/6J,EAAEg7J,eAAiB,KACnBh7J,EAAEi7J,YAAc,GAChBj7J,EAAEk7J,qBAAuB,MACzBl7J,EAAEjD,EAAI,IACNiD,EAAEm7J,WAAa,KACfn7J,EAAEo7J,UAAY,KACdp7J,EAAEq7J,OAAS,IACXr7J,EAAEs7J,OAAS,KACXt7J,EAAEu7J,QAAU,KACZv7J,EAAEw7J,UAAY,MACdx7J,EAAEy7J,eAAiB,MACnBz7J,EAAE07J,sBAAwB,MAC1B17J,EAAE27J,UAAY,MACd37J,EAAE47J,KAAO,KACT57J,EAAE67J,WAAa,KACf77J,EAAE87J,WAAa,KACf97J,EAAE+7J,WAAa,KACf/7J,EAAEg8J,WAAa,MACfh8J,EAAEi8J,WAAa,MACfj8J,EAAEk8J,oBAAsB,MACxBl8J,EAAEm8J,uBAAyB,KAC3Bn8J,EAAEo8J,wBAA0B,KAC5Bp8J,EAAEq8J,SAAW,IACbr8J,EAAEs8J,MAAQ,KACVt8J,EAAEu8J,UAAY,MACdv8J,EAAEw8J,OAAS,IACXx8J,EAAEy8J,SAAW,IACbz8J,EAAE08J,QAAU,KACZ18J,EAAE28J,aAAe,IACjB38J,EAAE48J,UAAY,IACd58J,EAAE68J,WAAa,KACf78J,EAAE88J,UAAY,KACd98J,EAAE+8J,gBAAkB,KACpB/8J,EAAEg9J,cAAgB,KAClBh9J,EAAEi9J,aAAe,KACjBj9J,EAAEk9J,eAAiB,KACnBl9J,EAAEm9J,WAAa,IACfn9J,EAAEo9J,aAAe,MACjBp9J,EAAEq9J,cAAgB,MAClBr9J,EAAEs9J,UAAY,KACdt9J,EAAEu9J,YAAc,KAChBv9J,EAAEw9J,eAAiB,MACnBx9J,EAAEy9J,WAAa,MACfz9J,EAAE09J,WAAa,MACf19J,EAAE29J,oBAAsB,MACxB39J,EAAE49J,KAAO,KACT59J,EAAE69J,iBAAmB,MACrB79J,EAAE89J,WAAa,KACf99J,EAAE+9J,cAAgB,KAClB/9J,EAAEg+J,YAAc,KAChBh+J,EAAEi+J,mBAAqB,KACvBj+J,EAAEk+J,cAAgB,KAClBl+J,EAAEm+J,UAAY,IACdn+J,EAAEo+J,kBAAoB,IACtBp+J,EAAEq+J,WAAa,KACfr+J,EAAEs+J,QAAU,KACZt+J,EAAEu+J,IAAM,IACRv+J,EAAEw+J,MAAQ,IACVx+J,EAAEy+J,YAAc,IAChBz+J,EAAE0+J,oBAAsB,IACxB1+J,EAAE2+J,eAAiB,KACnB3+J,EAAE4+J,cAAgB,IAClB5+J,EAAE6+J,mBAAqB,MACvB7+J,EAAE8+J,kBAAoB,MACtB9+J,EAAE++J,kBAAoB,MACtB/+J,EAAEg/J,iBAAmB,MACrBh/J,EAAEi/J,kBAAoB,MACtBj/J,EAAEk/J,sBAAwB,MAC1Bl/J,EAAEm/J,YAAc,MAChBn/J,EAAEo/J,iBAAmB,MACrBp/J,EAAEq/J,mBAAqB,MACvBr/J,EAAEs/J,iBAAmB,MACrBt/J,EAAEu/J,mBAAqB,MACvBv/J,EAAEw/J,iBAAmB,MACrBx/J,EAAEy/J,qBAAuB,MACzBz/J,EAAE0/J,gBAAkB,MACpB1/J,EAAE2/J,mBAAqB,MACvB3/J,EAAE4/J,kBAAoB,MACtB5/J,EAAE6/J,uBAAyB,MAC3B7/J,EAAE8/J,WAAa,KACf9/J,EAAE+/J,kBAAoB,IACtB//J,EAAEggK,cAAgB,KAClBhgK,EAAEigK,WAAa,MACfjgK,EAAEkgK,WAAa,MACflgK,EAAEmgK,oBAAsB,MACxBngK,EAAEogK,KAAO,IACTpgK,EAAEqgK,aAAe,IACjBrgK,EAAEsgK,QAAU,IACZtgK,EAAEugK,aAAe,IACjBvgK,EAAEwgK,qBAAuB,KACzBxgK,EAAEygK,qBAAuB,IACzBzgK,EAAE0gK,qBAAuB,IACzB1gK,EAAE2gK,cAAgB,IAClB3gK,EAAE4gK,sBAAwB,IAC1B5gK,EAAE6gK,sBAAwB,IAC1B7gK,EAAE8gK,eAAiB,IACnB9gK,EAAE+gK,cAAgB,MAClB/gK,EAAEghK,WAAa,KACfhhK,EAAEihK,SAAW,IACbjhK,EAAEkhK,eAAiB,IACnBlhK,EAAEmhK,WAAa,MACfnhK,EAAEohK,WAAa,MACfphK,EAAEqhK,WAAa,MACfrhK,EAAEshK,oBAAsB,MACxBthK,EAAEuhK,UAAY,KACdvhK,EAAEwhK,OAAS,KACXxhK,EAAEyhK,WAAa,KACfzhK,EAAE0hK,QAAU,KACZ1hK,EAAE2hK,YAAc,KAChB3hK,EAAE4hK,WAAa,KACf5hK,EAAE6hK,gBAAkB,MACpB7hK,EAAE8hK,iBAAmB,KACrB9hK,EAAE+hK,cAAgB,KAClB/hK,EAAEgiK,kBAAoB,KACtBhiK,EAAEiiK,0BAA4B,KAC9BjiK,EAAEkiK,uBAAyB,KAC3BliK,EAAEmiK,2BAA6B,KAC/BniK,EAAEoiK,UAAY,MACdpiK,EAAEqiK,QAAU,KACZriK,EAAEsiK,QAAU,IACZtiK,EAAEuiK,gBAAkB,IACpBviK,EAAEwiK,WAAa,MACfxiK,EAAEyiK,WAAa,MACfziK,EAAE0iK,oBAAsB,MACxB1iK,EAAE2iK,iBAAmB,KACrB3iK,EAAE4iK,iBAAmB,KACrB5iK,EAAE6iK,OAAS,MACX7iK,EAAE8iK,OAAS,KACX9iK,EAAE+iK,gBAAkB,KACpB/iK,EAAEgjK,aAAe,KACjBhjK,EAAEijK,iBAAmB,KACrBjjK,EAAEkjK,yBAA2B,KAC7BljK,EAAEmjK,sBAAwB,KAC1BnjK,EAAEojK,0BAA4B,KAC9BpjK,EAAE2nB,EAAI,IACN3nB,EAAEqjK,UAAY,KACdrjK,EAAEsjK,OAAS,IACXtjK,EAAEujK,gBAAkB,KACpBvjK,EAAEwjK,UAAY,KACdxjK,EAAEyjK,OAAS,KACXzjK,EAAE0jK,eAAiB,MACnB1jK,EAAE2jK,iBAAmB,MACrB3jK,EAAE4jK,gBAAkB,MACpB5jK,EAAE6jK,WAAa,KACf7jK,EAAE8jK,WAAa,KACf9jK,EAAE+jK,WAAa,MACf/jK,EAAEgkK,WAAa,MACfhkK,EAAEikK,oBAAsB,MACxBjkK,EAAEkkK,gCAAkC,MACpClkK,EAAEmkK,OAAS,KACXnkK,EAAEokK,aAAe,MACjBpkK,EAAEqkK,mBAAqB,MACvBrkK,EAAEskK,aAAe,KACjBtkK,EAAEukK,WAAa,KACfvkK,EAAEwkK,WAAa,KACfxkK,EAAEykK,mBAAqB,KACvBzkK,EAAE0kK,kBAAoB,KACtB1kK,EAAE2kK,WAAa,KACf3kK,EAAE4kK,UAAY,KACd5kK,EAAE6kK,UAAY,KACd7kK,EAAE8kK,eAAiB,MACnB9kK,EAAE+kK,WAAa,KACf/kK,EAAEglK,cAAgB,MAClBhlK,EAAEilK,UAAY,KACdjlK,EAAEklK,UAAY,KACdllK,EAAEmlK,gBAAkB,MACpBnlK,EAAEolK,YAAc,KAChBplK,EAAEqlK,eAAiB,MACnBrlK,EAAEslK,WAAa,KACftlK,EAAEulK,UAAY,KACdvlK,EAAEwlK,WAAa,KACfxlK,EAAEylK,UAAY,MACdzlK,EAAE0lK,OAAS,IACX1lK,EAAE2lK,gBAAkB,KACpB3lK,EAAE4lK,SAAW,IACb5lK,EAAE6lK,MAAQ,IACV7lK,EAAE8lK,cAAgB,KAClB9lK,EAAE+lK,sBAAwB,KAC1B/lK,EAAEgmK,UAAY,IACdhmK,EAAEimK,QAAU,KACZjmK,EAAEkmK,YAAc,IAChBlmK,EAAEmmK,aAAe,IACjBnmK,EAAEomK,WAAa,KACfpmK,EAAEqmK,UAAY,KACdrmK,EAAEsmK,mBAAqB,KACvBtmK,EAAEumK,gBAAkB,IACpBvmK,EAAEtB,OAAS,KACXsB,EAAEwmK,kBAAoB,IACtBxmK,EAAEymK,QAAU,IACZzmK,EAAE0mK,WAAa,KACf1mK,EAAE2mK,gBAAkB,MACpB3mK,EAAE4mK,kBAAoB,MACtB5mK,EAAE6mK,iBAAmB,MACrB7mK,EAAE8mK,MAAQ,KACV9mK,EAAE+mK,QAAU,KACZ/mK,EAAEgnK,QAAU,KACZhnK,EAAEinK,QAAU,KACZjnK,EAAEknK,YAAc,KAChBlnK,EAAEmnK,kBAAoB,KACtBnnK,EAAEonK,mBAAqB,KACvBpnK,EAAEqnK,cAAgB,KAClBrnK,EAAEsnK,gBAAkB,KACpBtnK,EAAEunK,YAAc,KAChBvnK,EAAEwnK,WAAa,MACfxnK,EAAEynK,WAAa,MACfznK,EAAE0nK,oBAAsB,MACxB1nK,EAAE2nK,UAAY,GACd3nK,EAAE4nK,gBAAkB,KACpB5nK,EAAE6nK,mBAAqB,MACvB7nK,EAAE8nK,eAAiB,MACnB9nK,EAAE+nK,mBAAqB,MACvB/nK,EAAEgoK,4BAA8B,MAChChoK,EAAEioK,YAAc,MAChBjoK,EAAEkoK,YAAc,MAChBloK,EAAEmoK,MAAQ,GACVnoK,EAAEooK,YAAc,KAChBpoK,EAAEqoK,aAAe,KACjBroK,EAAEsoK,YAAc,KAChBtoK,EAAEuoK,4BAA8B,MAChCvoK,EAAEwoK,UAAY,KACdxoK,EAAEyoK,aAAe,KACjBzoK,EAAE0oK,cAAgB,KAClB1oK,EAAE2oK,cAAgB,KAClB3oK,EAAE4oK,gBAAkB,KACpB5oK,EAAE6oK,cAAgB,MAClB7oK,EAAE8oK,sBAAwB,MAC1B9oK,EAAE+oK,cAAgB,KAClB/oK,EAAEgpK,eAAiB,MACnBhpK,EAAEipK,cAAgB,MAClBjpK,EAAEkpK,WAAa,KACflpK,EAAEmpK,YAAc,KAChBnpK,EAAEopK,aAAe,KACjBppK,EAAEqpK,WAAa,KACfrpK,EAAEspK,cAAgB,KAClBtpK,EAAEupK,gBAAkB,KACpBvpK,EAAEwpK,eAAiB,KACnBxpK,EAAEypK,gBAAkB,KACpBzpK,EAAE0pK,UAAY,KACd1pK,EAAE2pK,UAAY,IACd3pK,EAAE4pK,YAAc,KAChB5pK,EAAE6pK,WAAa,KACf7pK,EAAE8pK,YAAc,KAChB9pK,EAAE+pK,aAAe,KACjB/pK,EAAEgqK,kBAAoB,MACtBhqK,EAAEiqK,qBAAuB,MACzBjqK,EAAEkqK,kBAAoB,MACtBlqK,EAAEmqK,kBAAoB,MACtBnqK,EAAEoqK,qBAAuB,MACzBpqK,EAAEqqK,MAAQ,KACVrqK,EAAEsqK,UAAY,KACdtqK,EAAEuqK,WAAa,KACfvqK,EAAEwqK,YAAc,KAChBxqK,EAAEyqK,QAAU,KACZzqK,EAAE0qK,YAAc,KAChB1qK,EAAE2qK,YAAc,KAChB3qK,EAAE4qK,iBAAmB,KACrB5qK,EAAE6qK,WAAa,MACf7qK,EAAE8qK,cAAgB,KAClB9qK,EAAE+qK,YAAc,KAChB/qK,EAAEgrK,iBAAmB,MACrBhrK,EAAEirK,mBAAqB,MACvBjrK,EAAEkrK,kBAAoB,MACtBlrK,EAAEmrK,WAAa,IACfnrK,EAAEorK,OAAS,KACXprK,EAAEqrK,aAAe,KACjBrrK,EAAEsrK,MAAQ,KACVtrK,EAAEurK,SAAW,KACbvrK,EAAEwrK,QAAU,KACZxrK,EAAEyrK,QAAU,KACZzrK,EAAE0rK,QAAU,KACZ1rK,EAAE2rK,YAAc,KAChB3rK,EAAE4rK,kBAAoB,KACtB5rK,EAAE6rK,mBAAqB,KACvB7rK,EAAE8rK,gBAAkB,KACpB9rK,EAAE+rK,aAAe,KACjB/rK,EAAEgsK,YAAc,KAChBhsK,EAAEisK,KAAO,KACTjsK,EAAEksK,WAAa,MACflsK,EAAEmsK,iBAAmB,MACrBnsK,EAAEosK,kBAAoB,MACtBpsK,EAAEqsK,wBAA0B,MAC5BrsK,EAAEssK,iBAAmB,MACrBtsK,EAAEusK,uBAAyB,MAC3BvsK,EAAEwsK,cAAgB,KAClBxsK,EAAEysK,WAAa,KACfzsK,EAAE0sK,YAAc,MAChB1sK,EAAE2sK,kBAAoB,MACtB3sK,EAAE4sK,WAAa,MACf5sK,EAAE6sK,iBAAmB,MACrB7sK,EAAE8sK,MAAQ,IACV9sK,EAAE+sK,MAAQ,IACV/sK,EAAEgtK,OAAS,IACXhtK,EAAEitK,WAAa,IACfjtK,EAAEktK,uBAAyB,KAC3BltK,EAAEmtK,WAAa,MACfntK,EAAEotK,WAAa,MACfptK,EAAEqtK,oBAAsB,MACxBrtK,EAAEstK,YAAc,KAChBttK,EAAEutK,gBAAkB,KACpBvtK,EAAEwtK,QAAU,KACZxtK,EAAEytK,aAAe,KACjBztK,EAAE0tK,kBAAoB,MACtB1tK,EAAE2tK,iBAAmB,MACrB3tK,EAAE4tK,gBAAkB,MACpB5tK,EAAE6tK,iBAAmB,MACrB7tK,EAAE8tK,iBAAmB,MACrB9tK,EAAE+tK,WAAa,MACf/tK,EAAEguK,gBAAkB,MACpBhuK,EAAEiuK,gBAAkB,MACpBjuK,EAAEkuK,gBAAkB,MACpBluK,EAAEmuK,iBAAmB,MACrBnuK,EAAEouK,IAAM,GACRpuK,EAAEquK,UAAY,KACdruK,EAAEsuK,WAAa,KACftuK,EAAEuuK,UAAY,KACdvuK,EAAEwuK,0BAA4B,MAC9BxuK,EAAEyuK,QAAU,KACZzuK,EAAE0uK,YAAc,KAChB1uK,EAAE2uK,YAAc,KAChB3uK,EAAE4uK,cAAgB,KAClB5uK,EAAE6uK,YAAc,MAChB7uK,EAAE8uK,oBAAsB,MACxB9uK,EAAE+uK,YAAc,KAChB/uK,EAAEgvK,aAAe,MACjBhvK,EAAEivK,YAAc,MAChBjvK,EAAEkvK,SAAW,KACblvK,EAAEmvK,UAAY,KACdnvK,EAAEovK,WAAa,KACfpvK,EAAEqvK,SAAW,KACbrvK,EAAEsvK,YAAc,KAChBtvK,EAAEuvK,cAAgB,KAClBvvK,EAAEwvK,kCAAoC,KACtCxvK,EAAEyvK,aAAe,KACjBzvK,EAAE0vK,cAAgB,KAClB1vK,EAAE2vK,QAAU,KACZ3vK,EAAE4vK,MAAQ,GACV5vK,EAAE6vK,eAAiB,MACnB7vK,EAAE8vK,MAAQ,IACV9vK,EAAE+vK,eAAiB,KACnB/vK,EAAEgwK,UAAY,KACdhwK,EAAEiwK,WAAa,MACfjwK,EAAEkwK,eAAiB,KACnBlwK,EAAEmwK,WAAa,IACfnwK,EAAEowK,iBAAmB,KACrBpwK,EAAEqwK,WAAa,MACfrwK,EAAEswK,WAAa,MACftwK,EAAEuwK,oBAAsB,MACxBvwK,EAAEwwK,sBAAwB,IAC1BxwK,EAAEywK,uBAAyB,IAC3BzwK,EAAE0wK,WAAa,KACf1wK,EAAE2wK,WAAa,KACf3wK,EAAE4wK,SAAW,KACb5wK,EAAE6wK,UAAY,KACd7wK,EAAE8wK,MAAQ,GACV9wK,EAAE+wK,gBAAkB,GACpB/wK,EAAEgxK,MAAQ,KACVhxK,EAAEixK,eAAiB,KACnBjxK,EAAEkxK,eAAiB,KACnBlxK,EAAEmxK,OAAS,KACXnxK,EAAEoxK,eAAiB,IACnBpxK,EAAEqxK,SAAW,MACbrxK,EAAEsxK,SAAW,MACbtxK,EAAEuxK,6BAA+B,KACjCvxK,EAAEwxK,qBAAuB,KACzBxxK,EAAEyxK,SAAW,MACbzxK,EAAE0xK,SAAW,MACb1xK,EAAE2xK,gBAAkB,MACpB3xK,EAAE4xK,SAAW,MACb5xK,EAAE6xK,UAAY,MACd7xK,EAAE8xK,SAAW,MACb9xK,EAAE+xK,UAAY,MACd/xK,EAAEgyK,SAAW,MACbhyK,EAAEiyK,eAAiB,MACnBjyK,EAAEkyK,+BAAiC,KACnClyK,EAAEmyK,gCAAkC,KACpCnyK,EAAEoyK,gCAAkC,KACpCpyK,EAAEqyK,mBAAqB,KACvBryK,EAAEsyK,0BAA4B,KAC9BtyK,EAAEuyK,SAAW,MACbvyK,EAAEwyK,WAAa,KACfxyK,EAAEyyK,QAAU,KACZzyK,EAAE0yK,YAAc,KAChB1yK,EAAE2yK,iBAAmB,MACrB3yK,EAAE4yK,iBAAmB,MACrB5yK,EAAE6yK,iBAAmB,MACrB7yK,EAAE8yK,kBAAoB,MACtB9yK,EAAE+yK,iBAAmB,MACrB/yK,EAAEgzK,iBAAmB,MACrBhzK,EAAEizK,gBAAkB,MACpBjzK,EAAEkzK,kBAAoB,MACtBlzK,EAAEmzK,UAAY,MACdnzK,EAAEozK,SAAW,IACbpzK,EAAEqzK,kBAAoB,MACtBrzK,EAAEszK,qBAAuB,IACzBtzK,EAAEuzK,sBAAwB,IAC1BvzK,EAAEwzK,OAAS,KACXxzK,EAAEyzK,eAAiB,KACnBzzK,EAAE0zK,cAAgB,KAClB1zK,EAAE2zK,SAAW,KACb3zK,EAAE4zK,SAAW,KACb5zK,EAAE6zK,WAAa,MACf7zK,EAAE8zK,WAAa,MACf9zK,EAAE+zK,oBAAsB,MACxB/zK,EAAEg0K,YAAc,KAChBh0K,EAAEi0K,UAAY,KACdj0K,EAAEk0K,IAAM,KACRl0K,EAAEm0K,SAAW,KACbn0K,EAAEo0K,iBAAmB,KACrBp0K,EAAEq0K,gBAAkB,KACpBr0K,EAAEs0K,SAAW,MACbt0K,EAAEu0K,gBAAkB,MACpBv0K,EAAEA,EAAI,IACNA,EAAEw0K,UAAY,KACdx0K,EAAEy0K,SAAW,KACbz0K,EAAE00K,SAAW,KACb10K,EAAE20K,OAAS,KACX30K,EAAE40K,WAAa,KACf50K,EAAE60K,WAAa,KACf70K,EAAE80K,UAAY,KACd90K,EAAE+0K,eAAiB,MACnB/0K,EAAEg1K,iBAAmB,MACrBh1K,EAAEi1K,WAAa,MACfj1K,EAAEk1K,gBAAkB,MACpBl1K,EAAEm1K,iBAAmB,MACrBn1K,EAAEo1K,WAAa,MACfp1K,EAAEq1K,oBAAsB,MACxBr1K,EAAEs1K,cAAgB,KAClBt1K,EAAEu1K,IAAM,IACRv1K,EAAEw1K,IAAM,KACRx1K,EAAEy1K,SAAW,MACbz1K,EAAE01K,UAAY,MACd11K,EAAE21K,gBAAkB,MACpB31K,EAAE41K,UAAY,KACd51K,EAAE61K,KAAO,IACT71K,EAAE81K,UAAY,MACd91K,EAAE+1K,OAAS,IACX/1K,EAAEg2K,OAAS,IACXh2K,EAAEi2K,SAAW,IACbj2K,EAAEk2K,YAAc,KAChBl2K,EAAEm2K,iBAAmB,MACrBn2K,EAAEo2K,mBAAqB,MACvBp2K,EAAEq2K,kBAAoB,MACtBr2K,EAAEs2K,QAAU,KACZt2K,EAAEu2K,iBAAmB,KACrBv2K,EAAEw2K,aAAe,IACjBx2K,EAAEy2K,UAAY,KACdz2K,EAAE02K,WAAa,KACf12K,EAAE22K,UAAY,KACd32K,EAAE42K,WAAa,KACf52K,EAAE62K,oBAAsB,KACxB72K,EAAE82K,UAAY,KACd92K,EAAE+2K,eAAiB,MACnB/2K,EAAEg3K,oBAAsB,MACxBh3K,EAAEi3K,qBAAuB,MACzBj3K,EAAEk3K,iBAAmB,MACrBl3K,EAAEm3K,WAAa,MACfn3K,EAAEo3K,qBAAuB,MACzBp3K,EAAEq3K,sBAAwB,MAC1Br3K,EAAEs3K,iBAAmB,KACrBt3K,EAAEu3K,sBAAwB,MAC1Bv3K,EAAEw3K,gBAAkB,MACpBx3K,EAAEy3K,qBAAuB,MACzBz3K,EAAE03K,sBAAwB,MAC1B13K,EAAE23K,mBAAqB,MACvB33K,EAAE43K,WAAa,MACf53K,EAAE63K,oBAAsB,MACxB73K,EAAE83K,UAAY,KACd93K,EAAE+3K,eAAiB,KACnB/3K,EAAEg4K,oBAAsB,KACxBh4K,EAAEi4K,oBAAsB,KACxBj4K,EAAEk4K,UAAY,KACdl4K,EAAEm4K,oBAAsB,MACxBn4K,EAAEo4K,SAAW,KACbp4K,EAAEq4K,UAAY,KACdr4K,EAAEs4K,SAAW,KACbt4K,EAAEu4K,KAAO,IACTv4K,EAAEw4K,IAAM,KACRx4K,EAAEy4K,UAAY,MACdz4K,EAAE04K,gBAAkB,MACpB14K,EAAE24K,UAAY,KACd34K,EAAE44K,cAAgB,KAClB54K,EAAE64K,YAAc,KAChB74K,EAAE84K,gBAAkB,KACpB94K,EAAE+4K,WAAa,KACf/4K,EAAEg5K,QAAU,KACZh5K,EAAEi5K,YAAc,KAChBj5K,EAAEk5K,YAAc,KAChBl5K,EAAEm5K,WAAa,KACfn5K,EAAEo5K,gBAAkB,MACpBp5K,EAAEq5K,uBAAyB,MAC3Br5K,EAAEs5K,wBAA0B,MAC5Bt5K,EAAEu5K,gBAAkB,KACpBv5K,EAAEw5K,yBAA2B,MAC7Bx5K,EAAEy5K,WAAa,KACfz5K,EAAE05K,gBAAkB,MACpB15K,EAAE25K,kBAAoB,MACtB35K,EAAE45K,iBAAmB,MACrB55K,EAAE65K,YAAc,KAChB75K,EAAE85K,UAAY,KACd95K,EAAE+5K,MAAQ,IACV/5K,EAAEg6K,OAAS,IACXh6K,EAAEi6K,iBAAmB,IACrBj6K,EAAEk6K,qBAAuB,MACzBl6K,EAAEm6K,oBAAsB,MACxBn6K,EAAEo6K,oBAAsB,MACxBp6K,EAAEq6K,cAAgB,MAClBr6K,EAAEs6K,mBAAqB,MACvBt6K,EAAEu6K,eAAiB,KACnBv6K,EAAEw6K,cAAgB,KAClBx6K,EAAEy6K,eAAiB,KACnBz6K,EAAE06K,kBAAoB,KACtB16K,EAAE26K,MAAQ,IACV36K,EAAE46K,eAAiB,KACnB56K,EAAE66K,MAAQ,IACV76K,EAAE86K,cAAgB,KAClB96K,EAAE+6K,YAAc,KAChB/6K,EAAEg7K,aAAe,KACjBh7K,EAAEi7K,aAAe,KACjBj7K,EAAEk7K,iBAAmB,KACrBl7K,EAAEm7K,yBAA2B,KAC7Bn7K,EAAEo7K,0BAA4B,KAC9Bp7K,EAAEq7K,MAAQ,GACVr7K,EAAEs7K,YAAc,KAChBt7K,EAAEu7K,aAAe,KACjBv7K,EAAEw7K,YAAc,KAChBx7K,EAAEy7K,4BAA8B,MAChCz7K,EAAE07K,UAAY,KACd17K,EAAE27K,aAAe,KACjB37K,EAAE47K,cAAgB,KAClB57K,EAAE67K,cAAgB,KAClB77K,EAAE87K,gBAAkB,KACpB97K,EAAE+7K,cAAgB,MAClB/7K,EAAEg8K,sBAAwB,MAC1Bh8K,EAAEi8K,cAAgB,KAClBj8K,EAAEk8K,eAAiB,MACnBl8K,EAAEm8K,sBAAwB,KAC1Bn8K,EAAEo8K,cAAgB,MAClBp8K,EAAEq8K,WAAa,KACfr8K,EAAEs8K,YAAc,KAChBt8K,EAAEu8K,aAAe,KACjBv8K,EAAEw8K,cAAgB,IAClBx8K,EAAEy8K,oBAAsB,MACxBz8K,EAAE08K,WAAa,KACf18K,EAAE28K,cAAgB,IAClB38K,EAAE48K,UAAY,KACd58K,EAAE68K,UAAY,MACd78K,EAAE88K,WAAa,MACf98K,EAAE+8K,WAAa,MACf/8K,EAAEg9K,oBAAsB,MACxBh9K,EAAEi9K,oBAAsB,MACxBj9K,EAAEk9K,mBAAqB,MACvBl9K,EAAEm9K,mBAAqB,MACvBn9K,EAAEo9K,aAAe,MACjBp9K,EAAEq9K,kBAAoB,MACtBr9K,EAAEs9K,MAAQ,IACVt9K,EAAEu9K,cAAgB,IAClBv9K,EAAEw9K,SAAW,IACbx9K,EAAEy9K,UAAY,IACdz9K,EAAE09K,eAAiB,IACnB19K,EAAE29K,cAAgB,KAClB39K,EAAE49K,gBAAkB,IACpB59K,EAAE69K,iBAAmB,IACrB79K,EAAE89K,YAAc,KAChB99K,EAAE+9K,aAAe,KACjB/9K,EAAEg+K,iBAAmB,KACrBh+K,EAAEi+K,cAAgB,KAClBj+K,EAAEk+K,iBAAmB,KACrBl+K,EAAEm+K,aAAe,KACjBn+K,EAAEo+K,WAAa,KACfp+K,EAAEq+K,WAAa,MACfr+K,EAAEs+K,WAAa,KACft+K,EAAEu+K,WAAa,MACfv+K,EAAEw+K,WAAa,MACfx+K,EAAEy+K,oBAAsB,MACxBz+K,EAAE0+K,oBAAsB,IACxB1+K,EAAE2+K,mBAAqB,IACvB3+K,EAAE4+K,eAAiB,IACnB5+K,EAAE6+K,cAAgB,IAClB7+K,EAAE8+K,cAAgB,IAClB9+K,EAAE++K,SAAW,IACb/+K,EAAEg/K,QAAU,IACZh/K,EAAEi/K,QAAU,IACZj/K,EAAEk/K,MAAQ,IACVl/K,EAAEm/K,UAAY,MACdn/K,EAAEo/K,YAAc,KAChBp/K,EAAEq/K,yBAA2B,MAC7Br/K,EAAEs/K,8BAAgC,MAClCt/K,EAAEu/K,iCAAmC,MACrCv/K,EAAEw/K,0BAA4B,MAC9Bx/K,EAAEy/K,+BAAiC,MACnCz/K,EAAE0/K,kCAAoC,MACtC1/K,EAAE2/K,UAAY,KACd3/K,EAAE4/K,aAAe,IACjB5/K,EAAE6/K,OAAS,KACX7/K,EAAE8/K,UAAY,KACd9/K,EAAE+/K,cAAgB,MAClB//K,EAAEggL,eAAiB,MACnBhgL,EAAEigL,eAAiB,IACnBjgL,EAAEkgL,QAAU,KACZlgL,EAAEmgL,QAAU,KACZngL,EAAEogL,QAAU,KACZpgL,EAAEqgL,QAAU,KACZrgL,EAAEsgL,GAAK,IACPtgL,EAAEugL,MAAQ,KACVvgL,EAAEwgL,YAAc,MAChBxgL,EAAEygL,kBAAoB,MACtBzgL,EAAE0gL,YAAc,KAChB1gL,EAAE2gL,YAAc,KAChB3gL,EAAE4gL,MAAQ,KACV5gL,EAAE6gL,QAAU,KACZ7gL,EAAE8gL,QAAU,KACZ9gL,EAAE+gL,QAAU,KACZ/gL,EAAEghL,YAAc,KAChBhhL,EAAEihL,kBAAoB,KACtBjhL,EAAEkhL,mBAAqB,KACvBlhL,EAAEmhL,gBAAkB,KACpBnhL,EAAEohL,aAAe,KACjBphL,EAAEqhL,UAAY,MACdrhL,EAAEshL,WAAa,KACfthL,EAAEuhL,QAAU,KACZvhL,EAAEwhL,YAAc,KAChBxhL,EAAEyhL,YAAc,KAChBzhL,EAAE0hL,WAAa,KACf1hL,EAAE2hL,gBAAkB,MACpB3hL,EAAE4hL,kBAAoB,MACtB5hL,EAAE6hL,iBAAmB,MACrB7hL,EAAE8hL,YAAc,KAChB9hL,EAAE+hL,SAAW,KACb/hL,EAAEgiL,aAAe,KACjBhiL,EAAEiiL,aAAe,KACjBjiL,EAAEkiL,QAAU,IACZliL,EAAEmiL,WAAa,MACfniL,EAAEoiL,WAAa,MACfpiL,EAAEqiL,oBAAsB,MACxBriL,EAAEsiL,gBAAkB,MACpBtiL,EAAEuiL,gBAAkB,MACpBviL,EAAEwiL,yBAA2B,MAC7BxiL,EAAEyiL,aAAe,KACjBziL,EAAE0iL,YAAc,KAChB1iL,EAAE2iL,aAAe,KACjB3iL,EAAE4iL,YAAc,KAChB5iL,EAAE6iL,aAAe,KACjB7iL,EAAE8iL,eAAiB,MACnB9iL,EAAE+iL,YAAc,KAChB/iL,EAAEgjL,aAAe,KACjBhjL,EAAEijL,IAAM,GACRjjL,EAAEkjL,UAAY,KACdljL,EAAEmjL,WAAa,KACfnjL,EAAEojL,UAAY,KACdpjL,EAAEqjL,0BAA4B,MAC9BrjL,EAAEsjL,QAAU,KACZtjL,EAAEujL,eAAiB,KACnBvjL,EAAEwjL,aAAe,KACjBxjL,EAAEyjL,qBAAuB,MACzBzjL,EAAE0jL,YAAc,KAChB1jL,EAAE2jL,YAAc,KAChB3jL,EAAE4jL,cAAgB,KAClB5jL,EAAE6jL,YAAc,MAChB7jL,EAAE8jL,oBAAsB,MACxB9jL,EAAE+jL,YAAc,KAChB/jL,EAAEgkL,aAAe,MACjBhkL,EAAEikL,oBAAsB,KACxBjkL,EAAEkkL,YAAc,MAChBlkL,EAAEmkL,SAAW,KACbnkL,EAAEokL,UAAY,KACdpkL,EAAEqkL,WAAa,KACfrkL,EAAEskL,SAAW,KACbtkL,EAAEukL,UAAY,IACdvkL,EAAEwkL,YAAc,IAChBxkL,EAAEykL,QAAU,KACZzkL,EAAE0kL,UAAY,KACd1kL,EAAE2kL,EAAI,IACN3kL,EAAE4kL,OAAS,IACX5kL,EAAE6kL,KAAO,IACT7kL,EAAE8kL,SAAW,KACb9kL,EAAE+kL,UAAY,MACd/kL,EAAEglL,OAAS,IACXhlL,EAAEilL,OAAS,IACXjlL,EAAEklL,QAAU,KACZllL,EAAEmlL,YAAc,IAChBnlL,EAAEolL,iBAAmB,KACrBplL,EAAEqlL,UAAY,KACdrlL,EAAEslL,WAAa,KACftlL,EAAEulL,UAAY,IACdvlL,EAAEwlL,UAAY,IACdxlL,EAAEylL,MAAQ,KACVzlL,EAAE0lL,UAAY,IACd1lL,EAAE2lL,eAAiB,IACnB3lL,EAAE4lL,eAAiB,KACnB5lL,EAAE6lL,eAAiB,IACnB7lL,EAAE8lL,kBAAoB,KACtB9lL,EAAE+lL,eAAiB,IACnB/lL,EAAEgmL,gBAAkB,IACpBhmL,EAAEimL,UAAY,KACdjmL,EAAEkmL,OAAS,IACXlmL,EAAEmmL,UAAY,KACdnmL,EAAEomL,UAAY,KACdpmL,EAAEqmL,UAAY,MACdrmL,EAAEsmL,WAAa,KACftmL,EAAEumL,MAAQ,IACVvmL,EAAEwmL,WAAa,KACfxmL,EAAEymL,cAAgB,KAClBzmL,EAAE0mL,WAAa,KACf1mL,EAAE2mL,eAAiB,KACnB3mL,EAAE4mL,WAAa,KACf5mL,EAAE6mL,cAAgB,IAClB7mL,EAAE8mL,sBAAwB,KAC1B9mL,EAAE+mL,eAAiB,IACnB/mL,EAAEgnL,UAAY,MACdhnL,EAAEinL,mBAAqB,MACvBjnL,EAAEknL,WAAa,KACflnL,EAAEmnL,QAAU,MACZnnL,EAAEonL,QAAU,IACZpnL,EAAEqnL,gBAAkB,KACpBrnL,EAAEsnL,gBAAkB,KACpBtnL,EAAEunL,eAAiB,KACnBvnL,EAAEwnL,WAAa,MACfxnL,EAAEynL,WAAa,GACfznL,EAAE0nL,cAAgB,KAClB1nL,EAAE2nL,oBAAsB,MACxB3nL,EAAE4nL,mBAAqB,MACvB5nL,EAAE6nL,eAAiB,MACnB7nL,EAAE8nL,MAAQ,KACV9nL,EAAE+nL,UAAY,KACd/nL,EAAEgoL,QAAU,IACZhoL,EAAEioL,OAAS,KACXjoL,EAAEkoL,QAAU,KACZloL,EAAEmoL,eAAiB,KACnBnoL,EAAEooL,QAAU,IACZpoL,EAAEqoL,gBAAkB,IACpBroL,EAAEsoL,qBAAuB,IACzBtoL,EAAEuoL,aAAe,IACjBvoL,EAAEwoL,aAAe,IACjBxoL,EAAEyoL,eAAiB,IACnBzoL,EAAE0oL,UAAY,IACd1oL,EAAE2oL,YAAc,KAChB3oL,EAAE4oL,MAAQ,IACV5oL,EAAE6oL,eAAiB,KACnB7oL,EAAE8oL,eAAiB,MACnB9oL,EAAE+oL,eAAiB,MACnB/oL,EAAEgpL,wBAA0B,MAC5BhpL,EAAEipL,kBAAoB,KACtBjpL,EAAEkpL,wBAA0B,KAC5BlpL,EAAEmpL,OAAS,IACXnpL,EAAEopL,YAAc,KAChBppL,EAAEqpL,YAAc,KAChBrpL,EAAEspL,UAAY,KACdtpL,EAAEupL,OAAS,KACXvpL,EAAEwpL,WAAa,KACfxpL,EAAEypL,WAAa,KACfzpL,EAAE0pL,gBAAkB,KACpB1pL,EAAE2pL,mBAAqB,KACvB3pL,EAAE4pL,gBAAkB,KACpB5pL,EAAE6pL,oBAAsB,KACxB7pL,EAAE8pL,kBAAoB,KACtB9pL,EAAE+pL,eAAiB,KACnB/pL,EAAEgqL,mBAAqB,KACvBhqL,EAAEyI,EAAI,IACNzI,EAAEiqL,OAAS,KACXjqL,EAAEkqL,WAAa,KACflqL,EAAEmqL,WAAa,KACfnqL,EAAEoqL,WAAa,MACfpqL,EAAEqqL,IAAM,KACRrqL,EAAEsqL,UAAY,MACdtqL,EAAEuqL,YAAc,MAChBvqL,EAAEwqL,gBAAkB,MACpBxqL,EAAEyqL,UAAY,KACdzqL,EAAE0qL,SAAW,MACb1qL,EAAE2qL,eAAiB,MACnB3qL,EAAE4qL,aAAe,KACjB5qL,EAAE6qL,aAAe,KACjB7qL,EAAE8qL,QAAU,KACZ9qL,EAAE+qL,UAAY,KACd/qL,EAAEgrL,WAAa,KACfhrL,EAAEirL,UAAY,KACdjrL,EAAEkrL,eAAiB,MACnBlrL,EAAEmrL,iBAAmB,MACrBnrL,EAAEorL,gBAAkB,MACpBprL,EAAEqrL,WAAa,MACfrrL,EAAEsrL,MAAQ,KACVtrL,EAAEurL,YAAc,IAChBvrL,EAAEwrL,qBAAuB,IACzBxrL,EAAEyrL,qBAAuB,IACzBzrL,EAAE0rL,mBAAqB,IACvB1rL,EAAE2rL,gBAAkB,IACpB3rL,EAAE4rL,YAAc,KAChB5rL,EAAE6rL,MAAQ,IACV7rL,EAAE8rL,WAAa,MACf9rL,EAAE+rL,cAAgB,KAClB/rL,EAAEgsL,WAAa,KACfhsL,EAAEisL,eAAiB,KACnBjsL,EAAEksL,eAAiB,KACnBlsL,EAAEmsL,YAAc,KAChBnsL,EAAEosL,gBAAkB,KACpBpsL,EAAEqsL,WAAa,MACfrsL,EAAEssL,WAAa,KACftsL,EAAEusL,wBAA0B,MAC5BvsL,EAAEwsL,wBAA0B,MAC5BxsL,EAAEysL,eAAiB,MACnBzsL,EAAE0sL,wBAA0B,MAC5B1sL,EAAE2sL,WAAa,MACf3sL,EAAE4sL,OAAS,KACX5sL,EAAE6sL,OAAS,KACX7sL,EAAE8sL,QAAU,IACZ9sL,EAAE+sL,WAAa,MACf/sL,EAAEgtL,WAAa,MACfhtL,EAAEitL,EAAI,IACNjtL,EAAEktL,OAAS,KACXltL,EAAEmtL,UAAY,MACdntL,EAAEotL,WAAa,MACfptL,EAAEqtL,WAAa,MACfrtL,EAAEstL,oBAAsB,MACxBttL,EAAEutL,SAAW,MACbvtL,EAAEwtL,gBAAkB,MACpBxtL,EAAEytL,gBAAkB,MACpBztL,EAAE0tL,YAAc,MAChB1tL,EAAE2tL,SAAW,MACb3tL,EAAE4tL,uBAAyB,MAC3B5tL,EAAE6tL,UAAY,KACd7tL,EAAE8tL,eAAiB,MACnB9tL,EAAE+tL,oBAAsB,KACxB/tL,EAAEguL,yBAA2B,MAC7BhuL,EAAEiuL,SAAW,MACbjuL,EAAEkuL,QAAU,KACZluL,EAAEmuL,YAAc,IAChBnuL,EAAEouL,UAAY,KACdpuL,EAAEquL,WAAa,KACfruL,EAAEsuL,UAAY,KACdtuL,EAAEuuL,WAAa,MACfvuL,EAAEwuL,YAAc,KAChBxuL,EAAEyuL,WAAa,MACfzuL,EAAE0uL,SAAW,MACb1uL,EAAE2uL,UAAY,MACd3uL,EAAE4uL,OAAS,KACX5uL,EAAE6uL,YAAc,KAChB7uL,EAAE8uL,YAAc,KAChB9uL,EAAE+uL,mBAAqB,KACvB/uL,EAAEgvL,uBAAyB,MAC3BhvL,EAAEivL,+BAAiC,MACnCjvL,EAAEkvL,wBAA0B,MAC5BlvL,EAAEmvL,gCAAkC,MACpCnvL,EAAEovL,aAAe,KACjBpvL,EAAEqvL,wCAA0C,KAC5CrvL,EAAEsvL,+BAAiC,KACnCtvL,EAAEuvL,0BAA4B,KAC9BvvL,EAAEwvL,+BAAiC,KACnCxvL,EAAEyvL,0BAA4B,KAC9BzvL,EAAE0vL,2BAA6B,MAC/B1vL,EAAE2vL,4BAA8B,MAChC3vL,EAAE4vL,gCAAkC,KACpC5vL,EAAE6vL,2BAA6B,KAC/B7vL,EAAE8vL,iBAAmB,KACrB9vL,EAAE+vL,iBAAmB,KACrB/vL,EAAEgwL,YAAc,KAChBhwL,EAAEiwL,UAAY,KACdjwL,EAAEkwL,eAAiB,KACnBlwL,EAAEmwL,8BAAgC,MAClCnwL,EAAEowL,+BAAiC,MACnCpwL,EAAEqwL,6BAA+B,KACjCrwL,EAAEswL,wBAA0B,KAC5BtwL,EAAEuwL,WAAa,MACfvwL,EAAEwwL,WAAa,MACfxwL,EAAEywL,SAAW,MACbzwL,EAAE0wL,WAAa,MACf1wL,EAAE2wL,WAAa,MACf3wL,EAAE4wL,WAAa,MACf5wL,EAAE6wL,oBAAsB,MACxB7wL,EAAE8wL,IAAM,KACR9wL,EAAE+wL,aAAe,MACjB/wL,EAAEgxL,WAAa,KACfhxL,EAAEixL,OAAS,KACXjxL,EAAEkxL,MAAQ,KACVlxL,EAAEmxL,UAAY,IACdnxL,EAAEoxL,QAAU,IACZpxL,EAAEqxL,KAAO,IACTrxL,EAAEI,EAAI,IACNJ,EAAEsxL,UAAY,IACdtxL,EAAEuxL,UAAY,MACdvxL,EAAEwxL,QAAU,KACZxxL,EAAEyxL,UAAY,KACdzxL,EAAE0xL,WAAa,KACf1xL,EAAE2xL,YAAc,KAChB3xL,EAAE4xL,GAAK,IACP5xL,EAAE6xL,WAAa,MACf7xL,EAAE8xL,OAAS,KACX9xL,EAAE+xL,UAAY,IACd/xL,EAAEK,EAAI,IACNL,EAAEgyL,YAAc,MAChBhyL,EAAEiyL,UAAY,KACdjyL,EAAEkyL,OAAS,IACXlyL,EAAEmyL,OAAS,KACXnyL,EAAEoyL,UAAY,MACdpyL,EAAEqyL,WAAa,KACfryL,EAAEsyL,WAAa,KACftyL,EAAEuyL,WAAa,MACfvyL,EAAEwyL,WAAa,MACfxyL,EAAEyyL,oBAAsB,MACxBzyL,EAAE0yL,SAAW,MACb1yL,EAAE2yL,aAAe,KACjB3yL,EAAE4yL,gBAAkB,MACpB5yL,EAAE6yL,gBAAkB,MACpB7yL,EAAE8yL,yBAA2B,MAC7B9yL,EAAE+yL,YAAc,KAChB/yL,EAAEgzL,QAAU,KACZhzL,EAAEizL,YAAc,IAChBjzL,EAAEkzL,UAAY,IACdlzL,EAAEmzL,WAAa,KACfnzL,EAAEozL,UAAY,KACdpzL,EAAEqzL,UAAY,KACdrzL,EAAEszL,gBAAkB,KACpBtzL,EAAEuzL,qBAAuB,MACzBvzL,EAAEwzL,eAAiB,MACnBxzL,EAAEyzL,oBAAsB,KACxBzzL,EAAE0zL,yBAA2B,MAC7B1zL,EAAE2zL,2BAA6B,MAC/B3zL,EAAE4zL,0BAA4B,MAC9B5zL,EAAE6zL,iBAAmB,MACrB7zL,EAAE8zL,gBAAkB,MACpB9zL,EAAE+zL,qBAAuB,MACzB/zL,EAAEg0L,sBAAwB,MAC1Bh0L,EAAEi0L,mBAAqB,MACvBj0L,EAAEk0L,wBAA0B,KAC5Bl0L,EAAEm0L,SAAW,MACbn0L,EAAEo0L,IAAM,IACRp0L,EAAEq0L,aAAe,MACjBr0L,EAAEs0L,UAAY,MACdt0L,EAAEu0L,kBAAoB,MACtBv0L,EAAEw0L,mBAAqB,KACvBx0L,EAAEy0L,uBAAyB,KAC3Bz0L,EAAE00L,aAAe,KACjB10L,EAAE20L,qBAAuB,KACzB30L,EAAE40L,eAAiB,MACnB50L,EAAE60L,sBAAwB,MAC1B70L,EAAE80L,mBAAqB,MACvB90L,EAAE+0L,YAAc,KAChB/0L,EAAEg1L,OAAS,KACXh1L,EAAEi1L,MAAQ,IACVj1L,EAAEk1L,WAAa,KACfl1L,EAAEm1L,WAAa,KACfn1L,EAAEo1L,WAAa,KACfp1L,EAAEq1L,SAAW,MACbr1L,EAAEs1L,QAAU,KACZt1L,EAAEu1L,aAAe,KACjBv1L,EAAEw1L,WAAa,MACfx1L,EAAEy1L,IAAM,KACRz1L,EAAE01L,UAAY,MACd11L,EAAE21L,gBAAkB,MACpB31L,EAAE41L,UAAY,KACd51L,EAAE61L,aAAe,KACjB71L,EAAE81L,kBAAoB,MACtB91L,EAAE+1L,WAAa,MACf/1L,EAAEg2L,UAAY,MACdh2L,EAAEi2L,WAAa,MACfj2L,EAAEk2L,oBAAsB,MACxBl2L,EAAEm2L,SAAW,MACbn2L,EAAEo2L,gBAAkB,MACpBp2L,EAAEq2L,gBAAkB,MACpBr2L,EAAEs2L,yBAA2B,MAC7Bt2L,EAAEu2L,SAAW,KACbv2L,EAAEw2L,YAAc,MAChBx2L,EAAEy2L,WAAa,MACfz2L,EAAE02L,UAAY,KACd12L,EAAE22L,WAAa,KACf32L,EAAE42L,OAAS,KACX52L,EAAE62L,cAAgB,IAClB72L,EAAE82L,sBAAwB,IAC1B92L,EAAE+2L,GAAK,IACP/2L,EAAEg3L,MAAQ,KACVh3L,EAAEi3L,UAAY,IACdj3L,EAAEk3L,OAAS,KACXl3L,EAAEm3L,QAAU,IACZn3L,EAAEo3L,WAAa,MACfp3L,EAAEq3L,UAAY,MACdr3L,EAAEs3L,WAAa,MACft3L,EAAEu3L,oBAAsB,MACxBv3L,EAAEw3L,SAAW,MACbx3L,EAAEy3L,eAAiB,KACnBz3L,EAAE03L,uBAAyB,KAC3B13L,EAAE23L,kBAAoB,KACtB33L,EAAE43L,0BAA4B,KAC9B53L,EAAE63L,gBAAkB,MACpB73L,EAAE83L,gBAAkB,MACpB93L,EAAE+3L,yBAA2B,MAC7B/3L,EAAEg4L,WAAa,MACfh4L,EAAEi4L,YAAc,MAChBj4L,EAAEk4L,WAAa,KACfl4L,EAAEm4L,QAAU,KACZn4L,EAAEkpC,EAAI,IACNlpC,EAAEo4L,WAAa,KACfp4L,EAAEq4L,OAAS,IACXr4L,EAAEs4L,OAAS,KACXt4L,EAAEu4L,WAAa,KACfv4L,EAAEw4L,UAAY,KACdx4L,EAAEy4L,eAAiB,MACnBz4L,EAAE04L,iBAAmB,MACrB14L,EAAE24L,WAAa,MACf34L,EAAE44L,gBAAkB,MACpB54L,EAAE64L,WAAa,KACf74L,EAAE84L,gBAAkB,MACpB94L,EAAE+4L,WAAa,MACf/4L,EAAEg5L,iBAAmB,KACrBh5L,EAAEi5L,iBAAmB,KACrBj5L,EAAEk5L,YAAc,KAChBl5L,EAAEm5L,MAAQ,KACVn5L,EAAEo5L,YAAc,MAChBp5L,EAAEq5L,kBAAoB,MACtBr5L,EAAEs5L,YAAc,KAChBt5L,EAAEu5L,UAAY,MACdv5L,EAAEw5L,OAAS,IACXx5L,EAAEy5L,QAAU,KACZz5L,EAAE05L,YAAc,KAChB15L,EAAE25L,MAAQ,IACV35L,EAAE45L,KAAO,IACT55L,EAAE65L,WAAa,IACf75L,EAAE85L,UAAY,KACd95L,EAAE+5L,WAAa,KACf/5L,EAAEg6L,oBAAsB,KACxBh6L,EAAEi6L,mBAAqB,KACvBj6L,EAAEk6L,WAAa,MACfl6L,EAAEm6L,WAAa,MACfn6L,EAAEo6L,KAAO,GACTp6L,EAAEq6L,WAAa,KACfr6L,EAAEs6L,YAAc,KAChBt6L,EAAEu6L,SAAW,KACbv6L,EAAEw6L,aAAe,KACjBx6L,EAAEy6L,aAAe,KACjBz6L,EAAE06L,eAAiB,KACnB16L,EAAE26L,aAAe,KACjB36L,EAAE46L,cAAgB,MAClB56L,EAAE66L,aAAe,MACjB76L,EAAE86L,YAAc,KAChB96L,EAAE+6L,aAAe,KACjB/6L,EAAEg7L,SAAW,KACbh7L,EAAEi7L,gBAAkB,MACpBj7L,EAAEk7L,mBAAqB,KACvBl7L,EAAEm7L,eAAiB,KACnBn7L,EAAEo7L,KAAO,IACTp7L,EAAEq7L,WAAa,MACfr7L,EAAEs7L,YAAc,KAChBt7L,EAAEu7L,iBAAmB,KACrBv7L,EAAEw7L,YAAc,KAChBx7L,EAAEy7L,qBAAuB,KACzBz7L,EAAE07L,oBAAsB,KACxB17L,EAAE27L,WAAa,MACf37L,EAAE47L,WAAa,MACf57L,EAAE67L,YAAc,KAChB77L,EAAE87L,WAAa,KACf97L,EAAE+7L,WAAa,MACf/7L,EAAEg8L,WAAa,MACfh8L,EAAEi8L,WAAa,MACfj8L,EAAEk8L,OAAS,KACXl8L,EAAEm8L,eAAiB,IACnBn8L,EAAEo8L,QAAU,IACZp8L,EAAEq8L,WAAa,MACfr8L,EAAEs8L,WAAa,MACft8L,EAAE,WAAa,EACfA,EAAEu8L,kBAAoB,KACtBv8L,EAAEw8L,kBAAoB,KACtBx8L,EAAEy8L,mBAAqB,KACvBz8L,EAAE08L,mBAAqB,KACvB18L,EAAE28L,mBAAqB,KACvB38L,EAAE48L,mBAAqB,KACvB58L,EAAE68L,oBAAsB,KACxB78L,EAAE88L,oBAAsB,KACxB98L,EAAE+8L,cAAgB,KAClB/8L,EAAEg9L,eAAiB,KACnBh9L,EAAEi9L,iBAAmB,KACrBj9L,EAAEk9L,iBAAmB,KACrBl9L,EAAEm9L,eAAiB,KACnBn9L,EAAEo9L,eAAiB,KACnBp9L,EAAEq9L,kBAAoB,KACtBr9L,EAAEs9L,kBAAoB,KACtBt9L,EAAEu9L,eAAiB,KACnBv9L,EAAEw9L,eAAiB,KACnBx9L,EAAEy9L,aAAe,KACjBz9L,EAAE09L,aAAe,KACjB19L,EAAE29L,cAAgB,KAClB39L,EAAE49L,cAAgB,KAClB59L,EAAE69L,OAAS,KACX79L,EAAE89L,kBAAoB,MACtB99L,EAAE+9L,mBAAqB,MACvB/9L,EAAEg+L,gBAAkB,MACpBh+L,EAAEi+L,iBAAmB,MACrBj+L,EAAEk+L,aAAe,IACjBl+L,EAAEm+L,aAAe,IACjBn+L,EAAEo+L,cAAgB,IAClBp+L,EAAEq+L,cAAgB,IAClBr+L,EAAEs+L,cAAgB,IAClBt+L,EAAEu+L,cAAgB,IAClBv+L,EAAEw+L,eAAiB,IACnBx+L,EAAEy+L,eAAiB,IACnBz+L,EAAE0+L,eAAiB,GACnB1+L,EAAE2+L,eAAiB,GACnB3+L,EAAE4+L,gBAAkB,GACpB5+L,EAAE6+L,gBAAkB,GACpB7+L,EAAE8+L,gBAAkB,GACpB9+L,EAAE++L,gBAAkB,GACpB/+L,EAAEg/L,iBAAmB,GACrBh/L,EAAEi/L,iBAAmB,GACrBj/L,EAAEk/L,eAAiB,KACnBl/L,EAAEm/L,eAAiB,KACnBn/L,EAAEo/L,gBAAkB,KACpBp/L,EAAEq/L,gBAAkB,KACpBr/L,EAAEs/L,gBAAkB,KACpBt/L,EAAEu/L,gBAAkB,KACpBv/L,EAAEw/L,iBAAmB,KACrBx/L,EAAEy/L,iBAAmB,KACrBz/L,EAAE0/L,iBAAmB,KACrB1/L,EAAE2/L,cAAgB,KAClB3/L,EAAE4/L,sBAAwB,KAC1B5/L,EAAE6/L,mBAAqB,KACvB7/L,EAAE8/L,kBAAoB,KACtB9/L,EAAE+/L,eAAiB,KACnB//L,EAAEggM,oBAAsB,KACxBhgM,EAAEigM,iBAAmB,KACrBjgM,EAAEkgM,iBAAmB,KACrBlgM,EAAEmgM,cAAgB,KAClBngM,EAAEogM,aAAe,KACjBpgM,EAAEqgM,aAAe,KACjBrgM,EAAEsgM,cAAgB,KAClBtgM,EAAEugM,cAAgB,KAClBvgM,EAAEwgM,cAAgB,KAClBxgM,EAAEygM,cAAgB,KAClBzgM,EAAE0gM,eAAiB,KACnB1gM,EAAE2gM,eAAiB,KACnB3gM,EAAE4gM,QAAU,IACZ5gM,EAAE6gM,SAAW,IACb7gM,EAAE8gM,UAAY,IACd9gM,EAAE+gM,SAAW,KACb/gM,EAAEghM,gBAAkB,KACpBhhM,EAAEihM,aAAe,KACjBjhM,EAAEkhM,oBAAsB,KACxBlhM,EAAEmhM,iBAAmB,KACrBnhM,EAAEohM,kBAAoB,KACtBphM,EAAEqhM,eAAiB,KACnBrhM,EAAEshM,iBAAmB,KACrBthM,EAAEuhM,cAAgB,KAClBvhM,EAAEwhM,aAAe,GACjBxhM,EAAEyhM,aAAe,GACjBzhM,EAAE0hM,cAAgB,GAClB1hM,EAAE2hM,cAAgB,GAClB3hM,EAAE4hM,cAAgB,GAClB5hM,EAAE6hM,cAAgB,GAClB7hM,EAAE8hM,eAAiB,GACnB9hM,EAAE+hM,eAAiB,GACnB/hM,EAAEgiM,MAAQ,KACVhiM,EAAEiiM,eAAiB,KACnBjiM,EAAEkiM,YAAc,KAChBliM,EAAEmiM,WAAa,KACfniM,EAAEoiM,WAAa,KACfpiM,EAAEqiM,YAAc,KAChBriM,EAAEsiM,YAAc,KAChBtiM,EAAEuiM,UAAY,KACdviM,EAAEwiM,UAAY,KACdxiM,EAAEyiM,cAAgB,KAClBziM,EAAE0iM,SAAW,GACb1iM,EAAE2iM,SAAW,GACb3iM,EAAE4iM,UAAY,GACd5iM,EAAE6iM,UAAY,GACd7iM,EAAE8iM,iBAAmB,KACrB9iM,EAAE+iM,cAAgB,KAClB/iM,EAAEgjM,UAAY,IACdhjM,EAAEijM,WAAa,IACfjjM,EAAEkjM,YAAc,IAChBljM,EAAEmjM,aAAe,KACjBnjM,EAAEojM,kBAAoB,KACtBpjM,EAAEqjM,eAAiB,KACnBrjM,EAAEsjM,eAAiB,KACnBtjM,EAAEujM,YAAc,KAChBvjM,EAAEwjM,UAAY,KACdxjM,EAAEyjM,cAAgB,KAClBzjM,EAAE0jM,cAAgB,IACpB,IACA,MAAMC,GAA2B14L,uBAAsB,SAAUjL,GAC/DA,EAAE8wK,MAAQ,GACV9wK,EAAEksB,GAAK,KACPlsB,EAAEU,GAAK,KACPV,EAAE4jM,KAAO,KACT5jM,EAAE6jM,GAAK,KACP7jM,EAAE8jM,GAAK,KACP9jM,EAAE+jM,GAAK,KACP/jM,EAAEgkM,KAAO,KACThkM,EAAEikM,KAAO,KACTjkM,EAAEkkM,KAAO,KACTlkM,EAAEmkM,IAAM,KACRnkM,EAAEokM,IAAM,KACRpkM,EAAEqkM,IAAM,KACRrkM,EAAEskM,IAAM,KACRtkM,EAAEukM,IAAM,KACRvkM,EAAEwkM,IAAM,KACRxkM,EAAEykM,KAAO,IACTzkM,EAAE0kM,IAAM,MACR1kM,EAAE2kM,IAAM,MACR3kM,EAAE4kM,IAAM,MACR5kM,EAAE6kM,IAAM,MACR7kM,EAAE8kM,IAAM,MACR9kM,EAAE+kM,IAAM,MACR/kM,EAAEglM,IAAM,MACRhlM,EAAEilM,IAAM,MACRjlM,EAAEklM,IAAM,MACRllM,EAAEmlM,IAAM,MACRnlM,EAAEolM,IAAM,MACRplM,EAAEqlM,IAAM,MACRrlM,EAAEslM,GAAK,MACPtlM,EAAEulM,GAAK,MACPvlM,EAAEwlM,GAAK,MACPxlM,EAAEylM,GAAK,MACPzlM,EAAE0lM,IAAM,MACR1lM,EAAE2lM,IAAM,MACR3lM,EAAE4lM,IAAM,MACR5lM,EAAE6lM,IAAM,MACR7lM,EAAE8lM,IAAM,MACR9lM,EAAE+lM,IAAM,MACR/lM,EAAEgmM,IAAM,MACRhmM,EAAEimM,IAAM,KACRjmM,EAAEkmM,IAAM,MACRlmM,EAAEmmM,IAAM,MACRnmM,EAAEomM,IAAM,MACRpmM,EAAEqmM,IAAM,MACRrmM,EAAEsmM,IAAM,MACRtmM,EAAEumM,IAAM,MACRvmM,EAAEwmM,IAAM,MACRxmM,EAAEymM,IAAM,MACRzmM,EAAE0mM,IAAM,MACR1mM,EAAE2mM,IAAM,MACR3mM,EAAE4mM,IAAM,MACR5mM,EAAE6mM,IAAM,MACR7mM,EAAE8mM,IAAM,MACR9mM,EAAE+mM,IAAM,MACR/mM,EAAEgnM,IAAM,MACRhnM,EAAEinM,IAAM,MACRjnM,EAAEknM,IAAM,MACRlnM,EAAEmnM,IAAM,MACRnnM,EAAEonM,IAAM,MACRpnM,EAAEqnM,IAAM,MACRrnM,EAAEsnM,IAAM,MACRtnM,EAAEunM,IAAM,MACRvnM,EAAEwnM,IAAM,MACRxnM,EAAEynM,IAAM,MACRznM,EAAE0nM,IAAM,MACR1nM,EAAE2nM,IAAM,MACR3nM,EAAE4nM,IAAM,MACR5nM,EAAE6nM,IAAM,MACR7nM,EAAE8nM,IAAM,MACR9nM,EAAE+nM,IAAM,MACR/nM,EAAEgoM,IAAM,MACRhoM,EAAEioM,IAAM,MACRjoM,EAAEkoM,IAAM,MACRloM,EAAEmoM,IAAM,MACRnoM,EAAEooM,IAAM,MACRpoM,EAAEqoM,IAAM,KACRroM,EAAEsoM,IAAM,MACRtoM,EAAEuoM,IAAM,KACRvoM,EAAEwoM,IAAM,MACRxoM,EAAEyoM,KAAO,MACTzoM,EAAE0oM,IAAM,MACR1oM,EAAE2oM,KAAO,MACT3oM,EAAE4oM,IAAM,KACR5oM,EAAE6oM,IAAM,KACR7oM,EAAE8oM,IAAM,KACR9oM,EAAE+oM,IAAM,MACR/oM,EAAEgpM,IAAM,KACRhpM,EAAEipM,IAAM,MACRjpM,EAAEkpM,IAAM,MACRlpM,EAAEmpM,IAAM,MACRnpM,EAAEopM,IAAM,MACRppM,EAAEqpM,IAAM,MACRrpM,EAAEspM,IAAM,MACRtpM,EAAEupM,KAAO,MACTvpM,EAAEwpM,KAAO,MACTxpM,EAAEypM,KAAO,MACTzpM,EAAE0pM,KAAO,MACT1pM,EAAE2pM,KAAO,MACT3pM,EAAE4pM,KAAO,MACT5pM,EAAE6pM,KAAO,MACT7pM,EAAE8pM,KAAO,MACT9pM,EAAE+pM,KAAO,KACT/pM,EAAEgqM,KAAO,KACThqM,EAAEiqM,KAAO,KACTjqM,EAAEkqM,KAAO,KACTlqM,EAAEmqM,KAAO,KACTnqM,EAAEoqM,KAAO,KACTpqM,EAAEqqM,KAAO,KACTrqM,EAAEsqM,KAAO,KACTtqM,EAAEuqM,KAAO,KACTvqM,EAAEwqM,KAAO,KACTxqM,EAAEyqM,KAAO,KACTzqM,EAAE0qM,KAAO,KACT1qM,EAAE2qM,KAAO,KACT3qM,EAAE4qM,KAAO,KACT5qM,EAAE6qM,KAAO,MACT7qM,EAAE8qM,KAAO,MACT9qM,EAAE+qM,KAAO,MACT/qM,EAAEgrM,KAAO,MACThrM,EAAEirM,KAAO,MACTjrM,EAAEkrM,KAAO,MACTlrM,EAAEmrM,KAAO,MACTnrM,EAAEorM,KAAO,MACTprM,EAAEqrM,KAAO,MACTrrM,EAAEsrM,KAAO,MACTtrM,EAAEurM,KAAO,MACTvrM,EAAEwrM,KAAO,MACTxrM,EAAEyrM,KAAO,MACTzrM,EAAE0rM,KAAO,MACT1rM,EAAE2rM,KAAO,MACT3rM,EAAE4rM,KAAO,MACT5rM,EAAE6rM,KAAO,MACT7rM,EAAE8rM,KAAO,MACT9rM,EAAE+rM,KAAO,MACT/rM,EAAEgsM,KAAO,MACThsM,EAAEisM,KAAO,MACTjsM,EAAEksM,KAAO,MACTlsM,EAAEmsM,KAAO,MACTnsM,EAAEosM,KAAO,MACTpsM,EAAEqsM,KAAO,MACTrsM,EAAEssM,KAAO,MACTtsM,EAAEusM,KAAO,MACTvsM,EAAEwsM,KAAO,MACTxsM,EAAEysM,KAAO,MACTzsM,EAAE0sM,KAAO,MACT1sM,EAAE2sM,KAAO,MACT3sM,EAAE4sM,KAAO,KACT5sM,EAAE6sM,KAAO,KACT7sM,EAAE8sM,KAAO,KACT9sM,EAAE+sM,KAAO,MACT/sM,EAAEgtM,KAAO,MACThtM,EAAEitM,KAAO,MACTjtM,EAAEktM,KAAO,MACTltM,EAAEmtM,KAAO,MACTntM,EAAEotM,KAAO,MACTptM,EAAEqtM,KAAO,MACTrtM,EAAEstM,KAAO,MACTttM,EAAEutM,KAAO,MACTvtM,EAAEwtM,KAAO,MACTxtM,EAAEytM,KAAO,MACTztM,EAAE0tM,KAAO,MACT1tM,EAAE2tM,KAAO,MACT3tM,EAAE4tM,KAAO,MACT5tM,EAAE6tM,KAAO,MACT7tM,EAAE8tM,KAAO,MACT9tM,EAAE+tM,KAAO,MACT/tM,EAAEguM,KAAO,MACThuM,EAAEiuM,KAAO,MACTjuM,EAAEkuM,KAAO,MACTluM,EAAEmuM,KAAO,MACTnuM,EAAEouM,KAAO,MACTpuM,EAAEquM,KAAO,MACTruM,EAAEsuM,KAAO,MACTtuM,EAAEuuM,KAAO,MACTvuM,EAAEwuM,KAAO,MACTxuM,EAAEyuM,KAAO,MACTzuM,EAAE0uM,KAAO,MACT1uM,EAAE2uM,KAAO,MACT3uM,EAAE4uM,KAAO,MACT5uM,EAAE6uM,KAAO,MACT7uM,EAAE8uM,KAAO,MACT9uM,EAAE+uM,KAAO,MACT/uM,EAAEgvM,KAAO,MACThvM,EAAEivM,KAAO,MACTjvM,EAAEkvM,KAAO,MACTlvM,EAAEmvM,KAAO,MACTnvM,EAAEovM,KAAO,MACTpvM,EAAEqvM,IAAM,MACRrvM,EAAEsvM,IAAM,MACRtvM,EAAEuvM,IAAM,MACRvvM,EAAEwvM,IAAM,MACRxvM,EAAEyvM,IAAM,MACRzvM,EAAE0vM,IAAM,MACR1vM,EAAE2vM,KAAO,MACT3vM,EAAE4vM,IAAM,MACR5vM,EAAE6vM,KAAO,MACT7vM,EAAE8vM,IAAM,MACR9vM,EAAE+vM,IAAM,MACR/vM,EAAEgwM,IAAM,MACRhwM,EAAEiwM,IAAM,MACRjwM,EAAEkwM,IAAM,MACRlwM,EAAE,WAAa,CACjB,IAIA,MAAMmwM,GAAuBllM,uBAAsB,SAAUjL,GAC3DA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,IACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,KACXA,EAAE,OAAS,IACb,IACA,SAASowM,wBAAwBp3M,GAC/B,OAAIA,GAAQ,OAAUA,GAAQ,MACrB,EACEA,GAAQ,OAAUA,GAAQ,MAC5Bm3M,KAAuBn3M,IAASA,EAC9BA,IAAS,IACX,GAEFA,CACT,CACA,SAASq3M,mBAAmBz3M,EAAM03M,GAChC,IAAIC,EAAUD,EAAiB13M,GAC/B,GAAI23M,SAAY32M,EACd,OAAO22M,EAET,IAAK33M,EACH,OAAQ,EAEV,GAAIA,EAAK,KAAO,IAAK,CACnB,MAAM43M,EAAU53M,EAAKb,OACrB,IAAI04M,EACJ,GAAID,IAAY,GAAK53M,EAAK,KAAO,KAAOA,EAAK,KAAO,IAClD63M,EAAS73M,EAAKwV,UAAU,OACnB,MAAIoiM,GAAW,GAAKA,GAAW,GAGpC,OAAQ,EAFRC,EAAS73M,EAAKwV,UAAU,EAGzB,CACD,GAAIqiM,IAAWA,EAAOhhM,cAAe,CACnC8gM,EAAU5oM,SAAS8oM,EAAQ,IAC3B,GAAIF,GAAW,EACb,OAAOA,CAEV,CACF,CACD,OAAQ,CACV,CACA,MAAMG,GAAgB,CAAC,CAAC,EAAQ,KAAS,CAAC,IAAQ,KAAS,CAAC,IAAQ,KAAS,CAAC,IAAQ,KAAS,CAAC,IAAQ,IAAQ,KAAQ,KAAQ,KAAQ,MAAS,CAAC,IAAQ,IAAQ,MAAQ,OAAS,CAAC,IAAQ,IAAQ,KAAQ,MAAS,CAAC,IAAQ,MAAS,CAAC,MAAQ,OAAS,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAAS,CAAC,KAAQ,KAAQ,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,KAAQ,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,KAAQ,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,CAAC,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,MAAQ,MAAQ,OAAS,CAAC,MAAQ,MAAQ,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAS,OAAU,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,QAAU,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,MAAQ,OAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,KAAQ,MAAS,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,OAAS,OAAS,OAAS,OAAS,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,QAAS,SAAU,CAAC,MAAQ,MAAQ,OAAS,QAAU,CAAC,OAAS,QAAU,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAS,MAAS,MAAS,MAAS,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,MAAS,OAAU,CAAC,OAAS,QAAU,CAAC,MAAS,MAAS,MAAS,OAAU,CAAC,OAAS,QAAU,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAS,OAAU,CAAC,KAAS,OAAU,CAAC,MAAS,MAAS,MAAS,MAAS,MAAS,OAAU,CAAC,OAAS,OAAS,OAAS,SACv5F,SAASC,mBAAmBt4M,EAAOu4M,GAAe,GAChD,GAAIA,KAAkB,EAAG,CACvB,MAAM35L,EAAQy5L,GAAcE,GAC5B,IAAK,IAAI12M,EAAI,EAAGoH,EAAK2V,EAAMlf,OAAQmC,EAAIoH,EAAIpH,GAAK,EAC9C,GAAI7B,GAAS4e,EAAM/c,IAAM7B,GAAS4e,EAAM/c,EAAI,GAC1C,OAAO02M,CAGZ,CACD,IAAK,IAAI12M,EAAI,EAAGoH,EAAKovM,GAAc34M,OAAQmC,EAAIoH,EAAIpH,IAAK,CACtD,MAAM+c,EAAQy5L,GAAcx2M,GAC5B,IAAK,IAAI6e,EAAI,EAAGitB,EAAK/uB,EAAMlf,OAAQghB,EAAIitB,EAAIjtB,GAAK,EAC9C,GAAI1gB,GAAS4e,EAAM8B,IAAM1gB,GAAS4e,EAAM8B,EAAI,GAC1C,OAAO7e,CAGZ,CACD,OAAQ,CACV,CACA,MAAM22M,GAAoB,IAAI/gM,OAAO,8BAA+B,KACpE,MAAMghM,GAAgB,IAAIjuM,IAC1B,SAASkuM,uBAAuB5iM,GAC9B,MAAM6iM,EAAiBF,GAAc3pN,IAAIgnB,GACzC,GAAI6iM,EACF,OAAOA,EAET,MAAMC,EAAS9iM,EAAKrW,MAAM+4M,IAC1B,MAAMK,EAAW,CACfC,eAAgBF,IAAS,GACzBG,uBAAwBH,IAAS,GACjCI,wBAAyBJ,IAAS,IAEpCH,GAActqM,IAAI2H,EAAM+iM,GACxB,OAAOA,CACT,CACA,SAASI,qBACPR,GAAczpM,OAChB,CAQA,MAAMkqM,GAAwB,KAC9B,MAAMC,GAAY,CAChBC,WAAY,EACZC,MAAO,EACPC,SAAU,EACVC,OAAQ,EACRC,YAAa,GACbC,OAAQ,GACRC,OAAQ,MACRC,SAAU,OACVC,UAAW,QAEb,MAAMC,GAA2B,CAAC,UAAW,QAAS,mBAAoB,QAAS,SAAU,WAAY,aAAc,SAAU,UAAW,YAAa,cAAe,YAAa,aAAc,WAAY,OAAQ,QAAS,SAAU,SAAU,QAAS,OAAQ,MAAO,MAAO,QAAS,OAAQ,OAAQ,MAAO,QAAS,QAAS,OAAQ,QAAS,YAAa,OAAQ,QAAS,UAAW,WAAY,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,cAAe,YAAa,eAAgB,cAAe,aAAc,QAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,YAAa,MAAO,aAAc,aAAc,YAAa,QAAS,WAAY,SAAU,SAAU,YAAa,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,QAAS,WAAY,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,OAAQ,WAAY,UAAW,SAAU,YAAa,aAAc,aAAc,YAAa,YAAa,QAAS,WAAY,WAAY,KAAM,SAAU,WAAY,YAAa,YAAa,eAAgB,MAAO,KAAM,cAAe,YAAa,UAAW,KAAM,WAAY,cAAe,eAAgB,QAAS,KAAM,SAAU,eAAgB,aAAc,aAAc,UAAW,SAAU,cAAe,QAAS,gBAAiB,iBAAkB,WAAY,mBAAoB,SAAU,SAAU,SAAU,KAAM,KAAM,SAAU,SAAU,eAAgB,gBAAiB,YAAa,aAAc,SAAU,UAAW,YAAa,YAAa,WAAY,WAAY,gBAAiB,iBAAkB,KAAM,KAAM,YAAa,iBAAkB,iBAAkB,eAAgB,cAAe,cAAe,cAAe,SAAU,YAAa,SAAU,SAAU,cAAe,YAAa,SAAU,SAAU,cAAe,QAAS,SAAU,SAAU,cAAe,SAAU,WAAY,aAAc,QAAS,SAAU,QAAS,YAAa,OAAQ,UAAW,eAAgB,SAAU,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,MAAO,MAAO,SAAU,SAAU,QAAS,QAAS,QAAS,WAAY,cAAe,cAAe,gBAAiB,UAAW,aAAc,gBAAiB,QAAS,SAAU,SAAU,aAAc,WAAY,WAAY,SAAU,SAAU,SAAU,SAAU,UACxlF,SAASC,iBAAiBv5M,EAAM03M,GAC9B,GAAIA,EAAiB13M,UAAUgB,EAC7B,OAAOhB,EAET,MAAM23M,EAAUF,mBAAmBz3M,EAAM03M,GACzC,GAAIC,KAAa,EACf,IAAK,MAAMzpN,KAAOwpN,EAChB,GAAIA,EAAiBxpN,KAASypN,EAC5B,OAAOzpN,EAIb8P,KAAK,gDAAkDgC,GACvD,OAAOA,CACT,CACA,SAASw5M,sBAAsBnrM,EAAYorM,EAAiBC,GAC1D,MAAMC,EAAoBvrN,OAAO0d,OAAO,MACxC,IAAI8tM,EAASjxM,EAAUgyD,EACvB,MAAMk/I,KAAoBxrM,EAAW6wB,MAAQ05K,GAAUG,UACvD,GAAI1qM,EAAWyrM,eAAgB,CAC7Bn/I,EAAe8+I,EACf,IAAK9wM,EAAW,EAAGA,EAAWgyD,EAAax7D,OAAQwJ,IAAY,CAC7DixM,EAAUF,EAAW5oJ,QAAQ6J,EAAahyD,IAC1CgxM,EAAkBhxM,GAAYixM,GAAW,EAAIA,EAAU,CACxD,CACL,MAAS,GAAIvrM,EAAW0rM,iBAAkB,CACtCp/I,EAAepH,YAAYllD,EAAW0rM,kBACtC,IAAKpxM,EAAW,EAAGA,EAAWgyD,EAAax7D,OAAQwJ,IAAY,CAC7DixM,EAAUF,EAAW5oJ,QAAQ6J,EAAahyD,IAC1CgxM,EAAkBhxM,GAAYixM,GAAW,EAAIA,EAAU,CACxD,CACF,MAAM,GAAIC,EACT,IAAKlxM,KAAY8wM,EACfE,EAAkBhxM,GAAY8wM,EAAgB9wM,OAE3C,CACLgyD,EAAexH,GACf,IAAKxqD,EAAW,EAAGA,EAAWgyD,EAAax7D,OAAQwJ,IAAY,CAC7DixM,EAAUF,EAAW5oJ,QAAQ6J,EAAahyD,IAC1CgxM,EAAkBhxM,GAAYixM,GAAW,EAAIA,EAAU,CACxD,CACF,CACD,MAAMI,EAAc3rM,EAAW2rM,YAC/B,IAAItC,EACJ,GAAIsC,EACF,IAAKrxM,KAAYqxM,EAAa,CAC5B,MAAMC,EAAYD,EAAYrxM,GAC9BixM,EAAUF,EAAW5oJ,QAAQmpJ,GAC7B,GAAIL,KAAa,EAAG,CACblC,IACHA,EAAmB/3I,MAErB,MAAMu6I,EAAoBX,iBAAiBU,EAAWvC,GAClDwC,IAAsBD,IACxBL,EAAUF,EAAW5oJ,QAAQopJ,GAEhC,CACDP,EAAkBhxM,GAAYixM,GAAW,EAAIA,EAAU,CACxD,CAEH,OAAOD,CACT,CACA,SAASQ,kBAAkBn6M,GACzB,OAAOA,EAAKwI,WAAW,QAAS,KAAKA,WAAW,MAAO,GACzD,CACA,MAAM4xM,GAA8B/nM,uBAAsBjL,IACxDA,EAAE,MAAU,MACZA,EAAE,MAAU,MACZA,EAAE,MAAU,MACZA,EAAE,MAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,MACZA,EAAE,OAAU,KAAM,IAMpB,MAAMizM,GAAgBhoM,uBAAsB,SAAUjL,GACpDA,EAAE,eAAiB,cACnBA,EAAEkzM,UAAY,YACdlzM,EAAEmzM,QAAU,UACZnzM,EAAEuE,OAAS,SACXvE,EAAE,cAAgB,aAClBA,EAAE,kBAAoB,iBACtBA,EAAE,gBAAkB,eACpBA,EAAEozM,aAAe,eACjBpzM,EAAE,gBAAkB,eACpBA,EAAE,qBAAuB,oBACzBA,EAAE,mBAAqB,kBACvBA,EAAE,oBAAsB,mBACxBA,EAAE,yBAA2B,wBAC7BA,EAAE,uBAAyB,sBAC3BA,EAAEqzM,YAAc,YAChBrzM,EAAE,oBAAsB,iBACxBA,EAAE,0BAA4B,wBAC9BA,EAAE,sBAAwB,oBAC1BA,EAAEszM,WAAa,YACftzM,EAAE,mBAAqB,iBACvBA,EAAE,yBAA2B,wBAC7BA,EAAE,qBAAuB,oBACzBA,EAAE,eAAiB,YACnBA,EAAE,oBAAsB,iBACxBA,EAAE,0BAA4B,wBAC9BA,EAAE,sBAAwB,oBAC1BA,EAAEuzM,MAAQ,YACVvzM,EAAE,cAAgB,iBAClBA,EAAE,oBAAsB,wBACxBA,EAAE,gBAAkB,oBACpBA,EAAEwzM,QAAU,YACZxzM,EAAE,sBAAwB,wBAC1BA,EAAE,gBAAkB,iBACpBA,EAAE,kBAAoB,oBACtBA,EAAE,iCAAmC,wBACrCA,EAAE,qBAAuB,iBACzBA,EAAE,yBAA2B,oBAC7BA,EAAEyzM,eAAiB,YACnBzzM,EAAE,uBAAyB,iBAC3BA,EAAE,6BAA+B,wBACjCA,EAAE,yBAA2B,oBAC7BA,EAAE,sBAAwB,sBAC1BA,EAAE,kBAAoB,kBACtBA,EAAE0zM,WAAa,UACf1zM,EAAE,mBAAqB,eACvBA,EAAE,yBAA2B,sBAC7BA,EAAE,qBAAuB,kBACzBA,EAAE,6BAA+B,sBACjCA,EAAE,uBAAyB,eAC3BA,EAAE,yBAA2B,kBAC7BA,EAAE2zM,eAAiB,UACnB3zM,EAAE,wBAA0B,wBAC5BA,EAAE,oBAAsB,oBACxBA,EAAE,eAAiB,SACnBA,EAAE,qBAAuB,SACzBA,EAAE,iBAAmB,SACrBA,EAAE4zM,cAAgB,cAClB5zM,EAAE,sBAAwB,aAC1BA,EAAE,4BAA8B,mBAChCA,EAAE,wBAA0B,eAC5BA,EAAE6zM,gBAAkB,cACpB7zM,EAAE,wBAA0B,aAC5BA,EAAE,8BAAgC,mBAClCA,EAAE,gCAAkC,mBACpCA,EAAE,0BAA4B,aAC9BA,EAAE,0BAA4B,eAC9BA,EAAE,4BAA8B,eAChCA,EAAE8zM,kBAAoB,cACtB9zM,EAAE,0BAA4B,aAC9BA,EAAE,gCAAkC,mBACpCA,EAAE,4BAA8B,cAClC,IACA,MAAM+zM,GAAuB9oM,uBAAsB,SAAUjL,GAC3DA,EAAEmzM,QAAU,iBACZnzM,EAAE,gBAAkB,qBACpBA,EAAE,uBAAyB,2BAC3BA,EAAE,mBAAqB,uBACvBA,EAAEkzM,UAAY,6BACdlzM,EAAE,kBAAoB,0BACtBA,EAAE,yBAA2B,gCAC7BA,EAAE,qBAAuB,4BACzBA,EAAE,eAAiB,iBACnBA,EAAE,cAAgB,qBAClBA,EAAE,oBAAsB,2BACxBA,EAAE,gBAAkB,uBACpBA,EAAEuE,OAAS,kBACXvE,EAAEozM,aAAe,oBACjBpzM,EAAE,0BAA4B,6BAC9BA,EAAE,uBAAyB,0BAC3BA,EAAE,yBAA2B,4BAC7BA,EAAE,6BAA+B,+BACnC,IACA,MAAMg0M,GAAmB/oM,uBAAsB,SAAUjL,GACvDA,EAAEi0M,QAAU,YACZj0M,EAAE,gBAAkB,iBACpBA,EAAE,sBAAwB,wBAC1BA,EAAE,kBAAoB,oBACtBA,EAAEk0M,cAAgB,YAClBl0M,EAAE,sBAAwB,iBAC1BA,EAAE,4BAA8B,wBAChCA,EAAE,wBAA0B,oBAC5BA,EAAEm0M,YAAc,gBAChBn0M,EAAE,oBAAsB,qBACxBA,EAAE,0BAA4B,2BAC9BA,EAAE,sBAAwB,uBAC1BA,EAAEo0M,WAAa,YACfp0M,EAAE,mBAAqB,iBACvBA,EAAE,yBAA2B,wBAC7BA,EAAE,qBAAuB,oBACzBA,EAAEq0M,OAAS,YACXr0M,EAAE,kBAAoB,iBACtBA,EAAE,wBAA0B,wBAC5BA,EAAE,kBAAoB,YACtBA,EAAE,wBAA0B,oBAC5BA,EAAE,oBAAsB,YACxBA,EAAE,0BAA4B,oBAC9BA,EAAEs0M,cAAgB,UAClBt0M,EAAE,sBAAwB,eAC1BA,EAAE,4BAA8B,sBAChCA,EAAE,wBAA0B,kBAC5BA,EAAE,mBAAqB,iBACvBA,EAAE,aAAe,YACjBA,EAAE,kBAAoB,iBACtBA,EAAE,wBAA0B,uBAC5BA,EAAE,oBAAsB,mBACxBA,EAAE,aAAe,YACjBA,EAAE,kBAAoB,iBACtBA,EAAE,wBAA0B,uBAC5BA,EAAE,oBAAsB,mBACxBA,EAAE,cAAgB,aAClBA,EAAE,mBAAqB,kBACvBA,EAAE,yBAA2B,wBAC7BA,EAAE,qBAAuB,oBACzBA,EAAE,cAAgB,aAClBA,EAAE,mBAAqB,kBACvBA,EAAE,yBAA2B,wBAC7BA,EAAE,qBAAuB,oBACzBA,EAAEu0M,cAAgB,eAClBv0M,EAAEw0M,cAAgB,WACpB,IACA,MAAMC,GAAgBxpM,uBAAsB,SAAUjL,GACpDA,EAAE,gBAAkB,KACpBA,EAAE,cAAgB,KAClBA,EAAE00M,SAAW,KACb10M,EAAE20M,MAAQ,KACV30M,EAAE40M,WAAa,KACf50M,EAAE60M,SAAW,KACb70M,EAAE,uBAAyB,KAC3BA,EAAE80M,QAAU,KACZ90M,EAAE+0M,KAAO,KACT/0M,EAAEg1M,KAAO,KACTh1M,EAAEi1M,MAAQ,KACVj1M,EAAEk1M,OAAS,KACXl1M,EAAEm1M,YAAc,KAChBn1M,EAAEo1M,KAAO,KACTp1M,EAAEq1M,MAAQ,KACVr1M,EAAE,oBAAsB,KACxBA,EAAEs1M,SAAW,KACbt1M,EAAE,sBAAwB,KAC1BA,EAAE,mBAAqB,KACvBA,EAAE,iBAAmB,KACrBA,EAAEu1M,OAAS,KACXv1M,EAAE,gBAAkB,KACpBA,EAAE,gBAAkB,KACpBA,EAAEw1M,QAAU,KACZx1M,EAAE,kBAAoB,KACtBA,EAAE,kBAAoB,KACtBA,EAAEy1M,QAAU,KACZz1M,EAAE01M,QAAU,KACZ11M,EAAE21M,SAAW,KACb31M,EAAE41M,QAAU,KACZ51M,EAAE61M,QAAU,KACZ71M,EAAE81M,OAAS,KACX91M,EAAE+1M,OAAS,KACX/1M,EAAEg2M,QAAU,KACZh2M,EAAE,qBAAuB,KACzBA,EAAE,sBAAwB,KAC1BA,EAAEi2M,UAAY,KACdj2M,EAAE,cAAgB,KAClBA,EAAEk2M,WAAa,KACfl2M,EAAE,eAAiB,KACnBA,EAAEm2M,UAAY,KACdn2M,EAAEo2M,UAAY,KACdp2M,EAAEq2M,OAAS,KACXr2M,EAAEs2M,QAAU,KACZt2M,EAAE,mBAAqB,KACvBA,EAAE,kBAAoB,KACtBA,EAAEu2M,WAAa,KACfv2M,EAAE,gBAAkB,KACpBA,EAAEw2M,OAAS,KACXx2M,EAAEy2M,QAAU,KACZz2M,EAAE02M,WAAa,KACf12M,EAAE22M,SAAW,KACb32M,EAAE42M,UAAY,KACd52M,EAAE62M,UAAY,KACd72M,EAAE,YAAc,KAChBA,EAAE82M,QAAU,KACZ92M,EAAE+2M,UAAY,KACd/2M,EAAEg3M,UAAY,KACdh3M,EAAE,iBAAmB,KACrBA,EAAEi3M,SAAW,KACbj3M,EAAEk3M,QAAU,KACZl3M,EAAEm3M,QAAU,KACZn3M,EAAEo3M,WAAa,KACfp3M,EAAE,mBAAqB,KACvBA,EAAE,oBAAsB,KACxBA,EAAE,kBAAoB,KACtBA,EAAEq3M,QAAU,KACZr3M,EAAE,qBAAuB,KACzBA,EAAEs3M,QAAU,KACZt3M,EAAEu3M,SAAW,KACbv3M,EAAE,mBAAqB,KACvBA,EAAEw3M,UAAY,KACdx3M,EAAE,gBAAkB,KACpBA,EAAE,gBAAkB,KACpBA,EAAEy3M,QAAU,KACZz3M,EAAE,eAAiB,KACnBA,EAAE03M,OAAS,KACX13M,EAAE23M,OAAS,KACX33M,EAAE43M,QAAU,KACZ53M,EAAE63M,QAAU,KACZ73M,EAAE83M,gBAAkB,KACpB93M,EAAE,oBAAsB,KACxBA,EAAE,mBAAqB,KACvBA,EAAE+3M,cAAgB,KAClB/3M,EAAEg4M,OAAS,KACXh4M,EAAE,iBAAmB,KACrBA,EAAEi4M,OAAS,KACXj4M,EAAEk4M,QAAU,KACZl4M,EAAEm4M,OAAS,KACXn4M,EAAEo4M,OAAS,KACXp4M,EAAEq4M,OAAS,KACXr4M,EAAE,aAAe,KACjBA,EAAE,aAAe,KACjBA,EAAE,YAAc,KAChBA,EAAE,cAAgB,KAClBA,EAAE,YAAc,KAChBA,EAAE,gBAAkB,KACpBA,EAAE,yBAA2B,KAC7BA,EAAEu0M,cAAgB,KAClBv0M,EAAEs4M,SAAW,KACbt4M,EAAEu4M,SAAW,KACbv4M,EAAEw4M,QAAU,KACZx4M,EAAE,sBAAwB,KAC1BA,EAAEy4M,SAAW,KACbz4M,EAAE,gBAAkB,KACpBA,EAAE,qBAAuB,KACzBA,EAAE04M,QAAU,KACZ14M,EAAE24M,QAAU,KACZ34M,EAAE44M,SAAW,KACb54M,EAAE64M,MAAQ,KACV74M,EAAE,eAAiB,KACnBA,EAAE84M,MAAQ,KACV94M,EAAE+4M,MAAQ,KACV/4M,EAAEg5M,QAAU,KACZh5M,EAAEi5M,QAAU,KACZj5M,EAAEk5M,SAAW,KACbl5M,EAAEm5M,KAAO,KACTn5M,EAAE,kBAAoB,KACtBA,EAAE,eAAiB,KACnBA,EAAEo5M,QAAU,KACZp5M,EAAEq5M,MAAQ,KACVr5M,EAAEs5M,OAAS,KACXt5M,EAAE,WAAa,KACfA,EAAE,mBAAqB,KACvBA,EAAEu5M,OAAS,KACXv5M,EAAE,aAAe,KACjBA,EAAE,kBAAoB,KACtBA,EAAE,cAAgB,KAClBA,EAAEw5M,WAAa,KACfx5M,EAAEy5M,OAAS,KACXz5M,EAAE05M,MAAQ,KACV15M,EAAE,cAAgB,KAClBA,EAAE25M,QAAU,KACZ35M,EAAE45M,KAAO,IACX,IACA,MAAMC,GAAkB5uM,uBAAsB,SAAUjL,GACtDA,EAAE85M,SAAW,KACb95M,EAAEuE,OAAS,KACXvE,EAAEozM,aAAe,KACjBpzM,EAAE+5M,UAAY,KACd/5M,EAAE,kBAAoB,KACtBA,EAAE,qBAAuB,IAC3B,IACA,MAAMg6M,GAA8B/uM,uBAAsB,SAAUjL,GAClEA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,KACTA,EAAE,KAAO,KACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,KAAO,MACTA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,IACVA,EAAE,MAAQ,MACVA,EAAE,MAAQ,KACVA,EAAE,MAAQ,IACZ,IACA,MAAMi6M,GAAuChvM,uBAAsB,SAAUjL,GAC3EA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACX,IACA,MAAMk6M,GAAoCjvM,uBAAsB,SAAUjL,GACxEA,EAAE,GAAK,GACPA,EAAE,GAAK,GACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,GAAK,IACPA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,IAAM,GACRA,EAAE,IAAM,IACRA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,IACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GACTA,EAAE,KAAO,GA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,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,EAAG,EAAG,MAAQ,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChuJ,MAAMC,GAAqB,CACzBrV,WAAY,OACZ0K,QAAS,OAEX,MAAM4K,GAA2B,CAAC,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9wJ,MAAMC,GAA2B,CAC/BvV,WAAY,OACZ0K,QAAS,OAEX,MAAM8K,GAAuB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,MAAQ,QAAS,OAAS,QAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,KAAO,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,MAAQ,KAAO,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/rJ,MAAMC,GAAuB,CAC3BzV,WAAY,OACZ0K,QAAS,OAEX,MAAMgL,GAAwB,CAAC,OAAQ,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAS,EAAG,QAAS,EAAG,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,OAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,MAAQ,OAAS,GAAK,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzvJ,MAAMC,GAAwB,CAC5B3V,WAAY,OACZ0K,QAAS,OAIX,MAAMkL,GAAuB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,EAAG,OAAQ,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,MAAQ,OAAQ,OAAS,EAAG,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACrjL,MAAMC,GAAuB,CAC3B7V,WAAY,IACZ0K,QAAS,IAEX,MAAMoL,GAA6B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9jL,MAAMC,GAA6B,CACjC/V,WAAY,KACZ0K,QAAS,IAEX,MAAMsL,GAAyB,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,EAAG,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAQ,OAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,EAAG,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC56K,MAAMC,GAAyB,CAC7BjW,WAAY,KACZ0K,QAAS,IAEX,MAAMwL,GAA0B,CAAC,OAAS,EAAG,EAAG,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAQ,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,EAAG,EAAG,OAAS,EAAG,MAAQ,OAAQ,OAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAQ,OAAQ,QAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,QAAS,QAAS,EAAG,QAAS,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,QAAS,QAAS,QAAS,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,QAAS,OAAS,QAAS,QAAS,EAAG,MAAQ,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAQ,EAAG,OAAS,OAAS,EAAG,QAAS,OAAS,MAAQ,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,OAAS,EAAG,OAAQ,EAAG,QAAS,QAAS,OAAS,OAAQ,EAAG,QAAS,QAAS,MAAQ,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,EAAG,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,QAAS,QAAS,QAAS,MAAQ,QAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACj3K,MAAMC,GAA0B,CAC9BnW,WAAY,IACZ0K,QAAS,IAIX,MAAM0L,GAA2B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC73G,MAAMC,GAA4B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACphH,MAAMC,GAAiC,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACj4G,MAAMC,GAAkC,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1hH,MAAMC,GAA6B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC53G,MAAMC,GAA8B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACthH,MAAMC,GAA8B,CAAC,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/3G,MAAMC,GAA+B,EAAE,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAAQ,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAGvhH,MAAMC,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,KAAO,QAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAO,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,EAAG,EAAG,MAAQ,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,MAAQ,KAAO,MAAQ,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,IAAM,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAQ,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACh7I,MAAMC,GAAuB,CAC3B7W,WAAY,IACZ0K,QAAS,IAEX,MAAMoM,GAA6B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,GAAK,OAAS,GAAK,OAAS,GAAK,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,KAAO,KAAO,KAAO,MAAQ,MAAQ,OAAS,EAAG,KAAM,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC39I,MAAMC,GAA6B,CACjC/W,WAAY,IACZ0K,QAAS,IAEX,MAAMsM,GAAyB,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,QAAS,KAAO,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,OAAS,IAAM,KAAO,KAAO,KAAO,IAAM,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,EAAG,MAAQ,OAAS,MAAQ,MAAQ,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,KAAO,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,MAAQ,IAAM,MAAQ,IAAM,MAAQ,IAAM,EAAG,OAAS,OAAS,OAAS,KAAO,MAAQ,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,OAAS,OAAS,IAAM,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,MAAO,MAAO,MAAO,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACt5I,MAAMC,GAAyB,CAC7BjX,WAAY,IACZ0K,QAAS,IAEX,MAAMwM,GAA0B,CAAC,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAAM,MAAQ,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAQ,KAAO,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,KAAO,QAAS,QAAS,OAAS,OAAS,OAAQ,QAAS,OAAS,KAAO,QAAS,OAAS,KAAO,QAAS,KAAO,KAAO,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,EAAG,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAQ,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,IAAM,QAAS,EAAG,EAAG,KAAO,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,KAAO,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,EAAG,EAAG,OAAS,KAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,OAAS,KAAO,OAAS,KAAO,OAAS,KAAO,EAAG,OAAS,OAAS,OAAS,KAAO,OAAS,MAAQ,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,KAAO,KAAO,OAAS,KAAO,OAAS,OAAS,OAAS,OAAS,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,KAAO,MAAQ,EAAG,OAAS,EAAG,EAAG,EAAG,OAAS,OAAS,OAAS,EAAG,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,EAAG,MAAO,EAAG,EAAG,OAAS,OAAS,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,KAAO,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,MAAO,QAAS,EAAG,EAAG,OAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACz6I,MAAMC,GAA0B,CAC9BnX,WAAY,IACZ0K,QAAS,IAIX,MAAM0M,GAAqB,CAAC,QAAS,EAAG,EAAG,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAQ,OAAQ,QAAS,OAAQ,MAAQ,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,KAAO,QAAS,OAAQ,MAAQ,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,MAAQ,QAAS,QAAS,EAAG,QAAS,QAAS,MAAQ,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,KAAO,QAAS,KAAO,QAAS,KAAO,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,MAAQ,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAQ,QAAS,OAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAClsJ,MAAMC,GAAqB,CACzBrX,WAAY,QACZ0K,QAAS,GAEX,MAAM4M,GAA2B,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,MAAO,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,MAAQ,QAAS,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,MAAQ,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAQ,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,MAAO,MAAO,EAAG,MAAO,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,MAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAO,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,OAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAQ,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAQ,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,MAAQ,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,OAAS,QAAS,EAAG,QAAS,OAAS,QAAS,QAAS,MAAO,EAAG,EAAG,EAAG,KAAO,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACluJ,MAAMC,GAA2B,CAC/BvX,WAAY,QACZ0K,QAAS,GAEX,MAAM8M,GAAuB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAQ,MAAQ,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,MAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,OAAS,OAAQ,KAAM,QAAS,IAAK,OAAQ,OAAQ,OAAS,QAAS,QAAS,KAAM,OAAS,QAAS,QAAS,IAAK,QAAS,OAAQ,QAAS,OAAQ,QAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,QAAS,OAAQ,QAAS,OAAS,OAAQ,OAAQ,IAAK,OAAQ,OAAS,OAAQ,OAAQ,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,OAAS,EAAG,QAAS,OAAS,EAAG,EAAG,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,QAAS,OAAS,OAAS,QAAS,OAAS,EAAG,EAAG,EAAG,OAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,EAAG,EAAG,MAAO,EAAG,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,OAAS,OAAS,EAAG,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,EAAG,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,OAAQ,QAAS,QAAS,QAAS,EAAG,EAAG,EAAG,QAAS,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACpvJ,MAAMC,GAAuB,CAC3BzX,WAAY,QACZ0K,QAAS,GAEX,MAAMgN,GAAwB,CAAC,QAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,QAAS,OAAQ,OAAS,OAAS,QAAS,OAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAQ,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,QAAS,OAAQ,QAAS,QAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,MAAO,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,QAAS,QAAS,OAAS,OAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,OAAS,EAAG,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,MAAQ,QAAS,MAAQ,QAAS,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,QAAS,OAAS,MAAQ,OAAS,QAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,OAAQ,OAAS,OAAS,OAAS,QAAS,QAAS,QAAS,EAAG,EAAG,QAAS,QAAS,QAAS,QAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,OAAS,OAAS,QAAS,EAAG,EAAG,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,OAAS,QAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,OAAS,MAAQ,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAAG,EAAG,OAAS,QAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,QAAS,OAAS,QAAS,IAAK,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,OAAS,OAAS,QAAS,QAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,MAAQ,OAAS,OAAS,MAAQ,OAAQ,OAAS,MAAQ,OAAQ,OAAS,QAAS,IAAK,QAAS,OAAQ,OAAS,QAAS,QAAS,OAAS,QAAS,QAAS,QAAS,IAAK,QAAS,OAAS,QAAS,QAAS,OAAS,QAAS,MAAQ,QAAS,OAAS,OAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,QAAS,QAAS,OAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,QAAS,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EA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AAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACh5C,MAAMC,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACjkD,SAASC,MAAMp8O,GACb,OAAQA,EAAI,KAAO,CACrB,CACA,SAASq8O,OAAOr8O,GACd,OAAQA,EAAI,KAAO,CACrB,CACA,SAASs8O,YAAY7yO,EAAKiH,EAAOvS,GAC/B,IAAI0gB,EAAGitB,EACP,IAAKjtB,EAAInO,EAAOo7B,EAAKriC,EAAI5L,OAAQghB,EAAIitB,IAAMjtB,EACzC,GAAIpV,EAAIoV,KAAO1gB,EACb,OAAO0gB,EAGX,OAAOA,CACT,CACA,SAAS09N,UAAU9yO,EAAKiH,EAAON,EAAKjS,GAClC,IAAK,IAAI0gB,EAAInO,EAAOmO,EAAIzO,IAAOyO,EAC7BpV,EAAIoV,GAAK1gB,CAEb,CACA,SAASq+O,cAAc/yO,EAAKiH,EAAON,GACjC,IAAK,IAAIpQ,EAAI0Q,EAAOmO,EAAIzO,EAAM,EAAGpQ,EAAI6e,IAAK7e,IAAK6e,EAAG,CAChD,MAAM3b,EAAOuG,EAAIzJ,GACjByJ,EAAIzJ,GAAKyJ,EAAIoV,GACbpV,EAAIoV,GAAK3b,CACV,CACH,CACA,SAASu5O,eAAeh8O,EAAKi8O,EAAO5wN,EAAW,OAC7C,IAAI6wN,EAAM,MACN7wN,EACF6wN,EAAM,MACID,IACVC,EAAM,OAER,MAAO,CACLl8O,MACAk8O,MAEJ,CACA,MAAM/V,GAAQ,GACd,MAAMrsK,GAAQ,GACd,SAASqiL,KAAKn8O,EAAKo8O,GAAa,EAAI/wN,EAAW,OAC7C,IAAI4wN,EAAQ,KACZ,MAAMI,EAAYr8O,EAAI5C,OACtB,GAAIi/O,IAAc,GAAKhxN,EACrB,OAAO2wN,eAAeh8O,EAAKi8O,EAAO5wN,GAEpC86M,GAAM/oO,OAASi/O,EACfviL,GAAM18D,OAASi/O,EACf,IAAIC,EAAU,EACd,IAAI/8O,EAAGoH,EACP,IAAKpH,EAAI,EAAGA,EAAI88O,IAAa98O,EAAG,CAC9B4mO,GAAM5mO,GAAKS,EAAI6G,OAAOtH,GACtB,MAAMqH,EAAW5G,EAAIE,WAAWX,GAChC,IAAIg9O,EAAW,IACf,GAAI31O,GAAY,IACd21O,EAAWd,GAAU70O,QAChB,GAAI,MAAUA,GAAYA,GAAY,KAC3C21O,EAAW,SACN,GAAI,MAAU31O,GAAYA,GAAY,KAAQ,CACnD21O,EAAWb,GAAY90O,EAAW,KAC7B21O,GACHlgP,KAAK,mCAAqCuK,EAAS5E,SAAS,IAE/D,MAAU,MAAU4E,GAAYA,GAAY,MAAU,OAAUA,GAAYA,GAAY,OAAU,OAAUA,GAAYA,GAAY,SACnI21O,EAAW,MAETA,IAAa,KAAOA,IAAa,MAAQA,IAAa,MACxDD,IAEFxiL,GAAMv6D,GAAKg9O,CACZ,CACD,GAAID,IAAY,EAAG,CACjBL,EAAQ,KACR,OAAOD,eAAeh8O,EAAKi8O,EAC5B,CACD,GAAIG,KAAgB,EAClB,GAAIE,EAAUD,EAAY,IAAOA,EAAY,EAAG,CAC9CJ,EAAQ,KACRG,EAAa,CACnB,KAAW,CACLH,EAAQ,MACRG,EAAa,CACd,CAEH,MAAMI,EAAS,GACf,IAAKj9O,EAAI,EAAGA,EAAI88O,IAAa98O,EAC3Bi9O,EAAOj9O,GAAK68O,EAEd,MAAMnhO,EAAI0gO,MAAMS,GAAc,IAAM,IACpC,MAAMK,EAAMxhO,EACZ,MAAMyhO,EAAMD,EACZ,IAAIE,EAAWF,EACf,IAAKl9O,EAAI,EAAGA,EAAI88O,IAAa98O,EACvBu6D,GAAMv6D,KAAO,MACfu6D,GAAMv6D,GAAKo9O,EAEXA,EAAW7iL,GAAMv6D,GAGrBo9O,EAAWF,EACX,IAAIp3O,EACJ,IAAK9F,EAAI,EAAGA,EAAI88O,IAAa98O,EAAG,CAC9B8F,EAAIy0D,GAAMv6D,GACN8F,IAAM,KACRy0D,GAAMv6D,GAAKo9O,IAAa,KAAO,KAAO,KAC7Bt3O,IAAM,KAAOA,IAAM,KAAOA,IAAM,OACzCs3O,EAAWt3O,EAEd,CACD,IAAK9F,EAAI,EAAGA,EAAI88O,IAAa98O,EAAG,CAC9B8F,EAAIy0D,GAAMv6D,GACN8F,IAAM,OACRy0D,GAAMv6D,GAAK,IAEd,CACD,IAAKA,EAAI,EAAGA,EAAI88O,EAAY,IAAK98O,EAAG,CAC9Bu6D,GAAMv6D,KAAO,MAAQu6D,GAAMv6D,EAAI,KAAO,MAAQu6D,GAAMv6D,EAAI,KAAO,OACjEu6D,GAAMv6D,GAAK,MAETu6D,GAAMv6D,KAAO,MAASu6D,GAAMv6D,EAAI,KAAO,MAAQu6D,GAAMv6D,EAAI,KAAO,MAASu6D,GAAMv6D,EAAI,KAAOu6D,GAAMv6D,EAAI,KACtGu6D,GAAMv6D,GAAKu6D,GAAMv6D,EAAI,GAExB,CACD,IAAKA,EAAI,EAAGA,EAAI88O,IAAa98O,EAC3B,GAAIu6D,GAAMv6D,KAAO,KAAM,CACrB,IAAK,IAAI6e,EAAI7e,EAAI,EAAG6e,GAAK,IAAKA,EAAG,CAC/B,GAAI07C,GAAM17C,KAAO,KACf,MAEF07C,GAAM17C,GAAK,IACZ,CACD,IAAK,IAAIA,EAAI7e,EAAI,EAAG6e,EAAIi+N,IAAaj+N,EAAG,CACtC,GAAI07C,GAAM17C,KAAO,KACf,MAEF07C,GAAM17C,GAAK,IACZ,CACF,CAEH,IAAK7e,EAAI,EAAGA,EAAI88O,IAAa98O,EAAG,CAC9B8F,EAAIy0D,GAAMv6D,GACN8F,IAAM,MAAQA,IAAM,MAAQA,IAAM,MAAQA,IAAM,OAClDy0D,GAAMv6D,GAAK,KAEd,CACDo9O,EAAWF,EACX,IAAKl9O,EAAI,EAAGA,EAAI88O,IAAa98O,EAAG,CAC9B8F,EAAIy0D,GAAMv6D,GACN8F,IAAM,KACRy0D,GAAMv6D,GAAKo9O,IAAa,IAAM,IAAM,KAC3Bt3O,IAAM,KAAOA,IAAM,MAC5Bs3O,EAAWt3O,EAEd,CACD,IAAK9F,EAAI,EAAGA,EAAI88O,IAAa98O,EAC3B,GAAIu6D,GAAMv6D,KAAO,KAAM,CACrB,MAAMoQ,EAAMksO,YAAY/hL,GAAOv6D,EAAI,EAAG,MACtC,IAAIq9O,EAASH,EACTl9O,EAAI,IACNq9O,EAAS9iL,GAAMv6D,EAAI,IAErB,IAAIs9O,EAAQH,EACR/sO,EAAM,EAAI0sO,IACZQ,EAAQ/iL,GAAMnqD,EAAM,IAElBitO,IAAW,MACbA,EAAS,KAEPC,IAAU,MACZA,EAAQ,KAEND,IAAWC,GACbf,UAAUhiL,GAAOv6D,EAAGoQ,EAAKitO,GAE3Br9O,EAAIoQ,EAAM,CACX,CAEH,IAAKpQ,EAAI,EAAGA,EAAI88O,IAAa98O,EACvBu6D,GAAMv6D,KAAO,OACfu6D,GAAMv6D,GAAK0b,GAGf,IAAK1b,EAAI,EAAGA,EAAI88O,IAAa98O,EAAG,CAC9B8F,EAAIy0D,GAAMv6D,GACNq8O,OAAOY,EAAOj9O,IACZ8F,IAAM,IACRm3O,EAAOj9O,IAAM,EACJ8F,IAAM,MAAQA,IAAM,OAC7Bm3O,EAAOj9O,IAAM,GAEN8F,IAAM,KAAOA,IAAM,MAAQA,IAAM,OAC1Cm3O,EAAOj9O,IAAM,EAEhB,CACD,IAAIu9O,GAAgB,EACpB,IAAIC,EAAiB,GACrB,IAAIlhP,EACJ,IAAK0D,EAAI,EAAGoH,EAAK61O,EAAOp/O,OAAQmC,EAAIoH,IAAMpH,EAAG,CAC3C1D,EAAQ2gP,EAAOj9O,GACXu9O,EAAejhP,IACjBihP,EAAejhP,GAEbkhP,EAAiBlhP,GAAS8/O,MAAM9/O,KAClCkhP,EAAiBlhP,EAEpB,CACD,IAAKA,EAAQihP,EAAcjhP,GAASkhP,IAAkBlhP,EAAO,CAC3D,IAAIoU,GAAS,EACb,IAAK1Q,EAAI,EAAGoH,EAAK61O,EAAOp/O,OAAQmC,EAAIoH,IAAMpH,EACxC,GAAIi9O,EAAOj9O,GAAK1D,GACd,GAAIoU,GAAS,EAAG,CACd8rO,cAAc5V,GAAOl2N,EAAO1Q,GAC5B0Q,GAAS,CACV,OACQA,EAAQ,IACjBA,EAAQ1Q,GAGR0Q,GAAS,GACX8rO,cAAc5V,GAAOl2N,EAAOusO,EAAOp/O,OAEtC,CACD,IAAKmC,EAAI,EAAGoH,EAAKw/N,GAAM/oO,OAAQmC,EAAIoH,IAAMpH,EAAG,CAC1C,MAAM+S,EAAK6zN,GAAM5mO,GACb+S,IAAO,KAAOA,IAAO,MACvB6zN,GAAM5mO,GAAK,GAEd,CACD,OAAOy8O,eAAe7V,GAAMrmO,KAAK,IAAKm8O,EACxC,CAMA,MAAMe,GAAS,CACbC,MAAO,SACPpnO,OAAQ,UAEV,MAAMqnO,GAAO,CACXD,MAAO,SACPpnO,OAAQ,QAEV,MAAMsnO,GAAS,CACbF,MAAO,SACPpnO,OAAQ,UAEV,MAAMunO,GAAa,CACjBH,MAAO,SACPpnO,OAAQ,QAEV,MAAMwnO,GAAkB,IAAIn1O,IAAI,CAAC,CAAC,cAAe,CAC/Co1O,MAAO,CAAC,kBAAmB,cAAe,QAAS,mBAAoB,eAAgB,iBAAkB,QAAS,YAAa,kBAAmB,YAAa,oBAAqB,mBAAoB,eAAgB,uBAAwB,UAChPL,MAAOD,GACPO,SAAU,UACR,CAAC,aAAc,CACjBC,MAAO,cACPP,MAAOC,GACPK,SAAU,UACR,CAAC,eAAgB,CACnBC,MAAO,cACPP,MAAOE,GACPI,SAAU,UACR,CAAC,mBAAoB,CACvBC,MAAO,cACPP,MAAOG,GACPG,SAAU,UACR,CAAC,YAAa,CAChBD,MAAO,CAAC,YAAa,iBAAkB,QAAS,aAAc,kBAAmB,QAAS,cAAe,gBAAiB,OAAQ,iBAAkB,WAAY,cAAe,SAAU,sBAAuB,mBAAoB,uBAAwB,gBAAiB,aAC7QpqO,KAAM,6BACN+pO,MAAOD,GACPO,SAAU,eACR,CAAC,iBAAkB,CACrBC,MAAO,YACPtqO,KAAM,0BACN+pO,MAAOC,GACPK,SAAU,eACR,CAAC,oBAAqB,CACxBC,MAAO,YACPtqO,KAAM,4BACN+pO,MAAOE,GACPI,SAAU,eACR,CAAC,wBAAyB,CAC5BC,MAAO,YACPtqO,KAAM,gCACN+pO,MAAOG,GACPG,SAAU,eACR,CAAC,UAAW,CACdD,MAAO,CAAC,UAAW,cAAe,kBAAmB,cAAe,gBAAiB,UAAW,aAAc,kBAAmB,WAAY,yBAA0B,mBACvKL,MAAOD,GACPO,SAAU,cACR,CAAC,eAAgB,CACnBC,MAAO,UACPP,MAAOC,GACPK,SAAU,cACR,CAAC,kBAAmB,CACtBC,MAAO,UACPP,MAAOE,GACPI,SAAU,cACR,CAAC,sBAAuB,CAC1BC,MAAO,UACPP,MAAOG,GACPG,SAAU,cACR,CAAC,aAAc,CACjBD,MAAO,CAAC,eACRL,MAAO,CACLA,MAAO,SACPpnO,OAAQ,OAEV/C,SAAU,mBACR,CAAC,kBAAmB,CACtB0qO,MAAO,eACL,CAAC,oBAAqB,CACxBA,MAAO,aACPP,MAAO,CACLA,MAAO,SACPpnO,OAAQ,OAEV/C,SAAU,0BACR,CAAC,wBAAyB,CAC5B0qO,MAAO,sBACL,CAAC,cAAe,CAClBF,MAAO,CAAC,eAAgB,yBAA0B,sBAAuB,qBAAsB,qBAC/FL,MAAOD,GACPlqO,SAAU,cACR,CAAC,mBAAoB,CACvB0qO,MAAO,cACPP,MAAOC,GACPpqO,SAAU,mBACR,CAAC,qBAAsB,CACzB0qO,MAAO,cACPP,MAAOE,GACPrqO,SAAU,sBACR,CAAC,yBAA0B,CAC7B0qO,MAAO,cACPP,MAAOG,GACPtqO,SAAU,0BACR,CAAC,UAAW,CACdwqO,MAAO,CAAC,UAAW,WACnBL,MAAOD,GACPlqO,SAAU,cACR,CAAC,eAAgB,CACnB0qO,MAAO,UACPP,MAAOC,GACPpqO,SAAU,mBACR,CAAC,iBAAkB,CACrB0qO,MAAO,UACPP,MAAOE,GACPrqO,SAAU,sBACR,CAAC,qBAAsB,CACzB0qO,MAAO,UACPP,MAAOG,GACPtqO,SAAU,0BACR,CAAC,YAAa,CAChBwqO,MAAO,CAAC,YAAa,gBACrBL,MAAOD,KACL,CAAC,oBAAqB,CACxBQ,MAAO,cACL,CAAC,iBAAkB,CACrBA,MAAO,gBAET,MAAMC,GAAc,IAAIv1O,IAAI,CAAC,CAAC,cAAe,gBAC7C,SAASw1O,iBAAiBT,GACxB,OAAQA,GACN,KAAKC,GACH,MAAO,OACT,KAAKC,GACH,MAAO,SACT,KAAKC,GACH,MAAO,cACT,QACE,GAAIH,GAAOpnO,SAAW,OACpB,MAAO,OAET,GAAIonO,GAAOA,QAAU,SACnB,MAAO,SAGb,MAAO,EACT,CACA,SAASU,cAAc39O,GACrB,MAAM49O,EAAW,IAAIxwO,IAAI,CAAC,OAAQ,aAAc,aAAc,YAAa,YAAa,QAAS,OAAQ,UAAW,SAAU,SAAU,WAAY,WAAY,OAAQ,YAAa,YAAa,QAAS,QAAS,aAAc,aAAc,QAAS,SAAU,UAAW,iBAAkB,iBAAkB,YAAa,gBAAiB,SAAU,eAAgB,WAAY,gBAAiB,gBAAiB,eACxZ,OAAOpN,EAAIoT,MAAM,YAAY2Z,QAAO8wN,IAAQD,EAAS9xO,IAAI+xO,EAAI/rO,iBAAgBhS,KAAK,IACpF,CACA,SAASg+O,cAAaN,MACpBA,EAAKF,MACLA,EAAKpqO,KACLA,EAAIJ,SACJA,EAAQmqO,MACRA,EAAKM,SACLA,GACCngO,EAAK2gO,EAAeC,EAAc,KAAMC,EAAU,KAAMC,EAAS,IAClE,MAAM3sO,EAAS,CACb0rO,MAAO,KACPM,SAAU,MAEZ,GAAID,EAAO,CACT,MAAMa,EAAQD,EAAS,IAAIA,IAAW,GACtC,IAAK,MAAMjgP,KAAQq/O,EACjBlgO,EAAIvd,KAAK,SAAS5B,IAAOkgP,KAE5B,CACD,GAAIX,EAAO,CACT,MAAMY,EAAef,GAAgB7wP,IAAIgxP,GACzC,MAAMa,EAAcH,GAAUR,iBAAiBT,GAC/C5wP,OAAOktD,OAAOhoC,EAAQusO,aAAaM,EAAchhO,EAAK2gO,EAAeC,IAAgBlrO,EAAUmrO,IAAY/qO,EAAMmrO,GAClH,CACGpB,IACF1rO,EAAO0rO,MAAQA,GAEbM,IACFhsO,EAAOgsO,SAAWA,GAEpB,GAAIS,GAAelrO,EAAU,CAC3B,MAAMwrO,EAAejB,GAAgB7wP,IAAIsmB,GACzC,MACEyqO,SAAUgB,GACRT,aAAaQ,EAAclhO,EAAK2gO,EAAeC,EAAaC,IAAY/qO,EAAMgrO,GAClF3sO,EAAOgsO,WAAagB,CACrB,CACGN,GAAW/qO,GAAQ6qO,GACrB3gO,EAAIvd,KAAK,OAAOk+O,IAAgB7qO,MAElC,OAAO3B,CACT,CACA,SAASitO,oBAAoBC,EAAiBC,EAAWX,EAAeY,EAAcC,EAAkBrxP,GACtG,GAAIoxP,EAAa1hP,WAAW,qBAC1B,OAAO,KAEJ1P,IAAS,YAAcA,IAAS,UAAY,cAAc6nB,KAAKupO,KAClEA,EAAeA,EAAat7O,MAAM,IAEpCs7O,EAAevmC,kBAAkBumC,GACjC,MAAMxyP,EAAMwyP,EACZ,IAAIE,EAAmBJ,EAAgBjyP,IAAIL,GAC3C,GAAI0yP,EACF,OAAOA,EAET,IAAIT,EAAef,GAAgB7wP,IAAImyP,GACvC,IAAKP,EACH,IAAK,MAAOZ,EAAOsB,KAAUrB,GAC3B,GAAIkB,EAAa1hP,WAAWugP,GAAQ,CAClCmB,EAAe,GAAGG,IAAQH,EAAalrO,UAAU+pO,EAAMpgP,UACvDghP,EAAef,GAAgB7wP,IAAImyP,GACnC,KACD,CAGL,IAAII,EAAkB,MACtB,IAAKX,EAAc,CACjBA,EAAef,GAAgB7wP,IAAIoyP,GACnCG,EAAkB,IACnB,CACD,MAAM3+B,EAAa,GAAGs+B,EAAUM,eAAeN,EAAUO,iBACzD,IAAKb,EAAc,CACjB,IAAKrpO,iBAAiB4pO,GAAe,CACnCtiP,KAAK,mDAAmDsiP,KACxDF,EAAgB5yO,IAAI1f,EAAK,MACzB,OAAO,IACR,CACD,MAAMmuO,EAAO,SAASllN,KAAKupO,GAC3B,MAAMpkB,EAAS,mBAAmBnlN,KAAKupO,GACvC,MAAM1B,EAAQ3iB,GAAQC,GAAU6iB,IAAc9iB,GAAQ4iB,IAAQ3iB,GAAU4iB,IAAUH,GAClF6B,EAAmB,CACjBxlB,IAAK,IAAIskB,cAAcgB,OAAkBv+B,IACzCgZ,cAAe,KACfhZ,aACAu+B,eACAvhO,IAAK,SAASuhO,KACd1B,SAEFwB,EAAgB5yO,IAAI1f,EAAK0yP,GACzB,OAAOA,CACR,CACD,MAAMzhO,EAAM,GACR2hO,GAAmBhqO,iBAAiB4pO,IACtCvhO,EAAIvd,KAAK,SAAS8+O,MAEpB,MAAM1B,MACJA,EAAKM,SACLA,GACEO,aAAaM,EAAchhO,EAAK2gO,GACpC,MAAM3kB,EAAgBmkB,IAAa,KACnC,MAAMzqO,EAAWsmN,EAAgB,GAAK,IAAImkB,IAC1CsB,EAAmB,CACjBxlB,IAAK,IAAIskB,cAAcgB,OAAkBv+B,IAAattM,IACtDsmN,gBACAhZ,aACAu+B,eACAvhO,IAAKA,EAAItd,KAAK,KACdm9O,SAEFwB,EAAgB5yO,IAAI1f,EAAK0yP,GACzB,OAAOA,CACT,CAMA,MAAMK,GAAgB,KACtB,MAAMC,GAAgB,MACtB,MAAMC,GAAY,IAClB,MAAMC,aACJr6N,SAA2Bk6N,GAC3Bl6N,SAAkCnkB,YAAYG,wBAC9C,WAAA7C,CAAYmhP,EAASC,GACnBrhP,KAAKshP,SAAWF,EAChBphP,KAAKuhP,QAAUF,CAChB,CACD,6BAAW5sM,GACT,OAAOl1C,OAAOS,KAAM,qBAAsBA,MAAK8C,EAA2BC,aAAak2C,gBAAgB,aAAe7tC,QAAQI,QAAQ,OACvI,CACD,uBAAOg2O,CAAiBnoO,EAAOC,GAC7B,GAAID,GAASrZ,MAAKyhP,GAAqBnoO,GAAUtZ,MAAKyhP,EACpD,OAAO,MAET,MAAMC,QACJA,GACE1hP,KACJ,GAAIqZ,EAAQqoO,GAAWpoO,EAASooO,EAC9B,OAAO,KAET,MAAMC,EAAOtoO,EAAQC,EACrB,GAAItZ,KAAK4hP,YACP,OAAOD,EAAO3hP,KAAK6hP,SAErB,GAAIF,EAAO3hP,MAAKyhP,GAAqB,EACnC,OAAO,MAET,GAAIzhP,KAAK8hP,aAAazoO,EAAOC,GAAS,CACpCtZ,MAAKyhP,EAAoBlgP,KAAK+D,IAAItF,MAAKyhP,EAAmBlgP,KAAKkZ,MAAMlZ,KAAKuE,KAAKuT,EAAQC,KACvF,OAAO,KACR,CACDtZ,MAAKyhP,EAAoBzhP,KAAK+hP,UAAU/hP,MAAKyhP,EAAmBC,EAASR,GAAW,GACpF,MAAMc,EAAUhiP,KAAK6hP,SAAW7hP,MAAKyhP,GAAqB,EAC1D,OAAOE,EAAOK,CACf,CACD,kBAAWN,GACT,OAAOniP,OAAOS,KAAM,UAAWA,KAAK+hP,UAAUf,GAAeC,GAAe,EAAG,GAChF,CACD,mBAAWY,GACT7hP,KAAK4hP,YAAc,KACnB,OAAOriP,OAAOS,KAAM,WAAYA,KAAK+hP,UAAU/hP,MAAKyhP,EAAmBzhP,KAAK0hP,QAASR,GAAW,IAAM,EACvG,CACD,mBAAWW,CAASF,GAClB,GAAIA,GAAQ,EAAG,CACb3hP,KAAK4hP,YAAc,KACnBriP,OAAOS,KAAM,WAAY2hP,EAC1B,CACF,CACD,iBAAOzoM,EAAW+oM,qBAChBA,GAAuB,EAAEn/O,wBACzBA,EAA0B,QAErB9C,KAAK4hP,cACR5hP,KAAK6hP,SAAWI,GAAwB,GAE1CjiP,MAAK8C,EAA2BA,CACjC,CACD,mBAAOg/O,CAAazoO,EAAOC,GACzB,IACE,MAAM4oO,EAAS,IAAIr/O,gBAAgBwW,EAAOC,GAC1C,MAAM6oO,EAAMD,EAAOE,WAAW,MAC9BD,EAAIE,SAAS,EAAG,EAAG,EAAG,GACtB,MAAMC,EAAUH,EAAI5xO,aAAa,EAAG,EAAG,EAAG,GAAGuC,KAAK,GAClDovO,EAAO7oO,MAAQ6oO,EAAO5oO,OAAS,EAC/B,OAAOgpO,IAAY,CACzB,CAAM,MACA,OAAO,KACR,CACF,CACD,gBAAOP,CAAUhwO,EAAON,EAAK8wO,EAAWC,GACtC,MAAOzwO,EAAQwwO,EAAY,EAAI9wO,EAAK,CAClC,MAAMgxO,EAASlhP,KAAKkZ,OAAO1I,EAAQN,GAAO,GAC1C,MAAM6H,EAASkpO,GAAiBC,EAC5BziP,KAAK8hP,aAAaW,EAAQnpO,GAC5BvH,EAAQ0wO,EAERhxO,EAAMgxO,CAET,CACD,OAAO1wO,CACR,CACD,wBAAa2wO,CAAYtB,EAASC,EAAS,OACzC,OAAO,IAAIF,aAAaC,EAASC,GAAQsB,cAC1C,CACD,kBAAMA,GACJ,MACErB,SAAUF,GACRphP,KACJ,MAAMqZ,MACJA,EAAKC,OACLA,GACE8nO,EACJ,GAAI/nO,EAAQC,EAAS,EAAIpH,EAAY,CACnC,MAAMmB,EAASrT,MAAK4iP,IACpB,GAAIvvO,EACF,OAAOA,CAEV,CACD,MAAMP,EAAO9S,KAAK6iP,aAClB,IAAI36O,EAAS46O,EACb,SAAU3B,aAAa1sM,mBAAoB,CACzCvsC,EAAU,IAAInF,aAAa,CACzB+P,OACAzjB,KAAM,YACNwqD,gBAAiB,MACjBkpM,SAAU,CAACjwO,EAAKtQ,UAElBsgP,EAAe56O,EAAQI,SAASsV,OAAMC,IACpC1f,KAAK,8BAA8B0f,KACnC,OAAOmlO,kBAAkB,IAAIC,KAAK,CAACjjP,KAAK6iP,aAAargP,QAAS,CAC5DnT,KAAM,cACL,IACF6zP,SAAQ,KACTh7O,EAAQ6sB,OAAO,GAEvB,MACM+tN,EAAeE,kBAAkB,IAAIC,KAAK,CAACnwO,EAAKtQ,QAAS,CACvDnT,KAAM,eAGV,MAAMwyP,SACJA,EAAQH,QACRA,GACEP,aACJ,MAAMgC,EAAY5hP,KAAK+D,IAAI+T,EAAQqoO,EAASpoO,EAASooO,EAASngP,KAAKuE,KAAKuT,EAAQC,EAASuoO,IACzF,MAAMuB,EAAc7hP,KAAK+D,IAAI69O,EAAW,GACxC,MAAMv5B,EAASroN,KAAK+W,MAAM,IAAM6qO,EAAY,OAAS,GAAKC,EAC1D,MAAMz3N,EAAIpqB,KAAKkZ,MAAMlZ,KAAKsS,KAAK+1M,IAC/B,MAAMy5B,EAAQ,IAAI1/O,MAAMgoB,EAAI,GAAG1yB,KAAK,GACpCoqP,EAAM,GAAKD,EACXC,EAAMh1B,QAAQ,EAAG,EAAGzE,GAAU,GAAKj+L,IACnC,IAAI23N,EAAWjqO,EACf,IAAIkqO,EAAYjqO,EAChB,MAAMjG,QAAeyvO,EACrB,IAAIxpN,EAASjmB,EAAOymC,OAASzmC,EAC7B,IAAK,MAAMw3N,KAAQwY,EAAO,CACxB,MAAMG,EAAYF,EAClB,MAAMG,EAAaF,EACnBD,EAAW/hP,KAAKkZ,MAAM6oO,EAAWzY,GAAQ,EACzC0Y,EAAYhiP,KAAKkZ,MAAM8oO,EAAY1Y,GAAQ,EAC3C,MAAMqX,EAAS,IAAIr/O,gBAAgBygP,EAAUC,GAC7C,MAAMpB,EAAMD,EAAOE,WAAW,MAC9BD,EAAIuB,UAAUpqN,EAAQ,EAAG,EAAGkqN,EAAWC,EAAY,EAAG,EAAGH,EAAUC,GACnEjqN,EAAOvE,QACPuE,EAAS4oN,EAAOyB,uBACjB,CACDvC,EAAQtuO,KAAO,KACfsuO,EAAQ9nN,OAASA,EACjB8nN,EAAQ/nO,MAAQiqO,EAChBlC,EAAQ9nO,OAASiqO,EACjB,OAAOnC,CACR,CACD,EAAAwB,GACE,MACEtB,SAAUF,GACRphP,KACJ,MAAM8S,KACJA,EAAIuG,MACJA,EAAKC,OACLA,EAAM8yB,KACNA,GACEg1M,EACJ,MAAMwC,EAAWvqO,EAAQC,EAAS,EAClC,MAAM3iB,EAAI4K,KAAKuS,KAAKvS,KAAKsS,KAAK+vO,EAAW1xO,IACzC,MAAMoxO,EAAWjqO,GAAS1iB,EAC1B,MAAM4sP,EAAYjqO,GAAU3iB,EAC5B,IAAImiD,EACJ,IAAI+qM,EAAYvqO,EAChB,IACEw/B,EAAW,IAAI/2C,WAAW6hP,EAChC,CAAM,MACA,IAAI//O,EAAItC,KAAKkZ,MAAMlZ,KAAKsS,KAAK+vO,EAAW,IACxC,MAAO,KACL,IACE9qM,EAAW,IAAI/2C,WAAW,GAAK8B,EAAI,GACnC,KACV,CAAU,MACAA,GAAK,CACN,CAEHggP,EAAYtiP,KAAKkZ,OAAO,GAAK5W,EAAI,IAAMwV,EAAQ,IAC/C,MAAMgoC,EAAUhoC,EAAQwqO,EAAY,EAChCxiM,EAAUvI,EAAS55C,SACrB45C,EAAW,IAAI/2C,WAAWs/C,GAE7B,CACD,MAAMjhC,EAAQ,IAAI7d,YAAYu2C,EAASt2C,QACvC,MAAM6d,EAAS,IAAI9d,YAAY+gP,EAAWC,GAC1C,IAAIh3M,EAAS,EACb,IAAI1sB,EAAW,EACf,MAAMgrN,EAAOtpO,KAAKuS,KAAKwF,EAASuqO,GAChC,MAAMC,EAAYxqO,EAASuqO,IAAc,EAAIvqO,EAASA,EAASuqO,EAC/D,IAAK,IAAI39N,EAAI,EAAGA,EAAI2kN,EAAM3kN,IAAK,CAC7B,MAAMirB,EAAIjrB,EAAI2kN,EAAO,EAAIgZ,EAAYC,IAEnCv3M,UACEJ,cAAc,CAChBC,OACAltB,IAAKpM,EACLqM,KAAMiB,EACN/G,QACAC,OAAQ63B,EACR1E,cAAezsC,KAAKuhP,QACpBh1M,YAEF,IAAK,IAAIlrC,EAAI,EAAGoH,EAAK0oC,GAAKx6C,EAAG0K,EAAIoH,EAAIpH,IAAK,CACxC,MAAM4X,EAAMmH,EAAM1e,UAAUL,GAAK1K,GAAK0iB,GACtC,IAAK,IAAI6G,EAAI,EAAGA,EAAIojO,EAAUpjO,IAC5BG,EAAOR,KAAc5G,EAAIiH,GAAKvpB,EAEjC,CACF,CACD,GAAIwqP,aAAaK,iBAAiB8B,EAAUC,GAAY,CACtDnC,EAAQtuO,KAAOuN,EACf+gO,EAAQ/nO,MAAQiqO,EAChBlC,EAAQ9nO,OAASiqO,EACjBnC,EAAQh1M,KAAOn6C,EAAUG,WACzB,OAAO,IACR,CACD,MAAM8vP,EAAS,IAAIr/O,gBAAgBygP,EAAUC,GAC7C,MAAMpB,EAAMD,EAAOE,WAAW,KAAM,CAClC2B,mBAAoB,OAEtB5B,EAAI6B,aAAa,IAAIC,UAAU,IAAIpjO,kBAAkBR,EAAO7d,QAAS8gP,EAAUC,GAAY,EAAG,GAC9FnC,EAAQtuO,KAAO,KACfsuO,EAAQ9nN,OAAS4oN,EAAOyB,wBACxBvC,EAAQ/nO,MAAQiqO,EAChBlC,EAAQ9nO,OAASiqO,EACjB,OAAOnC,CACR,CACD,UAAAyB,GACE,MAAMxpO,MACJA,EAAKC,OACLA,EAAM8yB,KACNA,GACEpsC,KAAKshP,SACT,IAAIxuO,EAAO9S,KAAKshP,SAASxuO,KACzB,IAAIoxO,EACJ,IAAIC,EAAa,IAAIpiP,WAAW,GAChC,IAAIqiP,EAAYD,EAChB,IAAIE,EAAc,EAClB,OAAQj4M,GACN,KAAKn6C,EAAUC,eACb,CACEgyP,EAAc,EACdC,EAAa,IAAIpiP,WAAW/B,KAAKuhP,QAAU,CAAC,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,MAC1G,MAAM+C,EAASjrO,EAAQ,GAAK,EAC5B,MAAM+tB,EAAUk9M,EAAS,GAAK,EAC9B,GAAIA,IAAWl9M,EAAS,CACtB,MAAMm9M,EAAU,IAAIxiP,WAAWqlC,EAAU9tB,GACzC,IAAI4M,EAAI,EACR,IAAK,IAAI7kB,EAAI,EAAGoH,EAAK6Q,EAASgrO,EAAQjjP,EAAIoH,EAAIpH,GAAKijP,EAAQp+N,GAAKkhB,EAC9Dm9M,EAAQ52O,IAAImF,EAAKpR,SAASL,EAAGA,EAAIijP,GAASp+N,GAE5CpT,EAAOyxO,CACR,CACD,KACD,CACH,KAAKtyP,EAAUE,UAEX+xP,EAAc,GACd,GAAI7qO,EAAQ,EAAG,CACb,MAAMirO,EAAS,EAAIjrO,EACnB,MAAM+tB,EAAUk9M,EAAS,GAAK,EAC9B,MAAME,EAAWp9M,EAAUk9M,EAC3B,MAAMC,EAAU,IAAIxiP,WAAWqlC,EAAU9tB,GACzC,IAAI4M,EAAI,EACR,IAAK,IAAI7kB,EAAI,EAAGoH,EAAK6Q,EAASgrO,EAAQjjP,EAAIoH,EAAIpH,GAAKijP,EAAQ,CACzD,MAAMryN,EAAMnf,EAAKpR,SAASL,EAAGA,EAAIijP,GACjC,IAAK,IAAIpkO,EAAI,EAAGA,EAAIokO,EAAQpkO,GAAK,EAAG,CAClCqkO,EAAQr+N,KAAO+L,EAAI/R,EAAI,GACvBqkO,EAAQr+N,KAAO+L,EAAI/R,EAAI,GACvBqkO,EAAQr+N,KAAO+L,EAAI/R,EACpB,CACDgG,GAAKs+N,CACN,CACD1xO,EAAOyxO,CACnB,MACY,IAAK,IAAIljP,EAAI,EAAGoH,EAAKqK,EAAK5T,OAAQmC,EAAIoH,EAAIpH,GAAK,EAAG,CAChD,MAAMgsB,EAAMva,EAAKzR,GACjByR,EAAKzR,GAAKyR,EAAKzR,EAAI,GACnByR,EAAKzR,EAAI,GAAKgsB,CACf,CAEH,MAEJ,KAAKp7B,EAAUG,WACb8xP,EAAc,GACdG,EAAc,EACdD,EAAY,IAAIriP,WAAW,IAC3B,MAAM0iP,EAAO,IAAI97B,SAASy7B,EAAU5hP,QACpC,GAAIG,YAAYP,eAAgB,CAC9BqiP,EAAKv7B,UAAU,EAAG,IAAY,MAC9Bu7B,EAAKv7B,UAAU,EAAG,MAAY,MAC9Bu7B,EAAKv7B,UAAU,EAAG,SAAY,MAC9Bu7B,EAAKv7B,UAAU,GAAI,WAAY,KACzC,KAAe,CACLu7B,EAAKv7B,UAAU,EAAG,WAAY,MAC9Bu7B,EAAKv7B,UAAU,EAAG,SAAY,MAC9Bu7B,EAAKv7B,UAAU,EAAG,MAAY,MAC9Bu7B,EAAKv7B,UAAU,GAAI,IAAY,KAChC,CACD,MACF,QACE,MAAM,IAAI7qN,MAAM,kBAEpB,IAAIgD,EAAI,EACR,MAAMqjP,EAAe,GAAKN,EAAUllP,OACpC,MAAMylP,EAAa,GAAKD,EAAeP,EAAWjlP,OAAS4T,EAAK5T,OAChE,MAAM0lP,EAAU,IAAI7iP,WAAW4iP,GAC/B,MAAMF,EAAO,IAAI97B,SAASi8B,EAAQpiP,QAClCiiP,EAAKt7B,UAAU9nN,EAAG,MAAQ,MAC1BA,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAGsjP,EAAY,MAC9BtjP,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAG,EAAG,MACrBA,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAG,GAAKqjP,EAAeP,EAAWjlP,OAAQ,MACzDmC,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAGqjP,EAAc,MAChCrjP,GAAK,EACLojP,EAAKI,SAASxjP,EAAGgY,EAAO,MACxBhY,GAAK,EACLojP,EAAKI,SAASxjP,GAAIiY,EAAQ,MAC1BjY,GAAK,EACLojP,EAAKt7B,UAAU9nN,EAAG,EAAG,MACrBA,GAAK,EACLojP,EAAKt7B,UAAU9nN,EAAG6iP,EAAa,MAC/B7iP,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAGgjP,EAAa,MAC/BhjP,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAG,EAAG,MACrBA,GAAK,EACLojP,EAAKI,SAASxjP,EAAG,EAAG,MACpBA,GAAK,EACLojP,EAAKI,SAASxjP,EAAG,EAAG,MACpBA,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAG8iP,EAAWjlP,OAAS,EAAG,MACzCmC,GAAK,EACLojP,EAAKv7B,UAAU7nN,EAAG,EAAG,MACrBA,GAAK,EACLujP,EAAQj3O,IAAIy2O,EAAW/iP,GACvBA,GAAK+iP,EAAUllP,OACf0lP,EAAQj3O,IAAIw2O,EAAY9iP,GACxBA,GAAK8iP,EAAWjlP,OAChB0lP,EAAQj3O,IAAImF,EAAMzR,GAClB,OAAOujP,CACR,EAIH,MAAME,GAAO,WACb,MAAMC,GAAY,WAClB,MAAMC,GAAW,MACjB,MAAMC,eACJ,WAAAhlP,CAAYilP,GACVllP,KAAKqf,GAAK6lO,EAAOA,EAAO,WAAaJ,GACrC9kP,KAAKuf,GAAK2lO,EAAOA,EAAO,WAAaJ,EACtC,CACD,MAAAK,CAAO71N,GACL,IAAIxc,EAAM5T,EACV,UAAWowB,IAAU,SAAU,CAC7Bxc,EAAO,IAAI/Q,WAAWutB,EAAMpwB,OAAS,GACrCA,EAAS,EACT,IAAK,IAAImC,EAAI,EAAGoH,EAAK6mB,EAAMpwB,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC9C,MAAMlB,EAAOmvB,EAAMttB,WAAWX,GAC9B,GAAIlB,GAAQ,IACV2S,EAAK5T,KAAYiB,MACZ,CACL2S,EAAK5T,KAAYiB,IAAS,EAC1B2S,EAAK5T,KAAYiB,EAAO,GACzB,CACF,CACF,KAAM,KAAIsU,YAAYC,OAAO4a,GAI5B,MAAM,IAAIjxB,MAAM,wDAHhByU,EAAOwc,EAAMnqB,QACbjG,EAAS4T,EAAKD,UAGf,CACD,MAAMuyO,EAAclmP,GAAU,EAC9B,MAAMmmP,EAAanmP,EAASkmP,EAAc,EAC1C,MAAME,EAAa,IAAI/iP,YAAYuQ,EAAKtQ,OAAQ,EAAG4iP,GACnD,IAAIG,EAAK,EACPC,EAAK,EACP,IAAInmO,EAAKrf,KAAKqf,GACZE,EAAKvf,KAAKuf,GACZ,MAAMkmO,EAAK,WACTC,EAAK,UACP,MAAMC,EAASF,EAAKT,GAClBY,EAASF,EAAKV,GAChB,IAAK,IAAI3jP,EAAI,EAAGA,EAAI+jP,EAAa/jP,IAC/B,GAAIA,EAAI,EAAG,CACTkkP,EAAKD,EAAWjkP,GAChBkkP,EAAKA,EAAKE,EAAKV,GAAYQ,EAAKI,EAASX,GACzCO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKX,GAAYQ,EAAKK,EAASZ,GACzC3lO,GAAMkmO,EACNlmO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAK,EAAI,UACtB,KAAa,CACLmmO,EAAKF,EAAWjkP,GAChBmkP,EAAKA,EAAKC,EAAKV,GAAYS,EAAKG,EAASX,GACzCQ,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKE,EAAKX,GAAYS,EAAKI,EAASZ,GACzCzlO,GAAMimO,EACNjmO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAK,EAAI,UACf,CAEHgmO,EAAK,EACL,OAAQF,GACN,KAAK,EACHE,GAAMzyO,EAAKsyO,EAAc,EAAI,IAAM,GACrC,KAAK,EACHG,GAAMzyO,EAAKsyO,EAAc,EAAI,IAAM,EACrC,KAAK,EACHG,GAAMzyO,EAAKsyO,EAAc,GACzBG,EAAKA,EAAKE,EAAKV,GAAYQ,EAAKI,EAASX,GACzCO,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKX,GAAYQ,EAAKK,EAASZ,GACrCI,EAAc,EAChB/lO,GAAMkmO,EAENhmO,GAAMgmO,EAGZvlP,KAAKqf,GAAKA,EACVrf,KAAKuf,GAAKA,CACX,CACD,SAAAsmO,GACE,IAAIxmO,EAAKrf,KAAKqf,GACZE,EAAKvf,KAAKuf,GACZF,GAAME,IAAO,EACbF,EAAKA,EAAK,WAAa0lO,GAAY1lO,EAAK,MAAS2lO,GACjDzlO,EAAKA,EAAK,WAAawlO,IAAsC,YAAxBxlO,GAAM,GAAKF,IAAO,IAAmB0lO,MAAe,GACzF1lO,GAAME,IAAO,EACbF,EAAKA,EAAK,UAAa0lO,GAAY1lO,EAAK,MAAS2lO,GACjDzlO,EAAKA,EAAK,WAAawlO,IAAsC,YAAxBxlO,GAAM,GAAKF,IAAO,IAAmB0lO,MAAe,GACzF1lO,GAAME,IAAO,EACb,OAAQF,IAAO,GAAGvb,SAAS,IAAIC,SAAS,EAAG,MAAQwb,IAAO,GAAGzb,SAAS,IAAIC,SAAS,EAAG,IACvF,EAKH,SAAS+hP,SAASC,EAAaC,EAASC,EAASC,EAAWC,GAC1D,IAAI17L,EAAQs7L,EACZ,IAAK,IAAI1kP,EAAI,EAAGoH,EAAKu9O,EAAQ9mP,OAAS,EAAGmC,EAAIoH,EAAIpH,IAAK,CACpD,MAAM0R,EAAOizO,EAAQ3kP,GACrBopD,EAAQA,EAAM13C,KAAU,EACzB,CACD03C,EAAMu7L,EAAQhsN,IAAI,IAAM,CACtBisN,UACAC,YACAC,YAEJ,CACA,MAAMC,GAAe,GACrBN,SAASM,GAAc,CAACzuP,EAAIU,KAAMV,EAAIY,UAAWZ,EAAImF,wBAAyBnF,EAAIW,SAAU,MAAM,SAAS+tP,wBAAwBpa,EAAS5qO,GAC1I,MAAM62O,EAAUjM,EAAQiM,QACxB,MAAMoO,EAAara,EAAQsa,MAAQ,EACnC,MAAMx1O,GAAO1P,EAAIilP,GAAc,EAC/B,OAAQv1O,GACN,KAAK,EACH,OAAOmnO,EAAQ72O,KAAO1J,EAAIU,KAC5B,KAAK,EACH,OAAO6/O,EAAQ72O,KAAO1J,EAAIY,UAC5B,KAAK,EACH,OAAO2/O,EAAQ72O,KAAO1J,EAAImF,wBAC5B,KAAK,EACH,OAAOo7O,EAAQ72O,KAAO1J,EAAIW,QAE9B,MAAM,IAAI+F,MAAM,0CAA0C0S,IAC5D,IAAG,SAASy1O,sBAAsBva,EAAS5qO,GACzC,MAAMolP,EAAoC,GAC1C,MAAMC,EAAoC,IAC1C,MAAMC,EAAY,IAClB,MAAMC,EAAgB,EACtB,MAAM1O,EAAUjM,EAAQiM,QACtB2O,EAAY5a,EAAQ4a,UACtB,MAAMziM,EAAO6nL,EAAQsa,MACrB,MAAMD,EAAaliM,EAAO,EAC1B,MAAM0iM,EAAkB1iM,EAAO,EAC/B,MAAM2iM,EAAc3iM,EAAO,EAC3B,MAAMnjC,EAAQ1f,KAAKC,IAAID,KAAKkZ,OAAOpZ,EAAIilP,GAAc,GAAII,GACzD,GAAIzlO,EAAQwlO,EACV,OAAOplP,GAAKA,EAAIilP,GAAc,EAEhC,IAAI1rN,EAAO,EACX,MAAMzlB,EAAM,GACZ,IAAI6xO,EAAgB,EACpB,IAAIC,EAAWL,EACbM,EAAWN,EACb,IAAK,IAAI9gO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAK,CAC9B,MAAMvtB,EAAYsuP,EAAUC,GAAmBhhO,GAAK,IACpD,MAAMqhO,EAAMN,EAAUE,GAAejhO,GAAK,IAAI,GAC9C,GAAImhO,EAAWE,EAAI9tO,MAAQstO,EAAW,CACpC/rN,EAAOr5B,KAAK+D,IAAIs1B,EAAMqsN,GACtBC,GAAYF,EAAgB,EAAIJ,EAChCK,EAAW,EACXD,EAAgB,CACjB,CACD7xO,EAAIxT,KAAK,CACPpJ,YACAgP,EAAG0/O,EACHz/O,EAAG0/O,EACH9yD,EAAG+yD,EAAI9tO,MACP83B,EAAGg2M,EAAI7tO,SAET2tO,GAAYE,EAAI9tO,MAAQ,EAAIutO,EAC5BI,EAAgBzlP,KAAK+D,IAAI0hP,EAAeG,EAAI7tO,OAC7C,CACD,MAAM8tO,EAAW7lP,KAAK+D,IAAIs1B,EAAMqsN,GAAYL,EAC5C,MAAMS,EAAYH,EAAWF,EAAgBJ,EAC7C,MAAMxF,EAAU,IAAIr/O,WAAWqlP,EAAWC,EAAY,GACtD,MAAMC,EAAaF,GAAY,EAC/B,IAAK,IAAIthO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAK,CAC9B,MAAMhT,EAAO+zO,EAAUE,GAAejhO,GAAK,IAAI,GAAGhT,KAClD,MAAMs0B,EAAUjyB,EAAI2Q,GAAGsuK,GAAK,EAC5B,IAAI53H,EAAa,EACjB,IAAIxoD,EAASmB,EAAI2Q,GAAGve,EAAI4N,EAAI2Q,GAAGte,EAAI4/O,GAAY,EAC/ChG,EAAQzzO,IAAImF,EAAKpR,SAAS,EAAG0lC,GAAUpzB,EAASszO,GAChD,IAAK,IAAIphO,EAAI,EAAGoiC,EAAKnzC,EAAI2Q,GAAGqrB,EAAGjrB,EAAIoiC,EAAIpiC,IAAK,CAC1Ck7N,EAAQzzO,IAAImF,EAAKpR,SAAS86D,EAAYA,EAAap1B,GAAUpzB,GAC7DwoD,GAAcp1B,EACdpzB,GAAUszO,CACX,CACDlG,EAAQzzO,IAAImF,EAAKpR,SAAS86D,EAAap1B,EAASo1B,GAAaxoD,GAC7D,MAAOA,GAAU,EAAG,CAClBlB,EAAKkB,EAAS,GAAKlB,EAAKkB,GACxBlB,EAAKkB,EAAS,GAAKlB,EAAKkB,EAAS,GACjClB,EAAKkB,EAAS,GAAKlB,EAAKkB,EAAS,GACjClB,EAAKkB,EAAS,GAAKlB,EAAKkB,EAAS,GACjClB,EAAKkB,EAASozB,GAAWt0B,EAAKkB,EAASozB,EAAU,GACjDt0B,EAAKkB,EAASozB,EAAU,GAAKt0B,EAAKkB,EAASozB,EAAU,GACrDt0B,EAAKkB,EAASozB,EAAU,GAAKt0B,EAAKkB,EAASozB,EAAU,GACrDt0B,EAAKkB,EAASozB,EAAU,GAAKt0B,EAAKkB,EAASozB,EAAU,GACrDpzB,GAAUszO,CACX,CACF,CACD,MAAMH,EAAM,CACV9tO,MAAO+tO,EACP9tO,OAAQ+tO,GAEV,GAAIpb,EAAQrpO,2BAA4B,CACtC,MAAMs/O,EAAS,IAAIr/O,gBAAgBukP,EAAUC,GAC7C,MAAMlF,EAAMD,EAAOE,WAAW,MAC9BD,EAAI6B,aAAa,IAAIC,UAAU,IAAIpjO,kBAAkBugO,EAAQ5+O,QAAS4kP,EAAUC,GAAY,EAAG,GAC/FF,EAAI7tN,OAAS4oN,EAAOyB,wBACpBwD,EAAIr0O,KAAO,IACf,KAAS,CACLq0O,EAAI/6M,KAAOn6C,EAAUG,WACrB+0P,EAAIr0O,KAAOsuO,CACZ,CACDlJ,EAAQ7pB,OAAOi4B,EAAYrlO,EAAQ,EAAGtpB,EAAIoF,8BAC1C8pP,EAAUx4B,OAAOi4B,EAAYrlO,EAAQ,EAAG,CAACkmO,EAAKhyO,IAC9C,OAAOmxO,EAAa,CACtB,IACAR,SAASM,GAAc,CAACzuP,EAAIU,KAAMV,EAAIY,UAAWZ,EAAIgF,sBAAuBhF,EAAIW,SAAU,MAAM,SAASivP,sBAAsBtb,EAAS5qO,GACtI,MAAM62O,EAAUjM,EAAQiM,QACxB,MAAMoO,EAAara,EAAQsa,MAAQ,EACnC,MAAMx1O,GAAO1P,EAAIilP,GAAc,EAC/B,OAAQv1O,GACN,KAAK,EACH,OAAOmnO,EAAQ72O,KAAO1J,EAAIU,KAC5B,KAAK,EACH,OAAO6/O,EAAQ72O,KAAO1J,EAAIY,UAC5B,KAAK,EACH,OAAO2/O,EAAQ72O,KAAO1J,EAAIgF,sBAC5B,KAAK,EACH,OAAOu7O,EAAQ72O,KAAO1J,EAAIW,QAE9B,MAAM,IAAI+F,MAAM,wCAAwC0S,IAC1D,IAAG,SAASy2O,oBAAoBvb,EAAS5qO,GACvC,MAAMomP,EAA4B,GAClC,MAAMC,EAA4B,IAClC,MAAMC,EAAiC,IACvC,MAAMzP,EAAUjM,EAAQiM,QACtB2O,EAAY5a,EAAQ4a,UACtB,MAAMziM,EAAO6nL,EAAQsa,MACrB,MAAMD,EAAaliM,EAAO,EAC1B,MAAM0iM,EAAkB1iM,EAAO,EAC/B,MAAMwjM,EAAcxjM,EAAO,EAC3B,IAAInjC,EAAQ1f,KAAKkZ,OAAOpZ,EAAIilP,GAAc,GAC1C,GAAIrlO,EAAQwmO,EACV,OAAOpmP,GAAKA,EAAIilP,GAAc,EAEhC,IAAIuB,EAAc,MAClB,IAAIC,EAAYC,EAChB,MAAMC,EAAiBnB,EAAUe,GAAa,GAC9C,MAAMK,EAAqBpB,EAAUC,GAAiB,GACpDoB,EAAqBrB,EAAUC,GAAiB,GAChDqB,EAAqBtB,EAAUC,GAAiB,GAChDsB,EAAqBvB,EAAUC,GAAiB,GAClD,GAAIoB,IAAuBC,EAAoB,CAC7CN,EAAc,KACdC,EAAahB,EAAkB,EAC/B,IAAIuB,EAAST,EAAc,EAC3B,IAAK,IAAI9hO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAKgiO,GAAc,EAAGO,GAAU,EAAG,CAC5DN,EAAgBlB,EAAUiB,GAC1B,GAAIjB,EAAUwB,GAAQ,KAAOL,GAAkBD,EAAc,KAAOE,GAAsBF,EAAc,KAAOG,GAAsBH,EAAc,KAAOI,GAAsBJ,EAAc,KAAOK,EAAoB,CACnNtiO,EAAI2hO,EACNI,EAAc,MAEd5mO,EAAQ6E,EAEV,KACD,CACF,CACF,CACD,GAAI+hO,EAAa,CACf5mO,EAAQ1f,KAAKC,IAAIyf,EAAO0mO,GACxB,MAAMxf,EAAY,IAAI9iN,aAAapE,EAAQ,GAC3C6mO,EAAahB,EACb,IAAK,IAAIhhO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAKgiO,GAAc,EAAG,CAC/CC,EAAgBlB,EAAUiB,GAC1B3f,EAAUriN,GAAK,GAAKiiO,EAAc,GAClC5f,EAAqB,GAAVriN,GAAK,IAAUiiO,EAAc,EACzC,CACD7P,EAAQ7pB,OAAOi4B,EAAYrlO,EAAQ,EAAGtpB,EAAIsF,6BAC1C4pP,EAAUx4B,OAAOi4B,EAAYrlO,EAAQ,EAAG,CAAC+mO,EAAgBC,EAAoBC,EAAoBC,EAAoBC,EAAoBjgB,GAC7I,KAAS,CACLlnN,EAAQ1f,KAAKC,IAAIyf,EAAOymO,GACxB,MAAMY,EAAS,GACf,IAAK,IAAIxiO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAK,CAC9BiiO,EAAgBlB,EAAUC,GAAmBhhO,GAAK,IAClD,MAAMyiO,EAAa1B,EAAUe,GAAe9hO,GAAK,IAAI,GACrDwiO,EAAO3mP,KAAK,CACVmR,KAAMy1O,EAAWz1O,KACjBuG,MAAOkvO,EAAWlvO,MAClBC,OAAQivO,EAAWjvO,OACnB8+N,YAAamQ,EAAWnQ,YACxBn3N,MAAOsnO,EAAWtnO,MAClB1oB,UAAWwvP,GAEd,CACD7P,EAAQ7pB,OAAOi4B,EAAYrlO,EAAQ,EAAGtpB,EAAIiF,4BAC1CiqP,EAAUx4B,OAAOi4B,EAAYrlO,EAAQ,EAAG,CAACqnO,GAC1C,CACD,OAAOhC,EAAa,CACtB,IACAR,SAASM,GAAc,CAACzuP,EAAIU,KAAMV,EAAIY,UAAWZ,EAAIkF,kBAAmBlF,EAAIW,UAAU,SAAU2zO,GAC9F,MAAM4a,EAAY5a,EAAQ4a,UAC1B,MAAMC,EAAkB7a,EAAQsa,MAAQ,EACxC,OAAOM,EAAUC,GAAiB,KAAO,GAAKD,EAAUC,GAAiB,KAAO,CAClF,IAAG,SAAS0B,kBAAkBvc,EAAS5qO,GACrC,MAAM62O,EAAUjM,EAAQiM,QACtB2O,EAAY5a,EAAQ4a,UACtB,MAAMP,EAAara,EAAQsa,MAAQ,EACnC,MAAMx1O,GAAO1P,EAAIilP,GAAc,EAC/B,OAAQv1O,GACN,KAAK,EACH,OAAOmnO,EAAQ72O,KAAO1J,EAAIU,KAC5B,KAAK,EACH,GAAI6/O,EAAQ72O,KAAO1J,EAAIY,UACrB,OAAO,MAET,MAAMuuP,EAAkB7a,EAAQsa,MAAQ,EACxC,MAAM0B,EAAqBpB,EAAUC,GAAiB,GACtD,MAAMsB,EAAqBvB,EAAUC,GAAiB,GACtD,OAAID,EAAUxlP,GAAG,KAAO4mP,GAAsBpB,EAAUxlP,GAAG,KAAO,GAAKwlP,EAAUxlP,GAAG,KAAO,GAAKwlP,EAAUxlP,GAAG,KAAO+mP,EAItH,KAAK,EACH,GAAIlQ,EAAQ72O,KAAO1J,EAAIkF,kBACrB,OAAO,MAET,MAAM4rP,EAAaxc,EAAQsa,MAAQ,EACnC,MAAMmC,EAAgB7B,EAAU4B,GAAY,GAC5C,OAAI5B,EAAUxlP,GAAG,KAAOqnP,EAI1B,KAAK,EACH,OAAOxQ,EAAQ72O,KAAO1J,EAAIW,QAE9B,MAAM,IAAI+F,MAAM,oCAAoC0S,IACtD,IAAG,SAAUk7N,EAAS5qO,GACpB,MAAMsnP,EAAsB,EAC5B,MAAMC,EAAsB,IAC5B,MAAM1Q,EAAUjM,EAAQiM,QACtB2O,EAAY5a,EAAQ4a,UACtB,MAAMziM,EAAO6nL,EAAQsa,MACrB,MAAMD,EAAaliM,EAAO,EAC1B,MAAM0iM,EAAkB1iM,EAAO,EAC/B,MAAMqkM,EAAarkM,EAAO,EAC1B,MAAMskM,EAAgB7B,EAAU4B,GAAY,GAC5C,MAAMR,EAAqBpB,EAAUC,GAAiB,GACtD,MAAMsB,EAAqBvB,EAAUC,GAAiB,GACtD,MAAM7lO,EAAQ1f,KAAKC,IAAID,KAAKkZ,OAAOpZ,EAAIilP,GAAc,GAAIsC,GACzD,GAAI3nO,EAAQ0nO,EACV,OAAOtnP,GAAKA,EAAIilP,GAAc,EAEhC,MAAMne,EAAY,IAAI9iN,aAAapE,EAAQ,GAC3C,IAAI6mO,EAAahB,EACjB,IAAK,IAAIhhO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAKgiO,GAAc,EAAG,CAC/C,MAAMC,EAAgBlB,EAAUiB,GAChC3f,EAAUriN,GAAK,GAAKiiO,EAAc,GAClC5f,EAAqB,GAAVriN,GAAK,IAAUiiO,EAAc,EACzC,CACD,MAAMx8O,EAAO,CAACm9O,EAAeT,EAAoBG,EAAoBjgB,GACrE+P,EAAQ7pB,OAAOi4B,EAAYrlO,EAAQ,EAAGtpB,EAAIqF,yBAC1C6pP,EAAUx4B,OAAOi4B,EAAYrlO,EAAQ,EAAG1V,GACxC,OAAO+6O,EAAa,CACtB,IACAR,SAASM,GAAc,CAACzuP,EAAI+B,UAAW/B,EAAIqC,QAASrC,EAAI0C,cAAe1C,EAAI4C,SAAU5C,EAAIgC,SAAU,MAAM,SAASkvP,qBAAqB5c,EAAS5qO,GAC9I,MAAM62O,EAAUjM,EAAQiM,QACtB2O,EAAY5a,EAAQ4a,UACtB,MAAMP,EAAara,EAAQsa,MAAQ,EACnC,MAAMx1O,GAAO1P,EAAIilP,GAAc,EAC/B,OAAQv1O,GACN,KAAK,EACH,OAAOmnO,EAAQ72O,KAAO1J,EAAI+B,UAC5B,KAAK,EACH,OAAOw+O,EAAQ72O,KAAO1J,EAAIqC,QAC5B,KAAK,EACH,OAAOk+O,EAAQ72O,KAAO1J,EAAI0C,cAC5B,KAAK,EACH,GAAI69O,EAAQ72O,KAAO1J,EAAI4C,SACrB,OAAO,MAET,MAAMuuP,EAAgB7c,EAAQsa,MAAQ,EACtC,MAAMwC,EAAmBlC,EAAUiC,GAAe,GAClD,MAAME,EAAmBnC,EAAUiC,GAAe,GAClD,OAAIjC,EAAUxlP,GAAG,KAAO0nP,GAAoBlC,EAAUxlP,GAAG,KAAO2nP,EAIlE,KAAK,EACH,OAAO9Q,EAAQ72O,KAAO1J,EAAIgC,QAE9B,MAAM,IAAI0E,MAAM,uCAAuC0S,IACzD,IAAG,SAAUk7N,EAAS5qO,GACpB,MAAM4nP,EAAqB,EAC3B,MAAMC,EAAqB,IAC3B,MAAMhR,EAAUjM,EAAQiM,QACtB2O,EAAY5a,EAAQ4a,UACtB,MAAMziM,EAAO6nL,EAAQsa,MACrB,MAAM4C,EAAkB/kM,EAAO,EAC/B,MAAM0kM,EAAgB1kM,EAAO,EAC7B,MAAMglM,EAAsBhlM,EAAO,EACnC,MAAMilM,EAAiBjlM,EAAO,EAC9B,MAAMklM,EAAgBllM,EACtB,MAAM2kM,EAAmBlC,EAAUiC,GAAe,GAClD,MAAME,EAAmBnC,EAAUiC,GAAe,GAClD,IAAI7nO,EAAQ1f,KAAKC,IAAID,KAAKkZ,OAAOpZ,EAAI8nP,GAAmB,GAAID,GAC5D,GAAIjoO,EAAQgoO,EACV,OAAO5nP,GAAKA,EAAI8nP,GAAmB,EAErC,IAAII,EAASJ,EACb,GAAIA,GAAmB,GAAKjR,EAAQiR,EAAkB,KAAOjR,EAAQ4Q,IAAkB5Q,EAAQiR,EAAkB,KAAOjR,EAAQkR,IAAwBlR,EAAQiR,EAAkB,KAAOjR,EAAQmR,IAAmBnR,EAAQiR,EAAkB,KAAOjR,EAAQoR,IAAkBzC,EAAUsC,EAAkB,GAAG,KAAOJ,GAAoBlC,EAAUsC,EAAkB,GAAG,KAAOH,EAAkB,CAC/X/nO,IACAsoO,GAAU,CACX,CACD,IAAIC,EAAWD,EAAS,EACxB,IAAK,IAAIzjO,EAAI,EAAGA,EAAI7E,EAAO6E,IAAK,CAC9BoyN,EAAQ7pB,OAAOm7B,EAAU,GACzB3C,EAAUx4B,OAAOm7B,EAAU,GAC3BA,GAAY,CACb,CACD,OAAOA,EAAW,CACpB,IACA,MAAMC,cACJ,WAAAxpP,CAAYypP,GACV1pP,KAAK0pP,MAAQA,CACd,CACD,SAAAC,GAAc,CACd,IAAAhoP,CAAK2J,EAAIC,GACPvL,KAAK0pP,MAAMxR,QAAQv2O,KAAK2J,GACxBtL,KAAK0pP,MAAM7C,UAAUllP,KAAK4J,GAC1BvL,KAAK2pP,WACN,CACD,KAAAC,GAAU,CACV,KAAAh4O,GAAU,EAEZ,MAAMi4O,uBAAuBJ,cAC3B,WAAAxpP,CAAYypP,GACVtpP,MAAMspP,GACN1pP,KAAKyqD,MAAQ,KACbzqD,KAAKisO,QAAU,CACbsa,MAAO,EACPrO,QAASwR,EAAMxR,QACf2O,UAAW6C,EAAM7C,UACjBjkP,2BAA4B,OAE9B5C,KAAKf,MAAQ,KACbe,KAAK8pP,cAAgB,CACtB,CACD,8BAAIlnP,CAA2BpD,GAC7BQ,KAAKisO,QAAQrpO,2BAA6BpD,CAC3C,CACD,SAAAmqP,GACE,MAAMzR,EAAUl4O,KAAK0pP,MAAMxR,QAC3B,IAAI72O,EAAIrB,KAAK8pP,cACXrhP,EAAKyvO,EAAQh5O,OACf,IAAIurD,EAAQzqD,KAAKyqD,MACjB,IAAIxrD,EAAQe,KAAKf,MACjB,IAAKwrD,IAAUxrD,GAASoC,EAAI,IAAMoH,IAAO29O,GAAalO,EAAQ72O,IAAK,CACjErB,KAAK8pP,cAAgBrhP,EACrB,MACD,CACD,MAAMwjO,EAAUjsO,KAAKisO,QACrB,MAAO5qO,EAAIoH,EAAI,CACb,GAAIxJ,EAAO,CACT,MAAM8qP,GAAW,EAAG9qP,EAAMinP,WAAWja,EAAS5qO,GAC9C,GAAI0oP,EAAS,CACX1oP,IACA,QACD,CACDA,GAAK,EAAGpC,EAAMknP,WAAWla,EAAS5qO,EAAI,GACtCoH,EAAKyvO,EAAQh5O,OACbD,EAAQ,KACRwrD,EAAQ,KACR,GAAIppD,GAAKoH,EACP,KAEH,CACDgiD,GAASA,GAAS27L,IAAclO,EAAQ72O,IACxC,GAAKopD,IAAS9mD,MAAM2J,QAAQm9C,GAA5B,CAIAwhL,EAAQsa,MAAQllP,EAChBA,IACA,IAAIopD,EAAMw7L,UAAa,EAAGx7L,EAAMw7L,SAASha,GAAzC,CAIAhtO,EAAQwrD,EACRA,EAAQ,IAFP,MAFCA,EAAQ,IAJT,MAFCppD,GAWH,CACDrB,KAAKyqD,MAAQA,EACbzqD,KAAKf,MAAQA,EACbe,KAAK8pP,cAAgBzoP,CACtB,CACD,KAAAuoP,GACE,MAAO5pP,KAAKf,MAAO,CACjB,MAAMC,EAASc,KAAK0pP,MAAMxR,QAAQh5O,OAClCc,KAAK8pP,eAAiB,EAAG9pP,KAAKf,MAAMknP,WAAWnmP,KAAKisO,QAAS/sO,GAC7Dc,KAAKf,MAAQ,KACbe,KAAKyqD,MAAQ,KACbzqD,KAAK2pP,WACN,CACF,CACD,KAAA/3O,GACE5R,KAAKyqD,MAAQ,KACbzqD,KAAKf,MAAQ,KACbe,KAAK8pP,cAAgB,CACtB,EAEH,MAAME,aACJljO,kBAAoB,IACpBA,wBAA0B9mB,KAAKiqP,WAAa,EAC5C,WAAAhqP,CAAYiqP,EAAS,EAAGC,GACtBnqP,KAAKoqP,YAAcD,EACnBnqP,KAAKk4O,QAAU,GACfl4O,KAAK6mP,UAAY,GACjB7mP,KAAKqqP,WAAYF,GAAgBD,EAASt6P,EAAoBS,OAAqC,IAAIo5P,cAAczpP,MAA7C,IAAI6pP,eAAe7pP,MAC3FA,KAAKsqP,aAAe,IAAIp7O,IACxBlP,KAAKuqP,aAAe,EACpBvqP,KAAK2X,OAAS,EACd3X,KAAKwqP,UAAYL,EAAa,KAAO/+O,QAAQI,SAC9C,CACD,8BAAI5I,CAA2BpD,GAC7BQ,KAAKqqP,UAAUznP,2BAA6BpD,CAC7C,CACD,UAAIN,GACF,OAAOc,KAAK6mP,UAAU3nP,MACvB,CACD,SAAI01B,GACF,OAAO50B,KAAKwqP,WAAaxqP,KAAKoqP,YAAYx1N,KAC3C,CACD,eAAII,GACF,OAAOh1B,KAAKuqP,aAAevqP,KAAKd,MACjC,CACD,KAAAurP,CAAMn/O,EAAIC,GACRvL,KAAKqqP,UAAU1oP,KAAK2J,EAAIC,GACxBvL,KAAK2X,SACD3X,KAAKoqP,cACHpqP,KAAK2X,QAAUqyO,aAAaC,YAErBjqP,KAAK2X,QAAUqyO,aAAaU,mBAAqBp/O,IAAO3T,EAAIW,SAAWgT,IAAO3T,EAAIgC,WAD3FqG,KAAK4pP,OAKV,CACD,WAAAe,CAAYr/O,EAAIC,EAAMq/O,GAChBA,SAAoB7pP,GACtBf,KAAKyqP,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM2uP,IAEjD5qP,KAAKyqP,MAAMn/O,EAAIC,GACXq/O,SAAoB7pP,GACtBf,KAAKyqP,MAAM9yP,EAAIuE,iBAAkB,GAEpC,CACD,aAAA2uP,CAAcjzP,GACZ,IAAIoI,KAAKsqP,aAAa18O,IAAIhW,GAA1B,CAGAoI,KAAKsqP,aAAal7O,IAAIxX,GACtBoI,KAAKyqP,MAAM9yP,EAAIC,WAAY,CAACA,GAF3B,CAGF,CACD,eAAAkzP,CAAgBR,GACd,IAAK,MAAM1yP,KAAc0yP,EACvBtqP,KAAK6qP,cAAcjzP,EAEtB,CACD,SAAAmzP,CAAUC,GACR,GAAMA,aAAkBhB,aAAxB,CAIA,IAAK,MAAMpyP,KAAcozP,EAAOV,aAC9BtqP,KAAKsqP,aAAal7O,IAAIxX,GAExB,IAAK,IAAIyJ,EAAI,EAAGoH,EAAKuiP,EAAO9rP,OAAQmC,EAAIoH,EAAIpH,IAC1CrB,KAAKyqP,MAAMO,EAAO9S,QAAQ72O,GAAI2pP,EAAOnE,UAAUxlP,GALhD,MAFClD,KAAK,mDASR,CACD,KAAAyrO,GACE,MAAO,CACLsO,QAASl4O,KAAKk4O,QACd2O,UAAW7mP,KAAK6mP,UAChB3nP,OAAQc,KAAKd,OAEhB,CACD,cAAI+rP,GACF,MAAMC,EAAY,GAClB,MAAMhT,QACJA,EAAO2O,UACPA,EAAS3nP,OACTA,GACEc,KACJ,IAAK,IAAIqB,EAAI,EAAGA,EAAInC,EAAQmC,IAC1B,OAAQ62O,EAAQ72O,IACd,KAAK1J,EAAImF,wBACT,KAAKnF,EAAIoF,6BACT,KAAKpF,EAAIgF,sBACP,MAAM0pN,EAAMwgC,EAAUxlP,GAAG,IACpBglN,EAAI8kC,QAAU9kC,EAAIvzM,MAAMtQ,kBAAkBiS,aAC7Cy2O,EAAUvpP,KAAK0kN,EAAIvzM,KAAKtQ,QAE1B,MAGN,OAAO0oP,CACR,CACD,KAAAtB,CAAMhrO,EAAY,MAAOwsO,EAAiB,MACxCprP,KAAKqqP,UAAUT,QACf,MAAM1qP,EAASc,KAAKd,OACpBc,KAAKuqP,cAAgBrrP,EACrBc,KAAKoqP,YAAYiB,QAAQ,CACvBnT,QAASl4O,KAAKk4O,QACd2O,UAAW7mP,KAAK6mP,UAChBjoO,YACAwsO,iBACAlsP,UACC,EAAGc,KAAKirP,YACXjrP,KAAKsqP,aAAa97O,QAClBxO,KAAKk4O,QAAQh5O,OAAS,EACtBc,KAAK6mP,UAAU3nP,OAAS,EACxBc,KAAK2X,OAAS,EACd3X,KAAKqqP,UAAUz4O,OAChB,EAaH,SAAS05O,eAAe9rP,EAAO+rP,EAAQC,EAAalmP,GAClD9F,EAAQ+rP,EAAS/rP,EAAQgsP,EACrBhsP,EAAQ,EACVA,EAAQ,EACCA,EAAQ8F,IACjB9F,EAAQ8F,GAEV,OAAO9F,CACT,CACA,SAASisP,gBAAgBvsO,EAAKsC,EAAKpC,EAAIC,EAAIC,EAAIC,GAC7C,MAAMrgB,EAASogB,EAAKC,EACpB,IAAIJ,EAEFA,EADEqC,GAAO,EACF,IAAIzf,WAAW7C,GACbsiB,GAAO,GACT,IAAIzB,YAAY7gB,GAEhB,IAAIqD,YAAYrD,GAEzB,MAAMwgB,EAASN,EAAKE,EACpB,MAAMK,EAASN,EAAKE,EACpB,IAAIle,EACF6e,EACAD,EAEAL,EADAC,EAAW,EAEb,MAAMC,EAAU,IAAIC,YAAYT,GAChC,MAAMU,EAAaZ,EACnB,IAAK/d,EAAI,EAAGA,EAAIie,EAAIje,IAClBye,EAAQze,GAAKE,KAAKkZ,MAAMpZ,EAAIqe,GAE9B,IAAKre,EAAI,EAAGA,EAAIke,EAAIle,IAAK,CACvB4e,EAAK1e,KAAKkZ,MAAMpZ,EAAIse,GAAUK,EAC9B,IAAKE,EAAI,EAAGA,EAAIZ,EAAIY,IAAK,CACvBN,EAAWK,EAAKH,EAAQI,GACxBf,EAAKU,KAAcX,EAAIU,EACxB,CACF,CACD,OAAOT,CACT,CACA,MAAMusO,SACJ,WAAAzrP,EAAYqM,KACVA,EAAIi9N,IACJA,EAAGzvL,MACHA,EAAK6xM,SACLA,EAAW,MAAKC,MAChBA,EAAQ,KAAInkN,KACZA,EAAO,KAAI45M,OACXA,EAAS,MAAKl+N,mBACdA,EAAkBX,qBAClBA,IAEAxiB,KAAK85C,MAAQA,EACb,MAAMzrC,EAAOyrC,EAAMzrC,KACnB,MAAMwgB,EAASxgB,EAAK/f,IAAI,IAAK,UAC7B,IAAI09D,EACJ,GAAIn9B,aAAkB5iB,KACpB+/C,EAAan9B,EAAO9uB,UACf,GAAI4D,MAAM2J,QAAQuhB,GAAS,CAChC,MAAMo9B,EAAa3/C,EAAKiX,WAAWsL,EAAO,IACtCo9B,aAAsBhgD,OACxB+/C,EAAaC,EAAWlsD,KAE3B,CACD,OAAQisD,GACN,IAAK,cAED3yC,MAAOygC,EAAMzgC,MACbC,OAAQwgC,EAAMxgC,OACdi9B,gBAAiBuD,EAAMr5B,SACvB44B,iBAAkBS,EAAMT,kBACtBkM,SAASE,qBAAqB3L,EAAMt+B,SACxCs+B,EAAMt+B,OAAO5J,QACb5R,KAAK6rP,kBAAoB,CACvBn3M,cAAe,EACfgG,kBAAmB,MACnBC,YAAatsC,EAAKT,IAAI,gBAExB,MACF,IAAK,cACHksC,EAAMT,iBAAmB,EACzBS,EAAMr5B,SAAW,EACjB,MAEJ,IAAIpH,EAAQhL,EAAK/f,IAAI,IAAK,SAC1B,IAAIgrB,EAASjL,EAAK/f,IAAI,IAAK,UAC3B,GAAIsP,OAAOC,UAAUi8C,EAAMzgC,QAAUygC,EAAMzgC,MAAQ,GAAKzb,OAAOC,UAAUi8C,EAAMxgC,SAAWwgC,EAAMxgC,OAAS,IAAMwgC,EAAMzgC,QAAUA,GAASygC,EAAMxgC,SAAWA,GAAS,CAChKnb,KAAK,0FACLkb,EAAQygC,EAAMzgC,MACdC,EAASwgC,EAAMxgC,MAChB,CACD,GAAID,EAAQ,GAAKC,EAAS,EACxB,MAAM,IAAI3Y,YAAY,wBAAwB0Y,gBAAoBC,KAEpEtZ,KAAKqZ,MAAQA,EACbrZ,KAAKsZ,OAASA,EACdtZ,KAAKo4O,YAAc/pO,EAAK/f,IAAI,IAAK,eACjC0R,KAAK8rP,UAAYz9O,EAAK/f,IAAI,KAAM,cAAgB,MAChD0R,KAAK+rP,MAAQ19O,EAAK/f,IAAI,UAAY,MAClC,IAAI+qD,EAAmBS,EAAMT,iBAC7B,IAAKA,EAAkB,CACrBA,EAAmBhrC,EAAK/f,IAAI,MAAO,oBACnC,IAAK+qD,EAAkB,CACrB,IAAIr5C,KAAK8rP,UAGP,MAAM,IAAInrP,YAAY,wCAAwCX,KAAK8rP,aAFnEzyM,EAAmB,CAItB,CACF,CACDr5C,KAAKwhB,IAAM63B,EACX,IAAKr5C,KAAK8rP,UAAW,CACnB,IAAI1f,EAAa/9N,EAAKd,OAAO,OAASc,EAAKd,OAAO,cAClD,MAAMy+O,IAAkB5f,EACxB,GAAK4f,EAkBMhsP,KAAK6rP,mBAAmBlxM,cACjCyxL,EAAangO,KAAK3d,IAAI,oBAlBtB,GAAI0R,KAAK6rP,kBACPzf,EAAangO,KAAK3d,IAAI,mBAEtB,OAAQwrD,EAAMr5B,UACZ,KAAK,EACH2rN,EAAangO,KAAK3d,IAAI,cACtB,MACF,KAAK,EACH89O,EAAangO,KAAK3d,IAAI,aACtB,MACF,KAAK,EACH89O,EAAangO,KAAK3d,IAAI,cACtB,MACF,QACE,MAAM,IAAI+P,MAAM,eAAey7C,EAAMr5B,4CAM7CzgB,KAAKosO,WAAa5rN,WAAW6C,MAAM,CACjCJ,GAAImpN,EACJ9/N,OACA4W,UAAWyoO,EAAWpiB,EAAM,KAC5BpmN,qBACAX,yBAEFxiB,KAAKygB,SAAWzgB,KAAKosO,WAAW3rN,SAChC,GAAIzgB,KAAK6rP,kBAAmB,CAC1B7rP,KAAK6rP,kBAAkBn3M,cAAgBs3M,EAAgBhsP,KAAKisP,QAAU,EACtEjsP,KAAK6rP,kBAAkBnxM,kBAAoB16C,KAAKosO,WAAWrsO,OAAS,SACrE,CACF,CACDC,KAAKsI,OAAS+F,EAAKhB,SAAS,IAAK,UACjCrN,KAAKksP,YAAc,MACnB,GAAIlsP,KAAKsI,SAAWtI,KAAKosO,aAAepsO,KAAKosO,WAAW9qN,gBAAgBthB,KAAKsI,OAAQ+wC,IAAqBgoM,IAAW7gO,WAAWc,gBAAgBthB,KAAKsI,OAAQ,IAAK,CAChKtI,KAAKksP,YAAc,KACnB,MAAM5mP,GAAO,GAAK+zC,GAAoB,EACtCr5C,KAAKmsP,mBAAqB,GAC1BnsP,KAAKosP,cAAgB,GACrB,MAAMC,EAAYrsP,KAAKosO,YAAYrsO,OAAS,UAC5C,IAAK,IAAIsB,EAAI,EAAG6e,EAAI,EAAG7e,EAAIrB,KAAKsI,OAAOpJ,OAAQmC,GAAK,IAAK6e,EAAG,CAC1D,MAAM05N,EAAO55O,KAAKsI,OAAOjH,GACzB,MAAMw4O,EAAO75O,KAAKsI,OAAOjH,EAAI,GAC7BrB,KAAKmsP,mBAAmBjsO,GAAKmsO,GAAaxS,EAAOD,GAAQt0O,EAAMu0O,EAAOD,EACtE55O,KAAKosP,cAAclsO,GAAKmsO,EAAYzS,EAAOt0O,EAAMs0O,CAClD,CACF,CACD,GAAIgS,EACF5rP,KAAK4rP,MAAQ,IAAIF,SAAS,CACxBp/O,OACAi9N,MACAzvL,MAAO8xM,EACPD,WACAxoO,qBACAX,8BAEG,GAAIilB,EACT,GAAIA,aAAgBv3B,WAAY,CAC9B,MAAMo8O,EAAW7kN,EAAKp5B,KACpBy9O,EAAYQ,EAASh+P,IAAI,KAAM,aAC5Bw9P,EAGH9rP,KAAKynC,KAAO,IAAIikN,SAAS,CACvBp/O,OACAi9N,MACAzvL,MAAOrS,EACPkkN,WACAtK,OAAQ,KACRl+N,qBACAX,yBATFrkB,KAAK,8CAYf,MACQ6B,KAAKynC,KAAOA,CAGjB,CACD,uBAAa8kN,EAAWjgP,KACtBA,EAAIi9N,IACJA,EAAGzvL,MACHA,EAAK6xM,SACLA,EAAW,MAAKxoO,mBAChBA,EAAkBX,qBAClBA,IAEA,MAAM24B,EAAYrB,EAClB,IAAI0yM,EAAY,KAChB,IAAIC,EAAW,KACf,MAAMb,EAAQ9xM,EAAMzrC,KAAK/f,IAAI,SAC7B,MAAMm5C,EAAOqS,EAAMzrC,KAAK/f,IAAI,QACxBs9P,EACEA,aAAiB17O,WACnBs8O,EAAYZ,EAEZztP,KAAK,8BAEEspC,IACLA,aAAgBv3B,YAAcvM,MAAM2J,QAAQm6B,GAC9CglN,EAAWhlN,EAEXtpC,KAAK,8BAGT,OAAO,IAAIutP,SAAS,CAClBp/O,OACAi9N,MACAzvL,MAAOqB,EACPwwM,WACAC,MAAOY,EACP/kN,KAAMglN,EACNtpO,qBACAX,wBAEH,CACD,oBAAOkqO,EAAcC,SACnBA,EAAQtzO,MACRA,EAAKC,OACLA,EAAMszO,wBACNA,EAAuBngN,cACvBA,EAAa2rM,YACbA,IAEA,MAAMyU,GAAkBxzO,EAAQ,GAAK,GAAKC,EAC1C,MAAMm4M,EAAek7B,EAAS95O,WAC9B,MAAMi6O,EAAeD,IAAmBp7B,EACxC,IAAI3+M,EAAMzR,EACV,IAAIurP,GAA6BngN,IAAiBqgN,EAE3C,GAAKrgN,EAEL,CACL35B,EAAO,IAAI/Q,WAAW8qP,GACtB/5O,EAAKnF,IAAIg/O,GACT75O,EAAK7Z,KAAK,IAAMw4N,EACjB,MALC3+M,EAAO,IAAI/Q,WAAW4qP,QAFtB75O,EAAO65O,EAQT,GAAIlgN,EACF,IAAKprC,EAAI,EAAGA,EAAIowN,EAAcpwN,IAC5ByR,EAAKzR,IAAM,IAGf,MAAO,CACLyR,OACAuG,QACAC,SACA8+N,cAEH,CACD,uBAAa2U,EAAWJ,SACtBA,EAAQtzO,MACRA,EAAKC,OACLA,EAAMszO,wBACNA,EAAuBngN,cACvBA,EAAa2rM,YACbA,EAAWx1O,2BACXA,EAA6B,QAE7B,MAAMoqP,EAAsB3zO,IAAU,GAAKC,IAAW,GAAKmzB,KAAmBkgN,EAASztP,SAAW,MAAQytP,EAAS,GAAK,MACxH,GAAIK,EACF,MAAO,CACLA,uBAGJ,GAAIpqP,EAA4B,CAC9B,GAAIu+O,aAAaK,iBAAiBnoO,EAAOC,GAAS,CAChD,MAAMxG,EAAO,IAAI+N,kBAAkBxH,EAAQC,EAAS,GACpD+yB,2BAA2B,CACzBntB,IAAKytO,EACLxtO,KAAMrM,EACNuG,QACAC,SACAkzB,cAAe,EACfC,kBAEF,OAAO00M,aAAauB,YAAY,CAC9Bt2M,KAAMn6C,EAAUG,WAChB0gB,OACAuG,QACAC,SACA8+N,eAEH,CACD,MAAM8J,EAAS,IAAIr/O,gBAAgBwW,EAAOC,GAC1C,MAAM6oO,EAAMD,EAAOE,WAAW,MAC9B,MAAMhB,EAAUe,EAAI8K,gBAAgB5zO,EAAOC,GAC3C+yB,2BAA2B,CACzBntB,IAAKytO,EACLxtO,KAAMiiO,EAAQtuO,KACduG,QACAC,SACAkzB,cAAe,EACfC,kBAEF01M,EAAI6B,aAAa5C,EAAS,EAAG,GAC7B,MAAM9nN,EAAS4oN,EAAOyB,wBACtB,MAAO,CACL7wO,KAAM,KACNuG,QACAC,SACA8+N,cACA9+M,SAEH,CACD,OAAOt5B,KAAK0sP,cAAc,CACxBC,WACAtzO,QACAC,SACAmzB,gBACAmgN,0BACAxU,eAEH,CACD,aAAIz+L,GACF,OAAOp4C,KAAK+D,IAAItF,KAAKqZ,MAAOrZ,KAAK4rP,OAAOvyO,OAAS,EAAGrZ,KAAKynC,MAAMpuB,OAAS,EACzE,CACD,cAAIugC,GACF,OAAOr4C,KAAK+D,IAAItF,KAAKsZ,OAAQtZ,KAAK4rP,OAAOtyO,QAAU,EAAGtZ,KAAKynC,MAAMnuB,QAAU,EAC5E,CACD,YAAA4zO,CAAa1qP,GACX,MAAMgf,EAAMxhB,KAAKwhB,IACjB,MAAMf,EAAWzgB,KAAKygB,SACtB,MAAM2rO,EAAgBpsP,KAAKosP,cAC3B,MAAMD,EAAqBnsP,KAAKmsP,mBAChC,MAAM7mP,GAAO,GAAKkc,GAAO,EACzB,IAAIngB,EAAGoH,EACP,GAAI+Y,IAAQ,EAAG,CACb,IAAKngB,EAAI,EAAGoH,EAAKjG,EAAOtD,OAAQmC,EAAIoH,EAAIpH,IACtCmB,EAAOnB,KAAOmB,EAAOnB,GAEvB,MACD,CACD,IAAI8pC,EAAQ,EACZ,IAAK9pC,EAAI,EAAGoH,EAAKzI,KAAKqZ,MAAQrZ,KAAKsZ,OAAQjY,EAAIoH,EAAIpH,IACjD,IAAK,IAAI6e,EAAI,EAAGA,EAAIO,EAAUP,IAAK,CACjC1d,EAAO2oC,GAASmgN,eAAe9oP,EAAO2oC,GAAQihN,EAAclsO,GAAIisO,EAAmBjsO,GAAI5a,GACvF6lC,GACD,CAEJ,CACD,aAAAgiN,CAAc3qP,GACZ,MAAMgf,EAAMxhB,KAAKwhB,IACjB,GAAIA,IAAQ,EACV,OAAOhf,EAET,MAAM6W,EAAQrZ,KAAKqZ,MACnB,MAAMC,EAAStZ,KAAKsZ,OACpB,MAAMmH,EAAWzgB,KAAKygB,SACtB,MAAMvhB,EAASma,EAAQC,EAASmH,EAChC,IAAI2sO,EAAY,EAChB,IAAI/1M,EAEFA,EADE71B,GAAO,EACA,IAAIzf,WAAW7C,GACfsiB,GAAO,GACP,IAAIzB,YAAY7gB,GAEhB,IAAIqD,YAAYrD,GAE3B,MAAMmuP,EAAWh0O,EAAQoH,EACzB,MAAMnb,GAAO,GAAKkc,GAAO,EACzB,IACE/Y,EACAwQ,EAFE5X,EAAI,EAGR,GAAImgB,IAAQ,EAAG,CACb,IAAIimB,EAAM6lN,EAAUC,EACpB,IAAK,IAAIrtO,EAAI,EAAGA,EAAI5G,EAAQ4G,IAAK,CAC/BotO,EAAWjsP,GAAKgsP,GAAW,GAC3BE,EAAWlsP,EAAIgsP,EACf,MAAOhsP,EAAIisP,EAAU,CACnBr0O,EAAMzW,EAAO4qP,KACb/1M,EAAOh2C,GAAK4X,GAAO,EAAI,EACvBo+B,EAAOh2C,EAAI,GAAK4X,GAAO,EAAI,EAC3Bo+B,EAAOh2C,EAAI,GAAK4X,GAAO,EAAI,EAC3Bo+B,EAAOh2C,EAAI,GAAK4X,GAAO,EAAI,EAC3Bo+B,EAAOh2C,EAAI,GAAK4X,GAAO,EAAI,EAC3Bo+B,EAAOh2C,EAAI,GAAK4X,GAAO,EAAI,EAC3Bo+B,EAAOh2C,EAAI,GAAK4X,GAAO,EAAI,EAC3Bo+B,EAAOh2C,EAAI,GAAK4X,EAAM,EACtB5X,GAAK,CACN,CACD,GAAIA,EAAIksP,EAAU,CAChBt0O,EAAMzW,EAAO4qP,KACb3lN,EAAO,IACP,MAAOpmC,EAAIksP,EAAU,CACnBl2M,EAAOh2C,SAAW4X,EAAMwuB,GACxBA,IAAS,CACV,CACF,CACF,CACP,KAAW,CACL,IAAIvmB,EAAO,EACXjI,EAAM,EACN,IAAK5X,EAAI,EAAGoH,EAAKvJ,EAAQmC,EAAIoH,IAAMpH,EAAG,CACpC,GAAIA,EAAIgsP,IAAa,EAAG,CACtBp0O,EAAM,EACNiI,EAAO,CACR,CACD,MAAOA,EAAOM,EAAK,CACjBvI,EAAMA,GAAO,EAAIzW,EAAO4qP,KACxBlsO,GAAQ,CACT,CACD,MAAMssO,EAAgBtsO,EAAOM,EAC7B,IAAIhiB,EAAQyZ,GAAOu0O,EACfhuP,EAAQ,EACVA,EAAQ,EACCA,EAAQ8F,IACjB9F,EAAQ8F,GAEV+xC,EAAOh2C,GAAK7B,EACZyZ,IAAQ,GAAKu0O,GAAiB,EAC9BtsO,EAAOssO,CACR,CACF,CACD,OAAOn2M,CACR,CACD,iBAAMo2M,CAAYC,EAASr0O,EAAOC,EAAQsI,EAAck4B,GACtD,MAAM8xM,EAAQ5rP,KAAK4rP,MACnB,MAAMnkN,EAAOznC,KAAKynC,KAClB,IAAIkmN,EAAUC,EAAIC,EAAIxsP,EAAGoH,EAAIyX,EAC7B,GAAI0rO,EAAO,CACTgC,EAAKhC,EAAMvyO,MACXw0O,EAAKjC,EAAMtyO,OACXq0O,EAAW,IAAI9sO,kBAAkB+sO,EAAKC,SAChCjC,EAAMkC,eAAeH,GACvBC,IAAOv0O,GAASw0O,IAAOv0O,IACzBq0O,EAAWlC,gBAAgBkC,EAAU/B,EAAMpqO,IAAKosO,EAAIC,EAAIx0O,EAAOC,GAElE,MAAM,GAAImuB,EACT,GAAIA,aAAgBikN,SAAU,CAC5BkC,EAAKnmN,EAAKpuB,MACVw0O,EAAKpmN,EAAKnuB,OACVq0O,EAAW,IAAI9sO,kBAAkB+sO,EAAKC,GACtCpmN,EAAKhnB,SAAW,QACVgnB,EAAKqmN,eAAeH,GAC1B,IAAKtsP,EAAI,EAAGoH,EAAKmlP,EAAKC,EAAIxsP,EAAIoH,IAAMpH,EAClCssP,EAAStsP,GAAK,IAAMssP,EAAStsP,GAE3BusP,IAAOv0O,GAASw0O,IAAOv0O,IACzBq0O,EAAWlC,gBAAgBkC,EAAUlmN,EAAKjmB,IAAKosO,EAAIC,EAAIx0O,EAAOC,GAEjE,KAAM,KAAI3V,MAAM2J,QAAQm6B,GAiBvB,MAAM,IAAI9mC,YAAY,wBAjBQ,CAC9BgtP,EAAW,IAAI9sO,kBAAkBxH,EAAQC,GACzC,MAAMmH,EAAWzgB,KAAKygB,SACtB,IAAKpf,EAAI,EAAGoH,EAAK4Q,EAAQC,EAAQjY,EAAIoH,IAAMpH,EAAG,CAC5C,IAAIihP,EAAU,EACd,MAAMyL,EAAc1sP,EAAIof,EACxB,IAAKP,EAAI,EAAGA,EAAIO,IAAYP,EAAG,CAC7B,MAAMkI,EAAQ0xB,EAAMi0M,EAAc7tO,GAClC,MAAM8tO,EAAa9tO,EAAI,EACvB,GAAIkI,EAAQqf,EAAKumN,IAAe5lO,EAAQqf,EAAKumN,EAAa,GAAI,CAC5D1L,EAAU,IACV,KACD,CACF,CACDqL,EAAStsP,GAAKihP,CACf,CACT,CAEO,CAEH,GAAIqL,EACF,IAAKtsP,EAAI,EAAG6e,EAAI,EAAGzX,EAAK4Q,EAAQuI,EAAcvgB,EAAIoH,IAAMpH,EAAG6e,GAAK,EAC9DwtO,EAAQxtO,GAAKytO,EAAStsP,QAGxB,IAAKA,EAAI,EAAG6e,EAAI,EAAGzX,EAAK4Q,EAAQuI,EAAcvgB,EAAIoH,IAAMpH,EAAG6e,GAAK,EAC9DwtO,EAAQxtO,GAAK,GAGlB,CACD,YAAA+tO,CAAazrP,EAAQ6W,EAAOC,GAC1B,MAAMyyO,EAAQ/rP,KAAK4rP,OAAOG,MAC1B,IAAKA,EACH,OAEF,MAAMmC,EAAWluP,KAAKosO,WAAW1rN,OAAOqrO,EAAO,GAC/C,MAAMoC,EAASD,EAAS,GACxB,MAAME,EAASF,EAAS,GACxB,MAAMG,EAASH,EAAS,GACxB,MAAMhvP,EAASma,EAAQC,EAAS,EAChC,IAAK,IAAIjY,EAAI,EAAGA,EAAInC,EAAQmC,GAAK,EAAG,CAClC,MAAMogG,EAAQj/F,EAAOnB,EAAI,GACzB,GAAIogG,IAAU,EAAG,CACfj/F,EAAOnB,GAAK,IACZmB,EAAOnB,EAAI,GAAK,IAChBmB,EAAOnB,EAAI,GAAK,IAChB,QACD,CACD,MAAM6kB,EAAI,IAAMu7E,EAChBj/F,EAAOnB,IAAMmB,EAAOnB,GAAK8sP,GAAUjoO,EAAIioO,EACvC3rP,EAAOnB,EAAI,IAAMmB,EAAOnB,EAAI,GAAK+sP,GAAUloO,EAAIkoO,EAC/C5rP,EAAOnB,EAAI,IAAMmB,EAAOnB,EAAI,GAAKgtP,GAAUnoO,EAAImoO,CAChD,CACF,CACD,qBAAMpB,CAAgBr0M,EAAY,MAAOh2C,EAA6B,OACpE,MAAM+2C,EAAY35C,KAAK25C,UACvB,MAAMC,EAAa55C,KAAK45C,WACxB,MAAMwnM,EAAU,CACd/nO,MAAOsgC,EACPrgC,OAAQsgC,EACRw+L,YAAap4O,KAAKo4O,YAClBhsM,KAAM,EACNt5B,KAAM,MAER,MAAM2N,EAAWzgB,KAAKygB,SACtB,MAAMiB,EAAgB1hB,KAAKqZ,MAC3B,MAAMsI,EAAiB3hB,KAAKsZ,OAC5B,MAAMkI,EAAMxhB,KAAKwhB,IACjB,MAAMomC,EAAWlmC,EAAgBjB,EAAWe,EAAM,GAAK,EACvD,MAAM8sO,EAAgB1rP,GAA8Bu+O,aAAaK,iBAAiB7nM,EAAWC,GAC7F,IAAK55C,KAAK4rP,QAAU5rP,KAAKynC,MAAQznC,KAAKosO,WAAWrsO,OAAS,aAAc,CACtEqhP,EAAQh1M,KAAOn6C,EAAUG,WACzB,MAAMu6P,EAAWvL,EAAQtuO,WAAa9S,KAAKuuP,cAAc5sO,EAAiBD,EAAgB,EAAG,CAAA,GAC7F,OAAI9e,EACG0rP,EAGEnN,aAAauB,YAAYtB,EAAS,OAFhCphP,KAAKwuP,aAAav8P,EAAUG,WAAYunD,EAAWC,EAAY+yM,GAInEvL,CACR,CACD,IAAKxoM,EAAW,CACd,IAAIxM,EACApsC,KAAKosO,WAAWrsO,OAAS,cAAgByhB,IAAQ,EACnD4qB,EAAOn6C,EAAUC,eACR8N,KAAKosO,WAAWrsO,OAAS,aAAeyhB,IAAQ,GAAMxhB,KAAKksP,cACpE9/M,EAAOn6C,EAAUE,WAEnB,GAAIi6C,IAASpsC,KAAK4rP,QAAU5rP,KAAKynC,MAAQkS,IAAcj4B,GAAiBk4B,IAAej4B,EAAgB,CACrG,MAAMm4B,QAAc95C,MAAKyuP,EAAU/sO,EAAeC,GAClD,GAAIm4B,EACF,OAAOA,EAET,MAAMhnC,QAAa9S,KAAKuuP,cAAc5sO,EAAiBimC,EAAU,CAAA,GACjE,GAAIhlD,EACF,OAAI0rP,EACKnN,aAAauB,YAAY,CAC9B5vO,OACAs5B,OACA/yB,MAAOsgC,EACPrgC,OAAQsgC,EACRw+L,YAAap4O,KAAKo4O,aACjBp4O,KAAKksP,aAEHlsP,KAAKwuP,aAAapiN,EAAM1qB,EAAeC,EAAgB7O,GAEhEsuO,EAAQh1M,KAAOA,EACfg1M,EAAQtuO,KAAOA,EACf,GAAI9S,KAAKksP,YAAa,CACpB5tP,OAAO8tC,IAASn6C,EAAUC,eAAgB,0DAC1C,MAAMsQ,EAAS4+O,EAAQtuO,KACvB,IAAK,IAAIzR,EAAI,EAAGoH,EAAKjG,EAAOtD,OAAQmC,EAAIoH,EAAIpH,IAC1CmB,EAAOnB,IAAM,GAEhB,CACD,OAAO+/O,CACR,CACD,GAAIphP,KAAK85C,iBAAiBd,aAAeh5C,KAAK4rP,QAAU5rP,KAAKynC,OAASznC,KAAKksP,YAAa,CACtF,IAAIwC,EAAc/sO,EAAiBimC,EACnC,GAAIhlD,IAA+B0rP,EAAe,CAChD,IAAIK,EAAY,MAChB,OAAQ3uP,KAAKosO,WAAWrsO,MACtB,IAAK,aACH2uP,GAAe,EACfC,EAAY,KACZ,MACF,IAAK,YACHD,EAAcA,EAAc,EAAI,EAChCC,EAAY,KACZ,MACF,IAAK,aACHA,EAAY,KACZ,MAEJ,GAAIA,EAAW,CACb,MAAM70M,QAAc95C,MAAKyuP,EAAU90M,EAAWC,GAC9C,GAAIE,EACF,OAAOA,EAET,MAAMp2B,QAAa1jB,KAAKuuP,cAAcG,EAAa,CACjD/0M,YACAC,aACAhB,UAAW,OAEb,OAAO54C,KAAKwuP,aAAav8P,EAAUG,WAAYunD,EAAWC,EAAYl2B,EACvE,CACX,MACU,OAAQ1jB,KAAKosO,WAAWrsO,MACtB,IAAK,aACH2uP,GAAe,EACjB,IAAK,YACL,IAAK,aACHtN,EAAQh1M,KAAOn6C,EAAUE,UACzBivP,EAAQtuO,WAAa9S,KAAKuuP,cAAcG,EAAa,CACnD/0M,YACAC,aACAf,SAAU,OAEZ,OAAIy1M,EACKnN,aAAauB,YAAYtB,GAE3BA,EAGd,CACF,CACD,MAAMuL,QAAiB3sP,KAAKuuP,cAAc5sO,EAAiBimC,EAAU,CACnEgnM,SAAU,OAEZ,MAAMhtO,EAAe,EAAI+qO,EAASztP,OAAS0oD,EAAWhO,EAAaj4B,EACnE,MAAME,EAAQ7hB,KAAKmtP,cAAcR,GACjC,IAAIntO,EAASqvO,EACb,IAAI3M,EAAQC,EAAK2M,EAAeh8O,EAChC,GAAIlQ,IAA+B0rP,EAAe,CAChDpM,EAAS,IAAIr/O,gBAAgB82C,EAAWC,GACxCuoM,EAAMD,EAAOE,WAAW,MACxB0M,EAAgB3M,EAAI8K,gBAAgBtzM,EAAWC,GAC/C9mC,EAAOg8O,EAAch8O,IACtB,CACDsuO,EAAQh1M,KAAOn6C,EAAUG,WACzB,GAAKwmD,GAAc54C,KAAK4rP,OAAU5rP,KAAKynC,KAWhC,CACA7kC,IAA8B0rP,IACjCx7O,EAAO,IAAI+N,kBAAkB84B,EAAYC,EAAa,IAExDp6B,EAAU,EACVqvO,EAAoB,WACd7uP,KAAKytP,YAAY36O,EAAM6mC,EAAWC,EAAYh4B,EAAcC,EACnE,KAlB4C,CAC3C,IAAKjf,GAA8B0rP,EAAe,CAChDlN,EAAQh1M,KAAOn6C,EAAUE,UACzB2gB,EAAO,IAAI+N,kBAAkB84B,EAAYC,EAAa,GACtDp6B,EAAU,CAClB,KAAa,CACL,MAAM1U,EAAM,IAAIvI,YAAYuQ,EAAKtQ,QACjCsI,EAAI7R,KAAK0J,YAAYP,eAAiB,WAAa,KACnDod,EAAU,CACX,CACDqvO,EAAoB,KAC1B,CAQQ7uP,KAAKksP,aACPlsP,KAAKktP,aAAarrO,GAEpB7hB,KAAKosO,WAAW3qN,QAAQ3O,EAAM4O,EAAeC,EAAgBg4B,EAAWC,EAAYh4B,EAAcJ,EAAKK,EAAOrC,GAC1GqvO,GACF7uP,KAAKiuP,aAAan7O,EAAM6mC,EAAW/3B,GAErC,GAAIhf,IAA+B0rP,EAAe,CAChDnM,EAAI6B,aAAa8K,EAAe,EAAG,GACnC,MAAMx1N,EAAS4oN,EAAOyB,wBACtB,MAAO,CACL7wO,KAAM,KACNuG,MAAOsgC,EACPrgC,OAAQsgC,EACRtgB,SACA8+M,YAAap4O,KAAKo4O,YAErB,CACDgJ,EAAQtuO,KAAOA,EACf,OAAIw7O,EACKnN,aAAauB,YAAYtB,GAE3BA,CACR,CACD,oBAAM0M,CAAetrP,GACnB,MAAMie,EAAWzgB,KAAKygB,SACtB,GAAIA,IAAa,EACf,MAAM,IAAI9f,YAAY,0CAA0C8f,KAElE,MAAMpH,EAAQrZ,KAAKqZ,MACnB,MAAMC,EAAStZ,KAAKsZ,OACpB,MAAMkI,EAAMxhB,KAAKwhB,IACjB,MAAMomC,EAAWvuC,EAAQoH,EAAWe,EAAM,GAAK,EAC/C,MAAMmrO,QAAiB3sP,KAAKuuP,cAAcj1O,EAASsuC,EAAU,CAC3DgnM,SAAU,OAEZ,MAAM/sO,EAAQ7hB,KAAKmtP,cAAcR,GACjC,IAAItrP,EAAGnC,EACP,GAAIsiB,IAAQ,EAAG,CACbtiB,EAASma,EAAQC,EACjB,GAAItZ,KAAKksP,YACP,IAAK7qP,EAAI,EAAGA,EAAInC,IAAUmC,EACxBmB,EAAOnB,GAAKwgB,EAAMxgB,GAAK,EAAI,SAG7B,IAAKA,EAAI,EAAGA,EAAInC,IAAUmC,EACxBmB,EAAOnB,GAAiB,KAAXwgB,EAAMxgB,GAGvB,MACD,CACGrB,KAAKksP,aACPlsP,KAAKktP,aAAarrO,GAEpB3iB,EAASma,EAAQC,EACjB,MAAMgM,EAAQ,MAAQ,GAAK9D,GAAO,GAClC,IAAKngB,EAAI,EAAGA,EAAInC,IAAUmC,EACxBmB,EAAOnB,GAAKikB,EAAQzD,EAAMxgB,EAE7B,CACD,YAAAmtP,CAAapiN,EAAM/yB,EAAOC,EAAQ4F,GAChC,MAAMgjO,EAAS,IAAIr/O,gBAAgBwW,EAAOC,GAC1C,MAAM6oO,EAAMD,EAAOE,WAAW,MAC9B,IAAIhB,EACJ,GAAIh1M,IAASn6C,EAAUG,WACrBgvP,EAAU,IAAI6C,UAAU/kO,EAAK7F,EAAOC,OAC/B,CACL8nO,EAAUe,EAAI8K,gBAAgB5zO,EAAOC,GACrC6yB,cAAc,CACZC,OACAltB,MACAC,KAAM,IAAI5c,YAAY6+O,EAAQtuO,KAAKtQ,QACnC6W,QACAC,SACAmzB,cAAezsC,KAAKksP,aAEvB,CACD/J,EAAI6B,aAAa5C,EAAS,EAAG,GAC7B,MAAM9nN,EAAS4oN,EAAOyB,wBACtB,MAAO,CACL7wO,KAAM,KACNuG,QACAC,SACAggB,SACA8+M,YAAap4O,KAAKo4O,YAErB,CACD,OAAMqW,CAAUp1O,EAAOC,GACrB,MAAMggB,QAAet5B,KAAK85C,MAAMlpC,uBAChC,OAAK0oB,EAGE,CACLxmB,KAAM,KACNuG,QACAC,SACAggB,SACA8+M,YAAap4O,KAAKo4O,aAPX,IASV,CACD,mBAAMmW,CAAcrvP,GAAQy6C,UAC1BA,EAASC,WACTA,EAAUhB,UACVA,EAAY,MAAKC,SACjBA,EAAW,MAAK+1M,SAChBA,EAAW,QAEX5uP,KAAK85C,MAAMloC,QACX5R,KAAK85C,MAAMH,UAAYA,GAAa35C,KAAKqZ,MACzCrZ,KAAK85C,MAAMF,WAAaA,GAAc55C,KAAKsZ,OAC3CtZ,KAAK85C,MAAMlB,YAAcA,EACzB54C,KAAK85C,MAAMjB,WAAaA,EACxB,MAAMk2M,QAAmB/uP,KAAK85C,MAAMvpC,aAAarR,EAAQc,KAAK6rP,mBAC9D,GAAI+C,GAAY5uP,KAAK85C,iBAAiB/rB,aACpC,OAAOghO,EAETzwP,OAAOywP,aAAsBhtP,WAAY,0DACzC,OAAO,IAAIA,WAAWgtP,EACvB,EAgCH,MAAMC,GAAiC7gQ,OAAO8gQ,OAAO,CACnDC,cAAe,EACf/0B,gBAAiB,MACjBg1B,aAAc,MACd1sP,gBAAiB,KACjBG,2BAA4B,MAC5BE,wBAAyB,MACzBm/O,sBAAuB,EACvBmN,oBAAqB,MACrBC,eAAgB,KAChBC,QAAS,KACTC,oBAAqB,OAEvB,MAAMC,GAAc,CAClBC,OAAQ,EACRC,QAAS,GAEX,MAAMC,GAAwB,GAC9B,MAAMC,GAAWxkP,QAAQI,UACzB,SAASqkP,mBAAmBrwP,EAAOswP,EAAe,OAChD,GAAInsP,MAAM2J,QAAQ9N,GAAQ,CACxB,IAAK,MAAMqnB,KAAOrnB,EAAO,CACvB,MAAMuwP,EAAUF,mBAAmBhpO,EAAK,MACxC,GAAIkpO,EACF,OAAOA,CAEV,CACD5xP,KAAK,iCAAiCqB,KACtC,MAAO,aACR,CACD,KAAMA,aAAiByM,MACrB,OAAI6jP,EACK,KAEF,cAET,OAAQtwP,EAAMO,MACZ,IAAK,SACL,IAAK,aACH,MAAO,cACT,IAAK,WACH,MAAO,WACT,IAAK,SACH,MAAO,SACT,IAAK,UACH,MAAO,UACT,IAAK,SACH,MAAO,SACT,IAAK,UACH,MAAO,UACT,IAAK,aACH,MAAO,cACT,IAAK,YACH,MAAO,aACT,IAAK,YACH,MAAO,aACT,IAAK,YACH,MAAO,aACT,IAAK,aACH,MAAO,aACT,IAAK,YACH,MAAO,YACT,IAAK,MACH,MAAO,MACT,IAAK,aACH,MAAO,aACT,IAAK,QACH,MAAO,QACT,IAAK,aACH,MAAO,aAEX,GAAI+vP,EACF,OAAO,KAET3xP,KAAK,2BAA2BqB,EAAMO,QACtC,MAAO,aACT,CACA,SAASiwP,yBAAyBhF,EAAQl4O,GACpCA,EAAKtG,OACPw+O,EAAOH,cAAc/3O,EAAKtG,OAE5Bw+O,EAAOL,YAAY73O,EAAKxH,GAAIwH,EAAKvH,KAAMuH,EAAK83O,iBACxC93O,EAAKxH,KAAO3T,EAAIgF,uBAAyBmW,EAAKvH,KAAK,IAAI0V,MAAQ,GACjEnO,EAAKvH,KAAK,GAAG0V,OAEjB,CACA,MAAMgvO,gBACJnpO,6BAA+B,GAC/BA,wBAA0B,IAC1B,WAAA7mB,GACED,KAAK4R,OACN,CACD,KAAAgkB,GACE,KAAM51B,KAAKkwP,QAAUD,gBAAgBE,iBACnC,OAAO,MAETnwP,KAAKkwP,QAAU,EACf,OAAOlwP,KAAKowP,SAAW9mP,KAAK+mP,KAC7B,CACD,KAAAz+O,GACE5R,KAAKowP,QAAU9mP,KAAK+mP,MAAQJ,gBAAgBK,sBAC5CtwP,KAAKkwP,QAAU,CAChB,EAEH,MAAMK,iBACJ,WAAAtwP,EAAYqM,KACVA,EAAIkkP,QACJA,EAAO53O,UACPA,EAAS4nO,UACTA,EAASiQ,UACTA,EAASC,iBACTA,EAAgBC,sBAChBA,EAAqBC,iBACrBA,EAAgBrQ,gBAChBA,EAAe1hP,QACfA,EAAU,OAEVmB,KAAKsM,KAAOA,EACZtM,KAAKwwP,QAAUA,EACfxwP,KAAK4Y,UAAYA,EACjB5Y,KAAKwgP,UAAYA,EACjBxgP,KAAKywP,UAAYA,EACjBzwP,KAAK0wP,iBAAmBA,EACxB1wP,KAAK2wP,sBAAwBA,EAC7B3wP,KAAK4wP,iBAAmBA,EACxB5wP,KAAKugP,gBAAkBA,EACvBvgP,KAAKnB,QAAUA,GAAWmwP,GAC1BhvP,KAAK6wP,cAAgB,KACrB7wP,KAAK8wP,oBAAsB,IAAIhb,mBAC/B91O,KAAK+wP,uBAAyB/wP,KAAKiyD,iBAAiB11C,KAAKvc,MACzDmhP,aAAajoM,WAAWl5C,KAAKnB,SAC7Bm6C,WAAWE,WAAWl5C,KAAKnB,QAC5B,CACD,uBAAImyP,GACF,MAAM7tO,EAAqB,IAAI2zN,mBAAmB,CAChDxqO,KAAMtM,KAAKsM,KACX7J,gBAAiBzC,KAAKnB,QAAQ4D,kBAEhC,OAAOlD,OAAOS,KAAM,sBAAuBmjB,EAC5C,CACD,oBAAI8tO,GACF,QAASjxP,KAAK6wP,aACf,CACD,KAAApiP,CAAMyiP,EAAa,MACjB,MAAMC,EAAehjQ,OAAO0d,OAAO7L,MACnCmxP,EAAatyP,QAAU1Q,OAAOktD,OAAOltD,OAAO0d,OAAO,MAAO7L,KAAKnB,QAASqyP,GACxE,OAAOC,CACR,CACD,aAAAC,CAAcluO,EAAWmuO,GACvB,KAAMnuO,aAAqB7W,MACzB,OAAO,MAET,GAAI6W,EAAU1W,OAAS6kP,EAAiBzjP,IAAIsV,EAAU1W,OACpD,OAAO,MAET,MAAM2qC,EAAY,IAAIpoC,OAAOsiP,GACzBnuO,EAAU1W,OACZ2qC,EAAUhoC,IAAI+T,EAAU1W,OAE1B,MAAM8kP,EAAQ,CAACpuO,GACb5W,EAAOtM,KAAKsM,KACd,MAAOglP,EAAMpyP,OAAQ,CACnB,MAAMwqC,EAAO4nN,EAAMriO,QACnB,MAAMsiO,EAAgB7nN,EAAKp7C,IAAI,aAC/B,GAAIijQ,aAAyBllP,KAC3B,IAAK,IAAImlP,KAAgBD,EAAc9jP,eAAgB,CACrD,GAAI+jP,aAAwBvkP,IAAK,CAC/B,GAAIkqC,EAAUvpC,IAAI4jP,GAChB,SAEF,IACEA,EAAellP,EAAKY,MAAMskP,EAC3B,CAAC,MAAOhpP,GACP2uC,EAAUhoC,IAAIqiP,GACdzzP,KAAK,wCAAwCyK,OAC7C,QACD,CACF,CACD,KAAMgpP,aAAwBnlP,MAC5B,SAEEmlP,EAAahlP,OACf2qC,EAAUhoC,IAAIqiP,EAAahlP,OAE7B,MAAMilP,EAAKD,EAAaljQ,IAAI,MAC5B,GAAImjQ,aAAcxlP,MAChB,GAAIwlP,EAAG1xP,OAAS,SACd,OAAO,UAIX,GAAI0xP,SAAO1wP,GAAa4C,MAAM2J,QAAQmkP,GACpC,IAAK,MAAM57O,KAAW47O,EACpB,GAAI57O,aAAmB5J,MAAQ4J,EAAQ9V,OAAS,SAC9C,OAAO,IAId,CAEH,MAAM2xP,EAAWhoN,EAAKp7C,IAAI,WAC1B,GAAMojQ,aAAoBrlP,KAG1B,IAAK,IAAIslP,KAAWD,EAASjkP,eAAgB,CAC3C,GAAIkkP,aAAmB1kP,IAAK,CAC1B,GAAIkqC,EAAUvpC,IAAI+jP,GAChB,SAEF,IACEA,EAAUrlP,EAAKY,MAAMykP,EACtB,CAAC,MAAOnpP,GACP2uC,EAAUhoC,IAAIwiP,GACd5zP,KAAK,sCAAsCyK,OAC3C,QACD,CACF,CACD,KAAMmpP,aAAmBzhP,YACvB,SAEEyhP,EAAQtjP,KAAK7B,OACf2qC,EAAUhoC,IAAIwiP,EAAQtjP,KAAK7B,OAE7B,MAAMolP,EAAaD,EAAQtjP,KAAK/f,IAAI,aACpC,GAAMsjQ,aAAsBvlP,QAGxBulP,EAAWplP,QAAS2qC,EAAUvpC,IAAIgkP,EAAWplP,QAAjD,CAGA8kP,EAAM3vP,KAAKiwP,GACPA,EAAWplP,OACb2qC,EAAUhoC,IAAIyiP,EAAWplP,MAH1B,CAKF,CACF,CACD,IAAK,MAAMoC,KAAOuoC,EAChBk6M,EAAiBliP,IAAIP,GAEvB,OAAO,KACR,CACD,OAAMijP,CAAWpzP,GACf,MAAM29C,QAAiBlvC,MAAMzO,GAC7B,IAAK29C,EAASI,GACZ,MAAM,IAAIn+C,MAAM,yBAAyBI,YAAc29C,EAAS01M,gBAElE,OAAO,IAAI/vP,iBAAiBq6C,EAAS3iC,cACtC,CACD,sBAAMw4C,CAAiBlyD,GACrB,MAAMqmD,EAAapmD,KAAK0wP,iBAAiBpiQ,IAAIyR,GAC7C,GAAIqmD,EACF,OAAOA,EAET,IAAItzC,EACJ,GAAI9S,KAAKnB,QAAQywP,UAAY,KAAM,CACjC,MAAM98L,QAAiBxyD,MAAK6xP,EAAW,GAAG7xP,KAAKnB,QAAQywP,UAAUvvP,WACjE+S,EAAO,CACL0/C,WACAC,aAAc,KAEtB,MACM3/C,QAAa9S,KAAKwwP,QAAQuB,gBAAgB,mBAAoB,CAC5DhyP,SAGJC,KAAK0wP,iBAAiB/iP,IAAI5N,EAAM+S,GAChC,OAAOA,CACR,CACD,2BAAMk/O,CAAsBjyP,GAC1B,MAAMqmD,EAAapmD,KAAK2wP,sBAAsBriQ,IAAIyR,GAClD,GAAIqmD,EACF,OAAO,IAAI5sC,OAAO4sC,GAEpB,GAAIpmD,KAAKnB,QAAQwwP,gBAAkBtvP,IAAS,UAAYA,IAAS,eAC/D,OAAO,KAET,MAAMkyP,EAA6B/2C,KACjCr+J,EAAWo1M,EAA2BlyP,GACxC,IAAI+S,EACJ,IAEIA,EADE9S,KAAKnB,QAAQ0wP,sBAAwB,WAC1BvvP,MAAK6xP,EAAW,GAAG7xP,KAAKnB,QAAQ0wP,sBAAsB1yM,WAEtD78C,KAAKwwP,QAAQuB,gBAAgB,wBAAyB,CACjEl1M,YAGL,CAAC,MAAOr0C,GACPrK,KAAKqK,GACL,OAAO,IACR,CACDxI,KAAK2wP,sBAAsBhjP,IAAI5N,EAAM+S,GACrC,OAAO,IAAI0G,OAAO1G,EACnB,CACD,sBAAMo/O,CAAiBhvO,EAAWivO,EAAMvG,EAAOzb,EAAciiB,EAAMC,EAAc7vO,GAC/E,MAAMnU,EAAO8jP,EAAK9jP,KAClB,MAAMiW,EAAS3P,aAAatG,EAAKhB,SAAS,UAAW,MACrD,MAAM8lN,EAAOr+M,iBAAiBzG,EAAKhB,SAAS,QAAS,MACrD,IAAIu9O,EAAiB0H,EACjBjkP,EAAKT,IAAI,QACXg9O,QAAwB5qP,KAAKuyP,wBAAwBlkP,EAAK/f,IAAI,MAAO40B,IAEnE0nO,SAAoB7pP,GACtBovO,EAAasa,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM2uP,IAEzD,MAAM4H,EAAQnkP,EAAK/f,IAAI,SACvB,GAAIkkQ,EAAO,CACTF,EAAe,CACbhuO,SACA6uM,OACAy4B,QACA6G,SAAU,MACVC,SAAU,OAEZ,MAAMC,EAAeH,EAAMlkQ,IAAI,KAC/B,IAAI89O,EAAa,KACjB,GAAIz8N,OAAOgjP,EAAc,gBAAiB,CACxCL,EAAaG,SAAWD,EAAMlkQ,IAAI,MAAQ,MAC1CgkQ,EAAaI,SAAWF,EAAMlkQ,IAAI,MAAQ,MAC1C,GAAIkkQ,EAAM5kP,IAAI,MAAO,CACnB,MAAMqV,EAAKuvO,EAAMjlP,OAAO,MACxB,MAAM+V,EAAmB9C,WAAWoC,UAAUK,EAAIjjB,KAAKsM,KAAMkW,GAE3D4pN,EADE9oN,SAGiBtjB,KAAK4yP,gBAAgB,CACtC3vO,KACAC,YACAV,wBAGL,CACF,CACD,GAAIopO,GAAOiH,SAAU,CACnBzmB,IAAe5rN,WAAWgD,WAAW5C,IACrCgrO,EAAMiH,SAAWzmB,EAAW1rN,OAAOkrO,EAAMiH,SAAU,EACpD,CACD1iB,EAAasa,MAAM9yP,EAAI4E,WAAY,CAAC+1P,GACrC,CACD,MAAM/mP,EAAOinP,EAAQ,CAACluO,EAAQ,MAAQ,CAACA,EAAQ6uM,GAC/Cgd,EAAasa,MAAM9yP,EAAI0E,sBAAuBkP,SACxCvL,KAAK8yP,gBAAgB,CACzBt3O,OAAQ22O,EACRC,OACAlvO,UAAW7U,EAAK/f,IAAI,cAAgB40B,EACpCitN,eACAkiB,iBAEFliB,EAAasa,MAAM9yP,EAAI2E,oBAAqB,IACxCk2P,GACFriB,EAAasa,MAAM9yP,EAAI6E,SAAU,CAAC81P,IAEhC1H,SAAoB7pP,GACtBovO,EAAasa,MAAM9yP,EAAIuE,iBAAkB,GAE5C,CACD,YAAA62P,CAAavmP,EAAO40O,EAAS4R,EAAgB,OAC3C,MAAM9H,EAAY9J,EAAU,CAACA,EAAQ9nN,QAAU8nN,EAAQtuO,KAAKtQ,QAAU,KACtE,OAAIxC,KAAKixP,kBAAoB+B,EACpBhzP,KAAKwwP,QAAQhyO,KAAK,YAAa,CAAChS,EAAO,QAAS40O,GAAU8J,GAE5DlrP,KAAKwwP,QAAQhyO,KAAK,MAAO,CAAChS,EAAOxM,KAAK4Y,UAAW,QAASwoO,GAAU8J,EAC5E,CACD,4BAAM+H,EAAuB/vO,UAC3BA,EAAS42B,MACTA,EAAK6xM,SACLA,EAAW,MAAKxb,aAChBA,EAAY5tN,SACZA,EAAQ2wO,gBACRA,EAAe1wO,qBACfA,IAEA,MAAMnU,EAAOyrC,EAAMzrC,KACnB,MAAM8kP,EAAW9kP,EAAK7B,MACtB,MAAM4nL,EAAI/lL,EAAK/f,IAAI,IAAK,SACxB,MAAM6iD,EAAI9iC,EAAK/f,IAAI,IAAK,UACxB,KAAM8lM,UAAYA,IAAM,aAAejjJ,UAAYA,IAAM,UAAW,CAClEhzC,KAAK,iDACL,MACD,CACD,MAAM+wP,EAAelvP,KAAKnB,QAAQqwP,aAClC,GAAIA,KAAkB,GAAK96D,EAAIjjJ,EAAI+9M,EAAc,CAC/C,MAAMlxP,EAAM,uDACZ,GAAIgC,KAAKnB,QAAQswP,aAAc,CAC7BhxP,KAAKH,GACL,MACD,CACD,MAAM,IAAIK,MAAML,EACjB,CACD,IAAI4sP,EACAv8O,EAAKT,IAAI,QACXg9O,QAAwB5qP,KAAKuyP,wBAAwBlkP,EAAK/f,IAAI,MAAO40B,IAEvE,MAAM4oO,EAAYz9O,EAAK/f,IAAI,KAAM,cAAgB,MACjD,IAAI8yP,EAAS71O,EACb,GAAIugP,EAAW,CACb,MAAM1T,EAAc/pO,EAAK/f,IAAI,IAAK,eAClC,MAAM8kQ,EAAkBh/D,EAAI,GAAK,EACjC,MAAMu4D,EAAW7yM,EAAMxpC,SAAS8iP,EAAkBjiN,GAClD,MAAM7oC,EAAS+F,EAAKhB,SAAS,IAAK,UAClC,GAAIrN,KAAKixP,iBAAkB,CACzB7P,EAAUsK,SAASgB,cAAc,CAC/BC,WACAtzO,MAAO+6K,EACP96K,OAAQ63B,EACRy7M,wBAAyB9yM,aAAiB/rB,aAC1C0e,cAAenkC,IAAS,GAAK,EAC7B8vO,gBAEFgJ,EAAQ+J,SAAW5oO,EACnBhX,EAAO,CAAC61O,GACRjR,EAAawa,YAAYhzP,EAAIgF,sBAAuB4O,EAAMq/O,GAC1D,GAAIroO,EAAU,CACZ,MAAM8wO,EAAY,CAChB/nP,GAAI3T,EAAIgF,sBACR4O,OACAq/O,mBAEFsI,EAAgBvlP,IAAI4U,EAAU4wO,EAAUE,GACpCF,GACFnzP,KAAK8wP,oBAAoBnjP,IAAI,KAAMwlP,EAAUE,EAEhD,CACD,MACD,CACDjS,QAAgBsK,SAASqB,WAAW,CAClCJ,WACAtzO,MAAO+6K,EACP96K,OAAQ63B,EACRy7M,wBAAyB9yM,aAAiB/rB,aAC1C0e,cAAenkC,IAAS,GAAK,EAC7B8vO,cACAx1O,2BAA4B5C,KAAKnB,QAAQ+D,6BAE3C,GAAIw+O,EAAQ4L,oBAAqB,CAC/B7c,EAAawa,YAAYhzP,EAAIuF,yBAA0B,GAAI0tP,GAC3D,GAAIroO,EAAU,CACZ,MAAM8wO,EAAY,CAChB/nP,GAAI3T,EAAIuF,yBACRqO,KAAM,GACNq/O,mBAEFsI,EAAgBvlP,IAAI4U,EAAU4wO,EAAUE,GACpCF,GACFnzP,KAAK8wP,oBAAoBnjP,IAAI,KAAMwlP,EAAUE,EAEhD,CACD,MACD,CACD,MAAM7mP,EAAQ,QAAQxM,KAAKwgP,UAAU8S,gBACrCnjB,EAAa0a,cAAcr+O,GAC3B40O,EAAQmS,QAAUnS,EAAQ9nN,OAAS8nN,EAAQ/nO,MAAQ+nO,EAAQ9nO,OAAS,EAAI8nO,EAAQtuO,KAAK5T,OACrFc,KAAK+yP,aAAavmP,EAAO40O,GACzB71O,EAAO,CAAC,CACNuH,KAAMtG,EACN6M,MAAO+nO,EAAQ/nO,MACfC,OAAQ8nO,EAAQ9nO,OAChB8+N,YAAagJ,EAAQhJ,YACrBn3N,MAAO,IAETkvN,EAAawa,YAAYhzP,EAAIgF,sBAAuB4O,EAAMq/O,GAC1D,GAAIroO,EAAU,CACZ,MAAM8wO,EAAY,CAChB7mP,QACAlB,GAAI3T,EAAIgF,sBACR4O,OACAq/O,mBAEFsI,EAAgBvlP,IAAI4U,EAAU4wO,EAAUE,GACpCF,GACFnzP,KAAK8wP,oBAAoBnjP,IAAI,KAAMwlP,EAAUE,EAEhD,CACD,MACD,CACD,MAAMG,EAAyB,IAC/B,GAAI7H,GAAYv3D,EAAIjjJ,EAAIqiN,IAA2BnlP,EAAKT,IAAI,WAAaS,EAAKT,IAAI,QAAS,CACzF,IACE,MAAM6lP,EAAW,IAAI/H,SAAS,CAC5Bp/O,KAAMtM,KAAKsM,KACXi9N,IAAKrmN,EACL42B,QACA6xM,WACAxoO,mBAAoBnjB,KAAKgxP,oBACzBxuO,yBAEF4+N,QAAgBqS,EAASxG,gBAAgB,KAAM,OAC/C9c,EAAavtO,2BAA6B5C,KAAKnB,QAAQ+D,2BACvDutO,EAAawa,YAAYhzP,EAAImF,wBAAyB,CAACskP,GAAUwJ,EAClE,CAAC,MAAO/sO,GACP,MAAM7f,EAAM,mCAAmC6f,MAC/C,IAAK7d,KAAKnB,QAAQswP,aAChB,MAAM,IAAI9wP,MAAML,GAElBG,KAAKH,EACN,CACD,MACD,CACD,IAAIwO,EAAQ,OAAOxM,KAAKwgP,UAAU8S,gBAChCN,EAAgB,MAClB,GAAIhzP,KAAKixP,iBACPzkP,EAAQ,GAAGxM,KAAKwgP,UAAUM,oBAAoBt0O,SACzC,GAAI+V,GAAY4wO,EAAU,CAC/BH,EAAgBhzP,KAAK4wP,iBAAiBta,YAAY6c,EAAUnzP,KAAK4Y,WACjE,GAAIo6O,EAAe,CACjB10P,QAAQqtP,EAAU,0CAClBn/O,EAAQ,GAAGxM,KAAKwgP,UAAUM,cAAct0O,GACzC,CACF,CACD2jO,EAAa0a,cAAcr+O,GAC3BjB,EAAO,CAACiB,EAAO4nL,EAAGjjJ,GAClBg/L,EAAawa,YAAYhzP,EAAIkF,kBAAmB0O,EAAMq/O,GACtD,GAAIoI,EAAe,CACjB,GAAIhzP,KAAK4wP,iBAAiBla,gBAAgByc,GAAW,CACnDnzP,KAAK4wP,iBAAiBha,QAAQuc,EAAU,CACtC3mP,QACAlB,GAAI3T,EAAIkF,kBACR0O,OACAq/O,kBACA1U,SAAU,IAEZl2O,KAAK+yP,aAAavmP,EAAO,KAAMwmP,GAC/B,MACD,CACD,GAAI5+D,EAAIjjJ,EAAI,MAAU9iC,EAAKT,IAAI,UAAYS,EAAKT,IAAI,QAAS,CAC3D,MAAM8lP,QAAoB1zP,KAAKwwP,QAAQuB,gBAAgB,YAAa,CAACvlP,EAAO,iBAAkB,CAC5F2mP,cAEF,GAAIO,EAAa,CACf1zP,KAAK4wP,iBAAiBha,QAAQuc,EAAU,CACtC3mP,QACAlB,GAAI3T,EAAIkF,kBACR0O,OACAq/O,kBACA1U,SAAU,IAEZl2O,KAAK4wP,iBAAiBja,YAAYwc,EAAUO,GAC5C,MACD,CACF,CACF,CACDhI,SAASa,WAAW,CAClBjgP,KAAMtM,KAAKsM,KACXi9N,IAAKrmN,EACL42B,QACA6xM,WACAxoO,mBAAoBnjB,KAAKgxP,oBACzBxuO,yBACC1F,MAAKgY,UACNssN,QAAgBqS,EAASxG,gBAAgB,MAAOjtP,KAAKnB,QAAQ+D,4BAC7Dw+O,EAAQmS,QAAUnS,EAAQ9nN,OAAS8nN,EAAQ/nO,MAAQ+nO,EAAQ9nO,OAAS,EAAI8nO,EAAQtuO,KAAK5T,OACrFkiP,EAAQxyO,IAAMukP,EACVH,GACFhzP,KAAK4wP,iBAAiBja,YAAYwc,EAAU/R,EAAQmS,SAEtD,OAAOvzP,KAAK+yP,aAAavmP,EAAO40O,EAAS4R,EAAc,IACtDp1O,OAAMC,IACP1f,KAAK,2BAA2BqO,QAAYqR,OACxCs1O,GACFnzP,KAAK4wP,iBAAiBna,gBAAgB0c,GAExC,OAAOnzP,KAAK+yP,aAAavmP,EAAO,KAAMwmP,EAAc,IAEtD,GAAIzwO,EAAU,CACZ,MAAM8wO,EAAY,CAChB7mP,QACAlB,GAAI3T,EAAIkF,kBACR0O,OACAq/O,mBAEFsI,EAAgBvlP,IAAI4U,EAAU4wO,EAAUE,GACxC,GAAIF,EAAU,CACZnzP,KAAK8wP,oBAAoBnjP,IAAI,KAAMwlP,EAAUE,GACzCL,GACFhzP,KAAK4wP,iBAAiBha,QAAQuc,EAAU,CACtC3mP,QACAlB,GAAI3T,EAAIkF,kBACR0O,OACAq/O,kBACA1U,SAAU,GAGf,CACF,CACF,CACD,WAAAyd,CAAY/H,EAAO1oO,EAAWitN,EAAciiB,EAAMwB,EAAcpxO,GAC9D,MAAMqxO,EAAejI,EAAMt9P,IAAI,KAC/B,MAAMwlQ,EAAe,CACnBl+B,QAASg2B,EAAMt9P,IAAI,KAAKyR,KACxB8yP,SAAUjH,EAAMt9P,IAAI,OAEtB,MAAMylQ,EAAcnI,EAAMt9P,IAAI,MAC9B,GAAIssP,cAAcmZ,GAAc,CAC9B,MAAMC,EAAah0P,KAAKgxP,oBAAoBnlP,OAAOkoP,GACnD,MAAME,EAAc,IAAIlyP,WAAW,KACnC,MAAMsrB,EAAM,IAAIhI,aAAa,GAC7B,IAAK,IAAIhkB,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5BgsB,EAAI,GAAKhsB,EAAI,IACb2yP,EAAW3mO,EAAK,EAAGA,EAAK,GACxB4mO,EAAY5yP,GAAKgsB,EAAI,GAAK,IAAM,CACjC,CACDymO,EAAaG,YAAcA,CAC5B,CACD,OAAOj0P,KAAKkyP,iBAAiBhvO,EAAW2wO,EAAcC,EAAc3jB,EAAciiB,EAAMwB,EAAanpM,MAAMh8C,QAAS+T,EACrH,CACD,sBAAA0xO,CAAuBC,GACrB,IAAIC,EACJ,GAAIzwP,MAAM2J,QAAQ6mP,GAChBC,EAAgBD,MACX,KAAIvZ,cAAcuZ,GAGvB,OAAO,KAFPC,EAAgB,CAACD,EAGlB,CACD,MAAME,EAAe,GACrB,IAAIC,EAAS,EACXC,EAAkB,EACpB,IAAK,MAAM7+O,KAAS0+O,EAAe,CACjC,MAAML,EAAc/zP,KAAKsM,KAAKiX,WAAW7N,GACzC4+O,IACA,GAAI3kP,OAAOokP,EAAa,YAAa,CACnCM,EAAa1yP,KAAK,MAClB,QACR,CAAa,IAAKi5O,cAAcmZ,GACxB,OAAO,KAET,MAAMC,EAAah0P,KAAKgxP,oBAAoBnlP,OAAOkoP,GACnD,MAAME,EAAc,IAAIlyP,WAAW,KACjCsrB,EAAM,IAAIhI,aAAa,GACzB,IAAK,IAAInF,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5BmN,EAAI,GAAKnN,EAAI,IACb8zO,EAAW3mO,EAAK,EAAGA,EAAK,GACxB4mO,EAAY/zO,GAAKmN,EAAI,GAAK,IAAM,CACjC,CACDgnO,EAAa1yP,KAAKsyP,GAClBM,GACD,CACD,OAAMD,IAAW,GAAKA,IAAW,EAG7BC,IAAoB,EACf,KAEFF,EALE,IAMV,CACD,gBAAAG,CAAiBlpP,EAAI8c,EAAOlF,EAAW8iO,EAASyO,EAAatkB,EAAciiB,EAAMsC,GAC/E,MAAMC,EAAe,IAAI3K,aACzB,MAAM4K,EAAmBvoP,KAAK2B,MAAM,CAClC1B,KAAMtM,KAAKsM,KACX2B,UAAW,CAACwmP,EAAYnmQ,IAAI,aAAc40B,KAE5C,OAAOljB,KAAK8yP,gBAAgB,CAC1Bt3O,OAAQwqO,EACRoM,OACAlvO,UAAW0xO,EACXzkB,aAAcwkB,IACb73O,MAAK,WACN,MAAM+3O,EAAiBF,EAAa/qB,QACpC,MAAMkrB,EAAkB5kB,mBAAmB2kB,EAAgBJ,EAAarsO,GACxE+nN,EAAa2a,gBAAgB6J,EAAarK,cAC1Cna,EAAasa,MAAMn/O,EAAIwpP,GACnBL,EAAYjoP,OACdkoP,EAAwB/mP,IAAI,KAAM8mP,EAAYjoP,MAAO,CACnDqoP,iBACAxmP,KAAMomP,GAGhB,IAAO72O,OAAMC,IACP,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAIZ,KAAKnB,QAAQswP,aAIjB,MAAMtxO,EAHJ1f,KAAK,yCAAyC0f,MAF/C,CAKW,GAEf,CACD,mBAAMk3O,CAAc7xO,EAAW8xO,EAAUC,EAAS9kB,EAAciiB,EAAM3nM,EAAOyqM,EAAmB,KAAM79O,EAAc,MAClH,MAAMkqM,EAAWyzC,IAAW,aAAc/oP,KAAO+oP,EAAS,GAAGj1P,KAAO,KACpE,IAAIo1P,QAAmBn1P,KAAKo1P,SAAS7zC,EAAU0zC,EAAS/xO,EAAWgyO,EAAkB79O,GACrF,GAAI89O,EAAW/wC,KAAKgW,YAClB,UACQ+6B,EAAWE,cAAcr1P,KAAMkjB,EAAWkvO,GAChDjiB,EAAa2a,gBAAgBqK,EAAWG,kBACzC,CAAC,MAAOz3O,GACPs3O,EAAa,IAAII,eAAe,CAC9BrzC,WAAY,eACZkC,KAAM,IAAIukB,UAAU,0BAA0B9qN,KAC9CxP,KAAM8mP,EAAW/wC,KACjBoxC,iBAAkBx1P,KAAKnB,SAE1B,CAEH4rD,EAAM25J,KAAO+wC,EAAW/wC,KACxB+wC,EAAW32O,KAAKxe,KAAKwwP,SACrB,OAAO2E,EAAWjzC,UACnB,CACD,UAAAuzC,CAAWxtB,EAAOx9K,GAChB,MAAM25J,EAAO35J,EAAM25J,KACnB,MAAMZ,EAASY,EAAK4jB,cAAcC,GAClC,GAAI7jB,EAAKtxM,KAAM,CACb,MAAM4iP,KAAoBjrM,EAAMkrM,kBAAoBrkQ,EAAkBU,mBAClE0jQ,GAAkBjrM,EAAMmrM,eAAe71P,OAAS,WAAaqkN,EAAK+V,iBAAmBn6N,KAAKnB,QAAQs7N,kBACpGo2B,iBAAiBsF,eAAezxC,EAAMZ,EAAQxjN,KAAKwwP,QAASxwP,KAAKnB,QAEpE,CACD,OAAO2kN,CACR,CACD,eAAAsyC,CAAgBrrM,GACd,GAAIA,EAAM25J,KACR,OAEF,MAAMvmM,EAAS,IAAIld,YAAY,iEAC/B,IAAIX,KAAKnB,QAAQswP,aAIjB,MAAMtxO,EAHJ1f,KAAK,qBAAqB0f,MAI7B,CACD,eAAMzlB,EAAU8qB,UACdA,EAAS6yO,OACTA,EAAM5lB,aACNA,EAAY5tN,SACZA,EAAQ6vO,KACRA,EAAIwB,aACJA,EAAYoC,iBACZA,EAAgBxzO,qBAChBA,IAEA,MAAMyzO,EAAYF,EAAOvpP,MACzB,IAAI0pP,EAAiB,KACrB,MAAMC,EAAY,GAClB,IAAIh5O,EAAU/R,QAAQI,UACtB,IAAK,MAAMvd,KAAO8nQ,EAAOvoP,UAAW,CAClC,MAAMhO,EAAQu2P,EAAOznQ,IAAIL,GACzB,OAAQA,GACN,IAAK,OACH,MACF,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACHkoQ,EAAUx0P,KAAK,CAAC1T,EAAKuR,IACrB,MACF,IAAK,OACH02P,EAAiB,MACjB/4O,EAAUA,EAAQL,MAAK,IAAM9c,KAAK+0P,cAAc7xO,EAAW,KAAM1jB,EAAM,GAAI2wO,EAAciiB,EAAMwB,EAAanpM,OAAO3tC,MAAK,SAAUolM,GAChIiuB,EAAa0a,cAAc3oC,GAC3Bi0C,EAAUx0P,KAAK,CAAC1T,EAAK,CAACi0N,EAAY1iN,EAAM,KACzC,MACD,MACF,IAAK,KACH22P,EAAUx0P,KAAK,CAAC1T,EAAK4hQ,mBAAmBrwP,KACxC,MACF,IAAK,QACH,GAAImQ,OAAOnQ,EAAO,QAAS,CACzB22P,EAAUx0P,KAAK,CAAC1T,EAAK,QACrB,KACD,CACD,GAAIuR,aAAiB6M,KAAM,CACzB6pP,EAAiB,MACjB/4O,EAAUA,EAAQL,MAAK,IAAM9c,KAAK2zP,YAAYn0P,EAAO0jB,EAAWitN,EAAciiB,EAAMwB,EAAcpxO,KAClG2zO,EAAUx0P,KAAK,CAAC1T,EAAK,MACjC,MACYkQ,KAAK,0BAEP,MACF,IAAK,KACH,MAAMk2P,EAAer0P,KAAKk0P,uBAAuB10P,GACjD22P,EAAUx0P,KAAK,CAAC1T,EAAKomQ,IACrB,MACF,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,KACHt2P,KAAK,0BAA4B9P,GACjC,MACF,QACE8P,KAAK,kCAAoC9P,GACzC,MAEL,OACKkvB,EACFg5O,EAAUj3P,OAAS,GACrBixO,EAAasa,MAAM9yP,EAAIS,UAAW,CAAC+9P,IAEjCD,GACFF,EAAiBroP,IAAI4U,EAAU0zO,EAAWE,EAE7C,CACD,QAAAf,CAAS7zC,EAAU6C,EAAMlhM,EAAWgyO,EAAmB,KAAM79O,EAAc,MACzE,MAAM++O,UAAYthO,SACT,IAAIygO,eAAe,CACxBrzC,WAAY,eACZkC,KAAM,IAAIukB,UAAU,SAASpnB,wBAC7BlzM,KAAM+1M,EACNoxC,iBAAkBx1P,KAAKnB,UAG3B,IAAIo2P,EACJ,GAAI7wC,EACEA,aAAgBn3M,MAClBgoP,EAAU7wC,OAEP,CACL,MAAMiyC,EAAUnzO,EAAU50B,IAAI,QAC1B+nQ,IACFpB,EAAUoB,EAAQ9oP,OAAOg0M,GAE5B,CACD,GAAI0zC,EAAS,CACX,GAAIj1P,KAAK6wP,eAAejjP,IAAIqnP,GAC1B,OAAOmB,YAET,GAAIp2P,KAAKywP,UAAU7iP,IAAIqnP,GACrB,OAAOj1P,KAAKywP,UAAUniQ,IAAI2mQ,GAE5B,IACE7wC,EAAOpkN,KAAKsM,KAAKiX,WAAW0xO,EAC7B,CAAC,MAAOzsP,GACPrK,KAAK,8BAA8BqK,MACpC,CACF,CACD,KAAM47M,aAAgB/3M,MAAO,CAC3B,IAAKrM,KAAKnB,QAAQswP,eAAiBnvP,KAAKixP,iBAAkB,CACxD9yP,KAAK,SAASojN,wBACd,OAAO60C,WACR,CACDj4P,KAAK,SAASojN,oEACd6C,EAAO8wC,GAAoB3E,iBAAiB2E,gBAC7C,CACD,GAAI9wC,EAAK7hM,UAAYviB,KAAKywP,UAAU7iP,IAAIw2M,EAAK7hM,UAC3C,OAAOviB,KAAKywP,UAAUniQ,IAAI81N,EAAK7hM,UAEjC,MAAMpF,QACJA,EAAO3R,QACPA,GACEJ,QAAQ6Q,gBACZ,IAAIq6O,EACJ,IACEA,EAAmBt2P,KAAKu2P,gBAAgBnyC,GACxCkyC,EAAiBj/O,YAAcA,CAChC,CAAC,MAAOwG,GACP1f,KAAK,uCAAuC0f,OAC5C,OAAOu4O,WACR,CACD,MAAMviB,WACJA,EAAU2iB,KACVA,GACEF,EACJ,MAAMG,EAAexB,aAAmBhoP,IACxC,IAAIypP,EACJ,GAAIF,GAAQ3iB,aAAsBxnO,KAAM,CACtC,MAAMkzO,EAAc1L,EAAW0L,cAAgBpxP,OAAO0d,OAAO,MAC7D,GAAI0zO,EAAYiX,GAAO,CACrB,MAAMG,EAAepX,EAAYiX,GAAM/mP,SACvC,GAAIgnP,GAAgBE,GAAgB32P,KAAKywP,UAAU7iP,IAAI+oP,GAAe,CACpE32P,KAAKywP,UAAUjhP,SAASylP,EAAS0B,GACjC,OAAO32P,KAAKywP,UAAUniQ,IAAI2mQ,EAC3B,CACT,MACQ1V,EAAYiX,GAAQ,CAClBE,OAAQ12P,KAAKwgP,UAAUO,gBAGvB0V,IACFlX,EAAYiX,GAAM/mP,SAAWwlP,GAE/ByB,EAASnX,EAAYiX,GAAME,MACjC,MACMA,EAAS12P,KAAKwgP,UAAUO,eAE1BziP,OAAOo4P,GAAQ33P,WAAW,KAAM,6CAChC,GAAI03P,EACFz2P,KAAKywP,UAAUthP,IAAI8lP,EAAS93O,OACvB,CACLinM,EAAK7hM,SAAW,YAAYm0O,IAC5B12P,KAAKywP,UAAUthP,IAAIi1M,EAAK7hM,SAAUpF,EACnC,CACDinM,EAAKlC,WAAa,GAAGliN,KAAKwgP,UAAUM,cAAc4V,IAClD12P,KAAK42P,cAAcN,GAAkBx5O,MAAK+5O,IACxCrrP,EAAQ,IAAI+pP,eAAe,CACzBrzC,WAAYkC,EAAKlC,WACjBkC,KAAMyyC,EACNxoP,KAAM+1M,EACNoxC,iBAAkBx1P,KAAKnB,UACtB,IACF+e,OAAMC,IACP1f,KAAK,qCAAqC0f,OAC1CrS,EAAQ,IAAI+pP,eAAe,CACzBrzC,WAAYkC,EAAKlC,WACjBkC,KAAM,IAAIukB,UAAU9qN,aAAkBxf,MAAQwf,EAAO/d,QAAU+d,GAC/DxP,KAAM+1M,EACNoxC,iBAAkBx1P,KAAKnB,UACtB,IAEL,OAAOse,CACR,CACD,SAAA25O,CAAU3mB,EAAc7kO,EAAIC,EAAMwrP,EAAc,OAC9C,MAAMC,EAAY7mB,EAAajxO,OAAS,EACnCqM,IACHA,EAAO,IAET,GAAIyrP,EAAY,GAAK7mB,EAAa+H,QAAQ8e,KAAer/P,EAAIwF,cAAe,CAC1E,GAAI45P,EAAa,CACf54P,KAAK,8BAA8BmN,+BACnC6kO,EAAasa,MAAM9yP,EAAIU,KAAM,KAC9B,CACD,IAAIiM,EACJ,OAAQgH,GACN,KAAK3T,EAAImB,UACP,MAAMyO,EAAIgE,EAAK,GAAKA,EAAK,GACzB,MAAM/D,EAAI+D,EAAK,GAAKA,EAAK,GACzBjH,EAAS,CAAC/C,KAAKC,IAAI+J,EAAK,GAAIhE,GAAIhG,KAAKC,IAAI+J,EAAK,GAAI/D,GAAIjG,KAAK+D,IAAIiG,EAAK,GAAIhE,GAAIhG,KAAK+D,IAAIiG,EAAK,GAAI/D,IAC9F,MACF,KAAK7P,EAAIa,OACT,KAAKb,EAAIc,OACP6L,EAAS,CAACiH,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1C,MACF,QACEjH,EAAS,CAAC2yP,SAAUA,UAAWA,UAAWA,UAC1C,MAEJ9mB,EAAasa,MAAM9yP,EAAIwF,cAAe,CAAC,CAACmO,GAAKC,EAAMjH,IAC/CyyP,GACF5mB,EAAasa,MAAM9yP,EAAIW,QAAS,KAExC,KAAW,CACL,MAAM4+P,EAAS/mB,EAAa0W,UAAUmQ,GACtCE,EAAO,GAAGv1P,KAAK2J,GACf4rP,EAAO,GAAGv1P,QAAQ4J,GAClB,MAAMjH,EAAS4yP,EAAO,GACtB,OAAQ5rP,GACN,KAAK3T,EAAImB,UACP,MAAMyO,EAAIgE,EAAK,GAAKA,EAAK,GACzB,MAAM/D,EAAI+D,EAAK,GAAKA,EAAK,GACzBjH,EAAO,GAAK/C,KAAKC,IAAI8C,EAAO,GAAIiH,EAAK,GAAIhE,GACzCjD,EAAO,GAAK/C,KAAKC,IAAI8C,EAAO,GAAIiH,EAAK,GAAI/D,GACzClD,EAAO,GAAK/C,KAAK+D,IAAIhB,EAAO,GAAIiH,EAAK,GAAIhE,GACzCjD,EAAO,GAAK/C,KAAK+D,IAAIhB,EAAO,GAAIiH,EAAK,GAAI/D,GACzC,MACF,KAAK7P,EAAIa,OACT,KAAKb,EAAIc,OACP6L,EAAO,GAAK/C,KAAKC,IAAI8C,EAAO,GAAIiH,EAAK,IACrCjH,EAAO,GAAK/C,KAAKC,IAAI8C,EAAO,GAAIiH,EAAK,IACrCjH,EAAO,GAAK/C,KAAK+D,IAAIhB,EAAO,GAAIiH,EAAK,IACrCjH,EAAO,GAAK/C,KAAK+D,IAAIhB,EAAO,GAAIiH,EAAK,IACrC,MAEL,CACF,CACD,eAAAqnP,EAAgB3vO,GACdA,EAAEC,UACFA,EAASV,qBACTA,IAEA,OAAOhC,WAAWwC,WAAW,CAC3BC,KACA3W,KAAMtM,KAAKsM,KACX4W,YACAC,mBAAoBnjB,KAAKgxP,oBACzBxuO,yBACC5E,OAAMC,IACP,GAAIA,aAAkBjd,eACpB,OAAO,KAET,GAAIZ,KAAKnB,QAAQswP,aAAc,CAC7BhxP,KAAK,2CAA2C0f,OAChD,OAAO,IACR,CACD,MAAMA,CAAM,GAEf,CACD,YAAAwrN,EAAaC,QACXA,EAAOpmN,UACPA,EAASV,qBACTA,EAAoB20O,yBACpBA,IAEA,IAAIn/N,EAAKm/N,EAAyB7oQ,IAAIg7O,GACtC,GAAItxM,EACF,OAAOA,EAET,IAAIo/N,EACJ,IACE,MAAM37P,EAAc2tO,QAAQC,aAAaC,EAAStpO,KAAKsM,KAAM4W,EAAWljB,KAAKgxP,oBAAqBxuO,GAClG40O,EAAY37P,EAAYmuO,OACzB,CAAC,MAAO/rN,GACP,GAAIA,aAAkBjd,eACpB,OAAO,KAET,GAAIZ,KAAKnB,QAAQswP,aAAc,CAC7BhxP,KAAK,qCAAqC0f,OAC1Cs5O,EAAyBxpP,IAAI27N,EAAS,MACtC,OAAO,IACR,CACD,MAAMzrN,CACP,CACDma,EAAK,WAAWh4B,KAAKwgP,UAAU8S,gBAC3BtzP,KAAKixP,mBACPj5N,EAAK,GAAGh4B,KAAKwgP,UAAUM,oBAAoB9oN,KAE7Cm/N,EAAyBxpP,IAAI27N,EAAStxM,GAClCh4B,KAAKixP,iBACPjxP,KAAKwwP,QAAQhyO,KAAK,YAAa,CAACwZ,EAAI,UAAWo/N,IAE/Cp3P,KAAKwwP,QAAQhyO,KAAK,MAAO,CAACwZ,EAAIh4B,KAAK4Y,UAAW,UAAWw+O,IAE3D,OAAOp/N,CACR,CACD,YAAAq/N,CAAalnB,EAAc7kO,EAAIC,EAAM0X,EAAIye,EAAUxe,EAAWkvO,EAAM5vO,EAAsBkyO,EAAyByC,GACjH,MAAMG,EAAc/rP,EAAK4iC,MACzB,GAAImpN,aAAuBrrP,KAAM,CAC/B,MAAMsrP,EAAa71N,EAASn0B,OAAO+pP,EAAYv3P,MAC/C,MAAMy3P,EAAqBD,aAAsBtqP,KAAOynP,EAAwB5xO,SAASy0O,GACzF,GAAIC,EACF,IACE,MAAMpvO,EAAQnF,EAAGkC,KAAOlC,EAAGkC,KAAKzE,OAAOnV,EAAM,GAAK,KAClD,MAAMupP,EAAkB5kB,mBAAmBsnB,EAAmB3C,eAAgB2C,EAAmBnpP,KAAM+Z,GACvG+nN,EAAasa,MAAMn/O,EAAIwpP,GACvB,MACD,CAAC,MAAQ,CAEZ,MAAM9O,EAAUhmP,KAAKsM,KAAKiX,WAAWg0O,GACrC,GAAIvR,EAAS,CACX,MAAM33O,EAAO23O,aAAmB91O,WAAa81O,EAAQ33O,KAAO23O,EAC5D,MAAMnO,EAAUxpO,EAAK/f,IAAI,eACzB,GAAIupP,IAAY2X,GAAYC,OAAQ,CAClC,MAAMrnO,EAAQnF,EAAGkC,KAAOlC,EAAGkC,KAAKzE,OAAOnV,EAAM,GAAK,KAClD,OAAOvL,KAAKw0P,iBAAiBlpP,EAAI8c,EAAOlF,EAAW8iO,EAAS33O,EAAM8hO,EAAciiB,EAAMsC,EAChG,CAAe,GAAI7c,IAAY2X,GAAYE,QAAS,CAC1C,MAAMpmB,EAAUj7N,EAAK/f,IAAI,WACzB,MAAMke,EAAQxM,KAAKqpO,aAAa,CAC9BC,UACApmN,YACAV,uBACA20O,6BAEF,GAAI3qP,EAAO,CACT,MAAM8X,EAAS3P,aAAatG,EAAKhB,SAAS,UAAW,MACrD8iO,EAAasa,MAAMn/O,EAAI,CAAC,UAAWkB,EAAO8X,GAC3C,CACD,MACD,CACD,MAAM,IAAI3jB,YAAY,wBAAwBk3O,IAC/C,CACF,CACD,MAAM,IAAIl3O,YAAY,wBAAwB22P,IAC/C,CACD,0BAAAG,CAA2BzjN,EAAO0jN,EAAgBC,GAChD,MAAMC,EAAc,GACpB,KAAMF,EAAiBE,EAAa,CAClCz5P,KAAK,8CACL,MACD,CACD,MAAMe,EAAS80C,EAAM90C,OACrB,MAAMk8O,EAAWp7O,KAAKsM,KAAKiX,WAAWywB,EAAM,IAC5C,KAAI90C,EAAS,IAAOk8O,aAAoBnvO,KAAxC,CAIA,OAAQmvO,EAASr7O,MACf,IAAK,MACL,IAAK,KACL,IAAK,MACH43P,EAAch2P,KAAKy5O,EAASr7O,MAC5B,MACF,QACE5B,KAAK,oBAAoBi9O,EAASr7O,iCAClC,OAEJ,IAAK,IAAIsB,EAAI,EAAGA,EAAInC,EAAQmC,IAAK,CAC/B,MAAMg5D,EAAMrmB,EAAM3yC,GAClB,MAAMw2P,EAAS73P,KAAKsM,KAAKiX,WAAW82C,GACpC,GAAI12D,MAAM2J,QAAQuqP,GAAS,CACzB,MAAMC,EAAe,GACrBH,EAAch2P,KAAKm2P,GACnB93P,KAAKy3P,2BAA2BI,EAAQH,EAAgBI,EAChE,MAAiBz9L,aAAeptD,KACxB0qP,EAAch2P,KAAK04D,EAAIv2D,WAE1B,CArBA,MAFC3F,KAAK,gCAwBR,CACD,6BAAMo0P,CAAwBwF,EAAmB70O,GAC/C,IAAI0nO,EACJ,GAAImN,aAA6B9rP,KAAM,CACrC,MAAMmC,EAAa8U,EAAU50B,IAAI,cACjCs8P,EAAkBx8O,EAAW9f,IAAIypQ,EAAkBh4P,KACzD,KAAW,MAAIg4P,aAA6B1rP,MAGtC,MAAM,IAAI1L,YAAY,0CAFtBiqP,EAAkBmN,CAGnB,CACD,MAAMC,EAAsBpN,EAAgBt8P,IAAI,SAASyR,KACzD,GAAIi4P,IAAwB,MAC1B,MAAO,CACL3oQ,KAAM2oQ,EACNhgO,GAAI4yN,EAAgBp+O,OAEjB,GAAIwrP,IAAwB,OAAQ,CACzC,MAAMC,EAAarN,EAAgBt8P,IAAI,MACvC,GAAIqV,MAAM2J,QAAQ2qP,GAAa,CAC7B,MAAM5kP,EAAS,GACfrT,KAAKy3P,2BAA2BQ,EAAY,EAAG5kP,GAC/C,GAAIA,EAAOnU,OAAS,EAClB,MAAO,CACL7P,KAAM,OACN4oQ,WAAY5kP,EAGjB,CACD,MAAM6kP,EAAwBtN,EAAgBt8P,IAAI,QAClD,GAAIqV,MAAM2J,QAAQ4qP,IAA0BA,aAAiC7rP,KAAM,CACjF,MAAM8rP,EAAW,GACjB,GAAIx0P,MAAM2J,QAAQ4qP,GAChB,IAAK,MAAME,KAAOF,EAChBC,EAASx2P,KAAKy2P,EAAIt0P,iBAGpBq0P,EAASx2P,KAAKu2P,EAAsB1rP,OAEtC,MAAO,CACLnd,KAAM2oQ,EACN10C,IAAK60C,EACLE,OAAQzN,EAAgBt8P,IAAI,eAAgB2d,KAAO2+O,EAAgBt8P,IAAI,KAAKyR,KAAO,KACnFk4P,WAAY,KAEtB,CAAa,GAAIC,aAAiCjrP,IAC1C,MAAO,CACL5d,KAAM2oQ,EACNhgO,GAAIkgO,EAAsBp0P,WAG/B,CACD,OAAO,IACR,CACD,eAAAgvP,EAAgBt3O,OACdA,EAAM42O,KACNA,EAAIlvO,UACJA,EAASitN,aACTA,EAAYkiB,aACZA,EAAe,KAAI6C,iBACnBA,EAAmB,OAEnBhyO,IAAc7W,KAAKyB,MACnBukP,IAAiB,IAAIiG,UACrB,IAAKnoB,EACH,MAAM,IAAI9xO,MAAM,qDAElB,MAAMo9C,EAAOz7C,KACb,MAAMsM,EAAOtM,KAAKsM,KAClB,IAAIyqP,EAAc,MAClB,MAAM7D,EAAkB,IAAIzd,gBAC5B,MAAMjzN,EAAuB,IAAIkzN,qBACjC,MAAMsgB,EAAmB,IAAIpgB,iBAC7B,MAAM8e,EAA0B,IAAI7e,wBACpC,MAAMshB,EAA2B,IAAIntP,IACrC,MAAMuuP,EAAQr1O,EAAU50B,IAAI,YAAc+d,KAAKyB,MAC/C,MAAM4zB,EAAWxe,EAAU50B,IAAI,YAAc+d,KAAKyB,MAClD,MAAM8lP,EAAe,IAAI4E,aAAanG,GACtC,MAAMoG,EAAe,IAAIC,sBAAsBl9O,EAAQlP,EAAMsnP,GAC7D,MAAM+E,EAAkB,IAAI1I,gBAC5B,SAAS2I,uBAAuBC,GAC9B,IAAK,IAAIx3P,EAAI,EAAGoH,EAAKgwP,EAAaK,iBAAkBz3P,EAAIoH,EAAIpH,IAC1D8uO,EAAasa,MAAM9yP,EAAIW,QAAS,GAEnC,CACD,OAAO,IAAI8S,SAAQ,SAAS2tP,YAAYvtP,EAASiR,GAC/C,MAAMwU,KAAO,SAAU9T,GACrB/R,QAAQ4tP,IAAI,CAAC77O,EAASgzN,EAAav7M,QAAQ9X,MAAK,WAC9C,IACEi8O,YAAYvtP,EAASiR,EACtB,CAAC,MAAOjU,GACPiU,EAAOjU,EACR,CACF,GAAEiU,EACX,EACM21O,EAAK6G,sBACLN,EAAgB/mP,QAChB,MAAM+qO,EAAY,CAAA,EAClB,IAAIuc,EAAM73P,EAAGoH,EAAIwa,EAAIljB,EAAMo5P,EAC3B,QAASD,EAAOP,EAAgB/iO,SAAU,CACxC+mN,EAAUpxO,KAAO,KACjB,IAAKktP,EAAa57O,KAAK8/N,GACrB,MAEF,IAAIpxO,EAAOoxO,EAAUpxO,KACrB,IAAID,EAAKqxO,EAAUrxO,GACnB,OAAQA,EAAK,GACX,KAAK3T,EAAIkE,aACPs9P,EAAc5tP,EAAK,aAAcU,KACjClM,EAAOwL,EAAK,GAAGxL,KACf,GAAIo5P,EAAa,CACf,MAAMC,EAAalG,EAAgBnwO,UAAUhjB,GAC7C,GAAIq5P,EAAY,CACdpJ,yBAAyB7f,EAAcipB,GACvC7tP,EAAO,KACP,QACD,CACF,CACD0lB,KAAK,IAAI7lB,SAAQ,SAAUiuP,EAAgBC,GACzC,IAAKH,EACH,MAAM,IAAIx4P,YAAY,wCAExB,IAAIwxP,EAAOoG,EAAMhrP,OAAOxN,GACxB,GAAIoyP,aAAgBllP,IAAK,CACvB,MAAMmsP,EAAalG,EAAgBpwO,SAASqvO,IAAS12M,EAAKq1M,oBAAoBhuO,SAASqvO,GACvF,GAAIiH,EAAY,CACdpJ,yBAAyB7f,EAAcipB,GACvCC,IACA,MACD,CACD,MAAME,EAAc99M,EAAKm1M,iBAAiBj4M,QAAQw5M,EAAM12M,EAAK7iC,WAC7D,GAAI2gP,EAAa,CACfppB,EAAa0a,cAAc0O,EAAY/sP,OACvC2jO,EAAawa,YAAY4O,EAAYjuP,GAAIiuP,EAAYhuP,KAAMguP,EAAY3O,iBACvEyO,IACA,MACD,CACDlH,EAAO7lP,EAAKY,MAAMilP,EACnB,CACD,KAAMA,aAAgBjiP,YACpB,MAAM,IAAIvP,YAAY,8BAExB,MAAMtR,EAAO8iQ,EAAK9jP,KAAK/f,IAAI,WAC3B,KAAMe,aAAgB4c,MACpB,MAAM,IAAItL,YAAY,sCAExB,GAAItR,EAAK0Q,OAAS,OAOX,GAAI1Q,EAAK0Q,OAAS,QAAlB,CAUA,GAAI1Q,EAAK0Q,OAAS,KAGvB,MAAM,IAAIY,YAAY,6BAA6BtR,EAAK0Q,QAFxDhC,KAAK,8BAIPs7P,GADC,MAbC59M,EAAKw3M,uBAAuB,CAC1B/vO,YACA42B,MAAOq4M,EACPhiB,eACA5tN,SAAUxiB,EACVmzP,kBACA1wO,yBACC1F,KAAKu8O,EAAgBC,OAf1B,CACE1F,EAAav7P,OACbojD,EAAKy2M,iBAAiBhvO,EAAWivO,EAAM,KAAMhiB,EAAciiB,EAAMwB,EAAanpM,MAAMh8C,QAAS+T,GAAsB1F,MAAK,WACtH82O,EAAat7P,UACb+gQ,GACD,GAAEC,EAgBJ,CAEf,IAAe17O,OAAM,SAAUC,GACjB,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAI66C,EAAK58C,QAAQswP,aAIjB,MAAMtxO,EAHJ1f,KAAK,wCAAwC0f,MAF9C,CAMF,KACD,OACF,KAAKlmB,EAAIqC,QACP,MAAMw/P,EAAWjuP,EAAK,GACtB0lB,KAAKwqB,EAAKs5M,cAAc7xO,EAAW3X,EAAM,KAAM4kO,EAAciiB,EAAMwB,EAAanpM,MAAOyqM,GAAkBp4O,MAAK,SAAUolM,GACtHiuB,EAAa0a,cAAc3oC,GAC3BiuB,EAAasa,MAAM9yP,EAAIqC,QAAS,CAACkoN,EAAYs3C,GAC9C,KACD,OACF,KAAK7hQ,EAAI+B,UACPq9P,EAAc,KACd,MACF,KAAKp/P,EAAIgC,QACPo9P,EAAc,MACd,MACF,KAAKp/P,EAAIiE,eACP,MAAM2mB,EAAWhX,EAAK,GAAGgX,SACzB,GAAIA,EAAU,CACZ,MAAM62O,EAAalG,EAAgBnwO,UAAUR,GAC7C,GAAI62O,EAAY,CACdpJ,yBAAyB7f,EAAcipB,GACvC7tP,EAAO,KACP,QACD,CACF,CACD0lB,KAAKwqB,EAAKw3M,uBAAuB,CAC/B/vO,YACA42B,MAAOvuC,EAAK,GACZogP,SAAU,KACVxb,eACA5tN,WACA2wO,kBACA1wO,0BAEF,OACF,KAAK7qB,EAAI4C,SACP,IAAKq5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACDl/C,EAAK,GAAKkwC,EAAKg6M,WAAWlqP,EAAK,GAAIqoP,EAAanpM,OAChD,MACF,KAAK9yD,EAAI6C,eACP,IAAKo5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACD,MAAMgvM,EAAiB,GACrBhvM,EAAQmpM,EAAanpM,MACvB,IAAK,MAAMivM,KAAWnuP,EAAK,UACdmuP,IAAY,SACrBD,EAAe93P,QAAQ85C,EAAKg6M,WAAWiE,EAASjvM,WAChCivM,IAAY,UAC5BD,EAAe93P,KAAK+3P,GAGxBnuP,EAAK,GAAKkuP,EACVnuP,EAAK3T,EAAI4C,SACT,MACF,KAAK5C,EAAI8C,iBACP,IAAKm5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACD0lL,EAAasa,MAAM9yP,EAAI2C,UACvBiR,EAAK,GAAKkwC,EAAKg6M,WAAWlqP,EAAK,GAAIqoP,EAAanpM,OAChDn/C,EAAK3T,EAAI4C,SACT,MACF,KAAK5C,EAAI+C,2BACP,IAAKk5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACD0lL,EAAasa,MAAM9yP,EAAI2C,UACvB61O,EAAasa,MAAM9yP,EAAIkC,eAAgB,CAAC0R,EAAK0jB,UAC7CkhN,EAAasa,MAAM9yP,EAAIiC,eAAgB,CAAC2R,EAAK0jB,UAC7C1jB,EAAK,GAAKkwC,EAAKg6M,WAAWlqP,EAAK,GAAIqoP,EAAanpM,OAChDn/C,EAAK3T,EAAI4C,SACT,MACF,KAAK5C,EAAIsC,qBACP25P,EAAanpM,MAAMkrM,kBAAoBpqP,EAAK,GAC5C,MACF,KAAK5T,EAAImD,kBACP,CACE,MAAMwoB,EAAmB9C,WAAWoC,UAAUrX,EAAK,GAAIe,EAAMkW,GAC7D,GAAIc,EAAkB,CACpBswO,EAAanpM,MAAMmrM,eAAiBtyO,EACpC,QACD,CACD2N,KAAKwqB,EAAKm3M,gBAAgB,CACxB3vO,GAAI1X,EAAK,GACT2X,YACAV,yBACC1F,MAAK,SAAUsvN,GAChBwnB,EAAanpM,MAAMmrM,eAAiBxpB,GAAc5rN,WAAWgD,WAAWC,IACzE,KACD,MACD,CACH,KAAK9rB,EAAIkD,oBACP,CACE,MAAMyoB,EAAmB9C,WAAWoC,UAAUrX,EAAK,GAAIe,EAAMkW,GAC7D,GAAIc,EAAkB,CACpBswO,EAAanpM,MAAMkvM,iBAAmBr2O,EACtC,QACD,CACD2N,KAAKwqB,EAAKm3M,gBAAgB,CACxB3vO,GAAI1X,EAAK,GACT2X,YACAV,yBACC1F,MAAK,SAAUsvN,GAChBwnB,EAAanpM,MAAMkvM,iBAAmBvtB,GAAc5rN,WAAWgD,WAAWC,IAC3E,KACD,MACD,CACH,KAAK9rB,EAAIsD,aACPgoB,EAAK2wO,EAAanpM,MAAMmrM,eACxBrqP,EAAO0X,EAAGvC,OAAOnV,EAAM,GACvBD,EAAK3T,EAAI2D,gBACT,MACF,KAAK3D,EAAIoD,eACPkoB,EAAK2wO,EAAanpM,MAAMkvM,iBACxBpuP,EAAO0X,EAAGvC,OAAOnV,EAAM,GACvBD,EAAK3T,EAAI0D,kBACT,MACF,KAAK1D,EAAIyD,YACPw4P,EAAanpM,MAAMmrM,eAAiBp1O,WAAWgD,WAAWC,KAC1DlY,EAAOiV,WAAWgD,WAAWC,KAAK/C,OAAOnV,EAAM,GAC/CD,EAAK3T,EAAI2D,gBACT,MACF,KAAK3D,EAAIwD,cACPy4P,EAAanpM,MAAMkvM,iBAAmBn5O,WAAWgD,WAAWC,KAC5DlY,EAAOiV,WAAWgD,WAAWC,KAAK/C,OAAOnV,EAAM,GAC/CD,EAAK3T,EAAI0D,kBACT,MACF,KAAK1D,EAAI6D,iBACPo4P,EAAanpM,MAAMmrM,eAAiBp1O,WAAWgD,WAAWG,KAC1DpY,EAAOiV,WAAWgD,WAAWG,KAAKjD,OAAOnV,EAAM,GAC/CD,EAAK3T,EAAI2D,gBACT,MACF,KAAK3D,EAAI4D,mBACPq4P,EAAanpM,MAAMkvM,iBAAmBn5O,WAAWgD,WAAWG,KAC5DpY,EAAOiV,WAAWgD,WAAWG,KAAKjD,OAAOnV,EAAM,GAC/CD,EAAK3T,EAAI0D,kBACT,MACF,KAAK1D,EAAI2D,gBACPs4P,EAAanpM,MAAMmrM,eAAiBp1O,WAAWgD,WAAW5C,IAC1DrV,EAAOiV,WAAWgD,WAAW5C,IAAIF,OAAOnV,EAAM,GAC9C,MACF,KAAK5T,EAAI0D,kBACPu4P,EAAanpM,MAAMkvM,iBAAmBn5O,WAAWgD,WAAW5C,IAC5DrV,EAAOiV,WAAWgD,WAAW5C,IAAIF,OAAOnV,EAAM,GAC9C,MACF,KAAK5T,EAAIuD,cACP+nB,EAAK2wO,EAAanpM,MAAMmvM,sBACxB,IAAK32O,EAAI,CACP,GAAIzO,cAAcjJ,EAAM,MAAO,CAC7BA,EAAOiV,WAAWgD,WAAWC,KAAK/C,OAAOnV,EAAM,GAC/CD,EAAK3T,EAAI2D,gBACT,KACD,CACDiQ,EAAO,GACPD,EAAK3T,EAAI0F,mBACT,KACD,CACD,GAAI4lB,EAAGljB,OAAS,UAAW,CACzBkxB,KAAKwqB,EAAK47M,aAAalnB,EAAcx4O,EAAIuD,cAAeqQ,EAAM0X,EAAIye,EAAUxe,EAAWkvO,EAAM5vO,EAAsBkyO,EAAyByC,IAC5I,MACD,CACD5rP,EAAO0X,EAAGvC,OAAOnV,EAAM,GACvBD,EAAK3T,EAAI2D,gBACT,MACF,KAAK3D,EAAIqD,gBACPioB,EAAK2wO,EAAanpM,MAAMovM,wBACxB,IAAK52O,EAAI,CACP,GAAIzO,cAAcjJ,EAAM,MAAO,CAC7BA,EAAOiV,WAAWgD,WAAWC,KAAK/C,OAAOnV,EAAM,GAC/CD,EAAK3T,EAAI0D,kBACT,KACD,CACDkQ,EAAO,GACPD,EAAK3T,EAAIyF,qBACT,KACD,CACD,GAAI6lB,EAAGljB,OAAS,UAAW,CACzBkxB,KAAKwqB,EAAK47M,aAAalnB,EAAcx4O,EAAIqD,gBAAiBuQ,EAAM0X,EAAIye,EAAUxe,EAAWkvO,EAAM5vO,EAAsBkyO,EAAyByC,IAC9I,MACD,CACD5rP,EAAO0X,EAAGvC,OAAOnV,EAAM,GACvBD,EAAK3T,EAAI0D,kBACT,MACF,KAAK1D,EAAI8D,YACP,IAAI6tO,EACJ,IACE,MAAMwwB,EAAa52O,EAAU50B,IAAI,WACjC,IAAKwrQ,EACH,MAAM,IAAIn5P,YAAY,6BAExB2oO,EAAUwwB,EAAWxrQ,IAAIid,EAAK,GAAGxL,MACjC,IAAKupO,EACH,MAAM,IAAI3oO,YAAY,0BAEzB,CAAC,MAAOkd,GACP,GAAIA,aAAkBjd,eACpB,SAEF,GAAI66C,EAAK58C,QAAQswP,aAAc,CAC7BhxP,KAAK,wCAAwC0f,OAC7C,QACD,CACD,MAAMA,CACP,CACD,MAAMk8O,EAAYt+M,EAAK4tL,aAAa,CAClCC,UACApmN,YACAV,uBACA20O,6BAEF,IAAK4C,EACH,SAEFxuP,EAAO,CAACwuP,GACRzuP,EAAK3T,EAAI8D,YACT,MACF,KAAK9D,EAAIS,UACP+gQ,EAAc5tP,EAAK,aAAcU,KACjClM,EAAOwL,EAAK,GAAGxL,KACf,GAAIo5P,EAAa,CACf,MAAMa,EAAiBhE,EAAiBjzO,UAAUhjB,GAClD,GAAIi6P,EAAgB,CACdA,EAAe96P,OAAS,GAC1BixO,EAAasa,MAAM9yP,EAAIS,UAAW,CAAC4hQ,IAErCzuP,EAAO,KACP,QACD,CACF,CACD0lB,KAAK,IAAI7lB,SAAQ,SAAU6uP,EAAeC,GACxC,IAAKf,EACH,MAAM,IAAIx4P,YAAY,uCAExB,MAAMw5P,EAAYj3O,EAAU50B,IAAI,aAChC,KAAM6rQ,aAAqB9tP,MACzB,MAAM,IAAI1L,YAAY,qCAExB,MAAMo1P,EAASoE,EAAU7rQ,IAAIyR,GAC7B,KAAMg2P,aAAkB1pP,MACtB,MAAM,IAAI1L,YAAY,kCAExB86C,EAAKrjD,UAAU,CACb8qB,YACA6yO,SACA5lB,eACA5tN,SAAUxiB,EACVqyP,OACAwB,eACAoC,mBACAxzO,yBACC1F,KAAKm9O,EAAeC,EACrC,IAAet8O,OAAM,SAAUC,GACjB,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAI66C,EAAK58C,QAAQswP,aAIjB,MAAMtxO,EAHJ1f,KAAK,0CAA0C0f,MAFhD,CAMF,KACD,OACF,KAAKlmB,EAAIa,OACT,KAAKb,EAAIc,OACT,KAAKd,EAAIe,QACT,KAAKf,EAAIgB,SACT,KAAKhB,EAAIiB,SACT,KAAKjB,EAAIkB,UACT,KAAKlB,EAAImB,UACP2iD,EAAKq7M,UAAU3mB,EAAc7kO,EAAIC,EAAMwrP,GACvC,SACF,KAAKp/P,EAAImE,UACT,KAAKnE,EAAIoE,eACT,KAAKpE,EAAIwE,YACT,KAAKxE,EAAIyE,UACP,SACF,KAAKzE,EAAIsE,wBACP,KAAMsP,EAAK,aAAcU,MAAO,CAC9B9N,KAAK,kDAAkDoN,EAAK,MAC5D4kO,EAAasa,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM,OACvD,QACD,CACD,GAAIsP,EAAK,GAAGxL,OAAS,KAAM,CACzBkxB,KAAKwqB,EAAK82M,wBAAwBhnP,EAAK,GAAI2X,GAAWpG,MAAKhK,IACzDq9N,EAAasa,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM6W,GAAM,IAC5D8K,OAAMC,IACP,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAI66C,EAAK58C,QAAQswP,aAKjB,MAAMtxO,EAJJ1f,KAAK,wDAAwD0f,OAC7DsyN,EAAasa,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM,MAHxD,CAMW,KAEd,MACD,CACDsP,EAAO,CAACA,EAAK,GAAGxL,KAAMwL,EAAK,aAAcc,KAAOd,EAAK,GAAGjd,IAAI,QAAU,MACtE,MACF,KAAKqJ,EAAIqE,mBACT,KAAKrE,EAAIuE,iBACT,QACE,GAAIqP,IAAS,KAAM,CACjB,IAAKlK,EAAI,EAAGoH,EAAK8C,EAAKrM,OAAQmC,EAAIoH,EAAIpH,IACpC,GAAIkK,EAAKlK,aAAcgL,KACrB,MAGJ,GAAIhL,EAAIoH,EAAI,CACVtK,KAAK,wCAA0CmN,GAC/C,QACD,CACF,EAEL6kO,EAAasa,MAAMn/O,EAAIC,EACxB,CACD,GAAI2tP,EACFjoO,KAAK2+N,QADP,CAIAgJ,yBACAptP,GAFC,CAGP,IAAOoS,OAAMC,IACP,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAIZ,KAAKnB,QAAQswP,aAKjB,MAAMtxO,EAJJ1f,KAAK,6CAA6Ci0P,EAAKryP,gBAAqB8d,OAC5E+6O,wBAHD,CAMW,GAEf,CACD,cAAAwB,EAAe5+O,OACbA,EAAM42O,KACNA,EAAIlvO,UACJA,EAAS0wO,aACTA,EAAe,KAAIyG,qBACnBA,EAAuB,MAAKC,KAC5BA,EAAIC,WACJA,EAAa,IAAIrrP,IAAKsrP,QACtBA,EAAO74M,KACPA,EAAO,KAAI84M,kBACXA,EAAoB,KAAIC,qBACxBA,EAAuB,MAAKC,eAC5BA,EAAiB,QAEjBz3O,IAAc7W,KAAKyB,MACnB8lP,IAAiB,IAAI4E,aAAa,IAAIoC,WAClCP,IACFI,IAAsB,CACpB98P,MAAO,IAGX,MAAMk9P,EAAc,CAClBnrP,MAAO,GACPorP,OAAQ3sQ,OAAO0d,OAAO,MACtB81C,QAEF,MAAMo5M,EAAkB,CACtBC,YAAa,MACbl5P,IAAK,GACL67B,WAAY,EACZs9N,YAAa,EACb5hP,MAAO,EACPC,OAAQ,EACR6T,SAAU,MACV+tO,cAAe,KACfC,iBAAkB,EAClBC,eAAgB,EAChBC,eAAgB,EAChBC,iBAAkBrE,SAClBsE,kBAAmBtE,SACnBuE,WAAYvE,SACZ1+P,UAAW,KACXgpN,SAAU,KACVk6C,OAAQ,OAEV,MAAMC,EAAe,CAAC,IAAK,KAC3B,IAAIC,EAAkB,EACtB,SAASC,aAAatmP,GACpB,MAAMumP,GAAWF,EAAkB,GAAK,EACxC,MAAM5gN,EAAM2gN,EAAaC,KAAqB,KAAOD,EAAaG,KAAa,IAC/EH,EAAaC,GAAmBrmP,EAChCqmP,EAAkBE,EAClB,OAAQlB,GAAkB5/M,CAC3B,CACD,SAAS+gN,sBACP,OAAQnB,GAAkBe,EAAaC,KAAqB,KAAOD,GAAcC,EAAkB,GAAK,KAAO,GAChH,CACD,SAASI,iBACPL,EAAa,GAAKA,EAAa,GAAK,IACpCC,EAAkB,CACnB,CACD,MAAMK,EAAwB,KAC9B,MAAMC,EAAqB,IAC3B,MAAMC,GAAyB,GAC/B,MAAMC,EAA2B,KACjC,MAAMC,EAA2B,GACjC,MAAMC,EAAuB,IAC7B,MAAM5gN,EAAOz7C,KACb,MAAMsM,EAAOtM,KAAKsM,KAClB,MAAMgwP,EAAuB,GAC7B,IAAI/D,EAAQ,KACZ,MAAMgE,EAAoB,IAAI9mB,gBAC9B,MAAM+mB,EAAmB,IAAI5mB,iBAC7B,MAAM6iB,EAAe,IAAIC,sBAAsBl9O,EAAQlP,EAAMsnP,GAC7D,IAAI6I,EACJ,SAASC,gBAAerjP,MACtBA,EAAQ,EAACC,OACTA,EAAS,EAAC/gB,UACVA,EAAYwiQ,EAAgBG,cAAa35C,SACzCA,EAAWw5C,EAAgBx5C,WAE3Bs5C,EAAYnrP,MAAM/N,KAAK,CACrBG,IAAK,IACLk8O,IAAK,MACL3kO,QACAC,SACA/gB,YACAgpN,WACAk6C,OAAQ,OAEX,CACD,SAASkB,0BACP,MAAMv4C,EAAOq4C,EAAUr4C,KACvB,MAAMw4C,EAAM,CAACH,EAAUjD,SAAWiD,EAAUI,WAAY,EAAG,EAAGJ,EAAUjD,SAAU,EAAGiD,EAAUK,UAC/F,GAAI14C,EAAKgW,cAAgBqiC,EAAUjD,UAAY,GAAKp1C,EAAK24C,cAAgB9zP,aAAawzP,EAAU9mM,WAAYpmE,GAAuB,CACjI,MAAMytQ,EAAc54C,EAAK+O,KAAK,GAAK/O,EAAK+O,KAAK,GACzC6pC,EAAc,IAChBJ,EAAI,IAAMI,EAAcP,EAAU9mM,WAAW,GAEhD,CACD,OAAO3xD,KAAKzL,UAAUkkQ,EAAUQ,IAAKj5P,KAAKzL,UAAUkkQ,EAAUS,WAAYN,GAC3E,CACD,SAASO,wBACP,GAAIpC,EAAgBC,YAClB,OAAOD,EAET,MAAM32C,KACJA,EAAIlC,WACJA,GACEu6C,EACJ,IAAKlC,EAAW3sP,IAAIs0M,GAAa,CAC/Bq4C,EAAWnrP,IAAI8yM,GACf24C,EAAYC,OAAO54C,GAAc,CAC/BprM,WAAYstM,EAAK6W,aACjBplK,OAAQuuJ,EAAKvuJ,OACbC,QAASsuJ,EAAKtuJ,QACd3oC,SAAUi3L,EAAKj3L,UAEjB,GAAIsuB,EAAK58C,QAAQuwP,qBAAuBhrC,EAAK0W,eAAgB,CAC3D,MAAMikB,EAAQ8b,EAAYC,OAAO54C,GACjC68B,EAAMqe,iBAAmBh5C,EAAK0W,eAAeK,IAC7C4jB,EAAMse,2BAA6Bj5C,EAAK0W,eAAe5Y,UACxD,CACF,CACD64C,EAAgBx5C,SAAWW,EAC3B,MAAMo7C,EAAMvC,EAAgBxiQ,UAAYokQ,0BACxC,GAAKv4C,EAAKj3L,SAIH,CACL4tO,EAAgB1hP,MAAQ0hP,EAAgBp9N,WAAap8B,KAAKkpO,MAAM6yB,EAAI,GAAIA,EAAI,IAC5EvC,EAAgBzhP,OAASyhP,EAAgBE,YAAc,EACvDF,EAAgB5tO,SAAW,IAC5B,KARmB,CAClB4tO,EAAgB1hP,MAAQ0hP,EAAgBp9N,WAAa,EACrDo9N,EAAgBzhP,OAASyhP,EAAgBE,YAAc15P,KAAKkpO,MAAM6yB,EAAI,GAAIA,EAAI,IAC9EvC,EAAgB5tO,SAAW,KACnC,CAKM,MAAMowO,EAAah8P,KAAKkpO,MAAMgyB,EAAUe,eAAe,GAAIf,EAAUe,eAAe,IACpF,MAAMC,EAAYl8P,KAAKkpO,MAAMgyB,EAAUQ,IAAI,GAAIR,EAAUQ,IAAI,IAC7DlC,EAAgBI,iBAAmBsC,EAAYF,EAC/C,MAAM/D,SACJA,GACEiD,EACJ1B,EAAgBO,iBAAmB9B,EAAWwC,EAC9CjB,EAAgBS,UAAYhC,EAAWyC,EACvClB,EAAgBQ,iBAAmB/B,EAAW0C,EAC9CnB,EAAgBK,eAAiB5B,EAAW2C,EAC5CpB,EAAgBM,eAAiB7B,EAAW4C,EAC5CrB,EAAgBU,OAAS,MACzBV,EAAgBC,YAAc,KAC9B,OAAOD,CACR,CACD,SAAS2C,qBACP,IAAK3C,EAAgBC,YACnB,OAEF,MAAMuC,EAAah8P,KAAKkpO,MAAMgyB,EAAUe,eAAe,GAAIf,EAAUe,eAAe,IACpF,MAAMC,EAAYl8P,KAAKkpO,MAAMgyB,EAAUQ,IAAI,GAAIR,EAAUQ,IAAI,IAC7D,MAAMU,EAAcF,EAAYF,EAChC,GAAII,IAAgB5C,EAAgBI,iBAApC,CAGA,GAAKJ,EAAgB5tO,SAGd,CACL4tO,EAAgBE,aAAeF,EAAgBzhP,OAASyhP,EAAgBI,iBACxEJ,EAAgBzhP,OAAS,CAC1B,KAN8B,CAC7ByhP,EAAgBp9N,YAAco9N,EAAgB1hP,MAAQ0hP,EAAgBI,iBACtEJ,EAAgB1hP,MAAQ,CAChC,CAIM0hP,EAAgBI,iBAAmBwC,CARlC,CASF,CACD,SAASC,iBAAiBC,GACxB,IAAIC,EAAOD,EAAU/7P,IAAIF,KAAK,IACzB84P,IACHoD,EAAO/zP,iBAAiB+zP,IAE1B,MAAMC,EAAa9f,KAAK6f,GAAO,EAAGD,EAAU1wO,UAC5C,MAAO,CACLrrB,IAAKi8P,EAAWj8P,IAChBk8O,IAAK+f,EAAW/f,IAChB3kO,MAAO9X,KAAKmG,IAAIm2P,EAAUlgO,YAC1BrkB,OAAQ/X,KAAKmG,IAAIm2P,EAAU5C,aAC3B1iQ,UAAWslQ,EAAUtlQ,UACrBgpN,SAAUs8C,EAAUt8C,SACpBk6C,OAAQoC,EAAUpC,OAErB,CACD3mO,eAAeigO,cAAcxzC,EAAU0zC,GACrC,MAAME,QAAmB15M,EAAK25M,SAAS7zC,EAAU0zC,EAAS/xO,GAC1D,GAAIiyO,EAAW/wC,KAAKgW,YAClB,UACQ+6B,EAAWE,cAAc55M,EAAMv4B,EAAWkvO,EACjD,CAAC,MAAQ,CAEZqK,EAAUv6C,WAAaizC,EAAWjzC,WAClCu6C,EAAUr4C,KAAO+wC,EAAW/wC,KAC5Bq4C,EAAU9mM,WAAaw/L,EAAW/wC,KAAKzuJ,YAAcpmE,CACtD,CACD,SAASyuQ,qBAAqBz2P,EAAGC,EAAG8c,GAClC,MAAMgB,EAAQ/jB,KAAKkpO,MAAMnmN,EAAO,GAAIA,EAAO,IAC3C,MAAO,EAAEA,EAAO,GAAK/c,EAAI+c,EAAO,GAAK9c,GAAK8d,GAAQhB,EAAO,GAAK/c,EAAI+c,EAAO,GAAK9c,GAAK8d,EACpF,CACD,SAAS24O,wBAAwBC,GAC/B,MAAMC,EAAmBxB,0BACzB,IAAIyB,EAAOD,EAAiB,GAC5B,IAAIE,EAAOF,EAAiB,GAC5B,GAAI1B,EAAUr4C,MAAMj3L,UAClB,GAAIixO,EAAO5D,EAAQ,IAAM4D,EAAO5D,EAAQ,IAAM6D,EAAOH,EAAa1D,EAAQ,IAAM6D,EAAO7D,EAAQ,GAC7F,OAAO,WAEJ,GAAI4D,EAAOF,EAAa1D,EAAQ,IAAM4D,EAAO5D,EAAQ,IAAM6D,EAAO7D,EAAQ,IAAM6D,EAAO7D,EAAQ,GACpG,OAAO,MAET,IAAKiC,EAAUr4C,OAAS22C,EAAgBG,cACtC,OAAO,KAET,IAAIoD,EAAWvD,EAAgBG,cAAc,GAC7C,IAAIqD,EAAWxD,EAAgBG,cAAc,GAC7C,GAAIoD,IAAaF,GAAQG,IAAaF,EACpC,OAAO,KAET,IAAIG,GAAU,EACVL,EAAiB,IAAMA,EAAiB,KAAO,GAAKA,EAAiB,KAAO,EAC9EK,EAASL,EAAiB,GAAK,EAAI,EAAI,IAC9BA,EAAiB,IAAMA,EAAiB,KAAO,GAAKA,EAAiB,KAAO,IACrFK,EAASL,EAAiB,GAAK,EAAI,GAAK,KAE1C,OAAQK,GACN,KAAK,EACH,MACF,KAAK,IACFJ,EAAMC,GAAQ,CAACA,EAAMD,IACrBE,EAAUC,GAAY,CAACA,EAAUD,GAClC,MACF,KAAK,KACFF,EAAMC,EAAMC,EAAUC,GAAY,EAAEH,GAAOC,GAAOC,GAAWC,GAC9D,MACF,KAAK,KACFH,EAAMC,GAAQ,EAAEA,GAAOD,IACvBE,EAAUC,GAAY,EAAEA,GAAWD,GACpC,MACF,SACGF,EAAMC,GAAQL,qBAAqBI,EAAMC,EAAMF,IAC/CG,EAAUC,GAAYP,qBAAqBM,EAAUC,EAAUxD,EAAgBG,eAEpF,GAAIuB,EAAUr4C,KAAKj3L,SAAU,CAC3B,MAAMsxO,GAAYF,EAAWF,GAAQtD,EAAgBI,iBACrD,MAAMuD,EAAWN,EAAOE,EACxB,MAAMK,EAAkBp9P,KAAKsrB,KAAKkuO,EAAgBzhP,QAClD,GAAImlP,EAAWE,EAAkB5D,EAAgBQ,iBAAkB,CACjE,GAAIh6P,KAAKmG,IAAIg3P,GAAY,GAAM3D,EAAgB1hP,MAAO,CACpDulP,YACA,OAAO,IACR,CACD7C,iBACA8C,uBACA,OAAO,IACR,CACD,GAAIt9P,KAAKmG,IAAIg3P,GAAY3D,EAAgB1hP,MAAO,CAC9CulP,YACA,OAAO,IACR,CACGH,GAAYE,EAAkB5D,EAAgBS,WAChDO,iBAEF,GAAI0C,GAAYE,EAAkB5D,EAAgBO,iBAChD,GAAIQ,sBAAuB,CACzBC,iBACA8C,uBACAnC,eAAe,CACbpjP,OAAQ/X,KAAKmG,IAAI+2P,IAE/B,MACY1D,EAAgBzhP,QAAUmlP,OAEvB,IAAKK,cAAcL,EAAU1D,EAAgBG,cAAeyD,GACjE,GAAI5D,EAAgBj5P,IAAI5C,SAAW,EAAG,CACpC68P,iBACAW,eAAe,CACbpjP,OAAQ/X,KAAKmG,IAAI+2P,IAE/B,MACY1D,EAAgBzhP,QAAUmlP,EAG1Bl9P,KAAKmG,IAAIg3P,GAAY3D,EAAgB1hP,MAAQgjP,GAC/CwC,uBAEF,OAAO,IACR,CACD,MAAMH,GAAYN,EAAOE,GAAYvD,EAAgBI,iBACrD,MAAMsD,EAAWJ,EAAOE,EACxB,MAAMI,EAAkBp9P,KAAKsrB,KAAKkuO,EAAgB1hP,OAClD,GAAIqlP,EAAWC,EAAkB5D,EAAgBQ,iBAAkB,CACjE,GAAIh6P,KAAKmG,IAAI+2P,GAAY,GAAM1D,EAAgBzhP,OAAQ,CACrDslP,YACA,OAAO,IACR,CACD7C,iBACA8C,uBACA,OAAO,IACR,CACD,GAAIt9P,KAAKmG,IAAI+2P,GAAY1D,EAAgBzhP,OAAQ,CAC/CslP,YACA,OAAO,IACR,CACGF,GAAYC,EAAkB5D,EAAgBS,WAChDO,iBAEF,GAAI2C,GAAYC,EAAkB5D,EAAgBO,iBAChD,GAAIQ,sBAAuB,CACzBC,iBACA8C,uBACAnC,eAAe,CACbrjP,MAAO9X,KAAKmG,IAAIg3P,IAE5B,MACU3D,EAAgB1hP,OAASqlP,OAEtB,IAAKI,cAAcJ,EAAU3D,EAAgBG,cAAeyD,GACjE,GAAI5D,EAAgBj5P,IAAI5C,SAAW,EAAG,CACpC68P,iBACAW,eAAe,CACbrjP,MAAO9X,KAAKmG,IAAIg3P,IAE5B,MACU3D,EAAgB1hP,OAASqlP,EAGzBn9P,KAAKmG,IAAI+2P,GAAY1D,EAAgBzhP,OAAS+iP,GAChDwC,uBAEF,OAAO,IACR,CACD,SAASE,sBAAqB92B,MAC5BA,EAAK+2B,aACLA,IAEA,MAAM56C,EAAOq4C,EAAUr4C,KACvB,IAAK6jB,EAAO,CACV,MAAMg3B,EAAcxC,EAAUwC,YAAcD,EACxCC,IACG76C,EAAKj3L,SAGRsvO,EAAUyC,oBAAoB,GAAID,GAFlCxC,EAAUyC,oBAAoBD,EAAcxC,EAAUI,WAAY,IAKlElC,GACFsD,wBAAwB,GAE1B,MACD,CACD,MAAMz6C,EAASY,EAAK4jB,cAAcC,GAClC,MAAM3iN,EAAQm3O,EAAU9mM,WAAW,GAAK8mM,EAAUjD,SAClD,IAAK,IAAIn4P,EAAI,EAAGoH,EAAK+6M,EAAOtkN,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC/C,MAAM+5D,EAAQooJ,EAAOniN,GACrB,MAAMg3M,SACJA,GACEj9I,EACJ,GAAIi9I,EAASG,sBACX,SAEF,IAAIymD,EAAcxC,EAAUwC,aAAe59P,EAAI,IAAMoH,EAAKu2P,EAAe,GACzE,IAAId,EAAa9iM,EAAM/hD,MACnB+qM,EAAKj3L,WACP+wO,EAAa9iM,EAAMu5J,QAAUv5J,EAAMu5J,QAAQ,IAAMupC,GAEnD,IAAIiB,EAAYjB,EAAa54O,EAC7B,IAAKq1O,GAAkBtiD,EAASC,aAAc,CAC5C,GAAK8L,EAAKj3L,SAGH,CACL8xO,IAAgBE,EAAY1C,EAAU2C,YACtC3C,EAAUyC,oBAAoB,GAAID,EACnC,KANmB,CAClBA,GAAeE,EAAY1C,EAAU2C,YACrC3C,EAAUyC,oBAAoBD,EAAcxC,EAAUI,WAAY,EAC9E,CAIUjB,aAAa,KACb,QACD,CACD,IAAKvjD,EAASE,uBAAyB0lD,wBAAwBkB,GAAY,CACpE/6C,EAAKj3L,SAGRsvO,EAAUyC,oBAAoB,EAAGC,GAFjC1C,EAAUyC,oBAAoBC,EAAY1C,EAAUI,WAAY,GAIlE,QACD,CACD,MAAMgB,EAAYV,wBACd9kD,EAASE,uBACX4mD,EAAY,GAEd,GAAK/6C,EAAKj3L,SAIH,CACLsvO,EAAUyC,oBAAoB,EAAGC,GACjCA,EAAY59P,KAAKmG,IAAIy3P,GACrBtB,EAAUvkP,QAAU6lP,CACrB,KARmB,CAClBA,GAAa1C,EAAUI,WACvBJ,EAAUyC,oBAAoBC,EAAW,GACzCtB,EAAUxkP,OAAS8lP,CAC7B,CAKYA,IACFtB,EAAU3C,cAAgByB,2BAE5B,MAAM/0B,EAAexsK,EAAMs8I,QACvBkkD,aAAah0B,IACfi2B,EAAU/7P,IAAIH,KAAK,KAErBk8P,EAAU/7P,IAAIH,KAAKimO,GACfq3B,IACG76C,EAAKj3L,SAGRsvO,EAAUyC,oBAAoB,GAAID,GAFlCxC,EAAUyC,oBAAoBD,EAAcxC,EAAUI,WAAY,GAKvE,CACF,CACD,SAAS+B,YACP7C,iBACA,GAAIhB,EAAgBC,YAAa,CAC/BD,EAAgBU,OAAS,KACzBoD,sBACR,MACQhE,EAAYnrP,MAAM/N,KAAK,CACrBG,IAAK,GACLk8O,IAAK,MACL3kO,MAAO,EACPC,OAAQ,EACR/gB,UAAWokQ,0BACXp7C,SAAUk7C,EAAUv6C,WACpBu5C,OAAQ,MAGb,CACD,SAASqD,cAAczlP,EAAO8xM,EAAQwzC,GACpC,GAAIA,EAAkB5D,EAAgBK,gBAAkB/hP,GAASA,GAASslP,EAAkB5D,EAAgBM,eAAgB,CAC1H,GAAIN,EAAgBC,YAAa,CAC/Be,iBACAhB,EAAgBj5P,IAAIH,KAAK,IAC1B,CACD,OAAO,KACR,CACD,MAAM4/M,EAAWw5C,EAAgBx5C,SACjC,IAAIjoM,EAAS,EACb,GAAIyhP,EAAgB5tO,SAAU,CAC5B7T,EAASD,EACTA,EAAQ,CACT,CACDwlP,uBACA9C,iBACAW,eAAe,CACbrjP,MAAO9X,KAAKmG,IAAI2R,GAChBC,OAAQ/X,KAAKmG,IAAI4R,GACjB/gB,UAAW4yN,GAAUwxC,0BACrBp7C,aAEF,OAAO,IACR,CACD,SAASs9C,uBACP,GAAK9D,EAAgBC,aAAgBD,EAAgBj5P,IAArD,CAGKi5P,EAAgB5tO,SAGnB4tO,EAAgBE,aAAeF,EAAgBzhP,OAASyhP,EAAgBI,iBAFxEJ,EAAgBp9N,YAAco9N,EAAgB1hP,MAAQ0hP,EAAgBI,iBAIxEN,EAAYnrP,MAAM/N,KAAKi8P,iBAAiB7C,IACxCA,EAAgBC,YAAc,MAC9BD,EAAgBj5P,IAAI5C,OAAS,CAR5B,CASF,CACD,SAASmgQ,aAAaC,EAAQ,OAC5B,MAAMpgQ,EAAS27P,EAAYnrP,MAAMxQ,OACjC,GAAIA,IAAW,KAGXogQ,GAASpgQ,EAASywP,IAAtB,CAGA2K,EAAKjP,QAAQwP,EAAa37P,GAC1B27P,EAAYnrP,MAAQ,GACpBmrP,EAAYC,OAAS3sQ,OAAO0d,OAAO,KAHlC,CAIF,CACD,MAAM8sP,EAAkB,IAAI1I,gBAC5B,OAAO,IAAI7kP,SAAQ,SAAS2tP,YAAYvtP,EAASiR,GAC/C,MAAMwU,KAAO,SAAU9T,GACrBkiP,aAAa,MACbj0P,QAAQ4tP,IAAI,CAAC77O,EAASm9O,EAAK1lO,QAAQ9X,MAAK,WACtC,IACEi8O,YAAYvtP,EAASiR,EACtB,CAAC,MAAOjU,GACPiU,EAAOjU,EACR,CACF,GAAEiU,EACX,EACM21O,EAAK6G,sBACLN,EAAgB/mP,QAChB,MAAM+qO,EAAY,CAAA,EAClB,IAAIuc,EACFn5P,EACAo5P,EACA5tP,EAAO,GACT,QAAS2tP,EAAOP,EAAgB/iO,SAAU,CACxCrqB,EAAKrM,OAAS,EACdy9O,EAAUpxO,KAAOA,EACjB,IAAKktP,EAAa57O,KAAK8/N,GACrB,MAEF,MAAM4iB,EAAgB9C,EACtBA,EAAY7I,EAAanpM,MACzB,MAAMn/C,EAAKqxO,EAAUrxO,GACrBC,EAAOoxO,EAAUpxO,KACjB,OAAQD,EAAK,GACX,KAAK3T,EAAIqC,QACP,MAAMwlQ,EAAcj0P,EAAK,GAAGxL,KAC1B0/P,EAAcl0P,EAAK,GACrB,GAAIkxP,EAAUr4C,MAAQo7C,IAAgB/C,EAAUl7C,UAAYk+C,IAAgBhD,EAAUjD,SACpF,MAEFqF,uBACApC,EAAUl7C,SAAWi+C,EACrB/C,EAAUjD,SAAWiG,EACrBxuO,KAAK8jO,cAAcyK,EAAa,OAChC,OACF,KAAK7nQ,EAAIuC,YACPuiQ,EAAUK,SAAWvxP,EAAK,GAC1B,MACF,KAAK5T,EAAImC,UACP2iQ,EAAUI,WAAatxP,EAAK,GAAK,IACjC,MACF,KAAK5T,EAAIoC,WACP0iQ,EAAUiD,QAAUn0P,EAAK,GACzB,MACF,KAAK5T,EAAIwC,SACPsiQ,EAAUkD,wBAAwBp0P,EAAK,GAAIA,EAAK,IAChDkxP,EAAUS,WAAaT,EAAUe,eAAer4P,QAChD,MACF,KAAKxN,EAAIyC,mBACPqiQ,EAAUiD,SAAWn0P,EAAK,GAC1BkxP,EAAUkD,wBAAwBp0P,EAAK,GAAIA,EAAK,IAChDkxP,EAAUS,WAAaT,EAAUe,eAAer4P,QAChD,MACF,KAAKxN,EAAI2C,SACPmiQ,EAAUmD,iBACV,MACF,KAAKjoQ,EAAI0C,cACPoiQ,EAAUpiQ,cAAckR,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1EkxP,EAAUoD,kBAAkBt0P,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC9EmyP,qBACA,MACF,KAAK/lQ,EAAIiC,eACP6iQ,EAAUwC,YAAc1zP,EAAK,GAC7B,MACF,KAAK5T,EAAIkC,eACP4iQ,EAAU2C,YAAc7zP,EAAK,GAC7B,MACF,KAAK5T,EAAI+B,UACP+iQ,EAAUS,WAAa5tQ,EAAgB6V,QACvCs3P,EAAUe,eAAiBluQ,EAAgB6V,QAC3C,MACF,KAAKxN,EAAI6C,eACP,IAAKo5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACD,MAAMq1M,GAAerD,EAAUr4C,KAAKj3L,SAAW,GAAK,GAAKsvO,EAAUjD,SAAW,IAC9E,MAAMuG,EAAWx0P,EAAK,GACtB,IAAK,IAAIlK,EAAI,EAAGoH,EAAKs3P,EAAS7gQ,OAAQmC,EAAIoH,EAAIpH,IAAK,CACjD,MAAM0R,EAAOgtP,EAAS1+P,GACtB,UAAW0R,IAAS,SAClBupP,EAAqB36P,KAAKoR,QACrB,UAAWA,IAAS,UAAYA,IAAS,EAAG,CACjD,MAAMjR,EAAMw6P,EAAqB16P,KAAK,IACtC06P,EAAqBp9P,OAAS,EAC9B6/P,qBAAqB,CACnB92B,MAAOnmO,EACPk9P,aAAcjsP,EAAO+sP,GAExB,CACF,CACD,GAAIxD,EAAqBp9P,OAAS,EAAG,CACnC,MAAM4C,EAAMw6P,EAAqB16P,KAAK,IACtC06P,EAAqBp9P,OAAS,EAC9B6/P,qBAAqB,CACnB92B,MAAOnmO,EACPk9P,aAAc,GAEjB,CACD,MACF,KAAKrnQ,EAAI4C,SACP,IAAKq5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACDs0M,qBAAqB,CACnB92B,MAAO18N,EAAK,GACZyzP,aAAc,IAEhB,MACF,KAAKrnQ,EAAI8C,iBACP,IAAKm5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACDgyM,EAAUmD,iBACVb,qBAAqB,CACnB92B,MAAO18N,EAAK,GACZyzP,aAAc,IAEhB,MACF,KAAKrnQ,EAAI+C,2BACP,IAAKk5P,EAAanpM,MAAM25J,KAAM,CAC5B3oK,EAAKq6M,gBAAgBlC,EAAanpM,OAClC,QACD,CACDgyM,EAAU2C,YAAc7zP,EAAK,GAC7BkxP,EAAUwC,YAAc1zP,EAAK,GAC7BkxP,EAAUmD,iBACVb,qBAAqB,CACnB92B,MAAO18N,EAAK,GACZyzP,aAAc,IAEhB,MACF,KAAKrnQ,EAAIkE,aACPgjQ,uBACAtG,IAAUr1O,EAAU50B,IAAI,YAAc+d,KAAKyB,MAC3CqrP,EAAc5tP,EAAK,aAAcU,KACjClM,EAAOwL,EAAK,GAAGxL,KACf,GAAIo5P,GAAeoD,EAAkBx5O,UAAUhjB,GAC7C,MAEFkxB,KAAK,IAAI7lB,SAAQ,SAAUiuP,EAAgBC,GACzC,IAAKH,EACH,MAAM,IAAIx4P,YAAY,wCAExB,IAAIwxP,EAAOoG,EAAMhrP,OAAOxN,GACxB,GAAIoyP,aAAgBllP,IAAK,CACvB,GAAIsvP,EAAkBz5O,SAASqvO,GAAO,CACpCkH,IACA,MACD,CACD,MAAME,EAAc99M,EAAKm1M,iBAAiBj4M,QAAQw5M,EAAM12M,EAAK7iC,WAC7D,GAAI2gP,EAAa,CACfF,IACA,MACD,CACDlH,EAAO7lP,EAAKY,MAAMilP,EACnB,CACD,KAAMA,aAAgBjiP,YACpB,MAAM,IAAIvP,YAAY,8BAExB,MAAMtR,EAAO8iQ,EAAK9jP,KAAK/f,IAAI,WAC3B,KAAMe,aAAgB4c,MACpB,MAAM,IAAItL,YAAY,sCAExB,GAAItR,EAAK0Q,OAAS,OAAQ,CACxBw8P,EAAkB5uP,IAAI5N,EAAMoyP,EAAK9jP,KAAK7B,MAAO,MAC7C6sP,IACA,MACD,CACD,MAAM2G,EAAepM,EAAanpM,MAAMh8C,QACxC,MAAMwxP,EAAmB,IAAIzH,aAAawH,GAC1C,MAAM17O,EAAS3P,aAAaw9O,EAAK9jP,KAAKhB,SAAS,UAAW,MACtDiX,GACF27O,EAAiB1nQ,UAAU+rB,GAE7B+6O,eACA,MAAMa,EAAc,CAClBC,eAAgB,MAChB,OAAA9U,CAAQ5pP,EAAOoL,GACb7M,KAAKmgQ,eAAiB,KACtB7F,EAAKjP,QAAQ5pP,EAAOoL,EACrB,EACD,eAAIuzP,GACF,OAAO9F,EAAK8F,WACb,EACD,SAAIxrO,GACF,OAAO0lO,EAAK1lO,KACb,GAEH6mB,EAAK2+M,eAAe,CAClB5+O,OAAQ22O,EACRC,OACAlvO,UAAWivO,EAAK9jP,KAAK/f,IAAI,cAAgB40B,EACzC0wO,aAAcqM,EACd5F,uBACAC,KAAM4F,EACN3F,aACAC,UACA74M,OACA84M,oBACAC,uBACAC,mBACC79O,MAAK,WACDojP,EAAYC,gBACf5D,EAAkB5uP,IAAI5N,EAAMoyP,EAAK9jP,KAAK7B,MAAO,MAE/C6sP,GACD,GAAEC,EACjB,IAAe17O,OAAM,SAAUC,GACjB,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAI66C,EAAK58C,QAAQswP,aAIjB,MAAMtxO,EAHJ1f,KAAK,uCAAuC0f,MAF7C,CAMF,KACD,OACF,KAAKlmB,EAAIS,UACP+gQ,EAAc5tP,EAAK,aAAcU,KACjClM,EAAOwL,EAAK,GAAGxL,KACf,GAAIo5P,GAAeqD,EAAiBz5O,UAAUhjB,GAC5C,MAEFkxB,KAAK,IAAI7lB,SAAQ,SAAU6uP,EAAeC,GACxC,IAAKf,EACH,MAAM,IAAIx4P,YAAY,uCAExB,MAAMw5P,EAAYj3O,EAAU50B,IAAI,aAChC,KAAM6rQ,aAAqB9tP,MACzB,MAAM,IAAI1L,YAAY,qCAExB,MAAMo1P,EAASoE,EAAU7rQ,IAAIyR,GAC7B,KAAMg2P,aAAkB1pP,MACtB,MAAM,IAAI1L,YAAY,kCAExB,MAAM0/P,EAAatK,EAAOznQ,IAAI,QAC9B,GAAK+xQ,EAAL,CAKAxB,uBACApC,EAAUl7C,SAAW,KACrBk7C,EAAUjD,SAAW6G,EAAW,GAChCtL,cAAc,KAAMsL,EAAW,IAAIvjP,KAAKm9O,EAAeC,EAJtD,KAJD,CACEsC,EAAiB7uP,IAAI5N,EAAMg2P,EAAOvpP,MAAO,MACzCytP,GAED,CAKf,IAAer8O,OAAM,SAAUC,GACjB,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAI66C,EAAK58C,QAAQswP,aAIjB,MAAMtxO,EAHJ1f,KAAK,yCAAyC0f,MAF/C,CAMF,KACD,OACF,KAAKlmB,EAAIqE,mBACP6iQ,uBACA,GAAIxE,EAAsB,CACxBI,EAAkB98P,QAClBk9P,EAAYnrP,MAAM/N,KAAK,CACrBtS,KAAM,qBACNg4N,IAAK97M,EAAK,aAAcU,KAAOV,EAAK,GAAGxL,KAAO,MAEjD,CACD,MACF,KAAKpI,EAAIsE,wBACP4iQ,uBACA,GAAIxE,EAAsB,CACxBI,EAAkB98P,QAClB,IAAI2iQ,EAAO,KACP/0P,EAAK,aAAcc,OACrBi0P,EAAO/0P,EAAK,GAAGjd,IAAI,SAErBusQ,EAAYnrP,MAAM/N,KAAK,CACrBtS,KAAM,0BACN2oC,GAAIp6B,OAAOC,UAAUyiQ,GAAQ,GAAG7kN,EAAK+kM,UAAU+f,oBAAoBD,IAAS,KAC5Ej5C,IAAK97M,EAAK,aAAcU,KAAOV,EAAK,GAAGxL,KAAO,MAEjD,CACD,MACF,KAAKpI,EAAIuE,iBACP2iQ,uBACA,GAAIxE,EAAsB,CACxB,GAAII,EAAkB98P,QAAU,EAC9B,MAEF88P,EAAkB98P,QAClBk9P,EAAYnrP,MAAM/N,KAAK,CACrBtS,KAAM,oBAET,CACD,MACF,KAAKsI,EAAIW,SACHinQ,GAAkBA,EAAcn7C,OAASq4C,EAAUr4C,MAAQm7C,EAAc/F,WAAaiD,EAAUjD,UAAY+F,EAAch+C,WAAak7C,EAAUl7C,UACnJs9C,uBAEF,MAEJ,GAAIhE,EAAYnrP,MAAMxQ,QAAUo7P,EAAK8F,YAAa,CAChDlH,EAAO,KACP,KACD,CACF,CACD,GAAIA,EACFjoO,KAAK2+N,QADP,CAIAiP,uBACAQ,eACA7zP,GAHC,CAIP,IAAOoS,OAAMC,IACP,KAAIA,aAAkBjd,gBAAtB,CAGA,IAAIZ,KAAKnB,QAAQswP,aAMjB,MAAMtxO,EALJ1f,KAAK,4CAA4Ci0P,EAAKryP,gBAAqB8d,OAC3EghP,uBACAQ,cAJD,CAOW,GAEf,CACD,2BAAMmB,CAAsBnyP,EAAMD,GAChC,MAAM9B,EAAOtM,KAAKsM,KAClB,IAAIm0P,EACJ,MAAMC,EAAmB1gQ,KAAK2gQ,cAAcvyP,EAAW8lN,WACvD,GAAI9lN,EAAWo0M,UAAW,CACxB,MAAMo+C,EAAgBvyP,EAAK/f,IAAI,iBAC3BsyQ,aAAyBv0P,OAC3B+B,EAAWwyP,cAAgB,CACzBC,SAAU74P,kBAAkB44P,EAActyQ,IAAI,aAC9CwyQ,SAAU94P,kBAAkB44P,EAActyQ,IAAI,aAC9CyyQ,WAAYH,EAActyQ,IAAI,gBAGlC,IACE,MAAMg0N,EAAcj0M,EAAK/f,IAAI,eACzBg0N,aAAuBpyM,aACzBuwP,EAAgBn+C,EAAYhyM,WAE/B,CAAC,MAAO9H,GACP,IAAKxI,KAAKnB,QAAQswP,aAChB,MAAM3mP,EAERrK,KAAK,uDAAuDqK,MAC7D,CACF,CACD,MAAMuxM,EAAc,GACpB,IAAID,EAAmB,KACvB,IAAI7xM,EACJ,GAAIoG,EAAKT,IAAI,YAAa,CACxB3F,EAAWoG,EAAK/f,IAAI,YACpB,GAAI2Z,aAAoBoE,KAAM,CAC5BytM,EAAmB7xM,EAAS3Z,IAAI,gBAChCwrN,EAAmBA,aAA4B7tM,KAAO6tM,EAAiB/5M,KAAO,KAC9E,GAAIkI,EAAS2F,IAAI,eAAgB,CAC/B,MAAMozP,EAAe/4P,EAAS3Z,IAAI,eAClC,IAAI68C,EAAQ,EACZ,IAAK,MAAMz1B,KAASsrP,EAAc,CAChC,MAAMluP,EAAOxG,EAAKiX,WAAW7N,GAC7B,UAAW5C,IAAS,SAClBq4B,EAAQr4B,MACH,MAAIA,aAAgB7G,MAGzB,MAAM,IAAItL,YAAY,yCAAyCmS,KAF/DinM,EAAY5uK,KAAWr4B,EAAK/S,IAG7B,CACF,CACF,CACT,MAAa,GAAIkI,aAAoBgE,KAC7B6tM,EAAmB7xM,EAASlI,SACvB,CACL,MAAM/B,EAAM,oCACZ,IAAKgC,KAAKnB,QAAQswP,aAChB,MAAM,IAAIxuP,YAAY3C,GAExBG,KAAKH,EACN,CACG87M,IAAqB,oBAAsBA,IAAqB,qBAAuBA,IAAqB,oBAC9GA,EAAmB,KAEtB,CACD,MAAMmnD,GAAmB7yP,EAAWywC,MAAQzwC,EAAWyrM,eACrDqnD,EAAoBlgD,KAAkB5yM,EAAWrO,MAC/C+5M,GAAoBmnD,GAAmBC,IACzCpnD,EAAmB,MAErB,GAAIA,EACF1rM,EAAWs0M,gBAAkBpvJ,YAAYwmJ,OACpC,CACL,MAAMF,KAAoBxrM,EAAW6wB,MAAQ05K,GAAUG,UACvD,MAAMqoD,KAAuB/yP,EAAW6wB,MAAQ05K,GAAUK,aAC1D/wM,EAAWirD,GACP9kD,EAAW/e,OAAS,YAAe8xQ,IACrCl5P,EAAWkrD,IAEb,GAAIymJ,GAAkBsnD,EAAmB,CACvCj5P,EAAWgrD,GACPguM,IACE,UAAU/pP,KAAK9I,EAAWrO,MAC5BkI,EAAWmrD,GACF,YAAYl8C,KAAK9I,EAAWrO,MACrCkI,EAAWorD,GACF,aAAan8C,KAAK9I,EAAWrO,QACtCkI,EAAWkrD,IAGhB,CACD/kD,EAAWs0M,gBAAkBz6M,CAC9B,CACDmG,EAAW2rM,YAAcA,EACzB3rM,EAAW0rM,iBAAmBA,EAC9B1rM,EAAW6lN,cAAgBna,GAAoBC,EAAY76M,OAAS,EACpEkP,EAAWC,KAAOA,EAClBD,EAAW8lN,gBAAkBwsC,EAC7B,MAAMU,QAAuBphQ,KAAKqhQ,eAAejzP,GACjDA,EAAW8lN,UAAYktC,EACnBX,IACFryP,EAAWk0M,YAActiN,KAAKshQ,gBAAgBb,EAAeW,IAE/D,OAAOhzP,CACR,CACD,oBAAAmzP,CAAqBnzP,EAAYozP,EAAc,OAC7CljQ,QAAQ8P,EAAWo0M,UAAW,0BAC9B,MAAM0R,EAAY,GAClB,MAAMjsN,EAAWmG,EAAWs0M,gBAAgBv9M,QAC5C,MAAM20M,EAAmB1rM,EAAW0rM,iBACpC,MAAMC,EAAc3rM,EAAW2rM,YAC/B,IAAK,MAAM7oJ,KAAY6oJ,EAAa,CAClC,MAAMC,EAAYD,EAAY7oJ,GAC1B8oJ,IAAc,YAGlB/xM,EAASipD,GAAY8oJ,EACtB,CACD,MAAMvC,EAAmB/3I,KACzB,IAAK,MAAMxO,KAAYjpD,EAAU,CAC/B,IAAI+xM,EAAY/xM,EAASipD,GACzB,GAAI8oJ,IAAc,GAChB,SAEF,IAAItC,EAAUD,EAAiBuC,GAC/B,GAAItC,SAAY32M,EAAW,CACzBmzN,EAAUhjK,GAAYjwD,OAAOC,aAAaw2M,GAC1C,QACD,CACD,IAAIv3M,EAAO,EACX,OAAQ65M,EAAU,IAChB,IAAK,IACCA,EAAU96M,SAAW,IACvBiB,EAAO2O,SAASkrM,EAAUzkM,UAAU,GAAI,KAE1C,MACF,IAAK,IACCykM,EAAU96M,SAAW,IACvBiB,EAAO2O,SAASkrM,EAAUzkM,UAAU,GAAI,KAE1C,MACF,IAAK,IACL,IAAK,IACH,GAAIykM,EAAU96M,QAAU,GAAK86M,EAAU96M,QAAU,EAAG,CAClD,MAAMuiQ,EAAUznD,EAAUzkM,UAAU,GACpC,GAAIisP,EAAa,CACfrhQ,EAAO2O,SAAS2yP,EAAS,IACzB,KACD,CACDthQ,GAAQshQ,EACR,GAAI7jQ,OAAOka,MAAM3X,IAASvC,OAAOC,UAAUiR,SAAS2yP,EAAS,KAC3D,OAAOzhQ,KAAKuhQ,qBAAqBnzP,EAAY,KAEhD,CACD,MACF,IAAK,IACHspM,EAAUF,mBAAmBwC,EAAWvC,GACpCC,KAAa,IACfv3M,EAAOu3M,GAET,MACF,QACE,OAAQsC,GACN,IAAK,MACL,IAAK,MACL,IAAK,MACHka,EAAUhjK,GAAY8oJ,EAAUzxM,WAAW,IAAK,IAChD,SAEJ,MAEJ,GAAIpI,EAAO,GAAKA,GAAQ,SAAYvC,OAAOC,UAAUsC,GAAO,CAC1D,GAAI25M,GAAoB35M,KAAU+wD,EAAU,CAC1C,MAAMwJ,EAAepH,YAAYwmJ,GACjC,GAAIp/I,IAAiBs/I,EAAYt/I,EAAaxJ,IAAY,CACxDgjK,EAAUhjK,GAAYjwD,OAAOC,aAAau2M,EAAiBuC,IAC3D,QACD,CACF,CACDka,EAAUhjK,GAAYjwD,OAAO8mO,cAAc5nO,EAC5C,CACF,CACD,OAAO+zN,CACR,CACD,oBAAMmtC,CAAejzP,GACnBA,EAAW4lN,wBAA0B5lN,EAAW8lN,WAAWh1N,OAAS,EACpE,GAAIkP,EAAW4lN,wBAAyB,EACjC5lN,EAAWo0M,WAAap0M,EAAW6lN,cACtC7lN,EAAWkmN,kBAAoBt0N,KAAKuhQ,qBAAqBnzP,IAE3D,OAAOA,EAAW8lN,SACnB,CACD,IAAK9lN,EAAWo0M,UACd,OAAO,IAAId,aAAa1hN,KAAKuhQ,qBAAqBnzP,IAEpD,GAAIA,EAAWo0M,YAAcp0M,EAAW4e,KAAKkjC,eAAiB9hD,EAAW4e,gBAAgBqkC,eAAiBjjD,EAAWwyP,eAAeC,WAAa,UAAYzyP,EAAWwyP,cAAcE,WAAa,OAAS1yP,EAAWwyP,cAAcE,WAAa,QAAU1yP,EAAWwyP,cAAcE,WAAa,UAAY1yP,EAAWwyP,cAAcE,WAAa,WAAY,CAC9V,MAAMD,SACJA,EAAQC,SACRA,GACE1yP,EAAWwyP,cACf,MAAMc,EAAez1P,KAAK3d,IAAI,GAAGuyQ,KAAYC,UAC7C,MAAMa,QAAiBjvM,YAAY7mD,OAAO,CACxC5D,SAAUy5P,EACVzvM,iBAAkBjyD,KAAK+wP,uBACvB3jO,QAAS,OAEX,MAAM8mM,EAAY,GAChBj7M,EAAM,GACR7K,EAAW4e,KAAKy1B,SAAQ,SAAUyO,EAAU4I,GAC1C,GAAIA,EAAM,MACR,MAAM,IAAIn5D,YAAY,6BAExB,MAAMihQ,EAAOD,EAASrvP,OAAOwnD,GAC7B,GAAI8nM,EAAM,CACR3oP,EAAI/Z,OAAS,EACb,IAAK,IAAImC,EAAI,EAAGoH,EAAKm5P,EAAK1iQ,OAAQmC,EAAIoH,EAAIpH,GAAK,EAC7C4X,EAAItX,MAAMigQ,EAAK5/P,WAAWX,IAAM,GAAKugQ,EAAK5/P,WAAWX,EAAI,IAE3D6yN,EAAUhjK,GAAYjwD,OAAOC,gBAAgB+X,EAC9C,CACT,IACM,OAAO,IAAIyoM,aAAawS,EACzB,CACD,OAAO,IAAIrS,qBAAqBzzM,EAAW0zM,UAAW1zM,EAAW2zM,SAClE,CACD,mBAAM4+C,CAAckB,GAClB,IAAKA,EACH,OAAO,KAET,GAAIA,aAAmB51P,KAAM,CAC3B,MAAM01M,QAAajvJ,YAAY7mD,OAAO,CACpC5D,SAAU45P,EACV5vM,iBAAkBjyD,KAAK+wP,uBACvB3jO,QAAS,OAEX,OAAIu0L,aAAgBtwJ,aACX,IAAIwwJ,qBAAqB,EAAG,OAE9B,IAAIH,aAAaC,EAAK7wJ,SAC9B,CACD,GAAI+wM,aAAmB3xP,WACrB,IACE,MAAMyxM,QAAajvJ,YAAY7mD,OAAO,CACpC5D,SAAU45P,EACV5vM,iBAAkBjyD,KAAK+wP,uBACvB3jO,QAAS,OAEX,GAAIu0L,aAAgBtwJ,aAClB,OAAO,IAAIwwJ,qBAAqB,EAAG,OAErC,MAAM1sM,EAAM,IAAIxR,MAAMg+M,EAAKziN,QAC3ByiN,EAAKl/J,SAAQ,SAAU/5C,EAAUqnN,GAC/B,UAAWA,IAAU,SAAU,CAC7B56M,EAAIzM,GAAYzH,OAAO8mO,cAAchY,GACrC,MACD,CACGA,EAAM7wN,OAAS,IAAM,IACvB6wN,EAAQ,KAAWA,GAErB,MAAMjuN,EAAM,GACZ,IAAK,IAAIokB,EAAI,EAAGA,EAAI6pM,EAAM7wN,OAAQgnB,GAAK,EAAG,CACxC,MAAM9G,EAAK2wM,EAAM/tN,WAAWkkB,IAAM,EAAI6pM,EAAM/tN,WAAWkkB,EAAI,GAC3D,IAAK9G,EAAK,SAAY,MAAQ,CAC5Btd,EAAIH,KAAKyd,GACT,QACD,CACD8G,GAAK,EACL,MAAM5G,EAAKywM,EAAM/tN,WAAWkkB,IAAM,EAAI6pM,EAAM/tN,WAAWkkB,EAAI,GAC3DpkB,EAAIH,OAAOyd,EAAK,OAAU,KAAOE,EAAK,MAAS,MAChD,CACDnK,EAAIzM,GAAYzH,OAAO8mO,iBAAiBjmO,EAClD,IACQ,OAAO,IAAI4/M,aAAavsM,EACzB,CAAC,MAAO0I,GACP,GAAIA,aAAkBjd,eACpB,OAAO,KAET,GAAIZ,KAAKnB,QAAQswP,aAAc,CAC7BhxP,KAAK,6CAA6C0f,OAClD,OAAO,IACR,CACD,MAAMA,CACP,CAEH,OAAO,IACR,CACD,eAAAyjP,CAAgBQ,EAAY5tC,GAC1B,MAAM7gN,EAAS,GACf,IAAK,IAAI6M,EAAI,EAAGitB,EAAK20N,EAAW5iQ,OAAQghB,EAAIitB,EAAIjtB,IAAK,CACnD,MAAM6hP,EAAUD,EAAW5hP,MAAQ,EAAI4hP,EAAW5hP,GAClD,MAAM/f,EAAO+f,GAAK,GACd6hP,IAAY,GAAM7tC,EAAUtmN,IAAIzN,MAGpCkT,EAAOlT,GAAQ4hQ,EAChB,CACD,OAAO1uP,CACR,CACD,aAAA2uP,CAAc3zP,EAAMwlO,EAAYzlO,GAC9B,MAAM9B,EAAOtM,KAAKsM,KAClB,IAAIunN,EAAe,GACnB,IAAI16J,EAAe,EACnB,MAAM8oM,EAAiB,GACvB,IAAI1mC,EACJ,GAAIntN,EAAWo0M,UAAW,CACxB,MAAM0/C,EAAK7zP,EAAK/f,IAAI,MACpB6qE,SAAsB+oM,IAAO,SAAW3gQ,KAAKuS,KAAKouP,GAAM,IACxD,MAAMlrM,EAAS3oD,EAAK/f,IAAI,KACxB,GAAIqV,MAAM2J,QAAQ0pD,GAChB,IAAK,IAAI31D,EAAI,EAAGoH,EAAKuuD,EAAO93D,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC/C,IAAI0Q,EAAQzF,EAAKiX,WAAWyzC,EAAO31D,MACnC,IAAKzD,OAAOC,UAAUkU,GACpB,MAEF,MAAM5R,EAAOmM,EAAKiX,WAAWyzC,EAAO31D,IACpC,GAAIsC,MAAM2J,QAAQnN,GAChB,IAAK,MAAMwF,KAAKxF,EAAM,CACpB,MAAMkZ,EAAQ/M,EAAKiX,WAAW5d,UACnB0T,IAAU,WACnBw6M,EAAa9hN,GAASsH,GAExBtH,GACD,KACI,KAAInU,OAAOC,UAAUsC,GAS1B,MATiC,CACjC,MAAMkZ,EAAQ/M,EAAKiX,WAAWyzC,IAAS31D,IACvC,UAAWgY,IAAU,SACnB,SAEF,IAAK,IAAI6G,EAAInO,EAAOmO,GAAK/f,EAAM+f,IAC7B2zM,EAAa3zM,GAAK7G,CAEhC,CAEW,CACF,CAEH,GAAIjL,EAAW+e,SAAU,CACvB,MAAMg1O,EAAM9zP,EAAKhB,SAAS,OAC1B,IAAIiuN,EAAW9mN,cAAc2tP,EAAK,GAAKA,EAAM,CAAC,KAAM,KACpD5mC,EAAkB,CAACD,EAAS,GAAIniK,EAAe,GAAKmiK,EAAS,IAC7DA,EAAWjtN,EAAK/f,IAAI,MACpB,GAAIqV,MAAM2J,QAAQguN,GAChB,IAAK,IAAIj6N,EAAI,EAAGoH,EAAK6yN,EAASp8N,OAAQmC,EAAIoH,EAAIpH,IAAK,CACjD,IAAI0Q,EAAQzF,EAAKiX,WAAW+3M,EAASj6N,MACrC,IAAKzD,OAAOC,UAAUkU,GACpB,MAEF,MAAM5R,EAAOmM,EAAKiX,WAAW+3M,EAASj6N,IACtC,GAAIsC,MAAM2J,QAAQnN,GAChB,IAAK,IAAI+f,EAAI,EAAGitB,EAAKhtC,EAAKjB,OAAQghB,EAAIitB,EAAIjtB,IAAK,CAC7C,MAAMy0M,EAAU,CAACroN,EAAKiX,WAAWpjB,EAAK+f,MAAO5T,EAAKiX,WAAWpjB,EAAK+f,MAAO5T,EAAKiX,WAAWpjB,EAAK+f,KAC1F1L,cAAcmgN,EAAS,QACzBstC,EAAelwP,GAAS4iN,GAE1B5iN,GACD,KACI,KAAInU,OAAOC,UAAUsC,GAS1B,MATiC,CACjC,MAAMw0N,EAAU,CAACroN,EAAKiX,WAAW+3M,IAAWj6N,IAAKiL,EAAKiX,WAAW+3M,IAAWj6N,IAAKiL,EAAKiX,WAAW+3M,IAAWj6N,KAC5G,IAAKmT,cAAcmgN,EAAS,MAC1B,SAEF,IAAK,IAAIz0M,EAAInO,EAAOmO,GAAK/f,EAAM+f,IAC7B+hP,EAAe/hP,GAAKy0M,CAEpC,CAEa,CACF,CAEJ,CACP,KAAW,CACL,MAAM39J,EAAS3oD,EAAK/f,IAAI,UACxB,GAAIqV,MAAM2J,QAAQ0pD,GAAS,CACzB,IAAI92C,EAAI9R,EAAW0zM,UACnB,IAAK,MAAM1tB,KAAKp9H,EAAQ,CACtB,MAAM39C,EAAQ/M,EAAKiX,WAAW6wK,UACnB/6K,IAAU,WACnBw6M,EAAa3zM,GAAK7G,GAEpB6G,GACD,CACD,MAAMkiP,EAAevuB,EAAWvlP,IAAI,gBACpC6qE,SAAsBipM,IAAiB,SAAWA,EAAe,CACzE,KAAa,CACL,MAAM3hB,EAAepyO,EAAK/f,IAAI,YAC9B,GAAImyP,aAAwBx0O,KAAM,CAChC,MAAMkwN,EAAUn8N,KAAKqiQ,mBAAmB5hB,EAAa1gP,MACrD8zN,EAAe7zN,KAAKsiQ,qBAAqBnmC,EAAQnlK,OAAQ5oD,GACzD+qD,EAAegjK,EAAQhjK,YACxB,CACF,CACF,CACD,IAAI0hK,EAAc,KAClB,IAAI0nC,EAAappM,EACjB,IAAK,MAAMiC,KAASy4J,EAAc,CAChC,MAAMqqC,EAAarqC,EAAaz4J,GAChC,GAAK8iM,EAGL,GAAKqE,GAIL,GAAIA,IAAerE,EAAY,CAC7BrjC,EAAc,MACd,KACD,OANC0nC,EAAarE,CAOhB,CACGrjC,EACFzsN,EAAW6wB,OAAS05K,GAAUC,WAE9BxqM,EAAW6wB,QAAU05K,GAAUC,WAEjCxqM,EAAW+qD,aAAeA,EAC1B/qD,EAAW4oD,OAAS68J,EACpBzlN,EAAWmtN,gBAAkBA,EAC7BntN,EAAWktN,SAAW2mC,CACvB,CACD,WAAAznC,CAAYimB,GACV,MAAM+hB,EAAkB/hB,EAAavrO,MAAM,IAAK,GAAG,GACnD,OAAOstP,KAAmB5mD,MAAmB,UAAU1kM,KAAKsrP,EAC7D,CACD,kBAAAH,CAAmBtiQ,GACjB,IAAIo5D,EAAe,EACnB,IAAInC,EAAS7oE,OAAO0d,OAAO,MAC3B,IAAI42P,EAAY,MAChB,MAAMjhD,EAAapH,KACnB,IAAIsoD,EAAalhD,EAAWzhN,IAASA,EACrC,MAAM4iQ,EAAUr7C,KACVo7C,KAAcC,IAClBD,EAAa1iQ,KAAKw6N,YAAYz6N,GAAQ,cAAgB,aAExD,MAAM6iQ,EAAcD,EAAQD,GAC5B,UAAWE,IAAgB,SAAU,CACnCzpM,EAAeypM,EACfH,EAAY,IAClB,MACMzrM,EAAS4rM,IAEX,MAAO,CACLzpM,eACAspM,YACAzrM,SAEH,CACD,oBAAAsrM,CAAqBO,EAAmBz0P,GACtC,MAAM4oD,EAAS7oE,OAAO0d,OAAO,MAC7B,MAAMkuM,EAAc3rM,EAAW2rM,YAC/B,MAAM9xM,EAAWmG,EAAWs0M,gBAC5B,IAAK,IAAIh6M,EAAW,EAAGA,EAAW,IAAKA,IACjCA,KAAYqxM,GAAe8oD,EAAkB9oD,EAAYrxM,IAC3DsuD,EAAOtuD,GAAYm6P,EAAkB9oD,EAAYrxM,IAG/CA,KAAYT,GAAY46P,EAAkB56P,EAASS,MACrDsuD,EAAOtuD,GAAYm6P,EAAkB56P,EAASS,KAIlD,OAAOsuD,CACR,CACD,eAAAu/L,CAAgBloP,GACd,MAAMy0P,EAAWz0P,EACjB,IAAIhf,EAAOgf,EAAK/f,IAAI,WACpB,KAAMe,aAAgB4c,MACpB,MAAM,IAAItL,YAAY,wBAExB,IAAI6hN,EAAY,MAChB,IAAIg0C,EACJ,GAAInnQ,EAAK0Q,OAAS,QAAS,CACzB,MAAMgjQ,EAAK10P,EAAK/f,IAAI,mBACpB,IAAKy0Q,EACH,MAAM,IAAIpiQ,YAAY,sCAExB0N,EAAO1K,MAAM2J,QAAQy1P,GAAM/iQ,KAAKsM,KAAKiX,WAAWw/O,EAAG,IAAMA,EACzD,KAAM10P,aAAgBhC,MACpB,MAAM,IAAI1L,YAAY,wCAExBtR,EAAOgf,EAAK/f,IAAI,WAChB,KAAMe,aAAgB4c,MACpB,MAAM,IAAItL,YAAY,wBAExB6hN,EAAY,IACb,CACD,IAAIV,EAAYzzM,EAAK/f,IAAI,aACpBsP,OAAOC,UAAUikN,KACpBA,EAAY,GAEd,IAAIC,EAAW1zM,EAAK/f,IAAI,YACnBsP,OAAOC,UAAUkkN,KACpBA,EAAWS,EAAY,MAAS,KAElC,MAAMqxB,EAAaxlO,EAAK/f,IAAI,kBAC5B,MAAM4lO,EAAY7lN,EAAK/f,IAAI,cAAgBw0Q,EAASx0Q,IAAI,aACxD,GAAIulP,EAAY,CACd2iB,EAAO,IAAIvR,eACX,MAAMh9O,EAAW66P,EAASv1P,OAAO,YACjC,GAAItF,aAAoBgE,KACtBuqP,EAAKrR,OAAOl9O,EAASlI,WAChB,GAAIkI,aAAoBgF,IAC7BupP,EAAKrR,OAAOl9O,EAASnE,iBAChB,GAAImE,aAAoBoE,KAC7B,IAAK,MAAMqJ,KAASzN,EAASwF,eAC3B,GAAIiI,aAAiBzJ,KACnBuqP,EAAKrR,OAAOzvO,EAAM3V,WACb,GAAI2V,aAAiBzI,IAC1BupP,EAAKrR,OAAOzvO,EAAM5R,iBACb,GAAIH,MAAM2J,QAAQoI,GAAQ,CAC/B,MAAMstP,EAAattP,EAAMxW,OACvB+jQ,EAAU,IAAIt/P,MAAMq/P,GACtB,IAAK,IAAI9iP,EAAI,EAAGA,EAAI8iP,EAAY9iP,IAAK,CACnC,MAAMgjP,EAAYxtP,EAAMwK,GACpBgjP,aAAqBj3P,KACvBg3P,EAAQ/iP,GAAKgjP,EAAUnjQ,aACPmjQ,IAAc,UAAYA,aAAqBj2P,OAC/Dg2P,EAAQ/iP,GAAKgjP,EAAUp/P,WAE1B,CACD0yP,EAAKrR,OAAO8d,EAAQrhQ,OACrB,CAGL40P,EAAKrR,OAAO,GAAGrjC,KAAaC,KAC5B,GAAImS,aAAqBhkN,WAAY,CACnC,MAAMsL,EAAS04M,EAAUpyN,KAAOoyN,EAChC,MAAMivC,EAAa3nP,EAAOhZ,OAAS,IAAIT,WAAWyZ,EAAOhZ,OAAOA,OAAQ,EAAGgZ,EAAO0S,cAAgB,IAAInsB,WAAWyZ,EAAO1a,MAAM0B,OAAQgZ,EAAOzJ,MAAOyJ,EAAO/J,IAAM+J,EAAOzJ,OACxKykP,EAAKrR,OAAOge,EACpB,MAAiBjvC,aAAqBjoN,MAC9BuqP,EAAKrR,OAAOjxB,EAAUn0N,MAExB,MAAMi3D,EAAS3oD,EAAK/f,IAAI,WAAaw0Q,EAASx0Q,IAAI,UAClD,GAAIqV,MAAM2J,QAAQ0pD,GAAS,CACzB,MAAMosM,EAAY,GAClB,IAAK,MAAM1tP,KAASshD,UACPthD,IAAU,UAAYA,aAAiBzI,MAChDm2P,EAAUzhQ,KAAK+T,EAAM5R,YAGzB0yP,EAAKrR,OAAOie,EAAUxhQ,OACvB,CACD,GAAI4gN,EAAW,CACbg0C,EAAKrR,OAAO,iBACZ,MAAMke,EAAkBh1P,EAAK/f,IAAI,MAAQw0Q,EAASx0Q,IAAI,KACtD,GAAIqV,MAAM2J,QAAQ+1P,GAAkB,CAClC,MAAMD,EAAY,GAClB,IAAK,MAAM1tP,KAAS2tP,EAClB,UAAW3tP,IAAU,UAAYA,aAAiBzI,IAChDm2P,EAAUzhQ,KAAK+T,EAAM5R,iBAChB,GAAIH,MAAM2J,QAAQoI,GAAQ,CAC/B,MAAM4tP,EAAe,GACrB,IAAK,MAAMztP,KAAWH,UACTG,IAAY,UAAYA,aAAmB5I,MACpDq2P,EAAa3hQ,KAAKkU,EAAQ/R,YAG9Bs/P,EAAUzhQ,KAAK,IAAI2hQ,EAAa1hQ,UACjC,CAEH40P,EAAKrR,OAAOie,EAAUxhQ,OACvB,CACD,MAAM0gN,EAAcj0M,EAAKd,OAAO,gBAAkBu1P,EAASv1P,OAAO,eAC9D+0M,aAAuBr2M,KACzBuqP,EAAKrR,OAAO7iC,EAAYviN,MACfuiN,aAAuBr1M,IAChCupP,EAAKrR,OAAO7iC,EAAYx+M,YACfw+M,aAAuBpyM,YAChCsmP,EAAKrR,OAAO7iC,EAAYtxM,YAE3B,CACF,CACD,MAAO,CACL6iO,aACAxlO,OACAy0P,WACAtgD,YACAnzN,KAAMA,EAAK0Q,KACX+hN,YACAC,WACAmS,YACAsiC,KAAMA,EAAOA,EAAK3Q,YAAc,GAEnC,CACD,mBAAM+Q,EAAc/iB,WAClBA,EAAUxlO,KACVA,EAAIy0P,SACJA,EAAQtgD,UACRA,EAASnzN,KACTA,EAAIyyN,UACJA,EAASC,SACTA,EAAQmS,UACRA,EAAS78M,YACTA,IAEA,MAAM+iN,EAAc/qO,IAAS,QAC7B,IAAKwkP,EAAY,CACf,IAAIzZ,EAKG,CACL,IAAIqmB,EAAepyO,EAAK/f,IAAI,YAC5B,KAAMmyP,aAAwBx0O,MAC5B,MAAM,IAAItL,YAAY,8BAExB8/O,EAAeA,EAAa1gP,KAAKwI,WAAW,QAAS,KACrD,MAAM4zN,EAAUn8N,KAAKqiQ,mBAAmB5hB,GACxC,MAAM+hB,EAAkB/hB,EAAavrO,MAAM,IAAK,GAAG,GACnD,MAAM+pB,GAASj/B,KAAKw6N,YAAYgoC,GAAmB7pD,GAAUE,MAAQ,IAAMsjB,EAAQsmC,UAAY9pD,GAAUC,WAAa,IAAMoI,KAAkBwhD,GAAmB7pD,GAAUG,SAAWH,GAAUK,aAChM,MAAM5qM,EAAa,CACjB/e,OACA0Q,KAAM0gP,EACNv+B,WAAY4gD,EAAS5gD,WACrB4Y,eAAgB,KAChB9jK,OAAQmlK,EAAQnlK,OAChBmC,aAAcgjK,EAAQhjK,aACtBshK,iBAAkB,KAClBx7L,QACA6iL,YACAC,WACAmS,YACAzM,QAAS,EACTD,UAAW,EACX9vM,YAAa,EACb0iN,eAEF,MAAMpjK,EAAS3oD,EAAK/f,IAAI,UACxB,MAAMoyP,EAAmBp/B,oBAAoBm/B,GAC7C,IAAI5hM,EAAO,KACX,GAAI6hM,EAAkB,CACpB7hM,QAAa7+C,KAAKgyP,sBAAsBtR,GACxCtyO,EAAWyrM,iBAAmBh7J,CAC/B,EACIzwC,EAAWyrM,gBAAkB75M,KAAKnB,QAAQwwP,iBAC7CjhP,EAAW0sN,eAAiBwlB,oBAAoBtgP,KAAKugP,gBAAiBvgP,KAAKwgP,UAAWxgP,KAAKnB,QAAQ0wP,oBAAqB9O,EAAcC,EAAkBrxP,IAE1J,MAAMk0Q,QAAsBvjQ,KAAKwgQ,sBAAsBnyP,EAAMD,GAC7D,GAAIzK,MAAM2J,QAAQ0pD,GAAS,CACzB,MAAM4rM,EAAc,GACpB,IAAI1iP,EAAI4hM,EACR,IAAK,MAAM1tB,KAAKp9H,EAAQ,CACtB,MAAM39C,EAAQrZ,KAAKsM,KAAKiX,WAAW6wK,UACxB/6K,IAAU,WACnBupP,EAAY1iP,GAAK7G,GAEnB6G,GACD,CACDqjP,EAAcvsM,OAAS4rM,CACjC,MACUW,EAAcvsM,OAASh3D,KAAKsiQ,qBAAqBnmC,EAAQnlK,OAAQusM,GAEnE,OAAO,IAAIvpC,KAAKymB,EAAc5hM,EAAM0kN,EACrC,CAzDgB,CACf,MAAMpwC,EAAOr+M,iBAAiBzG,EAAKhB,SAAS,YAAa,CAAC,EAAG,EAAG,EAAG,IACnEwmO,EAAa,IAAIxnO,KAAK,MACtBwnO,EAAWlmO,IAAI,WAAY1B,KAAK3d,IAAIe,IACpCwkP,EAAWlmO,IAAI,WAAYwlN,EACnC,CAqDK,CACD,IAAI5R,EAAWsyB,EAAWvlP,IAAI,YAC9B,IAAIk1Q,EAAWn1P,EAAK/f,IAAI,mBACbizN,IAAa,WACtBA,EAAWt1M,KAAK3d,IAAIizN,WAEXiiD,IAAa,WACtBA,EAAWv3P,KAAK3d,IAAIk1Q,IAEtB,MAAMC,EAAcliD,GAAUxhN,KAC9B,MAAM2jQ,EAAcF,GAAUzjQ,KAC9B,IAAKq6N,GAAeqpC,IAAgBC,EAAa,CAC/C3lQ,KAAK,qCAAqC0lQ,qDAAoEC,OAC1GD,GAAeC,IAAgBA,EAAY3kQ,WAAW0kQ,KAAiBhiD,gBAAgBgiD,IAAgBhiD,gBAAgBiiD,MACzHniD,EAAW,KAEd,CACDA,IAAaiiD,EACb,KAAMjiD,aAAoBt1M,MACxB,MAAM,IAAItL,YAAY,qBAExB,IAAIgjQ,EAAU/tC,EAAS7D,EAASE,EAAS2xC,EACzC,IACED,EAAW9vB,EAAWvlP,IAAI,WAAY,YAAa,aACnD,GAAIq1Q,EAAU,CACZ,KAAMA,aAAoBzzP,YACxB,MAAM,IAAIvP,YAAY,+BACjB,GAAIgjQ,EAASxzP,QAClB,MAAM,IAAIxP,YAAY,oBAEzB,CACF,CAAC,MAAO6H,GACP,IAAKxI,KAAKnB,QAAQswP,aAChB,MAAM3mP,EAERrK,KAAK,6BAA6BojN,EAASxhN,qBAAqByI,OAChEm7P,EAAW,IACZ,CACD,IAAI9pD,EAAiB,MACrB,IAAIgqD,EAAoB,KACxB,IAAI/oC,EAAiB,KACrB,GAAI6oC,GACF,GAAIA,EAASt1P,KAAM,CACjB,MAAMy1P,EAAeH,EAASt1P,KAAK/f,IAAI,WACnCw1Q,aAAwB73P,OAC1B2pN,EAAUkuC,EAAa/jQ,MAEzBgyN,EAAU4xC,EAASt1P,KAAK/f,IAAI,WAC5B2jO,EAAU0xC,EAASt1P,KAAK/f,IAAI,WAC5Bs1Q,EAAUD,EAASt1P,KAAK/f,IAAI,UAC7B,OACI,GAAI+oB,EAAa,CACtB,MAAMqpO,EAAmBvN,eAAe5xB,EAASxhN,MACjD,GAAI2gP,EAAkB,CACpBrpO,EAAYP,WAAa,GAAGO,EAAYP,uBACxCO,EAAY8kN,QAAUukB,EAAiBvkB,SAAW,KAClD0nC,EAAoBnjB,EAAiBr3B,SAAW,KAChDs6C,QAAiB3jQ,KAAKgyP,sBAAsBtR,EAAiB3gP,MAC7D85M,IAAmB8pD,EACnBb,EAAWz0P,EAAOulO,eAAeryB,EAASxhN,MAC1CyiN,EAAY,IACb,CACP,MAAW,IAAK4X,EAAa,CACvB,MAAMsmB,EAAmBp/B,oBAAoBC,EAASxhN,MACtD,GAAI2gP,EAAkB,CACpBijB,QAAiB3jQ,KAAKgyP,sBAAsBtR,GAC5C7mC,IAAmB8pD,CACpB,EACI9pD,GAAkB75M,KAAKnB,QAAQwwP,iBAClCv0B,EAAiBwlB,oBAAoBtgP,KAAKugP,gBAAiBvgP,KAAKwgP,UAAWxgP,KAAKnB,QAAQ0wP,oBAAqBhuC,EAASxhN,KAAM2gP,EAAkBrxP,GAEjJ,CACD,MAAMsmE,EAAahhD,aAAatG,EAAKhB,SAAS,cAAe9d,GAC7D,MAAM4jO,EAAOr+M,iBAAiB++N,EAAWxmO,SAAS,aAAegB,EAAKhB,SAAS,iBAAatM,GAC5F,IAAI80D,EAASg+K,EAAWvlP,IAAI,iBACjBunE,IAAW,WACpBA,OAAS90D,GAEX,IAAI+0D,EAAU+9K,EAAWvlP,IAAI,kBAClBwnE,IAAY,WACrBA,OAAU/0D,GAEZ,IAAI0mN,EAAUosB,EAAWvlP,IAAI,kBAClBm5N,IAAY,WACrBA,EAAU,GAEZ,IAAID,EAAYqsB,EAAWvlP,IAAI,oBACpBk5N,IAAc,WACvBA,EAAY,GAEd,IAAIvoL,EAAQ40M,EAAWvlP,IAAI,SACtBsP,OAAOC,UAAUohC,KACpBA,EAAQ,GAEV,IAAIvnB,EAAcm8N,EAAWvlP,IAAI,sBACtBopB,IAAgB,WACzBA,EAAc,GAEhB,MAAMtJ,EAAa,CACjB/e,OACA0Q,KAAMwhN,EAASxhN,KACf61N,UACA/2K,KAAM8kN,EACN5xC,UACAE,UACA2xC,UACA/pD,iBACAqI,WAAY4gD,EAAS5gD,WACrBM,YACA2W,WAAY,MACZxjK,aACAmsJ,YACAC,WACAmS,YACAf,OACAt9J,SACAC,UACA2xJ,UACAD,YACAvoL,QACAvnB,cACA0iN,cACA/iN,cACAouN,aAAco+B,EACd/oC,kBAEF,GAAItY,EAAW,CACb,MAAM6Y,EAAcynC,EAASx0Q,IAAI,YAC7B+sO,aAAuBpvN,OACzBmC,EAAWitN,YAAcA,EAAYt7N,MAEvC,MAAMitB,QAAa0lC,YAAY7mD,OAAO,CACpC5D,SAAUozN,EACVppK,iBAAkBjyD,KAAK+wP,uBACvB3jO,QAAS,OAEXhf,EAAW4e,KAAOA,EAClB5e,EAAW+e,SAAW/e,EAAW4e,KAAKG,QACvC,CACD,MAAMo2O,QAAsBvjQ,KAAKwgQ,sBAAsBnyP,EAAMD,GAC7DpO,KAAKgiQ,cAAc3zP,EAAMwlO,EAAY0vB,GACrC,OAAO,IAAIvpC,KAAKzY,EAASxhN,KAAM4jQ,EAAUJ,EAC1C,CACD,qBAAO1N,CAAezxC,EAAMZ,EAAQgtC,EAASgF,GAC3C,SAASsB,UAAUriC,GACjB,MAAMza,EAAY,GAAGoK,EAAKlC,mBAAmBuS,IAC7C,IACE,GAAIrQ,EAAKuX,SAAS9U,aAAa4N,GAC7B,OAEF+7B,EAAQhyO,KAAK,YAAa,CAACw7L,EAAW,WAAYoK,EAAKuX,SAASlV,UAAUgO,IAC3E,CAAC,MAAO52M,GACP,GAAI23O,EAAiBrG,aAAc,CACjChxP,KAAK,6BAA6B67M,aAAqBn8L,OACvD,MACD,CACD,MAAMA,CACP,CACF,CACD,IAAK,MAAMu9C,KAASooJ,EAAQ,CAC1BszC,UAAU17L,EAAMq5J,UAChB,MAAMC,EAASt5J,EAAMs5J,OACjBA,GAAQD,UACVqiC,UAAUpiC,EAAOD,SAEpB,CACF,CACD,2BAAWygC,GACT,MAAM7mP,EAAO,IAAIhC,KACjBgC,EAAKV,IAAI,WAAY1B,KAAK3d,IAAI,cAC9B+f,EAAKV,IAAI,OAAQ1B,KAAK3d,IAAI,iBAC1B+f,EAAKV,IAAI,UAAW1B,KAAK3d,IAAI,iBAC7B+f,EAAKV,IAAI,WAAY1B,KAAK3d,IAAI,oBAC9B,OAAOiR,OAAOS,KAAM,mBAAoBqO,EACzC,EAEH,MAAMknP,eACJ,WAAAt1P,EAAYiiN,WACVA,EAAUkC,KACVA,EAAI/1M,KACJA,EAAImnP,iBACJA,IAEAx1P,KAAKkiN,WAAaA,EAClBliN,KAAKokN,KAAOA,EACZpkN,KAAKqO,KAAOA,EACZrO,KAAK+jQ,kBAAoBvO,GAAoBxG,GAC7ChvP,KAAKgkQ,YAAc,KACnBhkQ,KAAKs1P,kBAAoBlxC,EAAKgW,YAAc,IAAIlrN,IAAQ,KACxDlP,KAAKikQ,KAAO,KACb,CACD,IAAAzlP,CAAKgyO,GACH,IAAIxwP,KAAKikQ,KAAT,CAGAjkQ,KAAKikQ,KAAO,KACZzT,EAAQhyO,KAAK,YAAa,CAACxe,KAAKkiN,WAAY,OAAQliN,KAAKokN,KAAKwX,WAAW57N,KAAK+jQ,kBAAkB3U,sBAF/F,CAGF,CACD,QAAAx6O,CAAS47O,GACP,GAAKxwP,KAAKokN,KAAKtxM,KAAf,CAGA9S,KAAKokN,KAAK+V,gBAAkB,KAC5Bo2B,iBAAiBsF,eAAe71P,KAAKokN,KAAMpkN,KAAKokN,KAAKgkB,iBAAkBooB,EAASxwP,KAAK+jQ,kBAFpF,CAGF,CACD,aAAA1O,CAAclb,EAAWj3N,EAAWkvO,GAClC,GAAIpyP,KAAKgkQ,YACP,OAAOhkQ,KAAKgkQ,YAEd,IAAKhkQ,KAAKokN,KAAKgW,YACb,MAAM,IAAI/7N,MAAM,yBAElB,MAAM6lQ,EAAiB/pB,EAAU1rO,MAAM,CACrC0gP,aAAc,QAEhB,MAAM0B,EAAgB,IAAI9hP,OAAOorO,EAAU0W,eACvC7wP,KAAKqO,KAAK7B,QAAUqkP,EAAcjjP,IAAI5N,KAAKqO,KAAK7B,QAClDqkP,EAAc1hP,IAAInP,KAAKqO,KAAK7B,OAE9B03P,EAAerT,cAAgBA,EAC/B,MAAMgG,EAAiB72P,KAAKokN,KAC1BkxC,EAAoBt1P,KAAKs1P,kBAC3B,IAAI6O,EAAuB/4P,QAAQI,UACnC,MAAM44P,EAAYpkQ,KAAKqO,KAAK/f,IAAI,aAChC,MAAM+1Q,EAAgBrkQ,KAAKqO,KAAK/f,IAAI,cAAgB40B,EACpD,MAAMohP,EAAuBn2Q,OAAO0d,OAAO,MAC3C,MAAM+pD,EAAW5xD,KAAKiC,cAAc4wP,EAAe1jC,MAAQ,CAAC,EAAG,EAAG,EAAG,IACnE95M,EAAQu8C,EAAS,GAAKA,EAAS,GAC/Bt8C,EAASs8C,EAAS,GAAKA,EAAS,GAClC,MAAM2uM,EAAehjQ,KAAKkpO,MAAMpxN,EAAOC,GACvC,IAAK,MAAMrrB,KAAOm2Q,EAAU52P,UAC1B22P,EAAuBA,EAAqBrnP,MAAK,KAC/C,MAAM0nP,EAAcJ,EAAU91Q,IAAIL,GAClC,MAAMkiP,EAAe,IAAI6Z,aACzB,OAAOka,EAAepR,gBAAgB,CACpCt3O,OAAQgpP,EACRpS,OACAlvO,UAAWmhP,EACXl0B,iBACCrzN,MAAK,KACFqzN,EAAa+H,QAAQ,KAAOvgP,EAAIiD,uBAClCoF,KAAKykQ,2BAA2Bt0B,EAAco0B,GAEhDD,EAAqBr2Q,GAAOkiP,EAAavG,QACzC,IAAK,MAAMhyO,KAAcu4O,EAAama,aACpCgL,EAAkBlmP,IAAIxX,EACvB,IACAgmB,OAAM,SAAUC,GACjB1f,KAAK,wBAAwBlQ,wBAC7B,MAAMy2Q,EAAoB,IAAI1a,aAC9Bsa,EAAqBr2Q,GAAOy2Q,EAAkB96B,OACxD,GAAU,IAGN5pO,KAAKgkQ,YAAcG,EAAqBrnP,MAAK,KAC3C+5O,EAAeyN,qBAAuBA,EACtC,GAAItkQ,KAAK2kQ,MAAO,CACd9N,EAAekG,WAAa,KAC5BlG,EAAe1jC,KAAOnzN,KAAK2kQ,KAC5B,KAEH,OAAO3kQ,KAAKgkQ,WACb,CACD,0BAAAS,CAA2Bt0B,EAAco0B,EAAephN,KACtD,MAAMyhN,EAAW5gQ,KAAKiC,cAAckqO,EAAa0W,UAAU,GAAG1hP,MAAM,IAClEkU,EAAQurP,EAAS,GAAKA,EAAS,GAC/BtrP,EAASsrP,EAAS,GAAKA,EAAS,GAClC,MAAMC,EAAetjQ,KAAKkpO,MAAMpxN,EAAOC,GACvC,GAAID,IAAU,GAAKC,IAAW,EAAG,CAC/B62N,EAAa+H,QAAQ7pB,OAAO,EAAG,GAC/B8hB,EAAa0W,UAAUx4B,OAAO,EAAG,EACvC,MAAW,GAAIk2C,IAAiB,GAAKhjQ,KAAK+W,MAAMusP,EAAeN,IAAiB,GAAI,CACzEvkQ,KAAK2kQ,QACR3kQ,KAAK2kQ,MAAQ,CAAC1N,SAAUA,UAAWA,UAAWA,WAEhDj3P,KAAK2kQ,MAAM,GAAKpjQ,KAAKC,IAAIxB,KAAK2kQ,MAAM,GAAIC,EAAS,IACjD5kQ,KAAK2kQ,MAAM,GAAKpjQ,KAAKC,IAAIxB,KAAK2kQ,MAAM,GAAIC,EAAS,IACjD5kQ,KAAK2kQ,MAAM,GAAKpjQ,KAAK+D,IAAItF,KAAK2kQ,MAAM,GAAIC,EAAS,IACjD5kQ,KAAK2kQ,MAAM,GAAKpjQ,KAAK+D,IAAItF,KAAK2kQ,MAAM,GAAIC,EAAS,GAClD,CACD,IAAIvjQ,EAAI,EACNoH,EAAK0nO,EAAajxO,OACpB,MAAOmC,EAAIoH,EAAI,CACb,OAAQ0nO,EAAa+H,QAAQ72O,IAC3B,KAAK1J,EAAIiD,sBACP,MACF,KAAKjD,EAAIkD,oBACT,KAAKlD,EAAImD,kBACT,KAAKnD,EAAIoD,eACT,KAAKpD,EAAIqD,gBACT,KAAKrD,EAAIsD,aACT,KAAKtD,EAAIuD,cACT,KAAKvD,EAAIwD,cACT,KAAKxD,EAAIyD,YACT,KAAKzD,EAAI0D,kBACT,KAAK1D,EAAI2D,gBACT,KAAK3D,EAAI4D,mBACT,KAAK5D,EAAI6D,iBACT,KAAK7D,EAAI8D,YACT,KAAK9D,EAAIO,mBACPi4O,EAAa+H,QAAQ7pB,OAAOhtN,EAAG,GAC/B8uO,EAAa0W,UAAUx4B,OAAOhtN,EAAG,GACjCoH,IACA,SACF,KAAK9Q,EAAIS,UACP,MAAO+9P,GAAahmB,EAAa0W,UAAUxlP,GAC3C,IAAI6e,EAAI,EACNitB,EAAKgpN,EAAUj3P,OACjB,MAAOghB,EAAIitB,EAAI,CACb,MAAO23N,GAAa3O,EAAUj2O,GAC9B,OAAQ4kP,GACN,IAAK,KACL,IAAK,MACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,OACH3O,EAAU9nC,OAAOnuM,EAAG,GACpBitB,IACA,SAEJjtB,GACD,CACD,MAEJ7e,GACD,CACF,EAEH,MAAMm3P,aACJ,WAAAv4P,CAAYoyP,EAAe,IAAIiG,WAC7Bt4P,KAAKyqD,MAAQ4nM,EACbryP,KAAK+kQ,WAAa,EACnB,CACD,IAAA1sQ,GACE,MAAM2sQ,EAAMhlQ,KAAKyqD,MACjBzqD,KAAK+kQ,WAAWpjQ,KAAK3B,KAAKyqD,OAC1BzqD,KAAKyqD,MAAQu6M,EAAIv2P,OAClB,CACD,OAAAnW,GACE,MAAMigC,EAAOv4B,KAAK+kQ,WAAW52N,MACzB5V,IACFv4B,KAAKyqD,MAAQlyB,EAEhB,CACD,SAAAhgC,CAAUgT,GACRvL,KAAKyqD,MAAMwyM,IAAMj5P,KAAKzL,UAAUyH,KAAKyqD,MAAMwyM,IAAK1xP,EACjD,EAEH,MAAMqvP,UACJ,WAAA36P,GACED,KAAKi9P,IAAM,IAAI53O,aAAa/1B,GAC5B0Q,KAAKuhN,SAAW,KAChBvhN,KAAKw5P,SAAW,EAChBx5P,KAAKkiN,WAAa,KAClBliN,KAAKokN,KAAO,KACZpkN,KAAK21D,WAAapmE,EAClByQ,KAAKk9P,WAAa5tQ,EAAgB6V,QAClCnF,KAAKw9P,eAAiBluQ,EAAgB6V,QACtCnF,KAAKi/P,YAAc,EACnBj/P,KAAKo/P,YAAc,EACnBp/P,KAAK0/P,QAAU,EACf1/P,KAAK68P,WAAa,EAClB78P,KAAK88P,SAAW,CACjB,CACD,aAAAziQ,CAAcqL,EAAGtB,EAAGuB,EAAG7X,EAAGivB,EAAG2hC,GAC3B,MAAM95C,EAAI5E,KAAKk9P,WACft4P,EAAE,GAAKc,EACPd,EAAE,GAAKR,EACPQ,EAAE,GAAKe,EACPf,EAAE,GAAK9W,EACP8W,EAAE,GAAKmY,EACPnY,EAAE,GAAK85C,CACR,CACD,iBAAAmhN,CAAkBn6P,EAAGtB,EAAGuB,EAAG7X,EAAGivB,EAAG2hC,GAC/B,MAAM95C,EAAI5E,KAAKw9P,eACf54P,EAAE,GAAKc,EACPd,EAAE,GAAKR,EACPQ,EAAE,GAAKe,EACPf,EAAE,GAAK9W,EACP8W,EAAE,GAAKmY,EACPnY,EAAE,GAAK85C,CACR,CACD,mBAAAwgN,CAAoB33P,EAAGC,GACrB,MAAM5C,EAAI5E,KAAKk9P,WACft4P,EAAE,GAAKA,EAAE,GAAK2C,EAAI3C,EAAE,GAAK4C,EAAI5C,EAAE,GAC/BA,EAAE,GAAKA,EAAE,GAAK2C,EAAI3C,EAAE,GAAK4C,EAAI5C,EAAE,EAChC,CACD,uBAAA+6P,CAAwBp4P,EAAGC,GACzB,MAAM5C,EAAI5E,KAAKw9P,eACf54P,EAAE,GAAKA,EAAE,GAAK2C,EAAI3C,EAAE,GAAK4C,EAAI5C,EAAE,GAC/BA,EAAE,GAAKA,EAAE,GAAK2C,EAAI3C,EAAE,GAAK4C,EAAI5C,EAAE,EAChC,CACD,cAAAg7P,GACE5/P,KAAK2/P,wBAAwB,GAAI3/P,KAAK0/P,SACtC1/P,KAAKk9P,WAAal9P,KAAKw9P,eAAer4P,OACvC,CACD,KAAAsJ,GACE,MAAMA,EAAQtgB,OAAO0d,OAAO7L,MAC5ByO,EAAMyuP,WAAal9P,KAAKk9P,WAAW/3P,QACnCsJ,EAAM+uP,eAAiBx9P,KAAKw9P,eAAer4P,QAC3CsJ,EAAMknD,WAAa31D,KAAK21D,WAAWxwD,QACnC,OAAOsJ,CACR,EAEH,MAAM6pP,UACJ,WAAAr4P,GACED,KAAKi9P,IAAM,IAAI53O,aAAa/1B,GAC5B0Q,KAAKokN,KAAO,KACZpkN,KAAK21P,kBAAoBrkQ,EAAkBC,KAC3CyO,KAAKilQ,gBAAkBzkP,WAAWgD,WAAWC,KAC7CzjB,KAAKklQ,kBAAoB1kP,WAAWgD,WAAWC,KAC/CzjB,KAAK45P,sBAAwB,KAC7B55P,KAAK65P,wBAA0B,IAChC,CACD,kBAAIjE,GACF,OAAO51P,KAAKilQ,eACb,CACD,kBAAIrP,CAAexpB,GACjBpsO,KAAKilQ,gBAAkBjlQ,KAAK45P,sBAAwBxtB,CACrD,CACD,oBAAIutB,GACF,OAAO35P,KAAKklQ,iBACb,CACD,oBAAIvL,CAAiBvtB,GACnBpsO,KAAKklQ,kBAAoBllQ,KAAK65P,wBAA0BztB,CACzD,CACD,KAAA39N,GACE,OAAOtgB,OAAO0d,OAAO7L,KACtB,EAEH,MAAM04P,sBACJ,gBAAWyM,GACT,OAAO5lQ,OAAOS,KAAM,QAAS7R,OAAOktD,OAAOltD,OAAO0d,OAAO,MAAO,CAC9DuoL,EAAG,CACDp8J,GAAIrgC,EAAIE,aACRizD,QAAS,EACTG,aAAc,OAEhB+mB,EAAG,CACDh6C,GAAIrgC,EAAIG,WACRgzD,QAAS,EACTG,aAAc,OAEhB/qC,EAAG,CACD8X,GAAIrgC,EAAII,YACR+yD,QAAS,EACTG,aAAc,OAEhBv/B,EAAG,CACDsM,GAAIrgC,EAAIK,cACR8yD,QAAS,EACTG,aAAc,OAEhBn9D,EAAG,CACDkqC,GAAIrgC,EAAIM,QACR6yD,QAAS,EACTG,aAAc,OAEhBm6M,GAAI,CACFptO,GAAIrgC,EAAIO,mBACR4yD,QAAS,EACTG,aAAc,OAEhB5pD,EAAG,CACD22B,GAAIrgC,EAAIQ,YACR2yD,QAAS,EACTG,aAAc,OAEhBo6M,GAAI,CACFrtO,GAAIrgC,EAAIS,UACR0yD,QAAS,EACTG,aAAc,OAEhBnlC,EAAG,CACDkS,GAAIrgC,EAAIU,KACRyyD,QAAS,EACTG,aAAc,OAEhBuxB,EAAG,CACDxkD,GAAIrgC,EAAIW,QACRwyD,QAAS,EACTG,aAAc,OAEhBq6M,GAAI,CACFttO,GAAIrgC,EAAIY,UACRuyD,QAAS,EACTG,aAAc,OAEhBrmD,EAAG,CACDozB,GAAIrgC,EAAIa,OACRsyD,QAAS,EACTG,aAAc,OAEhB9V,EAAG,CACDnd,GAAIrgC,EAAIc,OACRqyD,QAAS,EACTG,aAAc,OAEhBtlD,EAAG,CACDqyB,GAAIrgC,EAAIe,QACRoyD,QAAS,EACTG,aAAc,OAEhBr7C,EAAG,CACDooB,GAAIrgC,EAAIgB,SACRmyD,QAAS,EACTG,aAAc,OAEhBzjD,EAAG,CACDwwB,GAAIrgC,EAAIiB,SACRkyD,QAAS,EACTG,aAAc,OAEhB9Z,EAAG,CACDnZ,GAAIrgC,EAAIkB,UACRiyD,QAAS,EACTG,aAAc,OAEhBj0C,GAAI,CACFghB,GAAIrgC,EAAImB,UACRgyD,QAAS,EACTG,aAAc,OAEhBgzB,EAAG,CACDjmD,GAAIrgC,EAAIoB,OACR+xD,QAAS,EACTG,aAAc,OAEhBn8B,EAAG,CACDkJ,GAAIrgC,EAAIqB,YACR8xD,QAAS,EACTG,aAAc,OAEhBvM,EAAG,CACD1mB,GAAIrgC,EAAIsB,KACR6xD,QAAS,EACTG,aAAc,OAEhBr0D,EAAG,CACDohC,GAAIrgC,EAAIsB,KACR6xD,QAAS,EACTG,aAAc,OAEhB,KAAM,CACJjzB,GAAIrgC,EAAIuB,OACR4xD,QAAS,EACTG,aAAc,OAEhBjhC,EAAG,CACDgO,GAAIrgC,EAAIwB,WACR2xD,QAAS,EACTG,aAAc,OAEhB,KAAM,CACJjzB,GAAIrgC,EAAIyB,aACR0xD,QAAS,EACTG,aAAc,OAEhB7mD,EAAG,CACD4zB,GAAIrgC,EAAI0B,gBACRyxD,QAAS,EACTG,aAAc,OAEhB,KAAM,CACJjzB,GAAIrgC,EAAI2B,kBACRwxD,QAAS,EACTG,aAAc,OAEhBpnD,EAAG,CACDm0B,GAAIrgC,EAAI4B,QACRuxD,QAAS,EACTG,aAAc,OAEhBu9B,EAAG,CACDxwD,GAAIrgC,EAAI6B,KACRsxD,QAAS,EACTG,aAAc,OAEhB,KAAM,CACJjzB,GAAIrgC,EAAI8B,OACRqxD,QAAS,EACTG,aAAc,OAEhBs6M,GAAI,CACFvtO,GAAIrgC,EAAI+B,UACRoxD,QAAS,EACTG,aAAc,OAEhBu6M,GAAI,CACFxtO,GAAIrgC,EAAIgC,QACRmxD,QAAS,EACTG,aAAc,OAEhBw6M,GAAI,CACFztO,GAAIrgC,EAAIiC,eACRkxD,QAAS,EACTG,aAAc,OAEhBy6M,GAAI,CACF1tO,GAAIrgC,EAAIkC,eACRixD,QAAS,EACTG,aAAc,OAEhB06M,GAAI,CACF3tO,GAAIrgC,EAAImC,UACRgxD,QAAS,EACTG,aAAc,OAEhB26M,GAAI,CACF5tO,GAAIrgC,EAAIoC,WACR+wD,QAAS,EACTG,aAAc,OAEhB46M,GAAI,CACF7tO,GAAIrgC,EAAIqC,QACR8wD,QAAS,EACTG,aAAc,OAEhB66M,GAAI,CACF9tO,GAAIrgC,EAAIsC,qBACR6wD,QAAS,EACTG,aAAc,OAEhB86M,GAAI,CACF/tO,GAAIrgC,EAAIuC,YACR4wD,QAAS,EACTG,aAAc,OAEhB+6M,GAAI,CACFhuO,GAAIrgC,EAAIwC,SACR2wD,QAAS,EACTG,aAAc,OAEhBg7M,GAAI,CACFjuO,GAAIrgC,EAAIyC,mBACR0wD,QAAS,EACTG,aAAc,OAEhBi7M,GAAI,CACFluO,GAAIrgC,EAAI0C,cACRywD,QAAS,EACTG,aAAc,OAEhB,KAAM,CACJjzB,GAAIrgC,EAAI2C,SACRwwD,QAAS,EACTG,aAAc,OAEhBk7M,GAAI,CACFnuO,GAAIrgC,EAAI4C,SACRuwD,QAAS,EACTG,aAAc,OAEhBm7M,GAAI,CACFpuO,GAAIrgC,EAAI6C,eACRswD,QAAS,EACTG,aAAc,OAEhB,IAAK,CACHjzB,GAAIrgC,EAAI8C,iBACRqwD,QAAS,EACTG,aAAc,OAEhB,IAAK,CACHjzB,GAAIrgC,EAAI+C,2BACRowD,QAAS,EACTG,aAAc,OAEhBo7M,GAAI,CACFruO,GAAIrgC,EAAIgD,aACRmwD,QAAS,EACTG,aAAc,OAEhBq7M,GAAI,CACFtuO,GAAIrgC,EAAIiD,sBACRkwD,QAAS,EACTG,aAAc,OAEhBs7M,GAAI,CACFvuO,GAAIrgC,EAAIkD,oBACRiwD,QAAS,EACTG,aAAc,OAEhBhoC,GAAI,CACF+U,GAAIrgC,EAAImD,kBACRgwD,QAAS,EACTG,aAAc,OAEhBu7M,GAAI,CACFxuO,GAAIrgC,EAAIoD,eACR+vD,QAAS,EACTG,aAAc,MAEhBw7M,IAAK,CACHzuO,GAAIrgC,EAAIqD,gBACR8vD,QAAS,GACTG,aAAc,MAEhBy7M,GAAI,CACF1uO,GAAIrgC,EAAIsD,aACR6vD,QAAS,EACTG,aAAc,MAEhB07M,IAAK,CACH3uO,GAAIrgC,EAAIuD,cACR4vD,QAAS,GACTG,aAAc,MAEhBxkC,EAAG,CACDuR,GAAIrgC,EAAIwD,cACR2vD,QAAS,EACTG,aAAc,OAEhB9mD,EAAG,CACD6zB,GAAIrgC,EAAIyD,YACR0vD,QAAS,EACTG,aAAc,OAEhB27M,GAAI,CACF5uO,GAAIrgC,EAAI0D,kBACRyvD,QAAS,EACTG,aAAc,OAEhB47M,GAAI,CACF7uO,GAAIrgC,EAAI2D,gBACRwvD,QAAS,EACTG,aAAc,OAEhBt0D,EAAG,CACDqhC,GAAIrgC,EAAI4D,mBACRuvD,QAAS,EACTG,aAAc,OAEhB/kC,EAAG,CACD8R,GAAIrgC,EAAI6D,iBACRsvD,QAAS,EACTG,aAAc,OAEhB4iM,GAAI,CACF71N,GAAIrgC,EAAI8D,YACRqvD,QAAS,EACTG,aAAc,OAEhB67M,GAAI,CACF9uO,GAAIrgC,EAAI+D,iBACRovD,QAAS,EACTG,aAAc,OAEhB87M,GAAI,CACF/uO,GAAIrgC,EAAIgE,eACRmvD,QAAS,EACTG,aAAc,OAEhB+7M,GAAI,CACFhvO,GAAIrgC,EAAIiE,eACRkvD,QAAS,EACTG,aAAc,OAEhBg8M,GAAI,CACFjvO,GAAIrgC,EAAIkE,aACRivD,QAAS,EACTG,aAAc,OAEhBi8M,GAAI,CACFlvO,GAAIrgC,EAAImE,UACRgvD,QAAS,EACTG,aAAc,OAEhB7zD,GAAI,CACF4gC,GAAIrgC,EAAIoE,eACR+uD,QAAS,EACTG,aAAc,OAEhBk8M,IAAK,CACHnvO,GAAIrgC,EAAIqE,mBACR8uD,QAAS,EACTG,aAAc,OAEhBm8M,IAAK,CACHpvO,GAAIrgC,EAAIsE,wBACR6uD,QAAS,EACTG,aAAc,OAEhBo8M,IAAK,CACHrvO,GAAIrgC,EAAIuE,iBACR4uD,QAAS,EACTG,aAAc,OAEhBq8M,GAAI,CACFtvO,GAAIrgC,EAAIwE,YACR2uD,QAAS,EACTG,aAAc,OAEhBs8M,GAAI,CACFvvO,GAAIrgC,EAAIyE,UACR0uD,QAAS,EACTG,aAAc,OAEhBu8M,GAAI,KACJC,GAAI,KACJC,KAAM,KACNC,GAAI,KACJC,IAAK,KACLC,KAAM,KACNC,MAAO,KACPj9G,GAAI,KACJk9G,IAAK,KACLC,KAAM,OAET,CACDlhP,4BAA8B,GAC9B,WAAA7mB,CAAYub,EAAQlP,EAAMsnP,EAAe,IAAI4E,cAC3Cx4P,KAAKsvD,OAAS,IAAIpG,OAAO,CACvBC,MAAO,IAAIyB,MAAMpvC,EAAQk9O,sBAAsByM,OAC/C74P,SAEFtM,KAAK4zP,aAAeA,EACpB5zP,KAAKioQ,iBAAmB,GACxBjoQ,KAAKkoQ,UAAY,MACjBloQ,KAAKmoQ,mBAAqB,CAC3B,CACD,oBAAIrP,GACF,OAAO94P,KAAK4zP,aAAamR,WAAW7lQ,MACrC,CACD,IAAA2d,CAAK8/N,GACH,IAAIpxO,EAAOoxO,EAAUpxO,KACrB,MAAO,KAAM,CACX,MAAMhd,EAAMyR,KAAKsvD,OAAO5F,SACxB,GAAIn7D,aAAe2d,IAAK,CACtB,MAAMC,EAAM5d,EAAI4d,IAChB,MAAMi8P,EAAS1P,sBAAsByM,MAAMh5P,GAC3C,IAAKi8P,EAAQ,CACXjqQ,KAAK,oBAAoBgO,OACzB,QACD,CACD,MAAMb,EAAK88P,EAAOpwO,GAClB,MAAM8yB,EAAUs9M,EAAOt9M,QACvB,IAAIu9M,EAAa98P,IAAS,KAAOA,EAAKrM,OAAS,EAC1Cc,KAAKkoQ,YACRloQ,KAAKmoQ,mBAAqB,GAE5BnoQ,KAAKkoQ,UAAY58P,GAAM3T,EAAIa,QAAU8S,GAAM3T,EAAI4B,QAC/C,GAAK6uQ,EAAOn9M,aA0BDo9M,EAAav9M,GACtB/sD,KAAK,WAAWoO,mBAAqB2+C,yBAAoCu9M,eA3BjD,CACxB,GAAIA,IAAev9M,EAAS,CAC1B,MAAMm9M,EAAmBjoQ,KAAKioQ,iBAC9B,MAAOI,EAAav9M,EAAS,CAC3Bm9M,EAAiBtmQ,KAAK4J,EAAK0jB,SAC3Bo5O,GACD,CACD,MAAOA,EAAav9M,GAAWm9M,EAAiB/oQ,SAAW,EAAG,CACxDqM,IAAS,OACXA,EAAO,IAETA,EAAKyyC,QAAQiqN,EAAiB95N,OAC9Bk6N,GACD,CACF,CACD,GAAIA,EAAav9M,EAAS,CACxB,MAAMhZ,EAAa,WAAW3lC,eAAiB2+C,wBAAmCu9M,UAClF,GAAIroQ,KAAKkoQ,aAAeloQ,KAAKmoQ,mBAAqBzP,sBAAsB4P,qBACtE,MAAM,IAAI3nQ,YAAY,WAAWmxC,KAEnC3zC,KAAK,YAAY2zC,KACbvmC,IAAS,OACXA,EAAKrM,OAAS,GAEhB,QACD,CACX,CAGQc,KAAKuoQ,kBAAkBj9P,EAAIC,GAC3BoxO,EAAUrxO,GAAKA,EACfqxO,EAAUpxO,KAAOA,EACjB,OAAO,IACR,CACD,GAAIhd,IAAQod,EACV,OAAO,MAET,GAAIpd,IAAQ,KAAM,CACZgd,IAAS,OACXA,EAAO,IAETA,EAAK5J,KAAKpT,GACV,GAAIgd,EAAKrM,OAAS,GAChB,MAAM,IAAIyB,YAAY,qBAEzB,CACF,CACF,CACD,iBAAA4nQ,CAAkBj9P,EAAIC,GACpB,OAAQD,EAAK,GACX,KAAK3T,EAAIU,KACP2H,KAAK4zP,aAAav7P,OAClB,MACF,KAAKV,EAAIW,QACP0H,KAAK4zP,aAAat7P,UAClB,MACF,KAAKX,EAAIY,UACPyH,KAAK4zP,aAAar7P,UAAUgT,GAC5B,MAEL,EAYH,MAAMi9P,mCAAmC9P,sBACvC,WAAAz4P,CAAY6B,GACV1B,MAAM,IAAIuZ,aAAa7X,GACxB,CACD,KAAAuhB,GACE,MAAMs5N,EAAY,CAChBrxO,GAAI,EACJC,KAAM,IAER,MAAM8H,EAAS,CACbmmP,SAAU,EACVj4C,SAAU,GACVknD,UAAW,IAAI5nP,kBAAkB,IAEnC,IACE,MAAO,KAAM,CACX87N,EAAUpxO,KAAKrM,OAAS,EACxB,IAAKc,KAAK6c,KAAK8/N,GACb,MAEF,GAAI38O,KAAK84P,mBAAqB,EAC5B,SAEF,MAAMxtP,GACJA,EAAEC,KACFA,GACEoxO,EACJ,OAAQrxO,EAAK,GACX,KAAK3T,EAAIqC,QACP,MAAOunN,EAAUi4C,GAAYjuP,EACzBg2M,aAAoBt1M,OACtBoH,EAAOkuM,SAAWA,EAASxhN,aAElBy5P,IAAa,UAAYA,EAAW,IAC7CnmP,EAAOmmP,SAAWA,GAEpB,MACF,KAAK7hQ,EAAI2D,gBACPklB,WAAWgD,WAAW5C,IAAIE,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GAChE,MACF,KAAK9wQ,EAAIyD,YACPolB,WAAWgD,WAAWC,KAAK3C,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GACjE,MACF,KAAK9wQ,EAAI6D,iBACPglB,WAAWgD,WAAWG,KAAK7C,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GACjE,MAEL,CACF,CAAC,MAAO5qP,GACP1f,KAAK,8CAA8C0f,MACpD,CACD,OAAOxK,CACR,EAEH,SAASq1P,uBAAuB5mQ,GAC9B,OAAO,IAAI0mQ,2BAA2B1mQ,GAAKuhB,OAC7C,CACA,MAAMslP,kCAAkCjQ,sBACtC,WAAAz4P,CAAYub,EAAQg6O,EAAkBlpP,GACpClM,MAAMob,GACNxb,KAAKwb,OAASA,EACdxb,KAAKw1P,iBAAmBA,EACxBx1P,KAAKsM,KAAOA,EACZtM,KAAKkjB,UAAY1H,EAAOnN,MAAM/f,IAAI,YACnC,CACD,KAAA+0B,GACE,MAAMs5N,EAAY,CAChBrxO,GAAI,EACJC,KAAM,IAER,IAAI8H,EAAS,CACXsqP,YAAa,EACbnE,SAAU,EACVj4C,SAAU,GACVknD,UAAW,IAAI5nP,kBAAkB,GACjC+0O,eAAgBp1O,WAAWgD,WAAWC,MAExC,IAAImlP,EAAY,MAChB,MAAMn8O,EAAQ,GACd,IACE,MAAO,KAAM,CACXkwN,EAAUpxO,KAAKrM,OAAS,EACxB,GAAI0pQ,IAAc5oQ,KAAK6c,KAAK8/N,GAC1B,MAEF,MAAMrxO,GACJA,EAAEC,KACFA,GACEoxO,EACJ,OAAQrxO,EAAK,GACX,KAAK3T,EAAIU,KACPo0B,EAAM9qB,KAAK,CACTg8P,YAAatqP,EAAOsqP,YACpBnE,SAAUnmP,EAAOmmP,SACjBj4C,SAAUluM,EAAOkuM,SACjBknD,UAAWp1P,EAAOo1P,UAAUtjQ,QAC5BywP,eAAgBviP,EAAOuiP,iBAEzB,MACF,KAAKj+P,EAAIW,QACP+a,EAASoZ,EAAM0hB,OAAS96B,EACxB,MACF,KAAK1b,EAAI0C,cACPgZ,EAAOsqP,aAAep8P,KAAKkpO,MAAMl/N,EAAK,GAAIA,EAAK,IAC/C,MACF,KAAK5T,EAAIqC,QACP,MAAOunN,EAAUi4C,GAAYjuP,EACzBg2M,aAAoBt1M,OACtBoH,EAAOkuM,SAAWA,EAASxhN,aAElBy5P,IAAa,UAAYA,EAAW,IAC7CnmP,EAAOmmP,SAAWA,EAAWnmP,EAAOsqP,aAEtC,MACF,KAAKhmQ,EAAImD,kBACPuY,EAAOuiP,eAAiBp1O,WAAW6C,MAAM,CACvCJ,GAAI1X,EAAK,GACTe,KAAMtM,KAAKsM,KACX4W,UAAWljB,KAAKkjB,UAChBC,mBAAoBnjB,KAAKgxP,oBACzBxuO,qBAAsBxiB,KAAK6oQ,wBAE7B,MACF,KAAKlxQ,EAAIsD,aACP,MAAMgoB,EAAK5P,EAAOuiP,eAClB3yO,EAAGnC,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GACzC,MACF,KAAK9wQ,EAAI2D,gBACPklB,WAAWgD,WAAW5C,IAAIE,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GAChE,MACF,KAAK9wQ,EAAIyD,YACPolB,WAAWgD,WAAWC,KAAK3C,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GACjE,MACF,KAAK9wQ,EAAI6D,iBACPglB,WAAWgD,WAAWG,KAAK7C,WAAWvV,EAAM,EAAG8H,EAAOo1P,UAAW,GACjE,MACF,KAAK9wQ,EAAI4C,SACT,KAAK5C,EAAI6C,eACT,KAAK7C,EAAI8C,iBACT,KAAK9C,EAAI+C,2BACPkuQ,EAAY,KACZ,MAEL,CACF,CAAC,MAAO/qP,GACP1f,KAAK,6CAA6C0f,MACnD,CACD7d,KAAKwb,OAAO5J,eACLyB,EAAOsqP,mBACPtqP,EAAOuiP,eACd,OAAOviP,CACR,CACD,yBAAIw1P,GACF,OAAOtpQ,OAAOS,KAAM,wBAAyB,IAAI01O,qBAClD,CACD,uBAAIsb,GACF,MAAM7tO,EAAqB,IAAI2zN,mBAAmB,CAChDxqO,KAAMtM,KAAKsM,KACX7J,gBAAiBzC,KAAKw1P,iBAAiB/yP,kBAEzC,OAAOlD,OAAOS,KAAM,sBAAuBmjB,EAC5C,EAEH,SAAS2lP,sBAAsBttP,EAAQg6O,EAAkBlpP,GACvD,OAAO,IAAIq8P,0BAA0BntP,EAAQg6O,EAAkBlpP,GAAM+W,OACvE,CACA,SAAS0lP,YAAY3gP,EAAO4gP,GAC1B,GAAI5gP,EAAM,KAAOA,EAAM,IAAMA,EAAM,KAAOA,EAAM,GAAI,CAClD,MAAM3E,EAAO2E,EAAM,GAAK,IACxB,MAAO,GAAGhQ,eAAeqL,MAASulP,EAAS,IAAM,KAClD,CACD,OAAOrlQ,MAAMC,KAAKwkB,GAAOziB,GAAKyS,eAAezS,EAAI,OAAM/D,KAAK,KAAO,KAAIonQ,EAAS,KAAO,KACzF,CACA,SAASC,yBAAwBzP,SAC/BA,EAAQj4C,SACRA,EAAQknD,UACRA,IAEA,MAAO,IAAIpzP,cAAcksM,MAAai4C,QAAeuP,YAAYN,EAAW,OAC9E,CACA,MAAMS,gBACJ,WAAAjpQ,CAAYqM,EAAMwK,GAChB9W,KAAKsM,KAAOA,EACZtM,KAAKg3D,OAAS,KACdh3D,KAAK8hN,UAAYm1C,SACjBj3P,KAAK+hN,UAAYk1C,SACjBj3P,KAAK8W,WAAaA,EAClB,MAAMorO,EAAS,IAAIr/O,gBAAgB,EAAG,GACtC7C,KAAKmpQ,WAAajnB,EAAOE,WAAW,KAAM,CACxC2B,mBAAoB,OAEjBmlB,gBAAgBE,cACnBF,gBAAgBE,YAAc,GAEhCppQ,KAAKuhN,SAAWt1M,KAAK3d,IAAI,oBAAoBwoB,KAAcoyP,gBAAgBE,gBAC5E,CACD,qBAAIC,GACF,IAAKH,gBAAgBI,mBAAoB,CACvC,MAAMC,EAAiB,IAAIl9P,KAAKrM,KAAKsM,MACrCi9P,EAAe57P,IAAI,OAAQ1B,KAAK3d,IAAI,mBACpCi7Q,EAAe57P,IAAI,WAAY3N,KAAKuhN,UACpCgoD,EAAe57P,IAAI,aAAc,qBACjC47P,EAAe57P,IAAI,WAAY,CAAC,EAAG,EAAG,EAAG,IACzC47P,EAAe57P,IAAI,cAAe1B,KAAK3d,IAAI,WAC3Ci7Q,EAAe57P,IAAI,aAAc,KACjC47P,EAAe57P,IAAI,cAAe,GAClCu7P,gBAAgBI,mBAAqBtpQ,KAAKsM,KAAKk9P,oBAAoBD,EACpE,CACD,OAAOL,gBAAgBI,kBACxB,CACD,qBAAIG,GACF,MAAMC,EAAiB,IAAIr9P,KAAKrM,KAAKsM,MACrCo9P,EAAe/7P,IAAI,WAAY3N,KAAKuhN,UACpCmoD,EAAe/7P,IAAI,OAAQ1B,KAAK3d,IAAI,SACpCo7Q,EAAe/7P,IAAI,UAAW1B,KAAK3d,IAAI,iBACvCo7Q,EAAe/7P,IAAI,cAAe1B,KAAK3d,IAAI,aAC3Co7Q,EAAe/7P,IAAI,YAAa3N,KAAK8hN,WACrC4nD,EAAe/7P,IAAI,WAAY3N,KAAK+hN,UACpC2nD,EAAe/7P,IAAI,iBAAkB3N,KAAKqpQ,mBAC1CK,EAAe/7P,IAAI,KAAM,KACzB,MAAMqpD,EAAS,GACf,MAAMixK,EAAQ,IAAIjoO,KAAKg3D,OAAOQ,WAAWn5C,OACzC,IAAIsvC,EAAc,KAClB,IAAIg8M,EAAgB,KACpB,IAAK,MAAOr0P,EAAM+D,KAAU4uN,EAC1B,GAAKt6K,EAKL,GAAIr4C,IAASq4C,EAAcg8M,EAAczqQ,OACvCyqQ,EAAchoQ,KAAK0X,OACd,CACL29C,EAAOr1D,KAAKgsD,EAAag8M,GACzBh8M,EAAcr4C,EACdq0P,EAAgB,CAACtwP,EAClB,KAXD,CACEs0C,EAAcr4C,EACdq0P,EAAgB,CAACtwP,EAElB,CASCs0C,GACFqJ,EAAOr1D,KAAKgsD,EAAag8M,GAE3BD,EAAe/7P,IAAI,IAAKqpD,GACxB,MAAM4pM,EAAgB,IAAIv0P,KAAKrM,KAAKsM,MACpCs0P,EAAcjzP,IAAI,WAAY,YAC9BizP,EAAcjzP,IAAI,WAAY,SAC9BizP,EAAcjzP,IAAI,aAAc,GAChC+7P,EAAe/7P,IAAI,gBAAiBizP,GACpC,OAAO5gQ,KAAKsM,KAAKk9P,oBAAoBE,EACtC,CACD,eAAIE,GACF,MAAMpG,EAAW,IAAIn3P,KAAKrM,KAAKsM,MAC/Bk3P,EAAS71P,IAAI,WAAY3N,KAAKuhN,UAC9BiiD,EAAS71P,IAAI,OAAQ1B,KAAK3d,IAAI,SAC9Bk1Q,EAAS71P,IAAI,UAAW1B,KAAK3d,IAAI,UACjCk1Q,EAAS71P,IAAI,WAAY1B,KAAK3d,IAAI,eAClCk1Q,EAAS71P,IAAI,kBAAmB,CAAC3N,KAAKypQ,oBACtCjG,EAAS71P,IAAI,YAAa1B,KAAK3d,IAAI,eACnC,OAAO0R,KAAKsM,KAAKk9P,oBAAoBhG,EACtC,CACD,aAAItgP,GACF,MAAMA,EAAY,IAAI7W,KAAKrM,KAAKsM,MAChC,MAAM83M,EAAO,IAAI/3M,KAAKrM,KAAKsM,MAC3B83M,EAAKz2M,IAAI3N,KAAKuhN,SAASxhN,KAAMC,KAAK4pQ,aAClC1mP,EAAUvV,IAAI,OAAQy2M,GACtB,OAAOlhM,CACR,CACD,cAAA2mP,GACE7pQ,KAAKg3D,OAAS,IAAIhtD,IAClBhK,KAAKmpQ,WAAW/kD,KAAO,UAAUpkN,KAAK8W,aACtC,OAAO9W,KAAKmpQ,UACb,CACD,mBAAAW,CAAoBhM,GAClB,MAAM3b,EAAMniP,KAAK6pQ,iBACjB,IAAK,MAAMvgO,KAAQw0N,EAAK5oP,MAAM,YAC5B,IAAK,MAAMI,KAAQg0B,EAAKp0B,MAAM,IAAK,CACjC,MAAM/U,EAAOmV,EAAKtT,WAAW,GAC7B,GAAIhC,KAAKg3D,OAAOppD,IAAIzN,GAClB,SAEF,MAAMg8N,EAAUgmB,EAAI4nB,YAAYz0P,GAChC,MAAM+D,EAAQ9X,KAAKuS,KAAKqoN,EAAQ9iN,OAChCrZ,KAAKg3D,OAAOrpD,IAAIxN,EAAMkZ,GACtBrZ,KAAK8hN,UAAYvgN,KAAKC,IAAIrB,EAAMH,KAAK8hN,WACrC9hN,KAAK+hN,SAAWxgN,KAAK+D,IAAInF,EAAMH,KAAK+hN,SACrC,CAEH,OAAO/hN,KAAKkjB,SACb,CACD,2BAAO8mP,CAAqB9jQ,EAAMkT,EAAUogP,GAC1C,MAAO5yP,EAAII,EAAIH,EAAII,GAAMf,EACzB,IAAIkuL,EAAIvtL,EAAKD,EACb,IAAIuqC,EAAIlqC,EAAKD,EACToS,EAAW,MAAQ,KACpBg7K,EAAGjjJ,GAAK,CAACA,EAAGijJ,IAEf,MAAMgnC,EAAa3rO,EAAc+pQ,EACjC,MAAMyQ,EAAcv6Q,EAAsB8pQ,EAC1C,MAAO,CACLlsB,OAAQ,CAAC,EAAGn8L,EAAI84N,EAAc7uC,GAC9BjI,KAAM,CAAC,EAAG,EAAG/+B,EAAGjjJ,GAChB7sB,OAAQlL,IAAa,EAAID,kBAAkBC,EAAU+3B,EAAGiqL,QAAcr6N,EAEzE,CACD,gBAAAmpQ,CAAiBpM,EAAM53P,EAAMkT,EAAUogP,EAAU2Q,EAASC,GACxD,MAAMjoB,EAAMniP,KAAK6pQ,iBACjB,MAAM9/N,EAAQ,GACd,IAAI7I,GAAY+1N,SAChB,IAAK,MAAM3tN,KAAQw0N,EAAK5oP,MAAM,YAAa,CACzC60B,EAAMpoC,KAAK2nC,GACX,MAAM+gO,EAAYloB,EAAI4nB,YAAYzgO,GAAMjwB,MACxC6nB,EAAW3/B,KAAK+D,IAAI47B,EAAUmpO,GAC9B,IAAK,MAAMlqQ,KAAQqW,cAAc8yB,GAAO,CACtC,MAAMh0B,EAAOrU,OAAO8mO,cAAc5nO,GAClC,IAAIkZ,EAAQrZ,KAAKg3D,OAAO1oE,IAAI6R,GAC5B,GAAIkZ,SAAUtY,EAAW,CACvB,MAAMo7N,EAAUgmB,EAAI4nB,YAAYz0P,GAChC+D,EAAQ9X,KAAKuS,KAAKqoN,EAAQ9iN,OAC1BrZ,KAAKg3D,OAAOrpD,IAAIxN,EAAMkZ,GACtBrZ,KAAK8hN,UAAYvgN,KAAKC,IAAIrB,EAAMH,KAAK8hN,WACrC9hN,KAAK+hN,SAAWxgN,KAAK+D,IAAInF,EAAMH,KAAK+hN,SACrC,CACF,CACF,CACD7gL,GAAYs4N,EAAW,IACvB,MAAO5yP,EAAII,EAAIH,EAAII,GAAMf,EACzB,IAAIkuL,EAAIvtL,EAAKD,EACb,IAAIuqC,EAAIlqC,EAAKD,EACToS,EAAW,MAAQ,KACpBg7K,EAAGjjJ,GAAK,CAACA,EAAGijJ,IAEf,IAAIk2E,EAAS,EACTppO,EAAWkzJ,IACbk2E,EAASl2E,EAAIlzJ,GAEf,IAAIqpO,EAAS,EACb,MAAMnvC,EAAa3rO,EAAc+pQ,EACjC,MAAMyQ,EAAcv6Q,EAAsB8pQ,EAC1C,MAAM3V,EAAYzoB,EAAarxL,EAAM7qC,OACjC2kP,EAAY1yM,IACdo5N,EAASp5N,EAAI0yM,GAEf,MAAM2mB,EAASjpQ,KAAKC,IAAI8oQ,EAAQC,GAChC,MAAME,EAAcjR,EAAWgR,EAC/B,MAAMhoQ,EAAS,CAAC,IAAK,OAAO4V,eAAeg8K,MAAMh8K,eAAe+4B,YAAa,KAAM,aAAa/4B,eAAe+4B,EAAI84N,cAAwBlB,YAAYoB,EAAS,QAAS,IAAInqQ,KAAKuhN,SAASxhN,QAAQqY,eAAeqyP,SAClN,MAAMvnP,UACJA,GACEljB,KACJoqQ,SAAqBA,IAAgB,UAAYA,GAAe,GAAKA,GAAe,EAAIA,EAAc,EACtG,GAAIA,IAAgB,EAAG,CACrB5nQ,EAAOb,KAAK,UACZ,MAAMw4P,EAAY,IAAI9tP,KAAKrM,KAAKsM,MAChC,MAAMy/N,EAAK,IAAI1/N,KAAKrM,KAAKsM,MACzBy/N,EAAGp+N,IAAI,KAAMy8P,GACbr+B,EAAGp+N,IAAI,KAAMy8P,GACbr+B,EAAGp+N,IAAI,OAAQ1B,KAAK3d,IAAI,cACxB6rQ,EAAUxsP,IAAI,KAAMo+N,GACpB7oN,EAAUvV,IAAI,YAAawsP,EAC5B,CACD,MAAMuQ,EAAStyP,eAAegjN,GAC9B,IAAK,MAAM9xL,KAAQS,EACjBvnC,EAAOb,KAAK,MAAM+oQ,SAAc1xP,uBAAuBswB,UAEzD9mC,EAAOb,KAAK,KAAM,KAClB,MAAMgpQ,EAAanoQ,EAAOZ,KAAK,MAC/B,MAAMgpQ,EAAuB,IAAIv+P,KAAKrM,KAAKsM,MAC3Cs+P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQ,CAAC,EAAG,EAAGymL,EAAGjjJ,IAC3Cy5N,EAAqBj9P,IAAI,SAAUg9P,EAAWzrQ,QAC9C0rQ,EAAqBj9P,IAAI,YAAauV,GACtC,GAAI9J,EAAU,CACZ,MAAMkL,EAASnL,kBAAkBC,EAAUg7K,EAAGjjJ,GAC9Cy5N,EAAqBj9P,IAAI,SAAU2W,EACpC,CACD,MAAMumP,EAAK,IAAIlxP,aAAagxP,GAC5BE,EAAGx8P,KAAOu8P,EACV,OAAOC,CACR,EAMH,MAAMC,iBACJ,WAAA7qQ,CAAY8qQ,EAAMz+P,EAAMjd,GACtB2Q,KAAK+qQ,KAAOA,EACZ/qQ,KAAKsM,KAAOA,EACZtM,KAAKgrQ,MAAQ37Q,CACd,CACD,MAAA47Q,GACE,MAAM91P,EAAM,IAAInL,IAChB,IAAKhK,KAAK+qQ,KACR,OAAO51P,EAET,MAAM7I,EAAOtM,KAAKsM,KAClB,MAAM6qC,EAAY,IAAIpoC,OACtBooC,EAAUhoC,IAAInP,KAAK+qQ,MACnB,MAAMrhB,EAAQ,CAAC1pP,KAAK+qQ,MACpB,MAAOrhB,EAAMxqP,OAAS,EAAG,CACvB,MAAM3Q,EAAM+d,EAAKiX,WAAWmmO,EAAMz6N,SAClC,KAAM1gC,aAAe8d,MACnB,SAEF,GAAI9d,EAAIqf,IAAI,QAAS,CACnB,MAAMs9P,EAAO38Q,EAAID,IAAI,QACrB,IAAKqV,MAAM2J,QAAQ49P,GACjB,SAEF,IAAK,MAAMC,KAAOD,EAAM,CACtB,GAAI/zN,EAAUvpC,IAAIu9P,GAChB,MAAM,IAAIxqQ,YAAY,uBAAuBX,KAAKgrQ,gBAEpDthB,EAAM/nP,KAAKwpQ,GACXh0N,EAAUhoC,IAAIg8P,EACf,CACD,QACD,CACD,MAAM3zM,EAAUjpE,EAAID,IAAI0R,KAAKgrQ,OAC7B,GAAKrnQ,MAAM2J,QAAQkqD,GAGnB,IAAK,IAAIn2D,EAAI,EAAGoH,EAAK+uD,EAAQt4D,OAAQmC,EAAIoH,EAAIpH,GAAK,EAChD8T,EAAIxH,IAAIrB,EAAKiX,WAAWi0C,EAAQn2D,IAAKiL,EAAKiX,WAAWi0C,EAAQn2D,EAAI,IAEpE,CACD,OAAO8T,CACR,CACD,MAAA5H,CAAOtf,GACL,IAAK+R,KAAK+qQ,KACR,OAAO,KAET,MAAMz+P,EAAOtM,KAAKsM,KAClB,IAAI8+P,EAAgB9+P,EAAKiX,WAAWvjB,KAAK+qQ,MACzC,IAAIM,EAAY,EAChB,MAAMC,EAAa,GACnB,MAAOF,EAAcx9P,IAAI,QAAS,CAChC,KAAMy9P,EAAYC,EAAY,CAC5BntQ,KAAK,mCAAmC6B,KAAKgrQ,gBAC7C,OAAO,IACR,CACD,MAAME,EAAOE,EAAc98Q,IAAI,QAC/B,IAAKqV,MAAM2J,QAAQ49P,GACjB,OAAO,KAET,IAAI/1N,EAAI,EACNjxC,EAAIgnQ,EAAKhsQ,OAAS,EACpB,MAAOi2C,GAAKjxC,EAAG,CACb,MAAMU,EAAIuwC,EAAIjxC,GAAK,EACnB,MAAMinQ,EAAM7+P,EAAKiX,WAAW2nP,EAAKtmQ,IACjC,MAAM2mQ,EAASJ,EAAI78Q,IAAI,UACvB,GAAIL,EAAMqe,EAAKiX,WAAWgoP,EAAO,IAC/BrnQ,EAAIU,EAAI,MACH,MAAI3W,EAAMqe,EAAKiX,WAAWgoP,EAAO,KAEjC,CACLH,EAAgBD,EAChB,KACD,CAJCh2N,EAAIvwC,EAAI,CAIT,CACF,CACD,GAAIuwC,EAAIjxC,EACN,OAAO,IAEV,CACD,MAAMszD,EAAU4zM,EAAc98Q,IAAI0R,KAAKgrQ,OACvC,GAAIrnQ,MAAM2J,QAAQkqD,GAAU,CAC1B,IAAIriB,EAAI,EACNjxC,EAAIszD,EAAQt4D,OAAS,EACvB,MAAOi2C,GAAKjxC,EAAG,CACb,MAAMmpB,EAAM8nB,EAAIjxC,GAAK,EACnBU,EAAIyoB,GAAOA,EAAM,GACnB,MAAMm+O,EAAal/P,EAAKiX,WAAWi0C,EAAQ5yD,IAC3C,GAAI3W,EAAMu9Q,EACRtnQ,EAAIU,EAAI,MACH,MAAI3W,EAAMu9Q,GAGf,OAAOh0M,EAAQ5yD,EAAI,GAFnBuwC,EAAIvwC,EAAI,CAGT,CACF,CACF,CACD,OAAO,IACR,CACD,GAAAtW,CAAIL,GACF,OAAO+R,KAAKsM,KAAKiX,WAAWvjB,KAAKuN,OAAOtf,GACzC,EAEH,MAAMw9Q,iBAAiBX,iBACrB,WAAA7qQ,CAAY8qQ,EAAMz+P,GAChBlM,MAAM2qQ,EAAMz+P,EAAM,QACnB,EAEH,MAAMo/P,mBAAmBZ,iBACvB,WAAA7qQ,CAAY8qQ,EAAMz+P,GAChBlM,MAAM2qQ,EAAMz+P,EAAM,OACnB,EAQH,SAASq/P,oBACPt+B,qBACArhO,uBACAysM,qBACAlzJ,SAASC,SACX,CAMA,SAASomN,iBAAiBv9P,GACxB,OAAMA,aAAgBhC,KAGlBgC,EAAKT,IAAI,MACJS,EAAK/f,IAAI,MACP+f,EAAKT,IAAI,KACXS,EAAK/f,IAAI,KACP+f,EAAKT,IAAI,QACXS,EAAK/f,IAAI,QACP+f,EAAKT,IAAI,OACXS,EAAK/f,IAAI,OACP+f,EAAKT,IAAI,OACXS,EAAK/f,IAAI,OAEX,KAbE,IAcX,CACA,SAASu9Q,UAAU/pQ,GACjB,OAAOA,EAAIyT,UAAUzT,EAAIg6C,YAAY,KAAO,EAC9C,CACA,MAAMgwN,SACJC,GAAoB,MACpB,WAAA9rQ,CAAY8qQ,EAAMz+P,EAAM0/P,EAAc,OACpC,GAAMjB,aAAgB1+P,KAAtB,CAGArM,KAAKsM,KAAOA,EACZtM,KAAK+qQ,KAAOA,EACRA,EAAKn9P,IAAI,QACX5N,KAAKisQ,GAAKlB,EAAKz8Q,IAAI,OAEjBy8Q,EAAKn9P,IAAI,OACXzP,KAAK,iDAEF6tQ,IACCjB,EAAKn9P,IAAI,MACX5N,MAAK+rQ,EAAoB,KAEzB5tQ,KAAK,sDAbR,CAgBF,CACD,YAAI0+C,GACF,IAAIA,EAAW,GACf,MAAM9pC,EAAO64P,iBAAiB5rQ,KAAK+qQ,MAC/Bh4P,UAAeA,IAAS,WAC1B8pC,EAAW70C,kBAAkB+K,GAAMxK,WAAW,OAAQ,MAAMA,WAAW,MAAO,KAAKA,WAAW,KAAM,MAEtG,OAAOhJ,OAAOS,KAAM,WAAY68C,GAAY,UAC7C,CACD,WAAI+nL,GACF,IAAK5kO,MAAK+rQ,EACR,OAAO,KAET/rQ,KAAKksQ,cAAgBN,iBAAiB5rQ,KAAK+qQ,MAAMz8Q,IAAI,OACrD,IAAIs2O,EAAU,KACd,GAAI5kO,KAAKksQ,YAAa,CACpB,MAAMC,EAAUnsQ,KAAKsM,KAAKiX,WAAWvjB,KAAKksQ,aACtCC,aAAmBj8P,WACrB00N,EAAUunC,EAAQ77P,WAElBnS,KAAK,qEAEb,MACMA,KAAK,yDAEP,OAAOymO,CACR,CACD,eAAIwnC,GACF,IAAIA,EAAc,GAClB,MAAMC,EAAOrsQ,KAAK+qQ,MAAMz8Q,IAAI,QACxB+9Q,UAAeA,IAAS,WAC1BD,EAAcpkQ,kBAAkBqkQ,IAElC,OAAO9sQ,OAAOS,KAAM,cAAeosQ,EACpC,CACD,gBAAIE,GACF,MAAO,CACLC,YAAavsQ,KAAK68C,SAClBA,SAAUgvN,UAAU7rQ,KAAK68C,UACzB+nL,QAAS5kO,KAAK4kO,QACdwnC,YAAapsQ,KAAKosQ,YAErB,EAKH,MAAMI,GAAqB,CACzBC,QAAS,EACTC,eAAgB,EAChBC,kBAAmB,EACnBC,4BAA6B,EAC7BC,gCAAiC,EACjCC,qBAAsB,EACtBC,kBAAmB,EACnBC,aAAc,EACdC,4BAA6B,EAC7BC,qBAAsB,EACtBC,mBAAoB,IAEtB,SAAS70D,aAAaxpL,EAAGqc,GACvB,MAAM/2B,EAAK0a,EAAEqc,GACb,OAAO/2B,IAAO,KAAOA,IAAO,MAAQA,IAAO,MAAQA,IAAO,IAC5D,CACA,SAASg5P,mBAAmBt+O,GAC1B,IAAK,IAAIztB,EAAI,EAAGoH,EAAKqmB,EAAE5vB,OAAQmC,EAAIoH,EAAIpH,IACrC,IAAKi3M,aAAaxpL,EAAGztB,GACnB,OAAO,MAGX,OAAO,IACT,CACA,MAAMgsQ,cACJ,gBAAAC,CAAiBx+O,GACf,OAAOA,EAAEvmB,WAAW,cAAc,CAACywP,EAAKriP,KACtC,GAAIA,EAAOpB,UAAU,EAAG,KAAO,KAC7B,OAAOtU,OAAO8mO,cAAcj5N,SAAS6H,EAAOpB,UAAU,GAAI,KACrD,GAAIoB,EAAOpB,UAAU,EAAG,KAAO,IACpC,OAAOtU,OAAO8mO,cAAcj5N,SAAS6H,EAAOpB,UAAU,GAAI,KAE5D,OAAQoB,GACN,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,MACH,MAAO,IACT,IAAK,OACH,MAAO,IACT,IAAK,OACH,MAAO,IAEX,OAAO3W,KAAKutQ,gBAAgB52P,EAAO,GAEtC,CACD,aAAA62P,CAAc1+O,EAAG/c,GACf,MAAM07P,EAAa,GACnB,IAAI18P,EAAMgB,EACV,SAAS27P,SACP,MAAO38P,EAAM+d,EAAE5vB,QAAUo5M,aAAaxpL,EAAG/d,KACrCA,CAEL,CACD,MAAOA,EAAM+d,EAAE5vB,SAAWo5M,aAAaxpL,EAAG/d,IAAQ+d,EAAE/d,KAAS,KAAO+d,EAAE/d,KAAS,MAC3EA,EAEJ,MAAMhR,EAAO+uB,EAAEvZ,UAAUxD,EAAOhB,GAChC28P,SACA,MAAO38P,EAAM+d,EAAE5vB,QAAU4vB,EAAE/d,KAAS,KAAO+d,EAAE/d,KAAS,KAAO+d,EAAE/d,KAAS,IAAK,CAC3E28P,SACA,IAAIC,EAAW,GACbC,EAAY,GACd,MAAO78P,EAAM+d,EAAE5vB,SAAWo5M,aAAaxpL,EAAG/d,IAAQ+d,EAAE/d,KAAS,IAAK,CAChE48P,GAAY7+O,EAAE/d,KACZA,CACH,CACD28P,SACA,GAAI5+O,EAAE/d,KAAS,IACb,OAAO,OAEPA,EACF28P,SACA,MAAMG,EAAc/+O,EAAE/d,GACtB,GAAI88P,IAAgB,KAAOA,IAAgB,IACzC,OAAO,KAET,MAAMC,EAAeh/O,EAAE+hC,QAAQg9M,IAAe98P,GAC9C,GAAI+8P,EAAe,EACjB,OAAO,KAETF,EAAY9+O,EAAEvZ,UAAUxE,EAAK+8P,GAC7BL,EAAW9rQ,KAAK,CACd5B,KAAM4tQ,EACNnuQ,MAAOQ,KAAKstQ,iBAAiBM,KAE/B78P,EAAM+8P,EAAe,EACrBJ,QACD,CACD,MAAO,CACL3tQ,OACA0tQ,aACAM,OAAQh9P,EAAMgB,EAEjB,CACD,2BAAAi8P,CAA4Bl/O,EAAG/c,GAC7B,IAAIhB,EAAMgB,EACV,SAAS27P,SACP,MAAO38P,EAAM+d,EAAE5vB,QAAUo5M,aAAaxpL,EAAG/d,KACrCA,CAEL,CACD,MAAOA,EAAM+d,EAAE5vB,SAAWo5M,aAAaxpL,EAAG/d,IAAQ+d,EAAE/d,KAAS,KAAO+d,EAAE/d,KAAS,KAAO+d,EAAE/d,KAAS,MAC7FA,EAEJ,MAAMhR,EAAO+uB,EAAEvZ,UAAUxD,EAAOhB,GAChC28P,SACA,MAAMO,EAAYl9P,EAClB,MAAOA,EAAM+d,EAAE5vB,SAAW4vB,EAAE/d,KAAS,KAAO+d,EAAE/d,EAAM,KAAO,OACvDA,EAEJ,MAAMvR,EAAQsvB,EAAEvZ,UAAU04P,EAAWl9P,GACrC,MAAO,CACLhR,OACAP,QACAuuQ,OAAQh9P,EAAMgB,EAEjB,CACD,QAAAm8P,CAASp/O,GACP,IAAIztB,EAAI,EACR,MAAOA,EAAIytB,EAAE5vB,OAAQ,CACnB,MAAMkV,EAAK0a,EAAEztB,GACb,IAAI6e,EAAI7e,EACR,GAAI+S,IAAO,IAAK,GACZ8L,EACF,MAAMiuP,EAAMr/O,EAAE5O,GACd,IAAI4F,EACJ,OAAQqoP,GACN,IAAK,MACDjuP,EACF4F,EAAIgJ,EAAE+hC,QAAQ,IAAK3wC,GACnB,GAAI4F,EAAI,EAAG,CACT9lB,KAAK6e,QAAQ2tP,GAAmBU,qBAChC,MACD,CACDltQ,KAAKouQ,aAAat/O,EAAEvZ,UAAU2K,EAAG4F,IACjC5F,EAAI4F,EAAI,EACR,MACF,IAAK,MACD5F,EACF,MAAMy6I,EAAK36J,KAAKguQ,4BAA4Bl/O,EAAG5O,GAC/C,GAAI4O,EAAEvZ,UAAU2K,EAAIy6I,EAAGozG,OAAQ7tP,EAAIy6I,EAAGozG,OAAS,KAAO,KAAM,CAC1D/tQ,KAAK6e,QAAQ2tP,GAAmBI,4BAChC,MACD,CACD5sQ,KAAKquQ,KAAK1zG,EAAG56J,KAAM46J,EAAGn7J,OACtB0gB,GAAKy6I,EAAGozG,OAAS,EACjB,MACF,IAAK,IACH,GAAIj/O,EAAEvZ,UAAU2K,EAAI,EAAGA,EAAI,KAAO,KAAM,CACtC4F,EAAIgJ,EAAE+hC,QAAQ,SAAO3wC,EAAI,GACzB,GAAI4F,EAAI,EAAG,CACT9lB,KAAK6e,QAAQ2tP,GAAmBM,qBAChC,MACD,CACD9sQ,KAAKsuQ,UAAUx/O,EAAEvZ,UAAU2K,EAAI,EAAG4F,IAClC5F,EAAI4F,EAAI,CACtB,MAAmB,GAAIgJ,EAAEvZ,UAAU2K,EAAI,EAAGA,EAAI,KAAO,UAAW,CAClD4F,EAAIgJ,EAAE+hC,QAAQ,MAAO3wC,EAAI,GACzB,GAAI4F,EAAI,EAAG,CACT9lB,KAAK6e,QAAQ2tP,GAAmBG,kBAChC,MACD,CACD3sQ,KAAKuuQ,QAAQz/O,EAAEvZ,UAAU2K,EAAI,EAAG4F,IAChC5F,EAAI4F,EAAI,CACtB,KAAmB,IAAIgJ,EAAEvZ,UAAU2K,EAAI,EAAGA,EAAI,KAAO,UAmBlC,CACLlgB,KAAK6e,QAAQ2tP,GAAmBO,kBAChC,MACD,CAtBmD,CAClD,MAAMyB,EAAK1/O,EAAE+hC,QAAQ,IAAK3wC,EAAI,GAC9B,IAAIuuP,EAAiB,MACrB3oP,EAAIgJ,EAAE+hC,QAAQ,IAAK3wC,EAAI,GACvB,GAAI4F,EAAI,EAAG,CACT9lB,KAAK6e,QAAQ2tP,GAAmBK,gCAChC,MACD,CACD,GAAI2B,EAAK,GAAK1oP,EAAI0oP,EAAI,CACpB1oP,EAAIgJ,EAAE+hC,QAAQ,KAAM3wC,EAAI,GACxB,GAAI4F,EAAI,EAAG,CACT9lB,KAAK6e,QAAQ2tP,GAAmBK,gCAChC,MACD,CACD4B,EAAiB,IAClB,CACD,MAAMC,EAAiB5/O,EAAEvZ,UAAU2K,EAAI,EAAG4F,GAAK2oP,EAAiB,EAAI,IACpEzuQ,KAAK2uQ,UAAUD,GACfxuP,EAAI4F,GAAK2oP,EAAiB,EAAI,EAC5C,CAGa,CACD,MACF,QACE,MAAM7pC,EAAU5kO,KAAKwtQ,cAAc1+O,EAAG5O,GACtC,GAAI0kN,IAAY,KAAM,CACpB5kO,KAAK6e,QAAQ2tP,GAAmBO,kBAChC,MACD,CACD,IAAI6B,EAAW,MACf,GAAI9/O,EAAEvZ,UAAU2K,EAAI0kN,EAAQmpC,OAAQ7tP,EAAI0kN,EAAQmpC,OAAS,KAAO,KAC9Da,EAAW,UACN,GAAI9/O,EAAEvZ,UAAU2K,EAAI0kN,EAAQmpC,OAAQ7tP,EAAI0kN,EAAQmpC,OAAS,KAAO,IAAK,CAC1E/tQ,KAAK6e,QAAQ2tP,GAAmBU,qBAChC,MACD,CACDltQ,KAAK6uQ,eAAejqC,EAAQ7kO,KAAM6kO,EAAQ6oC,WAAYmB,GACtD1uP,GAAK0kN,EAAQmpC,QAAUa,EAAW,EAAI,GACtC,MAEZ,KAAa,CACL,MAAO1uP,EAAI4O,EAAE5vB,QAAU4vB,EAAE5O,KAAO,IAC9BA,IAEF,MAAM49O,EAAOhvO,EAAEvZ,UAAUlU,EAAG6e,GAC5BlgB,KAAK8uQ,OAAO9uQ,KAAKstQ,iBAAiBxP,GACnC,CACDz8P,EAAI6e,CACL,CACF,CACD,eAAAqtP,CAAgBxtQ,GACd,MAAO,IAAIA,IACZ,CACD,IAAAsuQ,CAAKtuQ,EAAMP,GAAS,CACpB,SAAA8uQ,CAAUxQ,GAAQ,CAClB,OAAAyQ,CAAQzQ,GAAQ,CAChB,SAAA6Q,CAAUD,GAAkB,CAC5B,MAAAI,CAAOhR,GAAQ,CACf,cAAA+Q,CAAe9uQ,EAAM0tQ,EAAYt9P,GAAW,CAC5C,YAAAi+P,CAAaruQ,GAAQ,CACrB,OAAA8e,CAAQ1e,GAAQ,EAElB,MAAM4uQ,cACJ,WAAA9uQ,CAAY+uQ,EAAUC,GACpBjvQ,KAAKgvQ,SAAWA,EAChBhvQ,KAAKivQ,UAAYA,EACjB9gR,OAAOC,eAAe4R,KAAM,aAAc,CACxCR,MAAO,KACPG,SAAU,MAEb,CACD,cAAIuvQ,GACF,OAAOlvQ,KAAKmvQ,aAAa,EAC1B,CACD,eAAIC,GACF,MAAMD,EAAanvQ,KAAKqvQ,WAAWF,WACnC,IAAKA,EACH,OAEF,MAAMhkO,EAAQgkO,EAAWt+M,QAAQ7wD,MACjC,OAAImrC,KAAW,EAGRgkO,EAAWhkO,EAAQ,QAH1B,CAID,CACD,eAAI0vN,GACF,OAAK76P,KAAKmvQ,WAGHnvQ,KAAKmvQ,WAAWh6P,KAAI,SAAUm6P,GACnC,OAAOA,EAAMzU,WACnB,IAAOj5P,KAAK,IAJC5B,KAAKivQ,WAAa,EAK5B,CACD,YAAI1lO,GACF,OAAOvpC,KAAKmvQ,YAAc,EAC3B,CACD,aAAAI,GACE,OAAOvvQ,KAAKmvQ,YAAYjwQ,OAAS,CAClC,CACD,UAAAswQ,CAAWC,EAAO1+P,GAChB,GAAIA,GAAO0+P,EAAMvwQ,OACf,OAAOc,KAET,MAAMoV,EAAYq6P,EAAM1+P,GACxB,GAAIqE,EAAUrV,KAAKhB,WAAW,MAAQgS,EAAM0+P,EAAMvwQ,OAAS,EACzD,OAAOc,KAAKwvQ,WAAWC,EAAO1+P,EAAM,GAEtC,MAAM0b,EAAQ,GACd,IAAIid,EAAO1pC,KACX,MAAO,KAAM,CACX,GAAIoV,EAAUrV,OAAS2pC,EAAKslO,SAAU,CACpC,GAAI55P,EAAUrE,MAAQ,EAKf,IAAI0b,EAAMvtB,SAAW,EAC1B,OAAO,KACF,CACL,MAAO8P,GAAUyd,EAAM0hB,MACvB,IAAIuhO,EAAa,EACjB,IAAK,MAAMJ,KAAStgQ,EAAOmgQ,WACzB,GAAI/5P,EAAUrV,OAASuvQ,EAAMN,SAAU,CACrC,GAAIU,IAAet6P,EAAUrE,IAC3B,OAAOu+P,EAAME,WAAWC,EAAO1+P,EAAM,GAEvC2+P,GACD,CAEH,OAAOhmO,EAAK8lO,WAAWC,EAAO1+P,EAAM,EACrC,EAnBwB,CACvB,MAAMw4N,EAAM7/L,EAAK8lO,WAAWC,EAAO1+P,EAAM,GACzC,GAAIw4N,IAAQ,KACV,OAAOA,CAEnB,CAeO,CACD,GAAI7/L,EAAKylO,YAAYjwQ,OAAS,EAAG,CAC/ButB,EAAM9qB,KAAK,CAAC+nC,EAAM,IAClBA,EAAOA,EAAKylO,WAAW,EAC/B,KAAa,IAAI1iP,EAAMvtB,SAAW,EAC1B,OAAO,KAEP,MAAOutB,EAAMvtB,SAAW,EAAG,CACzB,MAAO8P,EAAQikC,GAAcxmB,EAAM0hB,MACnC,MAAMiF,EAASH,EAAa,EAC5B,GAAIG,EAASpkC,EAAOmgQ,WAAWjwQ,OAAQ,CACrCutB,EAAM9qB,KAAK,CAACqN,EAAQokC,IACpB1J,EAAO16B,EAAOmgQ,WAAW/7N,GACzB,KACD,CACF,CACD,GAAI3mB,EAAMvtB,SAAW,EACnB,OAAO,IAEV,CACF,CACF,CACD,IAAAywQ,CAAKntQ,GACH,GAAIxC,KAAKgvQ,WAAa,QAAtB,CAIAxsQ,EAAOb,KAAK,IAAI3B,KAAKgvQ,YACrB,GAAIhvQ,KAAKytQ,WACP,IAAK,MAAMmC,KAAa5vQ,KAAKytQ,WAC3BjrQ,EAAOb,KAAK,IAAIiuQ,EAAU7vQ,SAAS2W,kBAAkBk5P,EAAUpwQ,WAGnE,GAAIQ,KAAKuvQ,gBAAiB,CACxB/sQ,EAAOb,KAAK,KACZ,IAAK,MAAM2tQ,KAAStvQ,KAAKmvQ,WACvBG,EAAMK,KAAKntQ,GAEbA,EAAOb,KAAK,KAAK3B,KAAKgvQ,YAC5B,MAAehvQ,KAAKivQ,UACdzsQ,EAAOb,KAAK,IAAI+U,kBAAkB1W,KAAKivQ,eAAejvQ,KAAKgvQ,aAE3DxsQ,EAAOb,KAAK,KAhBb,MAFCa,EAAOb,KAAK+U,kBAAkB1W,KAAKivQ,WAoBtC,EAEH,MAAMY,wBAAwBxC,cAC5B,WAAAptQ,EAAY6vQ,cACVA,EAAgB,MAAKC,cACrBA,EAAgB,QAEhB3vQ,QACAJ,KAAKgwQ,iBAAmB,KACxBhwQ,KAAKiwQ,OAAS,KACdjwQ,KAAKkwQ,WAAa1D,GAAmBC,QACrCzsQ,KAAKmwQ,eAAiBL,EACtB9vQ,KAAKowQ,eAAiBL,CACvB,CACD,eAAAM,CAAgBv9P,GACd9S,KAAKgwQ,iBAAmB,GACxBhwQ,KAAKiwQ,OAAS,GACdjwQ,KAAKkwQ,WAAa1D,GAAmBC,QACrCzsQ,KAAKkuQ,SAASp7P,GACd,GAAI9S,KAAKkwQ,aAAe1D,GAAmBC,QACzC,OAEF,MAAO6D,GAAmBtwQ,KAAKgwQ,iBAC/B,OAAKM,EAGE,CACLA,wBAJF,CAMD,CACD,MAAAxB,CAAOhR,GACL,GAAIsP,mBAAmBtP,GACrB,OAEF,MAAMp0N,EAAO,IAAIqlO,cAAc,QAASjR,GACxC99P,KAAKgwQ,iBAAiBruQ,KAAK+nC,EAC5B,CACD,OAAA6kO,CAAQzQ,GACN,MAAMp0N,EAAO,IAAIqlO,cAAc,QAASjR,GACxC99P,KAAKgwQ,iBAAiBruQ,KAAK+nC,EAC5B,CACD,cAAAmlO,CAAe9uQ,EAAM0tQ,EAAYt9P,GAC3BnQ,KAAKowQ,iBACPrwQ,EAAOA,EAAK6T,eAEd,MAAM81B,EAAO,IAAIqlO,cAAchvQ,GAC/B2pC,EAAKylO,WAAa,GACdnvQ,KAAKmwQ,iBACPzmO,EAAK+jO,WAAaA,GAEpBztQ,KAAKgwQ,iBAAiBruQ,KAAK+nC,GAC3B,IAAIv5B,EAAJ,CAGAnQ,KAAKiwQ,OAAOtuQ,KAAK3B,KAAKgwQ,kBACtBhwQ,KAAKgwQ,iBAAmBtmO,EAAKylO,UAF5B,CAGF,CACD,YAAAf,CAAaruQ,GACXC,KAAKgwQ,iBAAmBhwQ,KAAKiwQ,OAAO9hO,OAAS,GAC7C,MAAMoiO,EAAcvwQ,KAAKgwQ,iBAAiBh2O,IAAI,GAC9C,IAAKu2O,EACH,OAAO,KAET,IAAK,MAAMC,KAAaD,EAAYpB,WAClCqB,EAAUnB,WAAakB,EAEzB,OAAOA,CACR,CACD,OAAA1xP,CAAQ1e,GACNH,KAAKkwQ,WAAa/vQ,CACnB,EAKH,MAAMswQ,eACJ,WAAAxwQ,CAAY6S,GACVA,EAAO9S,KAAK0wQ,QAAQ59P,GACpB,MAAMw8C,EAAS,IAAIugN,gBAAgB,CACjCE,cAAe,OAEjB,MAAMY,EAAcrhN,EAAO+gN,gBAAgBv9P,GAC3C9S,KAAK4wQ,aAAe,IAAI5mQ,IACxBhK,KAAK6wQ,MAAQ/9P,EACT69P,GACF3wQ,KAAKojB,OAAOutP,EAEf,CACD,OAAAD,CAAQ59P,GACN,OAAOA,EAAK+oC,QAAQ,SAAU,IAAItzC,WAAW,uBAAuB,SAAUywP,EAAK7jO,GACjF,MAAMr0B,EAAQq0B,EAAM5sB,WAAW,4BAA4B,SAAUpI,EAAMmmQ,EAAIwK,EAAIC,GACjF,OAAO9vQ,OAAOC,aAAaolQ,EAAK,GAAKwK,EAAK,EAAIC,EAAK,EACpD,IAAExoQ,WAAW,4BAA4B,SAAUzG,EAAK/B,GACvD,OAAQA,GACN,IAAK,MACH,MAAO,IACT,IAAK,OACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,KACH,MAAO,IACT,IAAK,OACH,MAAO,IAEX,MAAM,IAAI1B,MAAM,YAAY0B,mBACpC,IACM,MAAMixQ,EAAU,CAAC,KACjB,IAAK,IAAI3vQ,EAAI,EAAGoH,EAAK3H,EAAM5B,OAAQmC,EAAIoH,EAAIpH,GAAK,EAAG,CACjD,MAAMlB,EAAOW,EAAMkB,WAAWX,GAAK,IAAMP,EAAMkB,WAAWX,EAAI,GAC1DlB,GAAQ,IAAMA,EAAO,KAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACrE6wQ,EAAQrvQ,KAAKV,OAAOC,aAAaf,IAEjC6wQ,EAAQrvQ,KAAK,OAAS,MAAUxB,GAAM2D,SAAS,IAAIyR,UAAU,GAAK,IAErE,CACD,OAAOy7P,EAAQpvQ,KAAK,GAC1B,GACG,CACD,YAAAqvQ,CAAav7P,GACX,MAAM3V,EAAO2V,EAAMs5P,SACnB,OAAIjvQ,IAAS,WAAaA,IAAS,WAAaA,IAAS,UAChD,KAEF2V,EAAMy5P,WAAWtgP,QAAO6a,GAAQA,EAAKslO,WAAa,UAC1D,CACD,WAAAkC,CAAYx7P,GACV,IAAKA,EAAM65P,gBACT,OAEF,MAAO4B,GAAWz7P,EAAMy5P,WACxB,MAAM7hP,EAAWttB,KAAKixQ,aAAaE,IAAY,GAC/CnxQ,KAAK4wQ,aAAajjQ,IAAI+H,EAAMs5P,SAAU1hP,EAASnY,KAAIu0B,GAAQA,EAAKmxN,YAAYuW,SAC7E,CACD,MAAAhuP,CAAOutP,GACL,IAAIU,EAAMV,EAAYL,gBACtB,GAAIe,EAAIrC,WAAa,UAAW,CAC9BqC,EAAMA,EAAInC,WACV,MAAOmC,GAAOA,EAAIrC,WAAa,UAC7BqC,EAAMA,EAAIjC,WAEb,CACD,GAAKiC,GAAOA,EAAIrC,WAAa,WAAcqC,EAAI9B,gBAG/C,IAAK,MAAMlD,KAAQgF,EAAIlC,WACrB,GAAI9C,EAAK2C,WAAa,kBAGtB,IAAK,MAAMt5P,KAAS22P,EAAK8C,WAAY,CACnC,MAAMpvQ,EAAO2V,EAAMs5P,SACnB,OAAQjvQ,GACN,IAAK,QACH,SACF,IAAK,aACL,IAAK,aACHC,KAAKkxQ,YAAYx7P,GACjB,SAEJ1V,KAAK4wQ,aAAajjQ,IAAI5N,EAAM2V,EAAMmlP,YAAYuW,OAC/C,CAEJ,CACD,gBAAI9E,GACF,MAAO,CACLgF,WAAYtxQ,KAAK4wQ,aACjBW,QAASvxQ,KAAK6wQ,MAEjB,EAQH,MAAMW,GAAY,GAClB,MAAMC,GAAoB,CACxBC,aAAc,EACdC,eAAgB,EAChBC,OAAQ,EACRC,WAAY,EACZC,QAAS,GAEX,MAAMC,eACJ,WAAA9xQ,CAAY+xQ,EAAUC,GACpBjyQ,KAAKqO,KAAO2jQ,EACZhyQ,KAAK4O,IAAMqjQ,aAAmBhlQ,IAAMglQ,EAAU,KAC9CjyQ,KAAKkyQ,QAAU,IAAIloQ,IACnBhK,KAAKmyQ,gBAAkB,IACxB,CACD,IAAAC,GACEpyQ,KAAKqyQ,aACN,CACD,EAAAC,CAAaC,EAASv6O,EAAI3oC,GACxB,KAAMkjR,aAAmBtlQ,MAAQ+qB,EAAK,EACpC,OAEFh4B,KAAKmyQ,kBAAoB,IAAI5iQ,YAC7B,IAAI+zM,EAAMtjN,KAAKmyQ,gBAAgB7jR,IAAIikR,GACnC,IAAKjvD,EAAK,CACRA,EAAM,GACNtjN,KAAKmyQ,gBAAgBhjQ,IAAIojQ,EAASjvD,EACnC,CACDA,EAAI3hN,KAAK,CAACq2B,EAAI3oC,GACf,CACD,qBAAAmjR,CAAsBD,EAASv6O,GAC7Bh4B,MAAKsyQ,EAAaC,EAASv6O,EAAIy5O,GAAkBI,WAClD,CACD,WAAAQ,GACE,MAAMI,EAAczyQ,KAAKqO,KAAK/f,IAAI,WAClC,GAAMmkR,aAAuBpmQ,KAG7B,IAAK,MAAOpe,EAAKuR,KAAUizQ,EACrBjzQ,aAAiByM,MACnBjM,KAAKkyQ,QAAQvkQ,IAAI1f,EAAKuR,EAAMO,KAGjC,CACD,mCAAa2yQ,EAAuBC,WAClCA,EAAUC,WACVA,EAAUl6P,qBACVA,IAEA,KAAMi6P,aAAsB1lQ,KAAM,CAChC9O,KAAK,sDACL,OAAO,KACR,CACD,IAAI00Q,EAAU,EACd,IAAIC,EAAqB,KACzB,IAAK,MAAOl6P,EAAWmnP,KAAarnP,EAAsB,CACxD,MACE9J,IAAK2jQ,SACGK,EAAWG,QAAQn6P,GAC7B,KAAM25P,aAAmBtlQ,KAAM,CAC7B9O,KAAK,qCAAqCya,iBAC1Ck6P,EAAqB,KACrB,KACD,CACD,IAAK,MAAMj9P,KAAWkqP,EACpB,GAAIlqP,EAAQm9P,mBAAmB3jR,KAAM,CACnCwmB,EAAQo9P,aAAeJ,IACvBC,EAAqB,KACtB,CAEJ,CACD,GAAIA,EAAoB,CACtB,IAAK,MAAM/S,KAAYrnP,EAAqBhL,SAC1C,IAAK,MAAMmI,KAAWkqP,SACblqP,EAAQo9P,aAGnB,OAAO,KACR,CACD,OAAO,IACR,CACD,gCAAaC,EAAoBx6P,qBAC/BA,EAAoBpM,KACpBA,EAAIqmQ,WACJA,EAAUC,WACVA,EAAUO,QACVA,IAEA,MAAMpI,EAAO6H,EAAWQ,QAAQC,YAChC,MAAMj7O,EAAQ,IAAI7oB,YAClB6oB,EAAMjpB,IAAIwjQ,EAAY5H,GACtB,MAAMuI,EAAoBhnQ,EAAKinQ,qBAC/BxI,EAAKp9P,IAAI,iBAAkB2lQ,GAC3B,MAAME,EAAiB,IAAInnQ,KAAKC,GAChCknQ,EAAe7lQ,IAAI,OAAQ1B,KAAK3d,IAAI,mBACpC,MAAMmlR,EAAgBnnQ,EAAKinQ,qBAC3BC,EAAe7lQ,IAAI,aAAc8lQ,GACjC,MAAMvI,EAAO,GACbsI,EAAe7lQ,IAAI,IAAKu9P,GACxB9yO,EAAMjpB,IAAImkQ,EAAmBE,GAC7B,MAAME,EAAa,IAAIrnQ,KAAKC,GAC5B,MAAMqnQ,EAAO,GACbD,EAAW/lQ,IAAI,OAAQgmQ,GACvB,MAAMd,QAAgB7yQ,MAAK4zQ,EAAW,CACpCl7P,uBACA46P,oBACAE,eAAgB,KAChBtI,OACAyI,OACArnQ,OACAsmQ,aACAO,UACA/6O,UAEFo7O,EAAe7lQ,IAAI,oBAAqBklQ,GACxCz6O,EAAMjpB,IAAIskQ,EAAeC,GACzB,IAAK,MAAO9kQ,EAAKrgB,KAAQ6pC,EAAM1oB,QAC7ByjQ,EAAQhkQ,IAAIP,EAAK,CACfkE,KAAMvkB,GAGX,CACD,yBAAMslR,EAAoBjB,WACxBA,EAAUtmQ,KACVA,EAAIoM,qBACJA,IAEA,IAAK1Y,KAAK4O,IAAK,CACbzQ,KAAK,qDACL,OAAO,KACR,CACD,IAAI00Q,EAAU7yQ,KAAKqO,KAAK/f,IAAI,qBAC5B,IAAKsP,OAAOC,UAAUg1Q,IAAYA,EAAU,EAAG,CAC7C10Q,KAAK,oDACL,OAAO,KACR,CACD,MAAMu1Q,EAAa1zQ,KAAKqO,KAAK/f,IAAI,cACjC,KAAMolR,aAAsBrnQ,MAAO,CACjClO,KAAK,2DACL,OAAO,KACR,CACD,MAAMw1Q,EAAOD,EAAWplR,IAAI,QAC5B,IAAKqV,MAAM2J,QAAQqmQ,GAAO,CACxBx1Q,KAAK,uDACL,OAAO,KACR,CACD,MAAM21Q,EAAa,IAAIpI,WAAWgI,EAAYpnQ,GAC9C,IAAK,MAAMsM,KAAaF,EAAqBvW,OAAQ,CACnD,MAAM4xQ,SACJA,SACQnB,EAAWG,QAAQn6P,GAC7B,IAAKm7P,EAASnmQ,IAAI,iBAChB,SAEF,MAAMoqB,EAAK+7O,EAASzlR,IAAI,iBACxB,IAAKsP,OAAOC,UAAUm6B,KAAQr0B,MAAM2J,QAAQwmQ,EAAWxlR,IAAI0pC,IAAM,CAC/D75B,KAAK,qCAAqCya,qBAC1C,OAAO,KACR,CACF,CACD,IAAIk6P,EAAqB,KACzB,IAAK,MAAOl6P,EAAWmnP,KAAarnP,EAAsB,CACxD,MAAMq7P,SACJA,SACQnB,EAAWG,QAAQn6P,GAC7Bm5P,gBAAeiC,EAAgB,CAC7BjU,WACAzzP,KAAMtM,KAAKqO,KAAK/B,KAChBynQ,WACAD,eAEF,IAAK,MAAMj+P,KAAWkqP,EACpB,GAAIlqP,EAAQm9P,mBAAmB3jR,KAAM,CAC7BwmB,EAAQm9P,kBAAkBiB,cAAgB,IAC9Cp+P,EAAQo9P,aAAeJ,KAEzBC,EAAqB,KACtB,CAEJ,CACD,GAAIA,EAAoB,CACtB,IAAK,MAAM/S,KAAYrnP,EAAqBhL,SAC1C,IAAK,MAAMmI,KAAWkqP,EAAU,QACvBlqP,EAAQo9P,oBACRp9P,EAAQq+P,gBAChB,CAEH,OAAO,KACR,CACD,OAAO,IACR,CACD,yBAAMC,EAAoBz7P,qBACxBA,EAAoBk6P,WACpBA,EAAUO,QACVA,IAEA,MAAM7mQ,EAAOtM,KAAKqO,KAAK/B,KACvB,MAAMknQ,EAAiBxzQ,KAAKqO,KAAKI,QACjC,MAAM6kQ,EAAoBtzQ,KAAK4O,IAC/B,MAAMwpB,EAAQ,IAAI7oB,YAClB6oB,EAAMjpB,IAAImkQ,EAAmBE,GAC7B,IAAIC,EAAgBD,EAAejmQ,OAAO,cAC1C,IAAImmQ,EACJ,GAAID,aAAyBxmQ,IAC3BymQ,EAAapnQ,EAAKY,MAAMumQ,OACnB,CACLC,EAAaD,EACbA,EAAgBnnQ,EAAKinQ,qBACrBC,EAAe7lQ,IAAI,aAAc8lQ,EAClC,CACDC,EAAaA,EAAWjlQ,QACxB2pB,EAAMjpB,IAAIskQ,EAAeC,GACzB,IAAIC,EAAOD,EAAWnmQ,OAAO,QAC7B,IAAI6mQ,EAAU,KACd,GAAIT,aAAgB1mQ,IAAK,CACvBmnQ,EAAUT,EACVA,EAAOrnQ,EAAKY,MAAMknQ,EACnB,CACDT,EAAOA,EAAKxuQ,QACPivQ,GACHV,EAAW/lQ,IAAI,OAAQgmQ,GAEzB,MAAMU,QAAmBtC,gBAAe6B,EAAW,CACjDl7P,uBACA46P,oBACAE,eAAgBxzQ,KAChBkrQ,KAAM,KACNyI,OACArnQ,OACAsmQ,aACAO,UACA/6O,UAEF,GAAIi8O,KAAgB,EAApB,CAGAb,EAAe7lQ,IAAI,oBAAqB0mQ,GACpCD,GACFh8O,EAAMjpB,IAAIilQ,EAAST,GAErB,IAAK,MAAO/kQ,EAAKrgB,KAAQ6pC,EAAM1oB,QAC7ByjQ,EAAQhkQ,IAAIP,EAAK,CACfkE,KAAMvkB,GAPT,CAUF,CACD,cAAaqlR,EAAWl7P,qBACtBA,EAAoB46P,kBACpBA,EAAiBE,eACjBA,EAActI,KACdA,EAAIyI,KACJA,EAAIrnQ,KACJA,EAAIsmQ,WACJA,EAAUO,QACVA,EAAO/6O,MACPA,IAEA,MAAMk8O,EAAOroQ,KAAK3d,IAAI,QACtB,IAAIukR,GAAW,EACf,IAAI0B,EACJ,IAAK,MAAO37P,EAAWmnP,KAAarnP,EAAsB,CACxD,MAAM87P,QAAa5B,EAAWG,QAAQn6P,GACtC,MACEhK,IAAK2jQ,GACHiC,EACJ,MAAMC,EAAYlC,aAAmBtlQ,IACrC,IAAK,MAAM+lQ,kBACTA,EAAiBpkQ,IACjBA,EAAGqkQ,aACHA,EAAYiB,iBACZA,KACGnU,EAAU,CACb,IAAKiT,GAAmB3jR,KACtB,SAEF,MAAM4kR,aACJA,GACEjB,EACJ,GAAIQ,GAAkB51Q,OAAOC,UAAUo2Q,IAAiBA,GAAgB,EAAG,CACzE,IAAIS,GAAQH,IAAuB,IAAIvqQ,KAAO1b,IAAIsqB,GAClD,GAAI87P,SAAS3zQ,EAAW,CACtB,MAAM4zQ,EAAiB,IAAIC,eAAepB,EAAgBgB,EAAKT,UAC/DW,EAAOC,EAAeE,eAAetC,GACrCgC,EAAmB5mQ,IAAIiL,EAAW87P,EACnC,CACD,MAAMI,EAASJ,GAAMpmR,IAAI2lR,GACzB,GAAIa,EAAQ,CACV,MAAMC,EAAUzoQ,EAAKY,MAAM4nQ,GAAQrmQ,QACnCsjQ,gBAAeiD,EAAiBD,EAAS/B,GACzCG,EAAQhkQ,IAAI2lQ,EAAQ,CAClBhiQ,KAAMiiQ,IAER,QACD,CACF,CACDlC,EAAUtxQ,KAAK+D,IAAIutQ,EAASI,GAC5B,MAAMgC,EAAS3oQ,EAAKinQ,qBACpB,MAAMwB,EAAU,IAAI1oQ,KAAKC,GACzBylQ,gBAAeiD,EAAiBD,EAAS/B,SACnChzQ,MAAKk1Q,EAAiB,CAC1BhB,mBACAa,UACAI,UAAWF,EACX3B,oBACA8B,aAAclK,EACd5+P,OACA8rB,UAEF,MAAMi9O,EAAU,IAAIhpQ,KAAKC,GACzByoQ,EAAQpnQ,IAAI,IAAK0nQ,GACjBA,EAAQ1nQ,IAAI,OAAQ2mQ,GAChBG,GACFY,EAAQ1nQ,IAAI,KAAM4kQ,GAEpB8C,EAAQ1nQ,IAAI,MAAOiB,GACnBwpB,EAAMjpB,IAAI8lQ,EAAQF,GAClBpB,EAAKhyQ,KAAKsxQ,EAAcgC,EACzB,CACF,CACD,OAAOpC,EAAU,CAClB,CACD,QAAOmC,CAAiBD,GAAS1lR,KAC/BA,EAAIimR,MACJA,EAAK3zN,KACLA,EAAIn9B,IACJA,EAAG+wP,SACHA,EAAQC,WACRA,IAEAT,EAAQpnQ,IAAI,IAAK1B,KAAK3d,IAAIe,IACtBimR,GACFP,EAAQpnQ,IAAI,IAAKkL,uBAAuBy8P,IAEtC3zN,GACFozN,EAAQpnQ,IAAI,OAAQkL,uBAAuB8oC,IAEzCn9B,GACFuwP,EAAQpnQ,IAAI,MAAOkL,uBAAuB2L,IAExC+wP,GACFR,EAAQpnQ,IAAI,IAAKkL,uBAAuB08P,IAEtCC,GACFT,EAAQpnQ,IAAI,aAAckL,uBAAuB28P,GAEpD,CACD,QAAOxB,EAAgBjU,SACrBA,EAAQzzP,KACRA,EAAIynQ,SACJA,EAAQD,WACRA,IAEA,MAAM2B,EAAe,IAAIzrQ,IACzB,IAAK,MAAM6L,KAAWkqP,EACpB,GAAIlqP,EAAQ6/P,mBAAoB,CAC9B,MAAM19O,EAAKlpB,SAAS+G,EAAQ6/P,mBAAmBxgQ,MAAM,OAAO,GAAI,IAChE,IAAIygQ,EAAQF,EAAannR,IAAI0pC,GAC7B,IAAK29O,EAAO,CACVA,EAAQ,GACRF,EAAa9nQ,IAAIqqB,EAAI29O,EACtB,CACDA,EAAMh0Q,KAAKkU,EACZ,CAEH,MAAMmiB,EAAK+7O,EAASzlR,IAAI,iBACxB,IAAKsP,OAAOC,UAAUm6B,GACpB,OAEF,MAAM49O,EAAc9B,EAAWxlR,IAAI0pC,GACnC,MAAM69O,cAAgB,CAAC1K,EAAK2K,EAASC,KACnC,MAAMJ,EAAQF,EAAannR,IAAI68Q,GAC/B,GAAIwK,EAAO,CACT,MAAMK,EAAYF,EAAQvoQ,OAAO,KACjC,MAAM8rD,EAAa/sD,EAAKiX,WAAWyyP,GACnC,GAAIA,aAAqB/oQ,KAAOosD,aAAsBhtD,KAAM,CAC1D,MAAM2X,EAAS,CACbpV,IAAKmnQ,EACL1nQ,KAAMynQ,GAER,IAAK,MAAMjgQ,KAAW8/P,EACpB9/P,EAAQq+P,iBAAmBlwP,CAE9B,CACD,OAAO,IACR,CACD,OAAO,KAAK,EAEd,IAAK,MAAM+xP,KAAUH,EAAa,CAChC,KAAMG,aAAkB9oQ,KACtB,SAEF,MAAM6oQ,EAAUxpQ,EAAKY,MAAM6oQ,GAC3B,MAAM7vP,EAAI4vP,EAAQxnR,IAAI,KACtB,GAAIsP,OAAOC,UAAUqoB,GACnB2vP,cAAc3vP,EAAG4vP,EAASC,QAG5B,GAAKpyQ,MAAM2J,QAAQ4Y,GAGnB,IAAK,IAAIilP,KAAOjlP,EAAG,CACjBilP,EAAM7+P,EAAKiX,WAAW4nP,GACtB,GAAIvtQ,OAAOC,UAAUstQ,IAAQ0K,cAAc1K,EAAK2K,EAASC,GACvD,MAEF,KAAM5K,aAAe9+P,MACnB,SAEF,IAAKsD,OAAOw7P,EAAI78Q,IAAI,QAAS,OAC3B,MAEF,MAAMgyQ,EAAO6K,EAAI78Q,IAAI,QACrB,GAAIsP,OAAOC,UAAUyiQ,IAASuV,cAAcvV,EAAMwV,EAASC,GACzD,KAEH,CACF,CACF,CACD,cAAab,EAAiBhB,iBAC5BA,EAAgBa,QAChBA,EAAOI,UACPA,EAAS7B,kBACTA,EAAiB8B,aACjBA,EAAY9oQ,KACZA,EAAI8rB,MACJA,IAEA,IAAIxpB,EAAM,KACV,IAAIonQ,EACJ,GAAI9B,EAAkB,GAElBtlQ,OACEslQ,GACJ8B,EAAY9B,EAAiB7lQ,KAAKd,OAAO,MAAQ+lQ,CACvD,MACM0C,EAAY1C,EAEdyB,EAAQpnQ,IAAI,IAAKqoQ,GACjB,MAAM38M,EAAa/sD,EAAKiX,WAAWyyP,GACnC,IAAK38M,EAAY,CACf+7M,EAAazzQ,KAAKwzQ,GAClB,MACD,CACD,IAAIc,EAAmB79O,EAAM9pC,IAAI0nR,GACjC,IAAKC,EAAkB,CACrBA,EAAmB58M,EAAW5qD,QAC9B2pB,EAAMjpB,IAAI6mQ,EAAWC,EACtB,CACD,MAAMC,EAAgBD,EAAiB1oQ,OAAO,KAC9C,IAAI4oQ,EAAmBD,aAAyBjpQ,IAAMmrB,EAAM9pC,IAAI4nR,GAAiB,KACjF,IAAKC,EAAkB,CACrBA,EAAmB7pQ,EAAKiX,WAAW2yP,GACnCC,EAAmBxyQ,MAAM2J,QAAQ6oQ,GAAoBA,EAAiBhxQ,QAAU,CAAC+wQ,GACjF,MAAME,EAAgB9pQ,EAAKinQ,qBAC3B0C,EAAiBtoQ,IAAI,IAAKyoQ,GAC1Bh+O,EAAMjpB,IAAIinQ,EAAeD,EAC1B,CACD,MAAMhrO,EAAQgrO,EAAiBtlN,QAAQjiD,GACvCunQ,EAAiB9nD,OAAOljL,GAAS,EAAIA,EAAQ,EAAIgrO,EAAiBj3Q,OAAQ,EAAGi2Q,EAC9E,EAEH,MAAMkB,kBACJ,WAAAp2Q,CAAYyvC,EAAMrhC,GAChBrO,KAAK0vC,KAAOA,EACZ1vC,KAAKqO,KAAOA,EACZrO,KAAKkrQ,KAAO,GACZlrQ,KAAKs2Q,WACN,CACD,QAAIC,GACF,MAAMC,EAAUx2Q,KAAKqO,KAAK/f,IAAI,KAC9B,MAAMyR,EAAOy2Q,aAAmBvqQ,KAAOuqQ,EAAQz2Q,KAAO,GACtD,MAAMgrQ,KACJA,GACE/qQ,KAAK0vC,KACT,OAAIq7N,EAAKmH,QAAQtkQ,IAAI7N,GACZgrQ,EAAKmH,QAAQ5jR,IAAIyR,GAEnBA,CACR,CACD,SAAAu2Q,GACE,IAAIG,EAAY,KAChB,MAAM3B,EAAS90Q,KAAKqO,KAAKd,OAAO,MAC5BunQ,aAAkB7nQ,MACpBwpQ,EAAY3B,EAAOhxQ,YAErB,MAAMonQ,EAAOlrQ,KAAKqO,KAAK/f,IAAI,KAC3B,GAAIqV,MAAM2J,QAAQ49P,GAChB,IAAK,MAAMC,KAAOD,EAAM,CACtB,MAAMr1P,EAAU7V,KAAK02Q,SAASD,EAAWtL,GACrCt1P,GACF7V,KAAKkrQ,KAAKvpQ,KAAKkU,EAElB,KACI,CACL,MAAMA,EAAU7V,KAAK02Q,SAASD,EAAWvL,GACrCr1P,GACF7V,KAAKkrQ,KAAKvpQ,KAAKkU,EAElB,CACF,CACD,QAAA6gQ,CAASD,EAAWtL,GAClB,GAAIvtQ,OAAOC,UAAUstQ,GACnB,OAAInrQ,KAAK0vC,KAAKqkO,SAASvnQ,QAAUiqQ,EACxB,KAEF,IAAIE,cAAc,CACvBtnR,KAAMoiR,GAAkBC,aACxBpR,KAAM6K,EACNsL,cAGJ,IAAIG,EAAU,KACVzL,aAAel+P,IACjB2pQ,EAAU52Q,KAAKqO,KAAK/B,KAAKY,MAAMi+P,GACtBA,aAAe9+P,OACxBuqQ,EAAUzL,GAEZ,IAAKyL,EACH,OAAO,KAET,MAAMrE,EAAUqE,EAAQrpQ,OAAO,MAC3BglQ,aAAmBtlQ,MACrBwpQ,EAAYlE,EAAQzuQ,YAEtB,MAAMzU,EAAOunR,EAAQtoR,IAAI,kBAAmB2d,KAAO2qQ,EAAQtoR,IAAI,QAAQyR,KAAO,KAC9E,GAAI1Q,IAAS,MAAO,CAClB,GAAI2Q,KAAK0vC,KAAKqkO,SAASvnQ,QAAUiqQ,EAC/B,OAAO,KAET,MAAMV,EAASa,EAAQrpQ,OAAO,OAC9B,OAAO,IAAIopQ,cAAc,CACvBtnR,KAAMoiR,GAAkBE,eACxBkF,SAAUd,aAAkB9oQ,IAAM8oQ,EAAOjyQ,WAAa,KACtD2yQ,YACAnW,KAAMsW,EAAQtoR,IAAI,SAErB,CACD,GAAIe,IAAS,OAAQ,CACnB,GAAI2Q,KAAK0vC,KAAKqkO,SAASvnQ,QAAUiqQ,EAC/B,OAAO,KAET,MAAMV,EAASa,EAAQrpQ,OAAO,OAC9B,OAAO,IAAIopQ,cAAc,CACvBtnR,KAAMoiR,GAAkBG,OACxBiF,SAAUd,aAAkB9oQ,IAAM8oQ,EAAOjyQ,WAAa,KACtD2yQ,aAEH,CACD,OAAO,IAAIE,cAAc,CACvBtnR,KAAMoiR,GAAkBK,QACxBzjQ,KAAMuoQ,GAET,EAEH,MAAMD,cACJ,WAAA12Q,EAAY5Q,KACVA,EAAIgf,KACJA,EAAO,KAAIiyP,KACXA,EAAO,KAAImW,UACXA,EAAY,KAAII,SAChBA,EAAW,OAEX72Q,KAAK3Q,KAAOA,EACZ2Q,KAAKqO,KAAOA,EACZrO,KAAKsgQ,KAAOA,EACZtgQ,KAAKy2Q,UAAYA,EACjBz2Q,KAAK62Q,SAAWA,EAChB72Q,KAAKqvQ,WAAa,IACnB,EAEH,MAAMuF,eACJ,WAAA30Q,CAAYuzQ,EAAgBO,GAC1B/zQ,KAAK+qQ,KAAOyI,EACZxzQ,KAAKgyQ,SAAWwB,EAAiBA,EAAenlQ,KAAO,KACvDrO,KAAK+zQ,SAAWA,EAChB/zQ,KAAKsxP,MAAQ,EACd,CACD,cAAAujB,CAAetC,GACb,IAAKvyQ,KAAK+qQ,OAAS/qQ,KAAKgyQ,YAAcO,aAAmBtlQ,KACvD,OAAO,KAET,MAAMymQ,EAAa1zQ,KAAKgyQ,SAAS1jR,IAAI,cACrC,IAAKolR,EACH,OAAO,KAET,MAAMpwD,EAAMtjN,KAAK+qQ,KAAKoH,iBAAiB7jR,IAAIikR,GAC3C,IAAKjvD,EACH,OAAO,KAET,MAAMnuM,EAAM,IAAInL,IAChB,MAAM8pQ,EAAa,IAAIpI,WAAWgI,EAAY1zQ,KAAKgyQ,SAAS1lQ,MAC5D,IAAK,MAAOwqQ,KAAWxzD,EAAK,CAC1B,MAAM/0N,EAAMulR,EAAWvmQ,OAAOupQ,GAC1BvoR,aAAe0e,KACjBkI,EAAIxH,IAAImpQ,EAAQvoR,EAEnB,CACD,OAAO4mB,CACR,CACD,KAAAkO,CAAMkvP,GACJ,IAAKvyQ,KAAK+qQ,OAAS/qQ,KAAKgyQ,YAAcO,aAAmBtlQ,KACvD,OAEF,MAAMymQ,EAAa1zQ,KAAKgyQ,SAAS1jR,IAAI,cACrC,IAAKolR,EACH,OAEF,MAAM17O,EAAKh4B,KAAK+zQ,SAASzlR,IAAI,iBAC7B,MAAMg1N,EAAMtjN,KAAK+qQ,KAAKoH,iBAAiB7jR,IAAIikR,GAC3C,IAAK30Q,OAAOC,UAAUm6B,KAAQsrL,EAC5B,OAEF,MAAMnuM,EAAM,IAAInL,IAChB,MAAM8pQ,EAAa,IAAIpI,WAAWgI,EAAY1zQ,KAAKgyQ,SAAS1lQ,MAC5D,GAAI1O,OAAOC,UAAUm6B,GAAK,CACxB,MAAM49O,EAAc9B,EAAWxlR,IAAI0pC,GACnC,GAAIr0B,MAAM2J,QAAQsoQ,GAChB,IAAK,MAAMhnQ,KAAOgnQ,EACZhnQ,aAAe3B,KACjBjN,KAAK+2Q,QAAQ/2Q,KAAKgyQ,SAAS1lQ,KAAKY,MAAM0B,GAAMuG,EAInD,CACD,GAAKmuM,EAGL,IAAK,MAAOwzD,EAAQznR,KAASi0N,EAAK,CAChC,MAAM/0N,EAAMulR,EAAWxlR,IAAIwoR,GAC3B,GAAIvoR,EAAK,CACP,MAAMw+C,EAAO/sC,KAAK+2Q,QAAQ/2Q,KAAKgyQ,SAAS1lQ,KAAKiX,WAAWh1B,GAAM4mB,GAC1D43B,GAAMm+N,MAAMhsQ,SAAW,GAAK6tC,EAAKm+N,KAAK,GAAG77Q,OAASoiR,GAAkBG,SACtE7kO,EAAKm+N,KAAK,GAAG77Q,KAAOA,EAEvB,CACF,CACF,CACD,OAAA0nR,CAAQ1oQ,EAAM8G,EAAKxX,EAAQ,GACzB,GAAIA,EAAQ6zQ,GAAW,CACrBrzQ,KAAK,iCACL,OAAO,IACR,CACD,KAAMkQ,aAAgBhC,MACpB,OAAO,KAET,GAAI8I,EAAIvH,IAAIS,GACV,OAAO8G,EAAI7mB,IAAI+f,GAEjB,MAAMwH,EAAU,IAAIwgQ,kBAAkBr2Q,KAAMqO,GAC5C8G,EAAIxH,IAAIU,EAAMwH,GACd,MAAM7G,EAASX,EAAK/f,IAAI,KACxB,IAAK0gB,GAAUW,OAAOX,EAAO1gB,IAAI,QAAS,kBAAmB,CACtD0R,KAAKg3Q,gBAAgB3oQ,EAAMwH,IAC9BV,EAAI7F,OAAOjB,GAEb,OAAOwH,CACR,CACD,MAAMw5P,EAAarvQ,KAAK+2Q,QAAQ/nQ,EAAQmG,EAAKxX,EAAQ,GACrD,IAAK0xQ,EACH,OAAOx5P,EAET,IAAIxd,EAAO,MACX,IAAK,MAAM8yQ,KAAOkE,EAAWnE,KAC3B,GAAIC,EAAI97Q,OAASoiR,GAAkBK,SAAW3G,EAAI98P,OAASA,EAAM,CAC/D88P,EAAIkE,WAAax5P,EACjBxd,EAAO,IACR,CAEEA,GACH8c,EAAI7F,OAAOjB,GAEb,OAAOwH,CACR,CACD,eAAAmhQ,CAAgB3oQ,EAAMwH,GACpB,MAAMtnB,EAAMyR,KAAKgyQ,SAAS1jR,IAAI,KAC9B,IAAKC,EACH,OAAO,MAET,GAAIA,aAAe8d,KAAM,CACvB,GAAI9d,EAAIie,QAAU6B,EAAK7B,MACrB,OAAO,MAETxM,KAAKsxP,MAAM,GAAKz7O,EAChB,OAAO,IACR,CACD,IAAKlS,MAAM2J,QAAQ/e,GACjB,OAAO,KAET,IAAI8J,EAAO,MACX,IAAK,IAAIgJ,EAAI,EAAGA,EAAI9S,EAAI2Q,OAAQmC,IAAK,CACnC,MAAM00Q,EAASxnR,EAAI8S,GACnB,GAAI00Q,GAAQjyQ,aAAeuK,EAAK7B,MAAO,CACrCxM,KAAKsxP,MAAMjwP,GAAKwU,EAChBxd,EAAO,IACR,CACF,CACD,OAAOA,CACR,CACD,gBAAIi0Q,GACF,SAAS2K,mBAAmBvtO,EAAM16B,EAAQrR,EAAQ,GAChD,GAAIA,EAAQ6zQ,GAAW,CACrBrzQ,KAAK,+CACL,MACD,CACD,MAAM5P,EAAMJ,OAAO0d,OAAO,MAC1Btd,EAAIgoR,KAAO7sO,EAAK6sO,KAChBhoR,EAAIg7C,SAAW,GACfv6B,EAAOu6B,SAAS5nC,KAAKpT,GACrB,IAAIi2B,EAAMklB,EAAKr7B,KAAK/f,IAAI,cACbk2B,IAAQ,WACjBA,EAAMklB,EAAKr7B,KAAK/f,IAAI,sBAEXk2B,IAAQ,WACjBj2B,EAAIi2B,IAAMxc,kBAAkBwc,IAE9B,MAAM9e,EAAIgkC,EAAKr7B,KAAK/f,IAAI,KACxB,GAAIoX,aAAa2G,KAAM,CACrB,MAAM8mN,EAAOr+M,iBAAiBpP,EAAE2H,SAAS,QAAS,MAClD,GAAI8lN,EACF5kO,EAAI4kO,KAAOA,MACN,CACL,MAAM95M,EAAQ3T,EAAEpX,IAAI,SACpB,MAAMgrB,EAAS5T,EAAEpX,IAAI,iBACV+qB,IAAU,UAAYA,EAAQ,UAAYC,IAAW,UAAYA,EAAS,IACnF/qB,EAAI4kO,KAAO,CAAC,EAAG,EAAG95M,EAAOC,GAE5B,CACF,CACD,MAAMqoC,EAAOjY,EAAKr7B,KAAK/f,IAAI,eAChBqzD,IAAS,WAClBpzD,EAAIozD,KAAO35C,kBAAkB25C,IAE/B,IAAK,MAAMwpN,KAAOzhO,EAAKwhO,KAAM,CAC3B,MAAMgM,EAAa/L,EAAI97Q,OAASoiR,GAAkBK,QAAU3G,EAAIkE,WAAa,KACzE6H,EACFD,mBAAmBC,EAAY3oR,EAAKoP,EAAQ,GAEnCwtQ,EAAI97Q,OAASoiR,GAAkBC,cAAgBvG,EAAI97Q,OAASoiR,GAAkBE,eACvFpjR,EAAIg7C,SAAS5nC,KAAK,CAChBtS,KAAM,UACN2oC,GAAI,IAAImzO,EAAIsL,eAAetL,EAAI7K,SAExB6K,EAAI97Q,OAASoiR,GAAkBG,OACxCrjR,EAAIg7C,SAAS5nC,KAAK,CAChBtS,KAAM,SACN2oC,GAAImzO,EAAI0L,WAED1L,EAAI97Q,OAASoiR,GAAkBI,YACxCtjR,EAAIg7C,SAAS5nC,KAAK,CAChBtS,KAAM,aACN2oC,GAAI,GAAG7tB,IAAmBghQ,EAAI0L,YAGnC,CACF,CACD,MAAM9L,EAAO58Q,OAAO0d,OAAO,MAC3Bk/P,EAAKxhO,SAAW,GAChBwhO,EAAKwL,KAAO,OACZ,IAAK,MAAMjH,KAAStvQ,KAAKsxP,MAClBge,GAGL2H,mBAAmB3H,EAAOvE,GAE5B,OAAOA,CACR,EAeH,SAASoM,oBAAoBh4P,GAC3B,IAAKxb,MAAM2J,QAAQ6R,IAASA,EAAKjgB,OAAS,EACxC,OAAO,MAET,MAAOs1Q,EAAM4C,KAAS7rQ,GAAQ4T,EAC9B,KAAMq1P,aAAgBvnQ,OAASrP,OAAOC,UAAU22Q,GAC9C,OAAO,MAET,KAAM4C,aAAgBnrQ,MACpB,OAAO,MAET,MAAMorQ,EAAU9rQ,EAAKrM,OACrB,IAAIo4Q,EAAY,KAChB,OAAQF,EAAKr3Q,MACX,IAAK,MACH,GAAIs3Q,EAAU,GAAKA,EAAU,EAC3B,OAAO,MAET,MACF,IAAK,MACL,IAAK,OACH,OAAOA,IAAY,EACrB,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,QACH,GAAIA,EAAU,EACZ,OAAO,MAET,MACF,IAAK,OACH,GAAIA,IAAY,EACd,OAAO,MAETC,EAAY,MACZ,MACF,QACE,OAAO,MAEX,IAAK,MAAMjxD,KAAO96M,EAChB,YAAa86M,IAAQ,UAAYixD,GAAajxD,IAAQ,MACpD,OAAO,MAGX,OAAO,IACT,CACA,SAASkxD,UAAUp4P,GACbA,aAAgB9S,OAClB8S,EAAOA,EAAK7wB,IAAI,MAElB,OAAO6oR,oBAAoBh4P,GAAQA,EAAO,IAC5C,CACA,SAASq4P,gBAAgBphQ,GACvB,IAAI+I,EAAO/I,EAAO9nB,IAAI,KACtB,GAAI6wB,EAAM,CACJA,aAAgBlT,OAClBkT,EAAOA,EAAKpf,MAEd,UAAWof,IAAS,SAClB,OAAOnX,kBAAkBmX,GACpB,GAAIg4P,oBAAoBh4P,GAC7B,OAAOs4P,KAAKC,UAAUv4P,EAEzB,CACD,OAAO,IACT,CACA,MAAMw4P,QACJ,WAAA13Q,CAAY2yQ,EAAYtmQ,GACtBtM,KAAK4yQ,WAAaA,EAClB5yQ,KAAKsM,KAAOA,EACZtM,KAAK43Q,SAAWtrQ,EAAKurQ,gBACrB,KAAM73Q,KAAK43Q,oBAAoBvrQ,MAC7B,MAAM,IAAI1L,YAAY,uCAExBX,KAAK83Q,kBACL93Q,KAAK+3Q,gBAAkB,KACvB/3Q,KAAKywP,UAAY,IAAIlhP,YACrBvP,KAAK0wP,iBAAmB,IAAI1mP,IAC5BhK,KAAK2wP,sBAAwB,IAAI3mP,IACjChK,KAAK4wP,iBAAmB,IAAI7a,iBAC5B/1O,KAAKg4Q,mBAAqB,IAAIzoQ,YAC9BvP,KAAKi4Q,eAAiB,IAAI1oQ,YAC1BvP,KAAKk4Q,cAAgB,IAAI3oQ,YACzBvP,KAAKqxP,iBAAmB,IAAItiP,OAC5B/O,KAAKugP,gBAAkB,IAAIv2O,GAC5B,CACD,SAAAqpQ,GACE,OAAOrzQ,KAAK43Q,SAASnpQ,OACtB,CACD,WAAI2mC,GACF,MAAMA,EAAUp1C,KAAK43Q,SAAStpR,IAAI,WAClC,GAAI8mD,aAAmBnpC,KAAM,CAC3B,GAAIgG,EAAmBiF,KAAKk+B,EAAQr1C,MAClC,OAAOR,OAAOS,KAAM,UAAWo1C,EAAQr1C,MAEzC5B,KAAK,gCAAgCi3C,EAAQr1C,OAC9C,CACD,OAAOR,OAAOS,KAAM,UAAW,KAChC,CACD,QAAI2hD,GACF,MAAMA,EAAO3hD,KAAK43Q,SAAStpR,IAAI,QAC/B,OAAOiR,OAAOS,KAAM,OAAQ2hD,UAAeA,IAAS,SAAW35C,kBAAkB25C,GAAQ,KAC1F,CACD,kBAAIw2N,GACF,MAAMA,EAAiBn4Q,KAAK43Q,SAAStpR,IAAI,kBACzC,OAAOiR,OAAOS,KAAM,wBAAyBm4Q,IAAmB,WAAYA,EAC7E,CACD,cAAIC,GACF,IAAIA,EAAa,KACjB,IACE,MAAM7pR,EAAMyR,KAAK43Q,SAAStpR,IAAI,cAC1BC,aAAe8d,MAAQ9d,EAAIse,KAAO,IACpCurQ,EAAa7pR,EAEhB,CAAC,MAAOia,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERzK,KAAK,oEACN,CACD,OAAOwB,OAAOS,KAAM,aAAco4Q,EACnC,CACD,YAAIC,GACF,IAAIA,EAAW,KACf,IACE,MAAM9pR,EAAMyR,KAAK43Q,SAAStpR,IAAI,YAC1BC,aAAe8d,MAAQ9d,EAAIse,KAAO,IACpCwrQ,EAAW9pR,EAEd,CAAC,MAAOia,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERzK,KAAK,8DACN,CACD,OAAOwB,OAAOS,KAAM,WAAYq4Q,EACjC,CACD,eAAIC,GACF,MAAM94Q,EAAQQ,KAAK43Q,SAASrqQ,OAAO,YACnC,OAAOhO,OAAOS,KAAM,cAAeR,aAAiByN,IAAMzN,EAAQ,KACnE,CACD,YAAI+4Q,GACF,MAAMC,EAAYx4Q,KAAK43Q,SAASrqQ,OAAO,YACvC,KAAMirQ,aAAqBvrQ,KACzB,OAAO1N,OAAOS,KAAM,WAAY,MAElC,IAAIu4Q,EAAW,KACf,IACE,MAAM/8P,EAASxb,KAAKsM,KAAKY,MAAMsrQ,GAAYx4Q,KAAKsM,KAAKmsQ,SAASC,iBAC9D,GAAIl9P,aAAkBtL,YAAcsL,EAAOnN,gBAAgBhC,KAAM,CAC/D,MAAMhd,EAAOmsB,EAAOnN,KAAK/f,IAAI,QAC7B,MAAMsnO,EAAUp6M,EAAOnN,KAAK/f,IAAI,WAChC,GAAIqhB,OAAOtgB,EAAM,aAAesgB,OAAOimN,EAAS,OAAQ,CACtD,MAAM9iN,EAAO1T,mBAAmBoc,EAAO9J,aACnCoB,IACFylQ,EAAW,IAAI9H,eAAe39P,GAAMw5P,aAEvC,CACF,CACF,CAAC,MAAO9jQ,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERzK,KAAK,+BAA+ByK,MACrC,CACD,OAAOjJ,OAAOS,KAAM,WAAYu4Q,EACjC,CACD,YAAII,GACF,IAAIA,EAAW,KACf,IACEA,EAAW34Q,KAAK44Q,eACjB,CAAC,MAAOpwQ,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,4BACN,CACD,OAAOoB,OAAOS,KAAM,WAAY24Q,EACjC,CACD,aAAAC,GACE,MAAMrqR,EAAMyR,KAAK43Q,SAAStpR,IAAI,YAC9B,KAAMC,aAAe8d,MACnB,OAAO,KAET,MAAMssQ,EAAW,CACfE,OAAQ,MACRC,eAAgB,MAChBC,SAAU,OAEZ,IAAK,MAAM9qR,KAAO0qR,EAAU,CAC1B,MAAMn5Q,EAAQjR,EAAID,IAAIL,UACXuR,IAAU,YACnBm5Q,EAAS1qR,GAAOuR,EAEnB,CACD,OAAOm5Q,CACR,CACD,kBAAInF,GACF,IAAIwF,EAAa,KACjB,IACEA,EAAah5Q,KAAKi5Q,qBACnB,CAAC,MAAOzwQ,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,sCACN,CACD,OAAOoB,OAAOS,KAAM,iBAAkBg5Q,EACvC,CACD,mBAAAC,GACE,MAAMC,EAASl5Q,KAAK43Q,SAASrqQ,OAAO,kBACpC,MAAMhf,EAAMyR,KAAKsM,KAAKiX,WAAW21P,GACjC,KAAM3qR,aAAe8d,MACnB,OAAO,KAET,MAAM0+P,EAAO,IAAIgH,eAAexjR,EAAK2qR,GACrCnO,EAAKqH,OACL,OAAOrH,CACR,CACD,qBAAI+M,GACF,MAAMqB,EAAWn5Q,KAAK43Q,SAAStpR,IAAI,SACnC,KAAM6qR,aAAoB9sQ,MACxB,MAAM,IAAI1L,YAAY,uCAExB,OAAOpB,OAAOS,KAAM,oBAAqBm5Q,EAC1C,CACD,mBAAIC,GACF,IAAI7qR,EAAM,KACV,IACEA,EAAMyR,KAAKq5Q,sBACZ,CAAC,MAAO7wQ,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,mCACN,CACD,OAAOoB,OAAOS,KAAM,kBAAmBzR,EACxC,CACD,oBAAA8qR,GACE,IAAI9qR,EAAMyR,KAAK43Q,SAAStpR,IAAI,YAC5B,KAAMC,aAAe8d,MACnB,OAAO,KAET9d,EAAMA,EAAIgf,OAAO,SACjB,KAAMhf,aAAe0e,KACnB,OAAO,KAET,MAAM89P,EAAO,CACXr7P,MAAO,IAET,MAAMg6O,EAAQ,CAAC,CACbn7P,MACAygB,OAAQ+7P,IAEV,MAAM5zN,EAAY,IAAIpoC,OACtBooC,EAAUhoC,IAAI5gB,GACd,MAAM+d,EAAOtM,KAAKsM,KAChBgtQ,EAAa,IAAIz4P,kBAAkB,GACrC,MAAO6oO,EAAMxqP,OAAS,EAAG,CACvB,MAAMmC,EAAIqoP,EAAMz6N,QAChB,MAAMsqP,EAAcjtQ,EAAKiX,WAAWliB,EAAE9S,KACtC,GAAIgrR,IAAgB,KAClB,SAEGA,EAAY3rQ,IAAI,UACnBzP,KAAK,qCAEP,MAAM2U,EAAO,CACXrU,IAAK,KACL0gB,KAAM,KACN/I,OAAQ,MAEVuhQ,QAAQ6B,oBAAoB,CAC1BC,SAAUF,EACVG,UAAW5mQ,EACX6mQ,WAAY35Q,KAAKpB,QACjBg7Q,eAAgB55Q,KAAK65Q,cAEvB,MAAMvE,EAAQiE,EAAYjrR,IAAI,SAC9B,MAAM2wC,EAAQs6O,EAAYjrR,IAAI,MAAQ,EACtC,MAAM85B,EAAQmxP,EAAYlsQ,SAAS,KACnC,MAAM4T,EAAQs4P,EAAYjrR,IAAI,SAC9B,IAAIy8O,EAAWuuC,GACX9kQ,cAAc4T,EAAO,IAAOA,EAAM,KAAO,GAAKA,EAAM,KAAO,GAAKA,EAAM,KAAO,IAC/E2iN,EAAWvqN,WAAWgD,WAAW5C,IAAIF,OAAO0H,EAAO,IAErD,MAAM0xP,EAAc,CAClB1jQ,OAAQtD,EAAKsD,OACb2jQ,WAAYjnQ,EAAKinQ,WACjB56P,KAAMrM,EAAKqM,KACX1gB,IAAKqU,EAAKrU,IACVu7Q,UAAWlnQ,EAAKknQ,UAChB7hQ,UAAWrF,EAAKqF,UAChB8hQ,YAAannQ,EAAKmnQ,YAClB3E,aAAcA,IAAU,SAAWttQ,kBAAkBstQ,GAAS,GAC9DltP,MAAO2iN,EACP9pN,MAAOrjB,OAAOC,UAAUojB,GAASA,OAAQlgB,EACzCq7N,QAASn9L,EAAQ,GACjBo9L,UAAWp9L,EAAQ,GACnBvvB,MAAO,IAETrO,EAAE2N,OAAOU,MAAM/N,KAAKm4Q,GACpBvrR,EAAMgrR,EAAYhsQ,OAAO,SACzB,GAAIhf,aAAe0e,MAAQkqC,EAAUvpC,IAAIrf,GAAM,CAC7Cm7P,EAAM/nP,KAAK,CACTpT,MACAygB,OAAQ8qQ,IAEV3iO,EAAUhoC,IAAI5gB,EACf,CACDA,EAAMgrR,EAAYhsQ,OAAO,QACzB,GAAIhf,aAAe0e,MAAQkqC,EAAUvpC,IAAIrf,GAAM,CAC7Cm7P,EAAM/nP,KAAK,CACTpT,MACAygB,OAAQ3N,EAAE2N,SAEZmoC,EAAUhoC,IAAI5gB,EACf,CACF,CACD,OAAOw8Q,EAAKr7P,MAAMxQ,OAAS,EAAI6rQ,EAAKr7P,MAAQ,IAC7C,CACD,eAAIwqQ,GACF,IAAIA,EAAc,KAClB,IACEA,EAAcl6Q,KAAKm6Q,kBACpB,CAAC,MAAO3xQ,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,8BACN,CACD,OAAOoB,OAAOS,KAAM,cAAek6Q,EACpC,CACD,gBAAAC,GACE,MAAM1B,EAAUz4Q,KAAKsM,KAAK8tQ,QAAQ9rR,IAAI,WACtC,KAAMmqR,aAAmBpsQ,MACvB,OAAO,KAET,IAAI4yB,EAAQw5O,EAAQnqR,IAAI,KACxB,UAAW2wC,IAAU,SACnB,OAAO,KAETA,GAAS,GAAK,GACd,MAAMi7O,EAAc,GACpB,IAAK,MAAMjsR,KAAO6C,EAAgB,CAChC,MAAM0O,EAAQ1O,EAAe7C,GACzBgxC,EAAQz/B,GACV06Q,EAAYv4Q,KAAKnC,EAEpB,CACD,OAAO06Q,CACR,CACD,yBAAIG,GACF,IAAIC,EAAS,KACb,IACE,MAAMlsQ,EAAapO,KAAK43Q,SAAStpR,IAAI,gBACrC,IAAK8f,EACH,OAAO7O,OAAOS,KAAM,wBAAyB,MAE/C,MAAMu6Q,EAAgBnsQ,EAAW9f,IAAI,KACrC,IAAKisR,EACH,OAAOh7Q,OAAOS,KAAM,wBAAyB,MAE/C,MAAMw6Q,EAAapsQ,EAAW9f,IAAI,QAClC,IAAKqV,MAAM2J,QAAQktQ,GACjB,OAAOj7Q,OAAOS,KAAM,wBAAyB,MAE/C,MAAMy6Q,EAAgB,IAAIlrQ,YAC1B,IAAK,MAAMmrQ,KAAYF,EACfE,aAAoBztQ,MAAQwtQ,EAAc7sQ,IAAI8sQ,IAGpDD,EAActrQ,IAAIurQ,EAAU16Q,MAAK26Q,EAA0BD,IAE7DJ,EAASt6Q,MAAK46Q,EAA2BL,EAAeE,EACzD,CAAC,MAAOjyQ,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,2CAA2CqK,IACjD,CACD,OAAOjJ,OAAOS,KAAM,wBAAyBs6Q,EAC9C,CACD,EAAAK,CAA0BD,GACxB,MAAMloB,EAAQxyP,KAAKsM,KAAKY,MAAMwtQ,GAC9B,MAAMnsR,EAAM,CACVypC,GAAI0iP,EAAS52Q,WACb/D,KAAM,KACNmqP,OAAQ,KACR2wB,MAAO,CACLC,MAAO,KACPr2B,KAAM,MAERs2B,SAAU,IAEZ,MAAMh7Q,EAAOyyP,EAAMlkQ,IAAI,eACZyR,IAAS,WAClBxR,EAAIwR,KAAOiI,kBAAkBjI,IAE/B,IAAImqP,EAASsI,EAAMnlP,SAAS,UACvB1J,MAAM2J,QAAQ48O,KACjBA,EAAS,CAACA,IAERA,EAAO31O,OAAMlT,GAAKA,aAAa4K,SACjC1d,EAAI27P,OAASA,EAAO/0O,KAAI9T,GAAKA,EAAEtB,QAEjC,MAAM86Q,EAAQroB,EAAMlkQ,IAAI,SACxB,KAAMusR,aAAiBxuQ,MACrB,OAAO9d,EAET,MAAMysR,EAAWzsR,EAAIssR,MACrB,MAAMC,EAAQD,EAAMvsR,IAAI,SACxB,GAAIwsR,aAAiBzuQ,KAAM,CACzB,MAAM4uQ,EAAaH,EAAMxsR,IAAI,cAC7B,GAAI2sR,aAAsBhvQ,KACxB,OAAQgvQ,EAAWl7Q,MACjB,IAAK,KACL,IAAK,MACHi7Q,EAASF,MAAQ,CACfG,WAAYA,EAAWl7Q,MAIhC,CACD,MAAM0kP,EAAOo2B,EAAMvsR,IAAI,QACvB,GAAIm2P,aAAgBp4O,KAAM,CACxB,MAAM6uQ,EAAYz2B,EAAKn2P,IAAI,aAC3B,GAAI4sR,aAAqBjvQ,KACvB,OAAQivQ,EAAUn7Q,MAChB,IAAK,KACL,IAAK,MACHi7Q,EAASv2B,KAAO,CACdy2B,UAAWA,EAAUn7Q,MAI9B,CACD,OAAOxR,CACR,CACD,EAAAqsR,CAA2BN,EAAQG,GACjC,SAASU,WAAWC,GAClB,MAAMC,EAAW,GACjB,GAAI13Q,MAAM2J,QAAQ8tQ,GAChB,IAAK,MAAM57Q,KAAS47Q,EACZ57Q,aAAiByN,KAGnBwtQ,EAAc7sQ,IAAIpO,IACpB67Q,EAAS15Q,KAAKnC,EAAMsE,YAI1B,OAAOu3Q,CACR,CACD,SAASC,WAAWF,EAAMG,EAAe,GACvC,IAAK53Q,MAAM2J,QAAQ8tQ,GACjB,OAAO,KAET,MAAMt/M,EAAQ,GACd,IAAK,MAAMt8D,KAAS47Q,EAAM,CACxB,GAAI57Q,aAAiByN,KAAOwtQ,EAAc7sQ,IAAIpO,GAAQ,CACpDg8Q,EAAgBrsQ,IAAI3P,GACpBs8D,EAAMn6D,KAAKnC,EAAMsE,YACjB,QACD,CACD,MAAM23Q,EAAcC,iBAAiBl8Q,EAAO+7Q,GACxCE,GACF3/M,EAAMn6D,KAAK85Q,EAEd,CACD,GAAIF,EAAe,EACjB,OAAOz/M,EAET,MAAM6/M,EAAe,GACrB,IAAK,MAAOjB,KAAaD,EAAc/qQ,QACjC8rQ,EAAgB5tQ,IAAI8sQ,IAGxBiB,EAAah6Q,KAAK+4Q,EAAS52Q,YAEzB63Q,EAAaz8Q,QACf48D,EAAMn6D,KAAK,CACT5B,KAAM,KACN+7D,MAAO6/M,IAGX,OAAO7/M,CACR,CACD,SAAS4/M,iBAAiB9sQ,EAAK2sQ,GAC7B,KAAMA,EAAeK,EAAmB,CACtCz9Q,KAAK,iDACL,OAAO,IACR,CACD,MAAMqB,EAAQ8M,EAAKiX,WAAW3U,GAC9B,IAAKjL,MAAM2J,QAAQ9N,GACjB,OAAO,KAET,MAAMq8Q,EAAavvQ,EAAKiX,WAAW/jB,EAAM,IACzC,UAAWq8Q,IAAe,SACxB,OAAO,KAET,MAAMJ,EAAcH,WAAW97Q,EAAM2F,MAAM,GAAIo2Q,GAC/C,OAAKE,GAAgBA,EAAYv8Q,OAG1B,CACLa,KAAMiI,kBAAkB6zQ,GACxB//M,MAAO2/M,GAJA,IAMV,CACD,SAASK,cAAcf,GACrB,GAAKp3Q,MAAM2J,QAAQytQ,GAGnB,IAAK,MAAMv7Q,KAASu7Q,EAAU,CAC5B,MAAMgB,EAAUzvQ,EAAKiX,WAAW/jB,GAChC,IAAKmE,MAAM2J,QAAQyuQ,KAAaA,EAAQ78Q,OACtC,SAEF,MAAM88Q,EAAgB,IAAI9sQ,IAC1B,IAAK,MAAMN,KAAOmtQ,EAChB,GAAIntQ,aAAe3B,KAAOwtQ,EAAc7sQ,IAAIgB,KAASotQ,EAAcpuQ,IAAIgB,EAAI9K,YAAa,CACtFk4Q,EAAc5sQ,IAAIR,EAAI9K,YACtB22Q,EAAcnsR,IAAIsgB,GAAKmsQ,SAASp5Q,KAAKq6Q,EACtC,CAEJ,CACF,CACD,MAAM1vQ,EAAOtM,KAAKsM,KAChBkvQ,EAAkB,IAAIzsQ,OACtB6sQ,EAAoB,GACtBE,cAAcxB,EAAOhsR,IAAI,aACzB,MAAO,CACLyR,YAAau6Q,EAAOhsR,IAAI,UAAY,SAAW0Z,kBAAkBsyQ,EAAOhsR,IAAI,SAAW,KACvF2tR,eAAgB3B,EAAOhsR,IAAI,aAAe,SAAW0Z,kBAAkBsyQ,EAAOhsR,IAAI,YAAc,KAChG4tR,UAAW5B,EAAOhsR,IAAI,uBAAwB2d,KAAOquQ,EAAOhsR,IAAI,aAAayR,KAAO,KACpFo8Q,GAAIhB,WAAWb,EAAOhsR,IAAI,OAC1B8tR,IAAKjB,WAAWb,EAAOhsR,IAAI,QAC3BwtE,MAAOw/M,WAAWhB,EAAOhsR,IAAI,UAC7B8pN,OAAQ,IAAIqiE,GAEf,CACD,iBAAA4B,CAAkBrxQ,EAAM,MACtBhL,KAAK+3Q,gBAAkB/sQ,CACxB,CACD,qBAAIsxQ,GACF,OAAOt8Q,KAAK+3Q,kBAAoB,IACjC,CACD,eAAIwE,GACF,MAAMhuR,EAAMyR,KAAK83Q,kBAAkBxpR,IAAI,SACvC,IAAKsP,OAAOC,UAAUtP,GACpB,MAAM,IAAIoS,YAAY,+DAExB,OAAOpB,OAAOS,KAAM,cAAezR,EACpC,CACD,YAAIqhE,GACF,OAAO5vD,KAAKs8Q,kBAAoBt8Q,KAAK+3Q,gBAAkB/3Q,KAAKu8Q,WAC7D,CACD,gBAAIC,GACF,MAAMjuR,EAAMyR,KAAKy8Q,aACfC,EAAQvuR,OAAO0d,OAAO,MACxB,GAAItd,aAAek9Q,SACjB,IAAK,MAAOx9Q,EAAKuR,KAAUjR,EAAI08Q,SAAU,CACvC,MAAM9rP,EAAOo4P,UAAU/3Q,GACnB2f,IACFu9P,EAAM10Q,kBAAkB/Z,IAAQkxB,EAEnC,MACI,GAAI5wB,aAAe8d,KACxB,IAAK,MAAOpe,EAAKuR,KAAUjR,EAAK,CAC9B,MAAM4wB,EAAOo4P,UAAU/3Q,GACnB2f,IACFu9P,EAAMzuR,GAAOkxB,EAEhB,CAEH,OAAO5f,OAAOS,KAAM,eAAgB08Q,EACrC,CACD,cAAAC,CAAe3kP,GACb,MAAMzpC,EAAMyR,KAAKy8Q,aACjB,GAAIluR,aAAek9Q,SAAU,CAC3B,MAAMtsP,EAAOo4P,UAAUhpR,EAAID,IAAI0pC,IAC/B,GAAI7Y,EACF,OAAOA,EAET,MAAMy9P,EAAU58Q,KAAKw8Q,aAAaxkP,GAClC,GAAI4kP,EAAS,CACXz+Q,KAAK,UAAU65B,gDACf,OAAO4kP,CACR,CACP,MAAW,GAAIruR,aAAe8d,KAAM,CAC9B,MAAM8S,EAAOo4P,UAAUhpR,EAAID,IAAI0pC,IAC/B,GAAI7Y,EACF,OAAOA,CAEV,CACD,OAAO,IACR,CACD,UAAAs9P,GACE,MAAMluR,EAAMyR,KAAK43Q,SAAStpR,IAAI,SAC9B,OAAIC,GAAKqf,IAAI,SACJ,IAAI69P,SAASl9Q,EAAIgf,OAAO,SAAUvN,KAAKsM,MACrCtM,KAAK43Q,SAAShqQ,IAAI,SACpB5N,KAAK43Q,SAAStpR,IAAI,cADpB,CAIR,CACD,cAAIuuR,GACF,IAAItuR,EAAM,KACV,IACEA,EAAMyR,KAAK88Q,iBACZ,CAAC,MAAOt0Q,GACP,GAAIA,aAAc+J,qBAChB,MAAM/J,EAERrK,KAAK,8BACN,CACD,OAAOoB,OAAOS,KAAM,aAAczR,EACnC,CACD,eAAAuuR,GACE,MAAMvuR,EAAMyR,KAAK43Q,SAASrqQ,OAAO,cACjC,IAAKhf,EACH,OAAO,KAET,MAAMsuR,EAAa,IAAIl5Q,MAAM3D,KAAK4vD,UAClC,IAAImvL,EAAQ,KACVg+B,EAAS,GACX,MAAMjJ,EAAa,IAAIpI,WAAWn9Q,EAAKyR,KAAKsM,MAC5C,MAAMqnQ,EAAOG,EAAW7I,SACxB,IAAI+R,EAAe,GACjB5xO,EAAe,EACjB,IAAK,IAAI/pC,EAAI,EAAGoH,EAAKzI,KAAK4vD,SAAUvuD,EAAIoH,EAAIpH,IAAK,CAC/C,MAAM47Q,EAAYtJ,EAAKrlR,IAAI+S,GAC3B,GAAI47Q,SAAcl8Q,EAAW,CAC3B,KAAMk8Q,aAAqB5wQ,MACzB,MAAM,IAAI1L,YAAY,kCAExB,GAAIs8Q,EAAUrvQ,IAAI,UAAY+B,OAAOstQ,EAAU3uR,IAAI,QAAS,aAC1D,MAAM,IAAIqS,YAAY,yCAExB,GAAIs8Q,EAAUrvQ,IAAI,KAAM,CACtB,MAAMkhB,EAAImuP,EAAU3uR,IAAI,KACxB,KAAMwgC,aAAa7iB,MACjB,MAAM,IAAItL,YAAY,0CAExBo+O,EAAQjwN,EAAE/uB,IACpB,MACUg/O,EAAQ,KAEV,GAAIk+B,EAAUrvQ,IAAI,KAAM,CACtB,MAAMjJ,EAAIs4Q,EAAU3uR,IAAI,KACxB,UAAWqW,IAAM,SACf,MAAM,IAAIhE,YAAY,2CAExBo8Q,EAAS/0Q,kBAAkBrD,EACrC,MACUo4Q,EAAS,GAEX,GAAIE,EAAUrvQ,IAAI,MAAO,CACvB,MAAMsvQ,EAAKD,EAAU3uR,IAAI,MACzB,KAAMsP,OAAOC,UAAUq/Q,IAAOA,GAAM,GAClC,MAAM,IAAIv8Q,YAAY,0CAExByqC,EAAe8xO,CACzB,MACU9xO,EAAe,CAElB,CACD,OAAQ2zM,GACN,IAAK,IACHi+B,EAAe5xO,EACf,MACF,IAAK,IACL,IAAK,IACH4xO,EAAezpQ,gBAAgB63B,EAAc2zM,IAAU,KACvD,MACF,IAAK,IACL,IAAK,IACH,MAAMo+B,EAAQ,GACd,MAAMC,EAAe,GACnBC,EAAe,GACjB,MAAMC,EAAev+B,IAAU,IAAMs+B,EAAeD,EACpD,MAAMG,EAAcnyO,EAAe,EACnC,MAAMoyO,EAAYv8Q,OAAOC,aAAao8Q,EAAeC,EAAcJ,GACnEH,EAAeQ,EAAU7pQ,OAAOpS,KAAKkZ,MAAM8iQ,EAAcJ,GAAS,GAClE,MACF,QACE,GAAIp+B,EACF,MAAM,IAAIp+O,YAAY,kBAAkBo+O,+BAE1Ci+B,EAAe,GAEnBH,EAAWx7Q,GAAK07Q,EAASC,EACzB5xO,GACD,CACD,OAAOyxO,CACR,CACD,cAAIY,GACF,MAAMlvR,EAAMyR,KAAK43Q,SAAStpR,IAAI,cAC9B,IAAImvR,EAAa,GACjB,GAAIlvR,aAAe0d,KACjB,OAAQ1d,EAAIwR,MACV,IAAK,aACL,IAAK,YACL,IAAK,gBACL,IAAK,iBACL,IAAK,cACL,IAAK,eACH09Q,EAAalvR,EAAIwR,KAGvB,OAAOR,OAAOS,KAAM,aAAcy9Q,EACnC,CACD,YAAIC,GACF,MAAMnvR,EAAMyR,KAAK43Q,SAAStpR,IAAI,YAC9B,IAAIovR,EAAW,UACf,GAAInvR,aAAe0d,KACjB,OAAQ1d,EAAIwR,MACV,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,iBACH29Q,EAAWnvR,EAAIwR,KAGrB,OAAOR,OAAOS,KAAM,WAAY09Q,EACjC,CACD,qBAAIC,GACF,MAAMpvR,EAAMyR,KAAK43Q,SAAStpR,IAAI,qBAC9B,KAAMC,aAAe8d,MACnB,OAAO9M,OAAOS,KAAM,oBAAqB,MAE3C,IAAI49Q,EAAQ,KACZ,IAAK,MAAM3vR,KAAOM,EAAIif,UAAW,CAC/B,MAAMhO,EAAQjR,EAAID,IAAIL,GACtB,IAAI4vR,EACJ,OAAQ5vR,GACN,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,eACL,IAAK,kBACL,IAAK,2BACQuR,IAAU,YACnBq+Q,EAAYr+Q,GAEd,MACF,IAAK,wBACH,GAAIA,aAAiByM,KACnB,OAAQzM,EAAMO,MACZ,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,QACH89Q,EAAYr+Q,EAAMO,KAClB,MACF,QACE89Q,EAAY,UAGlB,MACF,IAAK,YACH,GAAIr+Q,aAAiByM,KACnB,OAAQzM,EAAMO,MACZ,IAAK,MACL,IAAK,MACH89Q,EAAYr+Q,EAAMO,KAClB,MACF,QACE89Q,EAAY,MAGlB,MACF,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACH,GAAIr+Q,aAAiByM,KACnB,OAAQzM,EAAMO,MACZ,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,SACH89Q,EAAYr+Q,EAAMO,KAClB,MACF,QACE89Q,EAAY,UAGlB,MACF,IAAK,eACH,GAAIr+Q,aAAiByM,KACnB,OAAQzM,EAAMO,MACZ,IAAK,OACL,IAAK,aACH89Q,EAAYr+Q,EAAMO,KAClB,MACF,QACE89Q,EAAY,aAGlB,MACF,IAAK,SACH,GAAIr+Q,aAAiByM,KACnB,OAAQzM,EAAMO,MACZ,IAAK,UACL,IAAK,sBACL,IAAK,qBACH89Q,EAAYr+Q,EAAMO,KAClB,MACF,QACE89Q,EAAY,OAGlB,MACF,IAAK,iBACH,GAAIl6Q,MAAM2J,QAAQ9N,IAAUA,EAAMN,OAAS,IAAM,EAAG,CAClD,MAAM4+Q,EAAUt+Q,EAAM+U,OAAM,CAACigQ,EAAMnzQ,EAAGyJ,IAAQlN,OAAOC,UAAU22Q,IAASA,EAAO,IAAMnzQ,IAAM,GAAKmzQ,GAAQ1pQ,EAAIzJ,EAAI,KAAOmzQ,GAAQx0Q,KAAK4vD,WAChIkuN,IACFD,EAAYr+Q,EAEf,CACD,MACF,IAAK,YACC5B,OAAOC,UAAU2B,IAAUA,EAAQ,IACrCq+Q,EAAYr+Q,GAEd,MACF,QACErB,KAAK,mDAAmDlQ,MACxD,SAEJ,GAAI4vR,SAAc98Q,EAAlB,CAIK68Q,IACHA,EAAQzvR,OAAO0d,OAAO,OAExB+xQ,EAAM3vR,GAAO4vR,CAJZ,MAFC1/Q,KAAK,uBAAuBlQ,6BAA+BuR,KAO9D,CACD,OAAOD,OAAOS,KAAM,oBAAqB49Q,EAC1C,CACD,cAAIG,GACF,MAAMxvR,EAAMyR,KAAK43Q,SAAStpR,IAAI,cAC9B,MAAMyvR,EAAa5vR,OAAO0d,OAAO,MACjC,GAAItd,aAAe8d,KAAM,CACvB,MAAMotQ,EAAW,IAAIptQ,KAAKrM,KAAKsM,MAC/BmtQ,EAAS9rQ,IAAI,IAAKpf,GAClB,MAAMmrR,EAAY,CAChBj7Q,IAAK,KACL0gB,KAAM,KACN/I,OAAQ,MAEVuhQ,QAAQ6B,oBAAoB,CAC1BC,WACAC,cAEE/1Q,MAAM2J,QAAQosQ,EAAUv6P,MAC1B4+P,EAAW5+P,KAAOu6P,EAAUv6P,KACnBu6P,EAAUtjQ,SACnB2nQ,EAAW3nQ,OAASsjQ,EAAUtjQ,OAEjC,MAAUzS,MAAM2J,QAAQ/e,KACvBwvR,EAAW5+P,KAAO5wB,GAEpB,OAAOgR,OAAOS,KAAM,aAAckC,WAAW67Q,GAAc,EAAIA,EAAa,KAC7E,CACD,eAAIlE,GACF,MAAMtrR,EAAMyR,KAAK43Q,SAAStpR,IAAI,SAC9B,IAAIurR,EAAc,KAClB,GAAItrR,aAAe8d,MAAQ9d,EAAIqf,IAAI,iBAAkB,CACnD,MAAMowQ,EAAW,IAAIvS,SAASl9Q,EAAIgf,OAAO,iBAAkBvN,KAAKsM,MAChE,IAAK,MAAOre,EAAKuR,KAAUw+Q,EAAS/S,SAAU,CAC5C,MAAMgB,EAAK,IAAIH,SAAStsQ,EAAOQ,KAAKsM,MAC/ButQ,IACHA,EAAc1rR,OAAO0d,OAAO,OAE9BguQ,EAAY7xQ,kBAAkB/Z,IAAQg+Q,EAAGK,YAC1C,CACF,CACD,OAAO/sQ,OAAOS,KAAM,cAAe65Q,EACpC,CACD,aAAIoE,GACF,MAAM1vR,EAAMyR,KAAK43Q,SAAStpR,IAAI,SAC9B,IAAI2vR,EAAY,KAChB,GAAI1vR,aAAe8d,MAAQ9d,EAAIqf,IAAI,aAAc,CAC/C,MAAMowQ,EAAW,IAAIvS,SAASl9Q,EAAIgf,OAAO,aAAcvN,KAAKsM,MAC5D,IAAK,MAAOre,EAAKuR,KAAUw+Q,EAAS/S,SAAU,CACvCgT,IACHA,EAAY,IAAI5xQ,KAAKrM,KAAKsM,OAE5B2xQ,EAAUtwQ,IAAI3F,kBAAkB/Z,GAAMuR,EACvC,CACF,CACD,OAAOD,OAAOS,KAAM,YAAai+Q,EAClC,CACD,kBAAAC,GACE,MAAM3vR,EAAMyR,KAAK43Q,SAAStpR,IAAI,SAC9B,IAAI6vR,EAAa,KACjB,SAASC,uBAAuBr+Q,EAAMs+Q,GACpC,KAAMA,aAAkBhyQ,MACtB,OAEF,IAAKsD,OAAO0uQ,EAAO/vR,IAAI,KAAM,cAC3B,OAEF,IAAIwnB,EAAKuoQ,EAAO/vR,IAAI,MACpB,GAAIwnB,aAAc5F,WAChB4F,EAAKA,EAAGpE,iBACH,UAAWoE,IAAO,SACvB,OAEFA,EAAK9N,kBAAkB8N,GAAIvN,WAAW,KAAQ,IAC1CuN,IACDqoQ,IAAe,IAAIn0Q,KAAO2D,IAAI5N,EAAM+V,EAExC,CACD,GAAIvnB,aAAe8d,MAAQ9d,EAAIqf,IAAI,cAAe,CAChD,MAAMowQ,EAAW,IAAIvS,SAASl9Q,EAAIgf,OAAO,cAAevN,KAAKsM,MAC7D,IAAK,MAAOre,EAAKuR,KAAUw+Q,EAAS/S,SAClCmT,uBAAuBp2Q,kBAAkB/Z,GAAMuR,EAElD,CACD,MAAMu+Q,EAAa/9Q,KAAK43Q,SAAStpR,IAAI,cACjCyvR,GACFK,uBAAuB,aAAcL,GAEvC,OAAOI,CACR,CACD,aAAIG,GACF,MAAMH,EAAan+Q,KAAKk+Q,qBACxB,IAAIjoQ,EAAUF,eAAe/V,KAAKsM,KAAMtM,KAAK43Q,SAAU7gR,GACvD,GAAIonR,EAAY,CACdloQ,IAAY9nB,OAAO0d,OAAO,MAC1B,IAAK,MAAO5d,EAAK44B,KAAQs3P,EACnBlwR,KAAOgoB,EACTA,EAAQhoB,GAAK0T,KAAKklB,GAElB5Q,EAAQhoB,GAAO,CAAC44B,EAGrB,CACD,OAAOtnB,OAAOS,KAAM,YAAaiW,EAClC,CACD,kBAAMsoQ,CAAavmP,EAAIw4N,GACrB,MAAMguB,QAAwBpzQ,QAAQ4tP,IAAIh5P,KAAKywP,WAC/C,IAAK,MAAMoG,KAAkB2nB,EAC3B,GAAI3nB,EAAe30C,aAAelqL,EAAI,CACpC6+N,EAAejiP,SAAS47O,GACxB,MACD,CAEJ,CACD,aAAMhrM,CAAQi5N,EAAoB,OAChC9S,oBACA3rQ,KAAK4wP,iBAAiBpiP,MAAMiwQ,GAC5Bz+Q,KAAKg4Q,mBAAmBxpQ,QACxBxO,KAAKi4Q,eAAezpQ,QACpBxO,KAAKk4Q,cAAc1pQ,QACnBxO,KAAKqxP,iBAAiB7iP,QACtB,MAAMgwQ,QAAwBpzQ,QAAQ4tP,IAAIh5P,KAAKywP,WAC/C,IAAK,MAAMpiP,KACTA,KACGmwQ,SACInwQ,EAAKkU,SAEdviB,KAAKywP,UAAUjiP,QACfxO,KAAK0wP,iBAAiBliP,QACtBxO,KAAK2wP,sBAAsBniP,QAC3BxO,KAAKugP,gBAAgB/xO,OACtB,CACD,iBAAMkwQ,CAAY9lQ,GAChB,MAAM+lQ,EAAe,CAAC3+Q,KAAK83Q,mBAC3B,MAAM8G,EAAe,IAAI7vQ,OACzB,MAAM8vQ,EAAW7+Q,KAAK43Q,SAASrqQ,OAAO,SAClCsxQ,aAAoB5xQ,KACtB2xQ,EAAazvQ,IAAI0vQ,GAEnB,MAAMvyQ,EAAOtM,KAAKsM,KAChB0rQ,EAAqBh4Q,KAAKg4Q,mBAC1BC,EAAiBj4Q,KAAKi4Q,eACtBC,EAAgBl4Q,KAAKk4Q,cACvB,IAAI4G,EAAmB,EACvB,MAAOH,EAAaz/Q,OAAQ,CAC1B,MAAM6/Q,EAAcJ,EAAaxwO,MACjC,GAAI4wO,aAAuB9xQ,IAAK,CAC9B,MAAMgU,EAAQ+2P,EAAmB1pR,IAAIywR,GACrC,GAAI99P,GAAS,GAAK69P,EAAmB79P,GAASrI,EAAW,CACvDkmQ,GAAoB79P,EACpB,QACD,CACD,GAAI29P,EAAahxQ,IAAImxQ,GACnB,MAAM,IAAIp+Q,YAAY,2CAExBi+Q,EAAazvQ,IAAI4vQ,GACjB,MAAMxwR,QAAa2pR,EAAc5pR,IAAIywR,IAAgBzyQ,EAAKc,WAAW2xQ,IACrE,GAAIxwR,aAAe8d,KAAM,CACvB,IAAIhd,EAAOd,EAAIgf,OAAO,QAClBle,aAAgB4d,MAClB5d,QAAaid,EAAKc,WAAW/d,IAE/B,GAAIsgB,OAAOtgB,EAAM,UAAYd,EAAIqf,IAAI,QAAS,CACvCoqQ,EAAmBpqQ,IAAImxQ,IAC1B/G,EAAmB7oQ,IAAI4vQ,EAAa,GAEjC9G,EAAerqQ,IAAImxQ,IACtB9G,EAAe9oQ,IAAI4vQ,EAAaD,GAElC,GAAIA,IAAqBlmQ,EACvB,MAAO,CAACrqB,EAAKwwR,GAEfD,IACA,QACD,CACF,CACDH,EAAah9Q,KAAKpT,GAClB,QACD,CACD,KAAMwwR,aAAuB1yQ,MAC3B,MAAM,IAAI1L,YAAY,iEAExB,MAAM6L,MACJA,GACEuyQ,EACJ,IAAI99P,EAAQ89P,EAAYxxQ,OAAO,SAC3B0T,aAAiBhU,MACnBgU,QAAc3U,EAAKc,WAAW6T,IAEhC,GAAIrjB,OAAOC,UAAUojB,IAAUA,GAAS,EAAG,CACrCzU,IAAUwrQ,EAAmBpqQ,IAAIpB,IACnCwrQ,EAAmB7oQ,IAAI3C,EAAOyU,GAEhC,GAAI69P,EAAmB79P,GAASrI,EAAW,CACzCkmQ,GAAoB79P,EACpB,QACD,CACF,CACD,IAAIiqP,EAAO6T,EAAYxxQ,OAAO,QAC1B29P,aAAgBj+P,MAClBi+P,QAAa5+P,EAAKc,WAAW89P,IAE/B,IAAKvnQ,MAAM2J,QAAQ49P,GAAO,CACxB,IAAI77Q,EAAO0vR,EAAYxxQ,OAAO,QAC1Ble,aAAgB4d,MAClB5d,QAAaid,EAAKc,WAAW/d,IAE/B,GAAIsgB,OAAOtgB,EAAM,UAAY0vR,EAAYnxQ,IAAI,QAAS,CACpD,GAAIkxQ,IAAqBlmQ,EACvB,MAAO,CAACmmQ,EAAa,MAEvBD,IACA,QACD,CACD,MAAM,IAAIn+Q,YAAY,+CACvB,CACD,IAAK,IAAI0rB,EAAO6+O,EAAKhsQ,OAAS,EAAGmtB,GAAQ,EAAGA,IAAQ,CAClD,MAAM2yP,EAAU9T,EAAK7+O,GACrBsyP,EAAah9Q,KAAKq9Q,GACdD,IAAgB/+Q,KAAK83Q,mBAAqBkH,aAAmB/xQ,MAAQirQ,EAActqQ,IAAIoxQ,IACzF9G,EAAc/oQ,IAAI6vQ,EAAS1yQ,EAAKc,WAAW4xQ,GAE9C,CACF,CACD,MAAM,IAAI3gR,MAAM,cAAcua,eAC/B,CACD,qBAAMqmQ,CAAgB51N,EAAe,OACnC,MAAM8lM,aACJA,GACEnvP,KAAK4yQ,WAAWpd,iBACpB,MAAM9L,EAAQ,CAAC,CACbq1B,YAAa/+Q,KAAK83Q,kBAClBoH,UAAW,IAEb,MAAMN,EAAe,IAAI7vQ,OACzB,MAAM8vQ,EAAW7+Q,KAAK43Q,SAASrqQ,OAAO,SAClCsxQ,aAAoB5xQ,KACtB2xQ,EAAazvQ,IAAI0vQ,GAEnB,MAAM1pQ,EAAM,IAAInL,IACdsC,EAAOtM,KAAKsM,KACZ2rQ,EAAiBj4Q,KAAKi4Q,eACxB,IAAIr/P,EAAY,EAChB,SAASumQ,YAAYpL,EAAUxB,GACzBA,IAAY0F,EAAerqQ,IAAI2kQ,IACjC0F,EAAe9oQ,IAAIojQ,EAAS35P,GAE9BzD,EAAIxH,IAAIiL,IAAa,CAACm7P,EAAUxB,GACjC,CACD,SAAS6M,aAAa3iO,GACpB,GAAIA,aAAiBhqC,qBAAuB42C,EAC1C,MAAM5M,EAER,GAAI4M,GAAgB8lM,GAAgBv2O,IAAc,EAAG,CACnDza,KAAK,mDAAmDs+C,OACxDA,EAAQpwC,KAAKyB,KACd,CACDqH,EAAIxH,IAAIiL,IAAa,CAAC6jC,EAAO,MAC9B,CACD,MAAOitM,EAAMxqP,OAAS,EAAG,CACvB,MAAMmgR,EAAY31B,EAAM1vN,IAAI,GAC5B,MAAM+kP,YACJA,EAAWG,UACXA,GACEG,EACJ,IAAInU,EAAO6T,EAAYxxQ,OAAO,QAC9B,GAAI29P,aAAgBj+P,IAClB,IACEi+P,QAAa5+P,EAAKc,WAAW89P,EAC9B,CAAC,MAAO1iQ,GACP42Q,aAAa52Q,GACb,KACD,CAEH,IAAK7E,MAAM2J,QAAQ49P,GAAO,CACxBkU,aAAa,IAAIz+Q,YAAY,iDAC7B,KACD,CACD,GAAIu+Q,GAAahU,EAAKhsQ,OAAQ,CAC5BwqP,EAAMv7M,MACN,QACD,CACD,MAAMmxO,EAASpU,EAAKgU,GACpB,IAAI3wR,EACJ,GAAI+wR,aAAkBryQ,IAAK,CACzB,GAAI2xQ,EAAahxQ,IAAI0xQ,GAAS,CAC5BF,aAAa,IAAIz+Q,YAAY,4CAC7B,KACD,CACDi+Q,EAAazvQ,IAAImwQ,GACjB,IACE/wR,QAAY+d,EAAKc,WAAWkyQ,EAC7B,CAAC,MAAO92Q,GACP42Q,aAAa52Q,GACb,KACD,CACT,MACQja,EAAM+wR,EAER,KAAM/wR,aAAe8d,MAAO,CAC1B+yQ,aAAa,IAAIz+Q,YAAY,kEAC7B,KACD,CACD,IAAItR,EAAOd,EAAIgf,OAAO,QACtB,GAAIle,aAAgB4d,IAClB,IACE5d,QAAaid,EAAKc,WAAW/d,EAC9B,CAAC,MAAOmZ,GACP42Q,aAAa52Q,GACb,KACD,CAECmH,OAAOtgB,EAAM,UAAYd,EAAIqf,IAAI,QACnCuxQ,YAAY5wR,EAAK+wR,aAAkBryQ,IAAMqyQ,EAAS,MAElD51B,EAAM/nP,KAAK,CACTo9Q,YAAaxwR,EACb2wR,UAAW,IAGfG,EAAUH,WACX,CACD,OAAO/pQ,CACR,CACD,YAAAoqQ,CAAahN,GACX,MAAMiN,EAAkBx/Q,KAAKi4Q,eAAe3pR,IAAIikR,GAChD,GAAIiN,SAAoBz+Q,EACtB,OAAOqK,QAAQI,QAAQg0Q,GAEzB,MAAMlzQ,EAAOtM,KAAKsM,KAClB,SAASmzQ,eAAe1J,GACtB,IACEC,EADEv3P,EAAQ,EAEZ,OAAOnS,EAAKc,WAAW2oQ,GAAQj5P,MAAK,SAAU4sB,GAC5C,GAAI35B,YAAYgmQ,EAAQxD,KAAaziQ,OAAO45B,EAAM,WAAaA,aAAgBr9B,OAASq9B,EAAK97B,IAAI,SAAW87B,EAAK97B,IAAI,aACnH,MAAM,IAAIjN,YAAY,uDAExB,IAAK+oC,EACH,OAAO,KAET,KAAMA,aAAgBr9B,MACpB,MAAM,IAAI1L,YAAY,8BAExBq1Q,EAAYtsO,EAAKn8B,OAAO,UACxB,OAAOm8B,EAAKv8B,SAAS,SAC7B,IAAS2P,MAAK,SAAU9N,GAChB,IAAKA,EACH,OAAO,KAET,KAAMA,aAAkB3C,MACtB,MAAM,IAAI1L,YAAY,gCAExB,OAAOqO,EAAO7B,SAAS,OAC/B,IAAS2P,MAAK,SAAUouP,GAChB,IAAKA,EACH,OAAO,KAET,MAAMwU,EAAc,GACpB,IAAI3yN,EAAQ,MACZ,IAAK,MAAMo+M,KAAOD,EAAM,CACtB,KAAMC,aAAel+P,KACnB,MAAM,IAAItM,YAAY,4BAExB,GAAIoP,YAAYo7P,EAAK4K,GAAS,CAC5BhpN,EAAQ,KACR,KACD,CACD2yN,EAAY/9Q,KAAK2K,EAAKc,WAAW+9P,GAAKruP,MAAK,SAAUvuB,GACnD,KAAMA,aAAe8d,MACnB,MAAM,IAAI1L,YAAY,kCAEpBpS,EAAIqf,IAAI,SACV6Q,GAASlwB,EAAID,IAAI,SAEjBmwB,GAEH,IACF,CACD,IAAKsuC,EACH,MAAM,IAAIpsD,YAAY,6CAExB,OAAOyK,QAAQ4tP,IAAI0mB,GAAa5iQ,MAAK,WACnC,MAAO,CAAC2B,EAAOu3P,EACzB,GACA,GACK,CACD,IAAIv3P,EAAQ,EACZ,MAAMwS,KAAOriB,GAAO6wQ,eAAe7wQ,GAAKkO,MAAKvR,IAC3C,IAAKA,EAAM,CACTvL,KAAKi4Q,eAAe9oQ,IAAIojQ,EAAS9zP,GACjC,OAAOA,CACR,CACD,MAAOwC,EAAO+0P,GAAazqQ,EAC3BkT,GAASwC,EACT,OAAOgQ,KAAK+kP,EAAU,IAExB,OAAO/kP,KAAKshP,EACb,CACD,WAAI3zQ,GACF,MAAM+gR,EAAM3/Q,KAAK43Q,SAAStpR,IAAI,OAC9B,GAAIqxR,aAAetzQ,KAAM,CACvB,MAAM8Y,EAAOw6P,EAAIrxR,IAAI,QACrB,UAAW62B,IAAS,SAAU,CAC5B,MAAM9lB,EAAcV,uBAAuBwmB,EAAM,KAAM,CACrDhmB,mBAAoB,OAEtB,GAAIE,EACF,OAAOE,OAAOS,KAAM,UAAWX,EAAYs8C,KAE9C,CACF,CACD,OAAOp8C,OAAOS,KAAM,UAAWA,KAAK4yQ,WAAW+G,WAChD,CACD,0BAAOH,EAAoBC,SACzBA,EAAQC,UACRA,EAASC,WACTA,EAAa,KAAIC,eACjBA,EAAiB,OAEjB,KAAMH,aAAoBptQ,MAAO,CAC/BlO,KAAK,yDACL,MACD,CACD,IACEM,EACA0gB,EAFE/I,EAASqjQ,EAASnrR,IAAI,KAG1B,KAAM8nB,aAAkB/J,MACtB,GAAIotQ,EAAS7rQ,IAAI,QACfwI,EAASqjQ,EAASnrR,IAAI,YACjB,CACL8nB,EAASqjQ,EAASnrR,IAAI,MAClB8nB,aAAkB/J,OAChB+J,EAAOxI,IAAI,KACbwI,EAASA,EAAO9nB,IAAI,KACX8nB,EAAOxI,IAAI,OACpBwI,EAASA,EAAO9nB,IAAI,MAGzB,CAEH,GAAI8nB,aAAkB/J,KAAM,CAC1B,MAAMuzQ,EAAaxpQ,EAAO9nB,IAAI,KAC9B,KAAMsxR,aAAsB3zQ,MAAO,CACjC9N,KAAK,2DACL,MACD,CACD,MAAM0hR,EAAaD,EAAW7/Q,KAC9B,OAAQ8/Q,GACN,IAAK,YACH,MAAM5gP,EAAQ7oB,EAAO9nB,IAAI,SACzB,MAAMwxR,WAAmB7gP,IAAU,SAAWA,EAAQ,GAAK,KAAO,EAClE,MAAMo0L,EAAS,GACf,MAAM+nD,EAAO,GACb,IAAK,MAAM7sR,KAAO6nB,EAAO9nB,IAAI,WAAa,GACpCC,aAAe0e,IACjBmuQ,EAAKz5Q,KAAKpT,EAAIuV,mBACEvV,IAAQ,UACxB8kO,EAAO1xN,KAAKqG,kBAAkBzZ,IAGlCmrR,EAAUqG,UAAY,CACpB1sD,SACA+nD,OACA0E,WAEF,MACF,IAAK,MACHrhR,EAAM2X,EAAO9nB,IAAI,OACbmQ,aAAewN,OACjBxN,EAAM,IAAMA,EAAIsB,MAElB,MACF,IAAK,OACHof,EAAO/I,EAAO9nB,IAAI,KAClB,MACF,IAAK,SACL,IAAK,QACH,MAAM0xR,EAAU5pQ,EAAO9nB,IAAI,KAC3B,GAAI0xR,aAAmB3zQ,KAAM,CAC3B,MAAM4/P,EAAK,IAAIH,SAASkU,EAAS,KAAM,MACvC,MAAMzT,YACJA,GACEN,EAAGK,aACP7tQ,EAAM8tQ,CAClB,aAA4ByT,IAAY,WAC5BvhR,EAAMuhR,GAER,MAAMC,EAAazI,gBAAgBphQ,GAC/B6pQ,UAAqBxhR,IAAQ,WAC/BA,EAAMA,EAAIyW,MAAM,IAAK,GAAG,GAAK,IAAM+qQ,GAErC,MAAM9nQ,EAAY/B,EAAO9nB,IAAI,oBAClB6pB,IAAc,YACvBuhQ,EAAUvhQ,UAAYA,GAExB,MACF,IAAK,QACH,MAAM+nQ,EAAS9pQ,EAAO9nB,IAAI,KAC1B,IAAIyrR,EACJ,GAAIH,GAAkBsG,aAAkB7zQ,KAAM,CAC5C,MAAM8zQ,EAAeD,EAAO5xR,IAAI,KAChC,MAAMyR,EAAOmgR,EAAO5xR,IAAI,KACpBqhB,OAAOwwQ,EAAc,aAAepgR,IAAS,WAC/Cg6Q,EAAaH,EAAe5xQ,kBAAkBjI,IAEjD,CACD,GAAIg6Q,EAAY,CACdL,EAAUK,WAAaA,EACvB,MAAMqG,EAAiB5I,gBAAgBphQ,GACnCgqQ,IACF1G,EAAU0G,eAAiBA,EAEzC,MACYjiR,KAAK,uDAEP,MACF,IAAK,QACH,MAAMkiR,EAAcjqQ,EAAO9nB,IAAI,KAC3B+xR,aAAuBp0Q,OACzBytQ,EAAUtjQ,OAASiqQ,EAAYtgR,MAEjC,MACF,IAAK,cACH,MAAM0qD,EAAQr0C,EAAO9nB,IAAI,SACzB,MAAMgyR,EAAalqQ,EAAO9nB,IAAI,cAC9B,IAAKqV,MAAM2J,QAAQm9C,IAAUA,EAAMvrD,SAAW,EAC5C,MAEF,MAAMqhR,EAAW,GACjB,IAAK,MAAMxzO,KAAQ0d,EACjB,GAAI1d,aAAgB9gC,KAClB,OAAQ8gC,EAAKhtC,MACX,IAAK,KACL,IAAK,MACL,IAAK,SACHwgR,EAAS5+Q,KAAKorC,EAAKhtC,MACnB,WAEKgtC,aAAgB9/B,KACzBszQ,EAAS5+Q,KAAKorC,EAAKjpC,YAGvB,GAAIy8Q,EAASrhR,SAAWurD,EAAMvrD,OAC5B,MAEFw6Q,EAAUO,YAAc,CACtBxvN,MAAO81N,EACPD,kBAAmBA,IAAe,WAAYA,GAEhD,MACF,IAAK,aACH,MAAME,EAAWpqQ,EAAO9nB,IAAI,MAC5B,IAAIwnB,EACA0qQ,aAAoBtwQ,WACtB4F,EAAK0qQ,EAAS9uQ,mBACE8uQ,IAAa,WAC7B1qQ,EAAK0qQ,GAEP,MAAMC,EAAQ3qQ,GAAMiC,aAAa/P,kBAAkB8N,IACnD,GAAI2qQ,EAAO,CACThiR,EAAMgiR,EAAMhiR,IACZi7Q,EAAUvhQ,UAAYsoQ,EAAMtoQ,UAC5B,KACD,CACH,QACE,GAAI0nQ,IAAe,cAAgBA,IAAe,aAChD,MAEF1hR,KAAK,8CAA8C0hR,OACnD,MAEL,MAAUpG,EAAS7rQ,IAAI,UACtBuR,EAAOs6P,EAASnrR,IAAI,SAEtB,UAAWmQ,IAAQ,SAAU,CAC3B,MAAMY,EAAcV,uBAAuBF,EAAKk7Q,EAAY,CAC1D76Q,mBAAoB,KACpBK,mBAAoB,OAElBE,IACFq6Q,EAAUj7Q,IAAMY,EAAYs8C,MAE9B+9N,EAAUM,UAAYv7Q,CACvB,CACD,GAAI0gB,EAAM,CACJA,aAAgBlT,OAClBkT,EAAOA,EAAKpf,aAEHof,IAAS,SAClBu6P,EAAUv6P,KAAOnX,kBAAkBmX,GAC1Bg4P,oBAAoBh4P,KAC7Bu6P,EAAUv6P,KAAOA,EAEpB,CACF,EAQH,SAASuhQ,gBAAgBlhR,GACvB,OAAOA,aAAiByN,KAAOzN,aAAiB6M,MAAQ7M,aAAiB0Q,YAAcvM,MAAM2J,QAAQ9N,EACvG,CACA,SAASmhR,YAAYj3O,EAAMi1O,GACzB,GAAIj1O,aAAgBr9B,KAClBq9B,EAAOA,EAAKj8B,oBACP,GAAIi8B,aAAgBx5B,WACzBw5B,EAAOA,EAAKr7B,KAAKZ,oBACZ,IAAK9J,MAAM2J,QAAQo8B,GACxB,OAEF,IAAK,MAAMk3O,KAAYl3O,EACjBg3O,gBAAgBE,IAClBjC,EAAah9Q,KAAKi/Q,EAGxB,CACA,MAAMC,aACJ,WAAA5gR,CAAYoO,EAAMlM,EAAMmK,GACtBtM,KAAKqO,KAAOA,EACZrO,KAAKmC,KAAOA,EACZnC,KAAKsM,KAAOA,EACZtM,KAAK8gR,OAAS,IACf,CACD,UAAMC,GACJ,GAAI/gR,KAAKsM,KAAKkP,OAAOpL,aACnB,OAEF,MAAMjO,KACJA,EAAIkM,KACJA,GACErO,KACJA,KAAK8gR,OAAS,IAAI/xQ,OAClB,MAAM4vQ,EAAe,GACrB,IAAK,MAAM1wR,KAAOkU,EAAM,CACtB,MAAMy+Q,EAAWvyQ,EAAKd,OAAOtf,GACzB2yR,SAAa7/Q,GACf49Q,EAAah9Q,KAAKi/Q,EAErB,CACD,OAAO5gR,KAAKghR,MAAMrC,EACnB,CACD,WAAMqC,CAAMrC,GACV,MAAMsC,EAAiB,GACvB,MAAMC,EAAkB,GACxB,MAAOvC,EAAaz/Q,OAAQ,CAC1B,IAAI6/Q,EAAcJ,EAAaxwO,MAC/B,GAAI4wO,aAAuB9xQ,IAAK,CAC9B,GAAIjN,KAAK8gR,OAAOlzQ,IAAImxQ,GAClB,SAEF,IACE/+Q,KAAK8gR,OAAO3xQ,IAAI4vQ,GAChBA,EAAc/+Q,KAAKsM,KAAKY,MAAM6xQ,EAC/B,CAAC,MAAOv2Q,GACP,KAAMA,aAAc+J,sBAAuB,CACzCpU,KAAK,8CAA8CqK,OACnDxI,KAAK8gR,OAAS,KACd,MAAM/mQ,QACJA,GACE/Z,KAAKsM,KAAKkP,OACd,OAAOzB,EAAQiD,kBAChB,CACDikQ,EAAet/Q,KAAKo9Q,GACpBmC,EAAgBv/Q,KAAK,CACnB6P,MAAOhJ,EAAGgJ,MACVC,IAAKjJ,EAAGiJ,KAEX,CACF,CACD,GAAIstQ,aAAuB7uQ,WAAY,CACrC,MAAMkf,EAAc2vP,EAAY/sQ,iBAChC,GAAIod,EAAa,CACf,IAAI+xP,EAAmB,MACvB,IAAK,MAAM3lQ,KAAU4T,EACnB,IAAI5T,EAAOpL,aAAX,CAGA+wQ,EAAmB,KACnBD,EAAgBv/Q,KAAK,CACnB6P,MAAOgK,EAAOzJ,MACdN,IAAK+J,EAAO/J,KAJb,CAOC0vQ,GACFF,EAAet/Q,KAAKo9Q,EAEvB,CACF,CACD4B,YAAY5B,EAAaJ,EAC1B,CACD,GAAIuC,EAAgBhiR,OAAQ,OACpBc,KAAKsM,KAAKkP,OAAOzB,QAAQmE,cAAcgjQ,GAC7C,IAAK,MAAMx3O,KAAQu3O,EACbv3O,aAAgBz8B,KAClBjN,KAAK8gR,OAAOzxQ,OAAOq6B,GAGvB,OAAO1pC,KAAKghR,MAAMC,EACnB,CACDjhR,KAAK8gR,OAAS,IAEf,EAIH,MAAMM,GAAoB11Q,SAC1B,MAAM21Q,GAAW31Q,SACjB,MAAM41Q,GAAe51Q,SACrB,MAAM61Q,GAAkB71Q,SACxB,MAAM81Q,GAAS91Q,SACf,MAAM+1Q,GAAa/1Q,SACnB,MAAMg2Q,GAAWh2Q,SACjB,MAAMi2Q,GAASj2Q,SACf,MAAMk2Q,GAAYl2Q,SAClB,MAAMm2Q,GAAWn2Q,OAAO,WACxB,MAAMo2Q,GAAQp2Q,OAAO,QACrB,MAAMq2Q,GAAQr2Q,SACd,MAAMs2Q,GAASt2Q,OAAO,SACtB,MAAMu2Q,GAAYv2Q,SAClB,MAAMw2Q,GAAax2Q,SACnB,MAAMy2Q,GAAkBz2Q,SACxB,MAAM02Q,GAAiB12Q,SACvB,MAAM22Q,GAAqB32Q,SAC3B,MAAM42Q,GAAsB52Q,SAC5B,MAAM62Q,GAAqB72Q,SAC3B,MAAM82Q,GAAuB92Q,SAC7B,MAAM+2Q,GAAgB/2Q,SACtB,MAAMg3Q,GAAYh3Q,SAClB,MAAMi3Q,GAA2Bj3Q,SACjC,MAAMk3Q,GAAel3Q,SACrB,MAAMm3Q,GAAwBn3Q,SAC9B,MAAMo3Q,GAAep3Q,SACrB,MAAMq3Q,GAAoBr3Q,SAC1B,MAAMs3Q,GAAat3Q,SACnB,MAAMu3Q,GAAmBv3Q,SACzB,MAAMw3Q,GAAcx3Q,SACpB,MAAMy3Q,GAAoBz3Q,SAC1B,MAAM03Q,GAAO13Q,SACb,MAAM23Q,GAAW33Q,SACjB,MAAM43Q,GAAY53Q,SAClB,MAAM63Q,GAAc73Q,SACpB,MAAM83Q,GAAc93Q,SACpB,MAAM+3Q,GAAe/3Q,SACrB,MAAMg4Q,GAAgBh4Q,SACtB,MAAMi4Q,GAAgBj4Q,SACtB,MAAMk4Q,GAAgBl4Q,SACtB,MAAMm4Q,GAAoBn4Q,SAC1B,MAAMo4Q,GAAiBp4Q,SACvB,MAAMq4Q,GAAYr4Q,SAClB,MAAMs4Q,GAAiBt4Q,SACvB,MAAMu4Q,GAAev4Q,OAAO,eAC5B,MAAMw4Q,GAAYx4Q,OAAO,YACzB,MAAMy4Q,GAAgBz4Q,SACtB,MAAM04Q,GAAW14Q,SACjB,MAAM24Q,GAAgB34Q,SACtB,MAAM44Q,GAAU54Q,SAChB,MAAM64Q,GAAc74Q,SACpB,MAAM84Q,GAAW94Q,SACjB,MAAM+4Q,GAAY/4Q,SAClB,MAAMg5Q,GAAeh5Q,SACrB,MAAMi5Q,GAAQj5Q,OAAO,QACrB,MAAMk5Q,GAAqBl5Q,SAC3B,MAAMm5Q,GAAcn5Q,SACpB,MAAMo5Q,GAASp5Q,SACf,MAAMq5Q,GAAoBr5Q,SAC1B,MAAMs5Q,GAAYt5Q,SAClB,MAAMu5Q,GAAYv5Q,SAClB,MAAMw5Q,GAAQx5Q,SACd,MAAMy5Q,GAAWz5Q,SACjB,MAAM05Q,GAAU15Q,SAChB,MAAM25Q,GAAY35Q,SAClB,MAAM45Q,GAAW55Q,SACjB,MAAM65Q,GAAO75Q,OAAO,OAGpB,MAAM85Q,GAAkB95Q,SACxB,MAAM+5Q,GAAe,CACnBnL,OAAQ,CACNtiP,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,mCAE7B4mR,cAAe,CACb3tP,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,kDAE7B6mR,SAAU,CACR5tP,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,wCAE7B8mR,KAAM,CACJ7tP,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,wCAE7B+mR,UAAW,CACT9tP,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,8CAE7BgnR,IAAK,CACH/tP,GAAI,EACJpC,MAAO8vP,GAAMA,IAAO,gCAEtB10D,UAAW,CACTh5L,GAAI,EACJpC,MAAO8vP,GAAMA,IAAO,sCAEtBM,UAAW,CACThuP,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,8CAE7BknR,WAAY,CACVjuP,GAAI,EACJpC,MAAO8vP,GAAMA,IAAO,wCAEtBtrP,SAAU,CACRpC,GAAI,EACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,4CAE7BmnR,IAAK,CACHluP,GAAI,GACJpC,MAAO8vP,GAAMA,EAAG3mR,WAAW,mCAE7BonR,IAAK,CACHnuP,GAAI,GACJpC,MAAO8vP,GAAMA,IAAO,4BAEtBU,KAAM,CACJpuP,GAAI,GACJpC,MAAO8vP,GAAMA,IAAO,6BAEtBW,MAAO,CACLruP,GAAI,GACJpC,MAAO8vP,GAAMA,IAAO,gCAEtBY,QAAS,CACPtuP,GAAI,GACJpC,MAAO8vP,GAAMA,IAAO,iCAMxB,MAAMa,GAAgB,CACpBC,GAAIj/Q,GAAKA,EACT+9P,GAAI/9P,GAAKA,EAAI,KAAO,GACpBk/Q,GAAIl/Q,GAAKA,EAAK,KAAa,GAC3Bm/Q,GAAIn/Q,GAAKA,EAAI,GACbo/Q,GAAIp/Q,GAAKA,GAEX,MAAMq/Q,GAAqB,uBAC3B,SAASC,YAAY/kR,GACnB,OAAIA,EAAI/C,WAAW,MAAQ+C,EAAI/C,WAAW,KACjC+C,EAAIqD,MAAM,GAAI,GAEhBrD,CACT,CACA,SAASglR,YAAWh0Q,KAClBA,EAAIi0Q,aACJA,EAAYC,SACZA,IAEA,IAAKl0Q,EACH,OAAOi0Q,EAETj0Q,EAAOA,EAAKs+P,OACZ,MAAMvtQ,EAAIiL,SAASgE,EAAM,IACzB,OAAKgF,MAAMjU,IAAMmjR,EAASnjR,GACjBA,EAEFkjR,CACT,CACA,SAASE,UAASn0Q,KAChBA,EAAIi0Q,aACJA,EAAYC,SACZA,IAEA,IAAKl0Q,EACH,OAAOi0Q,EAETj0Q,EAAOA,EAAKs+P,OACZ,MAAMvtQ,EAAIgU,WAAW/E,GACrB,OAAKgF,MAAMjU,IAAMmjR,EAASnjR,GACjBA,EAEFkjR,CACT,CACA,SAASG,YAAWp0Q,KAClBA,EAAIi0Q,aACJA,EAAYC,SACZA,IAEA,IAAKl0Q,EACH,OAAOi0Q,EAETj0Q,EAAOA,EAAKs+P,OACZ,OAAI4V,EAASl0Q,GACJA,EAEFi0Q,CACT,CACA,SAASI,gBAAgBr0Q,EAAMjU,GAC7B,OAAOqoR,WAAW,CAChBp0Q,OACAi0Q,aAAcloR,EAAQ,GACtBmoR,SAAU9gQ,GAAKrnB,EAAQsE,SAAS+iB,IAEpC,CACA,SAASkhQ,eAAetlR,EAAKulR,EAAM,KACjCA,IAAQ,IACR,IAAKvlR,EACH,OAAOslR,eAAeC,GAExB,MAAMpoR,EAAQ6C,EAAIsvQ,OAAOnyQ,MAAM2nR,IAC/B,IAAK3nR,EACH,OAAOmoR,eAAeC,GAExB,OAASC,EAAUC,GAAQtoR,EAC3B,MAAMO,EAAQqY,WAAWyvQ,GACzB,GAAIxvQ,MAAMtY,GACR,OAAO4nR,eAAeC,GAExB,GAAI7nR,IAAU,EACZ,OAAO,EAET,MAAMgoR,EAAOjB,GAAcgB,GAC3B,OAAIC,EACKA,EAAKhoR,GAEPA,CACT,CACA,SAASioR,SAAS30Q,GAChB,IAAKA,EACH,MAAO,CACL9H,IAAK,EACL08Q,IAAK,GAGT,MAAMjkH,EAAQ3wJ,EAAKs+P,OAAOl8P,MAAM,WAAWC,KAAI5N,GAAKsQ,WAAWtQ,KAAIsnB,QAAOtnB,IAAMuQ,MAAMvQ,KAClFk8J,EAAMvkK,SAAW,GACnBukK,EAAM9hK,KAAK,GAEb,GAAI8hK,EAAMvkK,SAAW,EACnB,MAAO,CACL8L,IAAK,EACL08Q,IAAK,GAGT,MAAO18Q,EAAK08Q,GAAOjkH,EACnB,MAAO,CACLz4J,MACA08Q,MAEJ,CACA,SAASC,YAAY70Q,GACnB,OAAKA,EAGEA,EAAKs+P,OAAOl8P,MAAM,OAAOC,KAAI4H,IAAM,CACxC6qQ,SAAU7qQ,EAAE,KAAO,IACnB8qQ,SAAU9qQ,EAAExH,UAAU,OAJf,EAMX,CACA,SAASuyQ,SAASh1Q,EAAMu0Q,EAAM,CAAC,EAAG,EAAG,IACnC,IAAKnjR,EAAGC,EAAGC,GAAKijR,EAChB,IAAKv0Q,EACH,MAAO,CACL5O,IACAC,IACAC,KAGJ,MAAMgkB,EAAQtV,EAAKs+P,OAAOl8P,MAAM,WAAWC,KAAIxP,GAAKpE,KAAKC,IAAID,KAAK+D,IAAI,EAAGwJ,SAASnJ,EAAEyrQ,OAAQ,KAAM,OAAMj8P,KAAIxP,GAAKmS,MAAMnS,GAAK,EAAIA,IAChI,GAAIyiB,EAAMlpB,OAAS,EACjB,MAAO,CACLgF,IACAC,IACAC,MAGHF,EAAGC,EAAGC,GAAKgkB,EACZ,MAAO,CACLlkB,IACAC,IACAC,IAEJ,CACA,SAAS2jR,QAAQj1Q,GACf,MAAMu0Q,GAAO,EACb,IAAKv0Q,EACH,MAAO,CACLvL,EAAG8/Q,EACH7/Q,EAAG6/Q,EACHhuQ,MAAOguQ,EACP/tQ,OAAQ+tQ,GAGZ,MAAMl0D,EAAOrgN,EAAKs+P,OAAOl8P,MAAM,WAAWC,KAAIvQ,GAAKwiR,eAAexiR,EAAG,QACrE,GAAIuuN,EAAKj0N,OAAS,GAAKi0N,EAAK,GAAK,GAAKA,EAAK,GAAK,EAC9C,MAAO,CACL5rN,EAAG8/Q,EACH7/Q,EAAG6/Q,EACHhuQ,MAAOguQ,EACP/tQ,OAAQ+tQ,GAGZ,MAAO9/Q,EAAGC,EAAG6R,EAAOC,GAAU65M,EAC9B,MAAO,CACL5rN,IACAC,IACA6R,QACAC,SAEJ,CACA,MAAM0uQ,WACJ,kBAAWC,GACT,OAAO1oR,OAAOS,KAAM,UAAW,IAAIgoR,WAAW,MAAO,KAAM,KAAM,MAClE,CACD,gBAAWE,GACT,OAAO3oR,OAAOS,KAAM,QAAS,IAAIgoR,WAAW,KAAM,KAAM,KAAM,MAC/D,CACD,WAAA/nR,CAAYkoR,EAASC,EAAMj1D,EAAMk1D,GAC/BroR,KAAKmoR,QAAUA,EACfnoR,KAAKooR,KAAOA,EACZpoR,KAAKmzN,KAAOA,EACZnzN,KAAKqoR,UAAYA,CAClB,CACD,OAAAC,GACE,QAAStoR,KAAKqoR,SACf,CACD,gBAAOA,CAAU3+O,GACf,OAAO,IAAIs+O,WAAW,MAAO,KAAM,KAAMt+O,EAC1C,CACD,cAAOy+O,CAAQC,EAAMj1D,EAAO,MAC1B,OAAO,IAAI60D,WAAW,KAAMI,EAAMj1D,EAAM,KACzC,EAOH,MAAMo1D,WACJ,WAAAtoR,CAAYuoR,GACVxoR,KAAKyoR,MAAQ,IAAIz+Q,IACjBhK,KAAKo4B,MAAQ,IAAIpuB,IACjBhK,KAAKo/D,OAAS,IAAIlwD,IAClBlP,KAAK0oR,YAAc,KACnB1oR,KAAKoP,IAAIo5Q,EACV,CACD,GAAAp5Q,CAAIo5Q,EAAUG,EAAqB,MACjC,IAAK,MAAMC,KAAWJ,EACpBxoR,KAAK6oR,WAAWD,GAElB,IAAK,MAAMA,KAAW5oR,KAAKyoR,MAAM/6Q,SAC1Bk7Q,EAAQE,UACXF,EAAQE,QAAUF,EAAQvsD,QAAUusD,EAAQxsD,MAAQwsD,EAAQG,YAGhE,IAAKJ,GAAsBA,EAAmB97Q,OAAS,EACrD,OAEF,MAAMm8Q,EAAShpR,KAAKyoR,MAAMn6R,IAAI,4BAC9B,IAAK,MAAM26R,KAAWN,EACpB3oR,KAAKyoR,MAAM96Q,IAAIs7Q,EAASD,EAE3B,CACD,UAAAH,CAAWD,GACT,MAAMvxQ,EAAcuxQ,EAAQvxQ,YAC5B,MAAMtX,EAAOsX,EAAYP,WACzB,IAAIstM,EAAOpkN,KAAKyoR,MAAMn6R,IAAIyR,GAC1B,IAAKqkN,EAAM,CACTA,EAAOj2N,OAAO0d,OAAO,MACrB7L,KAAKyoR,MAAM96Q,IAAI5N,EAAMqkN,GAChBpkN,KAAK0oR,cACR1oR,KAAK0oR,YAActkE,EAEtB,CACD,IAAI91M,EAAW,GACf,MAAMmJ,EAAaI,WAAWR,EAAYI,YACtCI,WAAWR,EAAYK,eAAiB,EAC1CpJ,EAAWmJ,GAAc,IAAM,aAAe,SACrCA,GAAc,MACvBnJ,EAAW,QAEb,IAAKA,EAAU,EACTs6Q,EAAQ7oR,KAAKoD,SAAS,SAAWylR,EAAQ3uD,QAAQ92N,SAAS,WAC5DmL,EAAW,SAETs6Q,EAAQ7oR,KAAKoD,SAAS,WAAaylR,EAAQ7oR,KAAKmpR,SAAS,OAASN,EAAQ3uD,QAAQ92N,SAAS,WAAaylR,EAAQ3uD,QAAQivD,SAAS,SACnI56Q,GAAY,SAEf,CACIA,IACHA,EAAW,WAEb81M,EAAK91M,GAAYs6Q,CAClB,CACD,UAAAO,GACE,OAAOnpR,KAAK0oR,WACb,CACD,IAAAU,CAAK7nE,EAAUxqM,EAAW,MACxB,IAAIqtM,EAAOpkN,KAAKyoR,MAAMn6R,IAAIizN,IAAavhN,KAAKo4B,MAAM9pC,IAAIizN,GACtD,GAAI6C,EACF,OAAOA,EAET,MAAM4hC,EAAU,8CAChB,IAAIjmP,EAAOwhN,EAASh5M,WAAWy9O,EAAS,IACxC5hC,EAAOpkN,KAAKyoR,MAAMn6R,IAAIyR,GACtB,GAAIqkN,EAAM,CACRpkN,KAAKo4B,MAAMzqB,IAAI4zM,EAAU6C,GACzB,OAAOA,CACR,CACDrkN,EAAOA,EAAK6T,cACZ,MAAMy1Q,EAAQ,GACd,IAAK,MAAOC,EAAQV,KAAY5oR,KAAKyoR,MAAMjxN,UACrC8xN,EAAO/gR,WAAWy9O,EAAS,IAAIpyO,cAAc7U,WAAWgB,IAC1DspR,EAAM1nR,KAAKinR,GAGf,GAAIS,EAAMnqR,SAAW,EACnB,IAAK,MAAS,CAAA0pR,KAAY5oR,KAAKyoR,MAAMjxN,UAC/BoxN,EAAQE,QAAQ/oR,MAAMwI,WAAWy9O,EAAS,IAAIpyO,cAAc7U,WAAWgB,IACzEspR,EAAM1nR,KAAKinR,GAIjB,GAAIS,EAAMnqR,SAAW,EAAG,CACtBa,EAAOA,EAAKwI,WAAW,YAAa,IACpC,IAAK,MAAO+gR,EAAQV,KAAY5oR,KAAKyoR,MAAMjxN,UACrC8xN,EAAO/gR,WAAWy9O,EAAS,IAAIpyO,cAAc7U,WAAWgB,IAC1DspR,EAAM1nR,KAAKinR,EAGhB,CACD,GAAIS,EAAMnqR,SAAW,EACnB,IAAK,MAAM0pR,KAAW5oR,KAAKyoR,MAAM/6Q,SAC3Bk7Q,EAAQE,QAAQ/oR,MAAMwI,WAAWy9O,EAAS,IAAIpyO,cAAc7U,WAAWgB,IACzEspR,EAAM1nR,KAAKinR,GAIjB,GAAIS,EAAMnqR,QAAU,EAAG,CACjBmqR,EAAMnqR,SAAW,GAAK6X,GACxB5Y,KAAK,qDAAqDojN,KAE5DvhN,KAAKo4B,MAAMzqB,IAAI4zM,EAAU8nE,EAAM,IAC/B,OAAOA,EAAM,EACd,CACD,GAAItyQ,IAAa/W,KAAKo/D,OAAOxxD,IAAI2zM,GAAW,CAC1CvhN,KAAKo/D,OAAOhwD,IAAImyM,GAChBpjN,KAAK,+BAA+BojN,IACrC,CACD,OAAO,IACR,EAEH,SAASgoE,WAAWC,EAASC,GAC3B,OAAID,EAAQE,UAAY,SAClBF,EAAQ7xQ,SAAW,OACd8xQ,EAASV,WAEXU,EAASptD,OACPmtD,EAAQ7xQ,SAAW,OACrB8xQ,EAASrtD,KAEXqtD,EAASX,OAClB,CACA,SAASa,iBAAiBH,EAASI,EAAO,OACxC,IAAIhB,EAAU,KACd,GAAIY,EAAS,CACX,MAAMzpR,EAAO8mR,YAAY2C,EAAQC,UACjC,MAAMA,EAAWD,EAAQtG,IAAa2G,WAAWT,KAAKrpR,GACtD6oR,EAAUW,WAAWC,EAASC,EAC/B,CACD,IAAKb,EACH,MAAO,CACLxtD,WAAY,GACZ0K,QAAS,EACTgkD,UAAW,IAGf,MAAMj9Q,EAAO28Q,EAAQ38Q,MAAQ,GAC7B,MAAMuuN,EAAawtD,EAAQxtD,WAAa75N,KAAK+D,IAAIskR,EAAO,EAAI,IAAKhB,EAAQxtD,YAAc,IACvF,MAAM0K,EAAU8iD,EAAQ9iD,eAAY/kO,EAAY,GAAM6nR,EAAQ9iD,QAC9D,MAAO,CACL1K,WAAYA,EAAavuN,EACzBi5N,QAASA,EAAUj5N,EACnBi9Q,UAAWvoR,KAAK+D,IAAI,EAAG81N,EAAa0K,GAAWj5N,EAEnD,CAIA,MAAMk9Q,GAAe,KACrB,MAAMC,SACJ,WAAA/pR,CAAYupR,EAASS,EAAQ7uD,EAAYyuD,GACvC7pR,KAAKo7N,WAAaA,EAClBp7N,KAAKkqR,WAAaD,GAAU,CAC1BE,IAAK,EACLC,OAAQ,EACR1hO,KAAM,EACN2hO,MAAO,GAET,IAAKb,EAAS,EACXxpR,KAAK4oR,QAAS5oR,KAAKwpR,SAAWxpR,KAAK0oR,YAAYmB,GAChD,MACD,CACD7pR,KAAKwpR,QAAU,CACbC,SAAUD,EAAQC,SAClBC,QAASF,EAAQE,QACjB/xQ,OAAQ6xQ,EAAQ7xQ,OAChB9K,KAAM28Q,EAAQ38Q,KACdy9Q,cAAed,EAAQc,eAEzB,MAAMb,EAAWI,EAAWT,KAAKI,EAAQC,UACzC,GAAKA,EAAL,CAIAzpR,KAAK4oR,QAAUW,WAAWC,EAASC,GAC9BzpR,KAAK4oR,WACP5oR,KAAK4oR,QAAS5oR,KAAKwpR,SAAWxpR,KAAK0oR,YAAYmB,GAHjD,MAFE7pR,KAAK4oR,QAAS5oR,KAAKwpR,SAAWxpR,KAAK0oR,YAAYmB,EAOnD,CACD,WAAAnB,CAAYmB,GACV,MAAMzlE,EAAOylE,EAAWT,KAAK,YAAa,QAAUS,EAAWT,KAAK,aAAc,QAAUS,EAAWT,KAAK,QAAS,QAAUS,EAAWV,aAC1I,GAAI/kE,GAAM0kE,QAAS,CACjB,MAAMF,EAAUxkE,EAAK0kE,QACrB,MAAM/qR,EAAO6qR,EAAQvxQ,YACrB,MAAMmyQ,EAAU,CACdC,SAAU1rR,EAAK+Y,WACf4yQ,QAAS,SACT/xQ,OAAQ,SACR9K,KAAM,GACNy9Q,cAAe,GAEjB,MAAO,CAAC1B,EAASY,EAClB,CACD,MAAMA,EAAU,CACdC,SAAU,UACVC,QAAS,SACT/xQ,OAAQ,SACR9K,KAAM,GACNy9Q,cAAe,GAEjB,MAAO,CAAC,KAAMd,EACf,EAEH,MAAMe,aACJ,WAAAtqR,CAAYuqR,EAAgBC,EAAmBC,EAAmBb,GAChE7pR,KAAK6pR,WAAaA,EAClB7pR,KAAKysB,MAAQ,CAAC,IAAIu9P,SAASQ,EAAgBC,EAAmBC,EAAmBb,GAClF,CACD,QAAAc,CAASnB,EAASS,EAAQ7uD,GACxB,MAAMwvD,EAAW5qR,KAAKysB,MAAMuN,IAAI,GAChC,IAAK,MAAMj6B,IAAQ,CAAC,WAAY,UAAW,SAAU,OAAQ,iBACtDypR,EAAQzpR,KACXypR,EAAQzpR,GAAQ6qR,EAASpB,QAAQzpR,IAGrC,IAAK,MAAMA,IAAQ,CAAC,MAAO,SAAU,OAAQ,SACvC+X,MAAMmyQ,EAAOlqR,MACfkqR,EAAOlqR,GAAQ6qR,EAASV,WAAWnqR,IAGvC,MAAM8qR,EAAW,IAAIb,SAASR,EAASS,EAAQ7uD,GAAcwvD,EAASxvD,WAAYp7N,KAAK6pR,YAClFgB,EAASjC,UACZiC,EAASjC,QAAUgC,EAAShC,SAE9B5oR,KAAKysB,MAAM9qB,KAAKkpR,EACjB,CACD,OAAAC,GACE9qR,KAAKysB,MAAM0hB,KACZ,CACD,OAAA48O,GACE,OAAO/qR,KAAKysB,MAAMuN,IAAI,EACvB,EAEH,MAAMgxP,YACJ,WAAA/qR,CAAYuqR,EAAgBC,EAAmBC,EAAmBjC,GAChEzoR,KAAKwjN,OAAS,GACdxjN,KAAKirR,aAAe,IAAIV,aAAaC,EAAgBC,EAAmBC,EAAmBjC,GAC3FzoR,KAAKkrR,YAAc,CACpB,CACD,QAAAP,CAASnB,EAASS,EAAQ7uD,GACxBp7N,KAAKirR,aAAaN,SAASnB,EAASS,EAAQ7uD,EAC7C,CACD,OAAA0vD,CAAQtB,GACN,OAAOxpR,KAAKirR,aAAaH,SAC1B,CACD,OAAAK,GACE,MAAMP,EAAW5qR,KAAKirR,aAAaF,UACnC/qR,KAAKkrR,aAAeN,EAASV,WAAWC,IAAMS,EAASV,WAAWE,MACnE,CACD,SAAAgB,CAAUtpR,GACR,IAAKA,EACH,OAEF,MAAM8oR,EAAW5qR,KAAKirR,aAAaF,UACnC,MAAMvxB,EAAWoxB,EAASpB,QAAQ38Q,KAClC,GAAI+9Q,EAAShC,QAAb,CACE,MAAM0B,EAAgBM,EAASpB,QAAQc,cACvC,MAAM1B,EAAUgC,EAAShC,QACzB,MAAMyC,EAAiBzC,EAAQxtD,YAAc,IAC7C,MAAMA,EAAawvD,EAASxvD,YAAc75N,KAAK+D,IAAI,IAAK+lR,GAAkB7xB,EAC1E,MAAM1zB,EAAU8iD,EAAQ9iD,eAAY/kO,EAAY,GAAM6nR,EAAQ9iD,QAC9D,MAAMwlD,EAAQD,EAAiBvlD,EAC/B,MAAMylD,EAAkBhqR,KAAK+D,IAAI,EAAGgmR,GAAS9xB,EAC7C,MAAMl0O,EAAQk0O,EAAW,IACzB,MAAMgyB,EAAgB5C,EAAQzvN,cAAgByvN,EAAQ5gD,cAAc,KAAK,GAAG3uN,MAC5E,IAAK,MAAMiwB,KAAQxnC,EAAIoT,MAAM,cAAe,CAC1C,MAAMu2Q,EAAc7C,EAAQvgD,aAAa/+L,GAAM1nC,KAAK,IACpD,MAAM4hN,EAASolE,EAAQ5gD,cAAcyjD,GACrC,IAAK,MAAMrwN,KAASooJ,EAAQ,CAC1B,MAAMnqM,EAAQ+hD,EAAM/hD,OAASmyQ,EAC7BxrR,KAAKwjN,OAAO7hN,KAAK,CAAC0X,EAAQiM,EAAQglQ,EAAelvD,EAAYmwD,EAAiBnwN,EAAMs8I,QAAS,OAC9F,CACD13M,KAAKwjN,OAAO7hN,KAAK,CAAC,EAAG,EAAG,EAAG,KAAM,MAClC,CACD3B,KAAKwjN,OAAOr1K,KAEb,KArBD,CAsBA,IAAK,MAAM7E,KAAQxnC,EAAIoT,MAAM,cAAe,CAC1C,IAAK,MAAMI,KAAQg0B,EAAKp0B,MAAM,IAC5BlV,KAAKwjN,OAAO7hN,KAAK,CAAC63P,EAAU,IAAMA,EAAUA,EAAUlkP,EAAM,QAE9DtV,KAAKwjN,OAAO7hN,KAAK,CAAC,EAAG,EAAG,EAAG,KAAM,MAClC,CACD3B,KAAKwjN,OAAOr1K,KAPX,CAQF,CACD,OAAAu9O,CAAQxqP,GACN,IAAIyqP,GAAgB,EAClBC,EAAiB,EACjBvyQ,EAAQ,EACRC,EAAS,EACTuyQ,EAAmB,EACnBC,EAAoB,EACtB,IAAIC,EAAW,MACf,IAAIC,EAAc,KAClB,IAAK,IAAI3qR,EAAI,EAAGoH,EAAKzI,KAAKwjN,OAAOtkN,OAAQmC,EAAIoH,EAAIpH,IAAK,CACpD,MAAO68P,EAAY9iC,EAAYmwD,EAAiBj2Q,EAAM22Q,GAASjsR,KAAKwjN,OAAOniN,GAC3E,MAAMwzN,EAAUv/M,IAAS,IACzB,MAAM0nP,EAAcgvB,EAAcT,EAAkBnwD,EACpD,GAAI6wD,EAAJ,CACE5yQ,EAAQ9X,KAAK+D,IAAI+T,EAAOwyQ,GACxBA,EAAmB,EACnBvyQ,GAAUwyQ,EACVA,EAAoB9uB,EACpB2uB,GAAgB,EAChBC,EAAiB,EACjBI,EAAc,KAEf,MACD,GAAIn3D,EACF,GAAIg3D,EAAmB3tB,EAAah9N,EAAU,CAC5C7nB,EAAQ9X,KAAK+D,IAAI+T,EAAOwyQ,GACxBA,EAAmB,EACnBvyQ,GAAUwyQ,EACVA,EAAoB9uB,EACpB2uB,GAAgB,EAChBC,EAAiB,EACjBG,EAAW,KACXC,EAAc,KACxB,KAAe,CACLF,EAAoBvqR,KAAK+D,IAAI03P,EAAa8uB,GAC1CF,EAAiBC,EACjBA,GAAoB3tB,EACpBytB,EAAetqR,CAChB,MAGH,GAAIwqR,EAAmB3tB,EAAah9N,EAApC,CACE5nB,GAAUwyQ,EACVA,EAAoB9uB,EACpB,GAAI2uB,KAAkB,EAAG,CACvBtqR,EAAIsqR,EACJtyQ,EAAQ9X,KAAK+D,IAAI+T,EAAOuyQ,GACxBC,EAAmB,EACnBF,GAAgB,EAChBC,EAAiB,CAC3B,KAAe,CACLvyQ,EAAQ9X,KAAK+D,IAAI+T,EAAOwyQ,GACxBA,EAAmB3tB,CACpB,CACD6tB,EAAW,KACXC,EAAc,KAEf,KAhBD,CAiBAH,GAAoB3tB,EACpB4tB,EAAoBvqR,KAAK+D,IAAI03P,EAAa8uB,EAFzC,CAGF,CACDzyQ,EAAQ9X,KAAK+D,IAAI+T,EAAOwyQ,GACxBvyQ,GAAUwyQ,EAAoB9rR,KAAKkrR,YACnC,MAAO,CACL7xQ,MAAO0wQ,GAAe1wQ,EACtBC,SACAyyQ,WAEH,EAMH,MAAMG,GAAc,UACpB,MAAMC,GAAe,UACrB,MAAMj+C,GAAY,CAChBk+C,IAAK,EACLC,OAAQ,EACRC,QAAS,EACTC,WAAY,EACZC,SAAU,GAEZ,MAAMC,GAAY,IAAIziR,IAAI,CAAC,CAAC,QAAS,CAAC+gQ,EAAM2hB,IAAY3hB,EAAK6a,SAAW7a,EAAK6a,SAAS9yQ,KAAOi4P,GAAO,CAAC,UAAW,CAACA,EAAM2hB,KAAa3hB,EAAK6a,SAAW7a,EAAK6a,SAAS9yQ,KAAOi4P,GAAM6X,MAAgB,IAAK,CAAC,YAAa,CAAC7X,EAAM2hB,IAAY3hB,EAAK3wO,UAAW,CAAC,iBAAkB,CAAC2wO,EAAM2hB,IAAY3hB,EAAK4a,eAAgB,CAAC,QAAS,CAAC5a,EAAM2hB,IAAY3hB,EAAK8a,MAAO,CAAC,UAAW,CAAC9a,EAAM2hB,IAAY3hB,EAAK/uM,QAAS,CAAC,QAAS,CAAC+uM,EAAM2hB,IAAY3hB,EAAK4hB,MAAO,CAAC,cAAe,CAAC5hB,EAAM2hB,IAAY3hB,EAAK6hB,YAAa,CAAC,SAAU,CAAC7hB,EAAM2hB,IAAY3hB,EAAK8hB,OAAQ,CAAC,IAAK,CAAC9hB,EAAM2hB,IAAY3hB,EAAK6a,UAAW,CAAC,OAAQ,CAAC7a,EAAM2hB,IAAY3hB,GAAO,CAAC,MAAO,CAACA,EAAM2hB,IAAY3hB,GAAO,CAAC,IAAK,CAACA,EAAM2hB,IAAYA,KACtpB,MAAMI,GAAW,IAAIC,QACrB,SAASt4N,WAAWtpB,GAClBA,EAAQA,EAAMimO,OACd,OAAIjmO,IAAU,IACL8rN,SAEFnoP,SAASq8B,EAAO,KAAO,CAChC,CACA,SAAS6hP,gBAAgB1vC,EAAM2vC,EAAeC,EAAS,MACrD,IAAIjuR,EAAQq+O,EAAKr+O,MAAMitR,IACvB,IAAKjtR,EACH,OAAO,KAET,IAAKc,GAAQd,EACb,MAAM8uQ,EAAS,CAAC,CACdhuQ,OACAotR,UAAW,IAAMptR,EACjBorC,MAAO,EACPr1B,GAAI,KACJs3Q,SAAU,KACVhyC,SAAUlN,GAAUk+C,MAEtB,IAAIr7Q,EAAMhR,EAAKb,OACf,MAAO6R,EAAMusO,EAAKp+O,OAAQ,CACxB,MAAMyqN,EAAO54M,EACb,MAAMuE,EAAOgoO,EAAK30O,OAAOoI,KACzB,GAAIuE,IAAS,IAAK,CAChBrW,EAAQq+O,EAAKn4O,MAAM4L,GAAK9R,MAAMktR,IAC9B,IAAKltR,EAAO,CACVd,KAAK,yCACL,OAAO,IACR,CACD4vQ,EAAO/zO,IAAI,GAAGmR,MAAQspB,WAAWx1D,EAAM,IACvC8R,GAAO9R,EAAM,GAAGC,OAAS,EACzB,QACD,CACD,IAAIk8O,EACJ,OAAQkC,EAAK30O,OAAOoI,IAClB,IAAK,IACH,IAAKk8Q,EACH,OAAO,KAETl8Q,IACAqqO,EAAWlN,GAAUm+C,OACrB,MACF,IAAK,IACHt7Q,IACAqqO,EAAWlN,GAAUo+C,QACrB,MACF,IAAK,IACH,GAAIY,EAAQ,CACV/uR,KAAK,0FACL,OAAO,IACR,CACDi9O,EAAWlN,GAAUq+C,WACrB,MACF,IAAK,IACH,GAAIW,EAAQ,CACV/uR,KAAK,4FACL,OAAO,IACR,CACDi9O,EAAWlN,GAAUs+C,SACrB,MACF,QACEpxC,EAAWlN,GAAUk+C,IACrB,MAEJntR,EAAQq+O,EAAKn4O,MAAM4L,GAAK9R,MAAMitR,IAC9B,IAAKjtR,EACH,OAEDc,GAAQd,EACT8R,GAAOhR,EAAKb,OACZ6uQ,EAAOpsQ,KAAK,CACV5B,OACAotR,UAAW7vC,EAAKn4O,MAAMwkN,EAAM54M,GAC5BqqO,WACAjwM,MAAO,EACPr1B,GAAI,KACJs3Q,SAAU,MAEb,CACD,OAAOrf,CACT,CACA,SAASyB,WAAWzE,EAAMsiB,EAAW/vC,EAAM2vC,EAAgB,KAAMK,EAAW,MAC1E,MAAMvf,EAASif,gBAAgB1vC,EAAM2vC,GACrC,IAAKlf,EACH,OAAO,KAET,MAAMziQ,EAAKmhR,GAAUn+R,IAAIy/Q,EAAO,GAAGhuQ,MACnC,IAAIsB,EAAI,EACR,IAAIksR,EACJ,GAAIjiR,EAAI,CACNiiR,EAAc,KACdxiB,EAAO,CAACz/P,EAAGy/P,EAAMsiB,IACjBhsR,EAAI,CACR,KAAS,CACLksR,EAAcF,IAAc,KAC5BtiB,EAAO,CAACsiB,GAAatiB,EACtB,CACD,IAAK,IAAItiQ,EAAKslQ,EAAO7uQ,OAAQmC,EAAIoH,EAAIpH,IAAK,CACxC,MAAMtB,KACJA,EAAIotR,UACJA,EAAS/xC,SACTA,EAAQjwM,MACRA,GACE4iO,EAAO1sQ,GACX,MAAMiwP,EAAQ,GACd,IAAK,MAAM5nN,KAAQqhO,EAAM,CACvB,IAAKrhO,EAAK8jP,YACR,SAEF,IAAIjkP,EAAU4hN,EACd,GAAImiC,EAAU,CACZniC,EAAS2hC,GAASx+R,IAAIo7C,GACtB,IAAKyhN,EAAQ,CACXA,EAAS,IAAInhP,IACb8iR,GAASn/Q,IAAI+7B,EAAMyhN,EACpB,CACD5hN,EAAW4hN,EAAO78P,IAAI6+R,EACvB,CACD,IAAK5jP,EAAU,CACb,OAAQ6xM,GACN,KAAKlN,GAAUk+C,IACb7iP,EAAWG,EAAK64O,IAAoBxiR,EAAM,OAC1C,MACF,KAAKmuO,GAAUm+C,OACb9iP,EAAWG,EAAK64O,IAAoBxiR,EAAM,MAC1C,MACF,KAAKmuO,GAAUo+C,QACb/iP,EAAWG,EAAK44O,IAAqBviR,GACrCwpC,EAAWA,EAASkkP,iBAAmBlkP,EAASA,SAAW,CAACA,GAC5D,MACF,QACE,MAEA+jP,GACFniC,EAAOx9O,IAAIw/Q,EAAW5jP,EAEzB,CACGA,EAASrqC,OAAS,GACpBoyP,EAAM3vP,KAAK4nC,EAEd,CACD,GAAI+nN,EAAMpyP,SAAW,GAAMquR,GAAelsR,IAAM,EAUhD0pQ,EAAO2iB,SAASviP,GAASmmN,EAAMziO,QAAO6a,GAAQyB,EAAQzB,EAAKxqC,SAAQiW,KAAIu0B,GAAQA,EAAKyB,KAAUmmN,EAAMq8B,WAVpG,CACE,MAAM3+Q,EAASq+Q,EAAUrK,MACzBqK,EAAYr+Q,EACZ,IAAKq+Q,EACH,OAAO,KAEThsR,GAAK,EACL0pQ,EAAO,CAACsiB,EAET,CAEF,CACD,OAAItiB,EAAK7rQ,SAAW,EACX,KAEF6rQ,CACT,CACA,SAAS6iB,eAAe7iB,EAAMsiB,EAAW/vC,GACvC,MAAMywB,EAASif,gBAAgB1vC,GAC/B,IAAKywB,EACH,OAAO,KAET,GAAIA,EAAO8f,MAAKtmR,GAAKA,EAAE6zO,WAAalN,GAAUm+C,SAC5C,OAAO,KAET,MAAM/gR,EAAKmhR,GAAUn+R,IAAIy/Q,EAAO,GAAGhuQ,MACnC,IAAIsB,EAAI,EACR,GAAIiK,EAAI,CACNy/P,EAAOz/P,EAAGy/P,EAAMsiB,GAChBhsR,EAAI,CACR,MACI0pQ,EAAOsiB,GAAatiB,EAEtB,IAAK,IAAItiQ,EAAKslQ,EAAO7uQ,OAAQmC,EAAIoH,EAAIpH,IAAK,CACxC,MAAMtB,KACJA,EAAIq7O,SACJA,EAAQjwM,MACRA,GACE4iO,EAAO1sQ,GACX,IAAKqsR,SAASviP,GAAQ,CACpB4iO,EAAO1sQ,GAAG8pC,MAAQ,EAClB,OAAO4/N,EAAK+iB,YAAY/f,EAAO5oQ,MAAM9D,GACtC,CACD,IAAIkoC,EACJ,OAAQ6xM,GACN,KAAKlN,GAAUk+C,IACb7iP,EAAWwhO,EAAKwX,IAAoBxiR,EAAM,OAC1C,MACF,KAAKmuO,GAAUm+C,OACb9iP,EAAWwhO,EAAKwX,IAAoBxiR,EAAM,MAC1C,MACF,KAAKmuO,GAAUo+C,QACb/iP,EAAWwhO,EAAKuX,IAAqBviR,GACrCwpC,EAAWA,EAASkkP,iBAAmBlkP,EAASA,SAAW,CAACA,GAC5D,MACF,QACE,MAEJ,GAAIA,EAASrqC,SAAW,EACtB,OAAO6rQ,EAAK+iB,YAAY/f,EAAO5oQ,MAAM9D,IAEvC,KAAI8pC,EAAQ5B,EAASrqC,QAOd,CACL6uQ,EAAO1sQ,GAAG8pC,MAAQA,EAAQ5B,EAASrqC,OACnC,OAAO6rQ,EAAK+iB,YAAY/f,EAAO5oQ,MAAM9D,GACtC,CAV4B,CAC3B,MAAMiuQ,EAAQ/lO,EAAS4B,GACvB,IAAKmkO,EAAMke,YAAa,CACtBrvR,KAAK,+BACL,OAAO,IACR,CACD4sQ,EAAOuE,CACb,CAIG,CACD,OAAO,IACT,CASA,MAAMye,GAAkBriR,SACxB,MAAMsiR,GAActiR,SACpB,MAAMuiR,GAAkBviR,SACxB,MAAMwiR,GAAYxiR,OAAO,aACzB,MAAMyiR,GAAkBziR,SACxB,MAAM0iR,GAAa1iR,SACnB,MAAM2iR,GAAgB3iR,SACtB,MAAM4iR,GAA6B5iR,SACnC,MAAM6iR,GAAgB7iR,SACtB,MAAM8iR,GAAsB9iR,SAC5B,MAAM+iR,GAAe/iR,SACrB,MAAMgjR,GAAOhjR,SACb,MAAMijR,GAAWjjR,SACjB,MAAMkjR,GAAUljR,OAAO,UACvB,MAAMmjR,GAA2BnjR,SACjC,MAAMojR,GAAiBpjR,SACvB,MAAMqjR,GAAarjR,SACnB,IAAIsjR,GAAM,EACV,MAAMC,GAAcxJ,GAAaG,SAAS5tP,GAC1C,MAAMk3P,UACJ,WAAAjvR,CAAYkvR,EAAMpvR,EAAMqvR,EAAc,OACpCpvR,KAAKikR,IAAgBkL,EACrBnvR,KAAKkkR,IAAankR,EAClBC,KAAKyuR,IAAgBW,EACrBpvR,KAAK4uR,IAAW,KAChB5uR,KAAKkuR,IAAa,GAClBluR,KAAKulR,IAAQ,GAAGxlR,IAAOivR,OACvBhvR,KAAKkjR,IAAe,IACrB,CACD,eAAIsK,GACF,OAAO,IACR,CACD,oBAAIC,GACF,OAAO,KACR,CACD,WAAAK,CAAY94Q,GACV,IAAI+1P,EAAO/qQ,KACT0pC,EAAO,KACT,IAAK,MAAM3pC,KACTA,EAAIorC,MACJA,KACGn2B,EAAM,CACT,IAAK,IAAI3T,EAAI,EAAGoH,EAAKilR,SAASviP,GAASA,EAAQ,EAAG9pC,GAAKoH,EAAIpH,IAAK,CAC9D,MAAM8tR,EAAOpkB,EAAKkZ,MAAkBgL,IAAe,EAAIlkB,EAAKkZ,IAC5Dv6O,EAAO,IAAI2lP,UAAUF,EAAMpvR,GAC3BgrQ,EAAKuW,IAAc53O,EACpB,CACDqhO,EAAOrhO,CACR,CACD,OAAOA,CACR,CACD,CAAC06O,IAAU9U,GACT,IAAKtvQ,KAAKyuR,MAAkBzuR,KAAKqkR,IAAe/U,GAC9C,OAAO,MAET,MAAMvvQ,EAAOuvQ,EAAM4U,IACnB,MAAMx6O,EAAO1pC,KAAKD,GAClB,KAAI2pC,aAAgB4lP,gBAKb,CACD5lP,IAAS,MACX1pC,KAAK0kR,IAAch7O,GAErB1pC,KAAKD,GAAQuvQ,EACbtvQ,KAAKshR,IAAchS,GACnB,OAAO,IACR,CAXC,GAAI5lO,EAAK/nC,KAAK2tQ,GAAQ,CACpBtvQ,KAAKshR,IAAchS,GACnB,OAAO,IACR,CASH,IAAIt3O,EAAK,GACLh4B,KAAKg4B,GACPA,EAAK,SAASh4B,KAAKg4B,MACVh4B,KAAKD,OACdi4B,EAAK,WAAWh4B,KAAKD,QAAQC,KAAKmxC,EAAE3xC,UAEtCrB,KAAK,eAAe6B,KAAKkkR,OAAclsP,yBAA0Bj4B,OACjE,OAAO,KACR,CACD,CAACskR,IAAe/U,GACd,OAAOtvQ,KAAKtR,eAAe4gR,EAAM4U,MAAe5U,EAAM2U,MAAkBjkR,KAAKikR,GAC9E,CACD,CAACN,MACC,OAAO,KACR,CACD,CAACvC,MACC,OAAO,KACR,CACD,CAACmC,MACC,OAAO,KACR,CACD,CAACC,MACC,OAAO,KACR,CACD,CAACgB,MACKxkR,KAAKuvR,MACPvvR,KAAKijR,MAAoBjB,IAAQwN,UAAUrhP,KAE9C,CACD,CAACs2O,MACCzkR,KAAKijR,MAAoBjB,IAAQwN,UAAU7tR,KAAK3B,KAAKuvR,KACtD,CACD,CAACzK,IAAQxhE,GACHtjN,KAAKg4B,IAAMh4B,KAAKikR,MAAkBwB,GAAarrP,SAASpC,IAC1DsrL,EAAI31M,IAAI3N,KAAKg4B,GAAIh4B,KAEpB,CACD,CAACijR,MACC,OAAOjjR,KAAKkjR,IAAa9oP,QAC1B,CACD,CAACwpP,MACC,OAAO,KACR,CACD,CAACC,MACC,OAAO,KACR,CACD,CAACvC,IAAchS,GACbA,EAAMsf,IAAW5uR,KACjBA,KAAKkuR,IAAWvsR,KAAK2tQ,IAChBA,EAAM4T,KAAgBljR,KAAKkjR,MAC9B5T,EAAM4T,IAAeljR,KAAKkjR,IAE7B,CACD,CAACwB,IAAcpV,GACb,MAAMjuQ,EAAIrB,KAAKkuR,IAAWr9N,QAAQy+M,GAClCtvQ,KAAKkuR,IAAW7/D,OAAOhtN,EAAG,EAC3B,CACD,CAAC8hR,MACC,OAAOnjR,KAAKtR,eAAe,QAC5B,CACD,CAACs2R,IAAW/6Q,GAAK,CACjB,CAACq6Q,IAASr6Q,GAAK,CACf,CAACg4Q,MAAe,CAChB,CAACT,IAAQ96C,UACA1mO,KAAKyuR,IACZ,GAAIzuR,KAAK0hR,IAAW,CAClBh7C,EAAQ+oD,MAAMzvR,KAAK0hR,YACZ1hR,KAAK0hR,GACb,CACF,CACD,CAAC2B,IAAU/T,GACT,OAAOtvQ,KAAKkuR,IAAWr9N,QAAQy+M,EAChC,CACD,CAACgU,IAAWjiR,EAAGiuQ,GACbA,EAAMsf,IAAW5uR,KACjBA,KAAKkuR,IAAW7/D,OAAOhtN,EAAG,EAAGiuQ,IACxBA,EAAM4T,KAAgBljR,KAAKkjR,MAC9B5T,EAAM4T,IAAeljR,KAAKkjR,IAE7B,CACD,CAACY,MACC,OAAQ9jR,KAAKD,IACd,CACD,CAACikR,MACC,MAAO,EACR,CACD,CAACkB,MACC,OAAIllR,KAAKkuR,IAAWhvR,SAAW,EACtBc,KAAK6hR,IAEP7hR,KAAKkuR,IAAW/4Q,KAAIxP,GAAKA,EAAEu/Q,QAAUtjR,KAAK,GAClD,CACD,IAAKqsR,MACH,MAAM10D,EAAQprO,OAAOuhS,eAAe1vR,MACpC,IAAKu5N,EAAMy0D,YAAa,CACtB,MAAMvgB,EAAal0C,EAAMy0D,YAAc,IAAI9+Q,IAC3C,IAAK,MAAMnP,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,GAAIA,KAAKD,KAAU,MAAQC,KAAKD,aAAiBmvR,WAAalvR,KAAKD,aAAiBuvR,eAClF,MAEF7hB,EAAWr+P,IAAIrP,EAChB,CACF,CACD,OAAOR,OAAOS,KAAMiuR,GAAiB10D,EAAMy0D,YAC5C,CACD,CAACtK,IAAe10Q,GACd,IAAI06B,EAAO1pC,KACX,MAAO0pC,EAAM,CACX,GAAIA,IAAS16B,EACX,OAAO,KAET06B,EAAOA,EAAKs5O,KACb,CACD,OAAO,KACR,CACD,CAACA,MACC,OAAOhjR,KAAK4uR,GACb,CACD,CAAC7L,MACC,OAAO/iR,KAAKgjR,KACb,CACD,CAACJ,IAAc7iR,EAAO,MACpB,OAAKA,EAGEC,KAAKD,GAFHC,KAAKkuR,GAGf,CACD,CAACnM,MACC,MAAM6N,EAASzhS,OAAO0d,OAAO,MACzB7L,KAAK6hR,MACP+N,EAAO/N,SAAW7hR,KAAK6hR,KAEzB,IAAK,MAAM9hR,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,MAAMR,EAAQQ,KAAKD,GACfP,IAAU,OAGVA,aAAiB0vR,UACnBU,EAAO7vR,GAAQP,EAAMuiR,MACZviR,aAAiB8vR,eACrB9vR,EAAM2Q,YACTy/Q,EAAO7vR,GAAQP,EAAMmwQ,QAGvBigB,EAAO7vR,GAAQP,EAElB,CACD,OAAOowR,CACR,CACD,CAACtK,MACC,OAAO,IACR,CACD,CAACF,MACC,OAAO4C,WAAWE,KACnB,CACD,EAAErF,MACA,IAAK,MAAMn5O,KAAQ1pC,KAAK4iR,YAChBl5O,CAET,CACD,EAAE4kP,IAA4Bz/P,EAAQixP,GACpC,IAAK,MAAMp2O,KAAQ1pC,KAAK6iR,MACtB,IAAKh0P,GAAUixP,IAAYjxP,EAAOjhB,IAAI87B,EAAKw6O,KAAa,CACtD,MAAM2L,EAAiB7vR,KAAKqiR,MAC5B,MAAM94C,EAAM7/L,EAAK07O,IAASyK,GACrBtmD,EAAI4+C,UACPnoR,KAAKgiR,IAAQ8N,YAAcpmP,SAEvB6/L,CACP,CAEJ,CACD,CAAC24C,MACC,OAAO,IACR,CACD,CAACb,IAAU+G,EAAMj1D,GACfnzN,KAAKgiR,IAAQz4O,SAAS5nC,KAAKymR,EAC5B,CACD,CAAC/F,MAAwB,CACzB,CAACd,KAAiB1yP,OAChBA,EAAS,KAAIixP,QACbA,EAAU,OAEV,GAAK9/Q,KAAKgiR,IAAQ+N,UAEX,CACL,MAAMF,EAAiB7vR,KAAKqiR,MAC5B,MAAM94C,EAAMvpO,KAAKgiR,IAAQ8N,YAAY1K,IAASyK,GAC9C,IAAKtmD,EAAI4+C,QACP,OAAO5+C,EAELA,EAAI6+C,MACNpoR,KAAKqhR,IAAU93C,EAAI6+C,KAAM7+C,EAAIpW,aAExBnzN,KAAKgiR,IAAQ8N,WACrB,MAXC9vR,KAAKgiR,IAAQ+N,UAAY/vR,KAAKsuR,IAA4Bz/P,EAAQixP,GAYpE,MAAO,KAAM,CACX,MAAMpxQ,EAAM1O,KAAKgiR,IAAQ+N,UAAU9+P,OACnC,GAAIviB,EAAIiO,KACN,MAEF,MAAM4sN,EAAM76N,EAAIlP,MAChB,IAAK+pO,EAAI4+C,QACP,OAAO5+C,EAELA,EAAI6+C,MACNpoR,KAAKqhR,IAAU93C,EAAI6+C,KAAM7+C,EAAIpW,KAEhC,CACDnzN,KAAKgiR,IAAQ+N,UAAY,KACzB,OAAO/H,WAAWE,KACnB,CACD,CAACnD,IAAmBtX,GAClBztQ,KAAK8uR,IAAkB,IAAI5/Q,IAAI/gB,OAAOgU,KAAKsrQ,GAC5C,CACD,CAAC+gB,IAAqBwB,GACpB,MAAMC,EAAUjwR,KAAKiuR,IACrB,MAAMiC,EAAUlwR,KAAK8uR,IACrB,MAAO,IAAIkB,GAAiBnhQ,QAAOtnB,GAAK0oR,EAAQriR,IAAIrG,KAAO2oR,EAAQtiR,IAAIrG,IACxE,CACD,CAACq9Q,IAAoBthE,EAAK6sE,EAAY,IAAIjhR,KACxC,IAAK,MAAMogQ,KAAStvQ,KAAKkuR,IACvB5e,EAAMuf,IAA0BvrE,EAAK6sE,EAExC,CACD,CAACtB,IAA0BvrE,EAAK6sE,GAC9B,MAAM52D,EAAQv5N,KAAKuuR,IAAejrE,EAAK6sE,GACnC52D,EACFv5N,KAAK+tR,IAAiBx0D,EAAOjW,EAAK6sE,GAElCnwR,KAAK4kR,IAAoBthE,EAAK6sE,EAEjC,CACD,CAAC5B,IAAejrE,EAAK6sE,GACnB,MAAMC,IACJA,EAAGC,QACHA,GACErwR,KACJ,IAAKowR,IAAQC,EACX,OAAO,KAET,IAAI92D,EAAQ,KACZ,IAAI+2D,EAAgB,KACpB,IAAIt4P,EAAK,KACT,IAAIppB,EAAMwhR,EACV,GAAIC,EAAS,CACXzhR,EAAMyhR,EACFA,EAAQtxR,WAAW,UAAYsxR,EAAQnH,SAAS,KAClDoH,EAAgBD,EAAQlrR,MAAM,GAAiB,GACtCkrR,EAAQtxR,WAAW,WAAasxR,EAAQnH,SAAS,KAC1DoH,EAAgBD,EAAQlrR,MAAM,GAAkB,GACvCkrR,EAAQtxR,WAAW,KAC5Bi5B,EAAKq4P,EAAQlrR,MAAM,GACVkrR,EAAQtxR,WAAW,QAC5Bi5B,EAAKq4P,EAAQlrR,MAAM,GAEtB,MAAUirR,EAAIrxR,WAAW,KACxBi5B,EAAKo4P,EAAIjrR,MAAM,GAEfmrR,EAAgBF,EAElBpwR,KAAKowR,IAAMpwR,KAAKqwR,QAAU,GAC1B,GAAIr4P,EACFuhM,EAAQjW,EAAIh1N,IAAI0pC,OACX,CACLuhM,EAAQi2C,WAAWlsD,EAAIh1N,IAAIq2R,IAAQ3kR,KAAMswR,EAAe,KAAM,OAC1D/2D,IACFA,EAAQA,EAAM,GAEjB,CACD,IAAKA,EAAO,CACVp7N,KAAK,sCAAsCyQ,MAC3C,OAAO,IACR,CACD,GAAI2qN,EAAM2qD,MAAelkR,KAAKkkR,IAAY,CACxC/lR,KAAK,iCAAiCo7N,EAAM2qD,WAAkBlkR,KAAKkkR,QACnE,OAAO,IACR,CACD,GAAIiM,EAAUviR,IAAI2rN,GAAQ,CACxBp7N,KAAK,2CACL,OAAO,IACR,CACDgyR,EAAU/gR,IAAImqN,GACd,MAAMg3D,EAAah3D,EAAMg1D,IAAejrE,EAAK6sE,GACzCI,GACFh3D,EAAMw0D,IAAiBwC,EAAYjtE,EAAK6sE,GAE1C52D,EAAMqrD,IAAoBthE,EAAK6sE,GAC/BA,EAAU7gR,OAAOiqN,GACjB,OAAOA,CACR,CACD,CAACw0D,IAAiBx0D,EAAOjW,EAAK6sE,GAC5B,GAAIA,EAAUviR,IAAI2rN,GAAQ,CACxBp7N,KAAK,2CACL,MACD,EACI6B,KAAK6hR,KAAatoD,EAAMsoD,MAC3B7hR,KAAK6hR,IAAYtoD,EAAMsoD,KAEzB,MAAM2O,EAAe,IAAIthR,IAAIihR,GAC7BK,EAAaphR,IAAImqN,GACjB,IAAK,MAAMk3D,KAAiBzwR,KAAKwuR,IAAqBj1D,EAAMu1D,KAAkB,CAC5E9uR,KAAKywR,GAAiBl3D,EAAMk3D,GACxBzwR,KAAK8uR,KACP9uR,KAAK8uR,IAAgB1/Q,IAAIqhR,EAE5B,CACD,IAAK,MAAM1wR,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,GAAIA,KAAKiuR,IAAiBrgR,IAAI7N,GAC5B,SAEF,MAAMP,EAAQQ,KAAKD,GACnB,MAAM2wR,EAAan3D,EAAMx5N,GACzB,GAAIP,aAAiB8vR,eAArB,CACE,IAAK,MAAMhgB,KAAS9vQ,EAAM0uR,IACxB5e,EAAMuf,IAA0BvrE,EAAK6sE,GAEvC,IAAK,IAAI9uR,EAAI7B,EAAM0uR,IAAWhvR,OAAQuJ,EAAKioR,EAAWxC,IAAWhvR,OAAQmC,EAAIoH,EAAIpH,IAAK,CACpF,MAAMiuQ,EAAQ/1C,EAAM20D,IAAW7sR,GAAGsgR,MAClC,IAAIniR,EAAMmC,KAAK2tQ,GAKb,MAJAA,EAAMsf,IAAW5uR,KACjBA,KAAKkuR,IAAWvsR,KAAK2tQ,GACrBA,EAAMuf,IAA0BvrE,EAAK6sE,EAIxC,CAEF,MACD,GAAI3wR,IAAU,MAOd,GAAIkxR,IAAe,KAAM,CACvB,MAAMphB,EAAQohB,EAAW/O,MACzBrS,EAAMsf,IAAW5uR,KACjBA,KAAKD,GAAQuvQ,EACbtvQ,KAAKkuR,IAAWvsR,KAAK2tQ,GACrBA,EAAMuf,IAA0BvrE,EAAK6sE,EACtC,MAbD,CACE3wR,EAAMolR,IAAoBthE,EAAK6sE,GAC3BO,GACFlxR,EAAMuuR,IAAiB2C,EAAYptE,EAAK6sE,EAG3C,CAQF,CACF,CACD,OAAQhC,IAAiB5/R,GACvB,OAAIoV,MAAM2J,QAAQ/e,GACTA,EAAI4mB,KAAI5N,GAAK2nR,UAAUf,IAAiB5mR,YAEtChZ,IAAQ,UAAYA,IAAQ,KAC9BJ,OAAOktD,OAAO,CAAE,EAAE9sD,GAEpBA,CACR,CACD,CAACozR,MACC,MAAMlzQ,EAAQtgB,OAAO0d,OAAO1d,OAAOuhS,eAAe1vR,OAClD,IAAK,MAAM2wR,KAAWxiS,OAAOyiS,sBAAsB5wR,MACjD,IACEyO,EAAMkiR,GAAW3wR,KAAK2wR,EAC9B,CAAQ,MACApxR,OAAOkP,EAAOkiR,EAAS3wR,KAAK2wR,GAC7B,CAEHliR,EAAM82Q,IAAQ,GAAG92Q,EAAMy1Q,MAAa8K,OACpCvgR,EAAMy/Q,IAAa,GACnB,IAAK,MAAMnuR,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,GAAIA,KAAKiuR,IAAiBrgR,IAAI7N,GAAO,CACnC0O,EAAM1O,GAAQmvR,UAAUf,IAAiBnuR,KAAKD,IAC9C,QACD,CACD,MAAMP,EAAQQ,KAAKD,GACnB0O,EAAM1O,GAAQP,aAAiB8vR,eAAiB,IAAIA,eAAe9vR,EAAMkvR,KAAS,IACnF,CACD,IAAK,MAAMpf,KAAStvQ,KAAKkuR,IAAY,CACnC,MAAMnuR,EAAOuvQ,EAAM4U,IACnB,MAAM2M,EAAcvhB,EAAMqS,MAC1BlzQ,EAAMy/Q,IAAWvsR,KAAKkvR,GACtBA,EAAYjC,IAAWngR,EACnBA,EAAM1O,KAAU,KAClB0O,EAAM1O,GAAQ8wR,EAEdpiR,EAAM1O,GAAMmuR,IAAWvsR,KAAKkvR,EAE/B,CACD,OAAOpiR,CACR,CACD,CAACm0Q,IAAc7iR,EAAO,MACpB,OAAKA,EAGEC,KAAKkuR,IAAWr/P,QAAOlpB,GAAKA,EAAEu+Q,MAAenkR,IAF3CC,KAAKkuR,GAGf,CACD,CAAC5L,IAAqBviR,GACpB,OAAOC,KAAKD,EACb,CACD,CAACwiR,IAAoBxiR,EAAM+wR,EAAgBlrR,EAAQ,MACjD,OAAOjC,MAAMC,KAAK5D,KAAKwiR,IAAsBziR,EAAM+wR,EAAgBlrR,GACpE,CACD,EAAE48Q,IAAsBziR,EAAM+wR,EAAgBlrR,EAAQ,MACpD,GAAI7F,IAAS,SAAb,CAIA,IAAK,MAAMuvQ,KAAStvQ,KAAKkuR,IAAY,CAC/B5e,EAAM4U,MAAenkR,UACjBuvQ,GAEJA,EAAMvvQ,OAASA,UACXuvQ,IAEJwhB,GAAkBxhB,EAAMwU,eACnBxU,EAAMkT,IAAsBziR,EAAM+wR,EAAgB,OAE5D,CACGlrR,GAAS5F,KAAKiuR,IAAiBrgR,IAAI7N,WAC/B,IAAIgxR,aAAa/wR,KAAMD,EAAMC,KAAKD,IAbzC,YAFOC,KAAK4uR,GAiBd,EAEH,MAAMU,eACJ,WAAArvR,CAAYqF,EAAM2xP,UAChBj3P,KAAK0uR,IAAQppR,EACbtF,KAAKkuR,IAAa,EACnB,CACD,eAAIV,GACF,OAAO,KACR,CACD,oBAAIC,GACF,OAAO,IACR,CACD,IAAA9rR,CAAK2tQ,GACH,MAAMh7P,EAAMtU,KAAKkuR,IAAWhvR,OAC5B,GAAIoV,GAAOtU,KAAK0uR,IAAO,CACrB1uR,KAAKkuR,IAAWvsR,KAAK2tQ,GACrB,OAAO,IACR,CACDnxQ,KAAK,eAAemxQ,EAAM4U,6BAAoClkR,KAAK0uR,gBACnE,OAAO,KACR,CACD,OAAAv+Q,GACE,OAAOnQ,KAAKkuR,IAAWhvR,SAAW,CACnC,CACD,IAAAywQ,GACE,OAAO3vQ,KAAKkuR,IAAWhvR,SAAW,EAAIc,KAAKkuR,IAAW,GAAGnM,MAAW/hR,KAAKkuR,IAAW/4Q,KAAI5N,GAAKA,EAAEw6Q,OAChG,CACD,CAACJ,MACC,MAAMlzQ,EAAQ,IAAI6gR,eAAetvR,KAAK0uR,KACtCjgR,EAAMy/Q,IAAaluR,KAAKkuR,IAAW/4Q,KAAIxP,GAAKA,EAAEg8Q,QAC9C,OAAOlzQ,CACR,CACD,YAAI86B,GACF,OAAOvpC,KAAKkuR,GACb,CACD,KAAA1/Q,GACExO,KAAKkuR,IAAWhvR,OAAS,CAC1B,EAEH,MAAM6xR,aACJ,WAAA9wR,CAAYypC,EAAM3pC,EAAMP,GACtBQ,KAAK4uR,IAAWllP,EAChB1pC,KAAKkkR,IAAankR,EAClBC,KAAK6hR,IAAYriR,EACjBQ,KAAK4hR,IAAa,MAClB5hR,KAAKulR,IAAQ,YAAYyJ,IAC1B,CACD,CAAChM,MACC,OAAOhjR,KAAK4uR,GACb,CACD,CAACnL,MACC,OAAO,IACR,CACD,CAAChB,MACC,OAAOziR,KAAK6hR,IAAUzQ,MACvB,CACD,CAAC4T,IAAWxlR,GACVA,EAAQA,EAAMA,OAAS,GACvBQ,KAAK6hR,IAAYriR,EAAMsE,UACxB,CACD,CAACohR,MACC,OAAOllR,KAAK6hR,GACb,CACD,CAAC6B,IAAe10Q,GACd,OAAOhP,KAAK4uR,MAAa5/Q,GAAUhP,KAAK4uR,IAASlL,IAAe10Q,EACjE,EAEH,MAAMqgR,kBAAkBH,UACtB,WAAAjvR,CAAYkvR,EAAMpvR,EAAM0tQ,EAAa,CAAA,GACnCrtQ,MAAM+uR,EAAMpvR,GACZC,KAAK6hR,IAAY,GACjB7hR,KAAKouR,IAAc,KACnB,GAAIruR,IAAS,QAAS,CACpB,MAAMoV,EAAM,IAAInL,IAChBhK,KAAKguR,IAAe74Q,EACpB,IAAK,MAAOw4P,EAAUnuQ,KAAUrR,OAAOqpE,QAAQi2M,GAC7Ct4P,EAAIxH,IAAIggQ,EAAU,IAAIojB,aAAa/wR,KAAM2tQ,EAAUnuQ,IAErD,GAAIiuQ,EAAW/+Q,eAAey1R,IAAgB,CAC5C,MAAM6M,EAAWvjB,EAAW0W,IAAe8M,IAAID,SAC3CA,SAAajwR,IACXiwR,IAAa,YACfhxR,KAAKouR,IAAc,MACV4C,IAAa,cACtBhxR,KAAKouR,IAAc,MAGxB,CACF,CACDpuR,KAAK4hR,IAAa,KACnB,CACD,CAACyD,IAAWpsQ,GACV,MAAMi4Q,EAAUlxR,KAAKkkR,IACrB,GAAIgN,IAAY,QAAS,CACvBj4Q,EAAItX,KAAK+U,kBAAkB1W,KAAK6hR,MAChC,MACD,CACD,MAAMsP,EAAcroR,mBAAmBooR,GACvC,MAAMnU,EAAS/8Q,KAAKikR,MAAkBgL,GAAc,OAAS,GAC7Dh2Q,EAAItX,KAAK,IAAIo7Q,IAASoU,KACtB,IAAK,MAAOpxR,EAAMP,KAAUQ,KAAKguR,IAAax2N,UAAW,CACvD,MAAM45N,EAAWtoR,mBAAmB/I,GACpCkZ,EAAItX,KAAK,IAAIyvR,MAAa16Q,kBAAkBlX,EAAMqiR,QACnD,CACG7hR,KAAKouR,MAAgB,OACnBpuR,KAAKouR,IACPn1Q,EAAItX,KAAK,6BAETsX,EAAItX,KAAK,8BAGb,GAAK3B,KAAK6hR,KAAa7hR,KAAKkuR,IAAWhvR,SAAW,EAAlD,CAIA+Z,EAAItX,KAAK,KACT,GAAI3B,KAAK6hR,WACI7hR,KAAK6hR,MAAc,SAC5B5oQ,EAAItX,KAAK+U,kBAAkB1W,KAAK6hR,MAEhC7hR,KAAK6hR,IAAUwD,IAAWpsQ,QAG5B,IAAK,MAAMq2P,KAAStvQ,KAAKkuR,IACvB5e,EAAM+V,IAAWpsQ,GAGrBA,EAAItX,KAAK,KAAKo7Q,IAASoU,KAbtB,MAFCl4Q,EAAItX,KAAK,KAgBZ,CACD,CAACyiR,IAAU9U,GACT,GAAItvQ,KAAK6hR,IAAW,CAClB,MAAMn4O,EAAO,IAAI2lP,UAAUrvR,KAAKikR,IAAe,SAC/CjkR,KAAKshR,IAAc53O,GACnBA,EAAKm4O,IAAY7hR,KAAK6hR,IACtB7hR,KAAK6hR,IAAY,EAClB,CACD7hR,KAAKshR,IAAchS,GACnB,OAAO,IACR,CACD,CAACgV,IAASxiR,GACR9B,KAAK6hR,KAAa//Q,CACnB,CACD,CAACmgR,MACC,GAAIjiR,KAAK6hR,KAAa7hR,KAAKkuR,IAAWhvR,OAAS,EAAG,CAChD,MAAMwqC,EAAO,IAAI2lP,UAAUrvR,KAAKikR,IAAe,SAC/CjkR,KAAKshR,IAAc53O,GACnBA,EAAKm4O,IAAY7hR,KAAK6hR,WACf7hR,KAAK6hR,GACb,CACF,CACD,CAACuD,MACC,OAAIplR,KAAKkkR,MAAe,QACf8D,WAAWG,QAAQ,CACxBpoR,KAAM,QACNP,MAAOQ,KAAK6hR,MAGTmG,WAAWE,KACnB,CACD,CAACtF,IAAc7iR,EAAO,MACpB,OAAKA,EAGEC,KAAKkuR,IAAWr/P,QAAOlpB,GAAKA,EAAEu+Q,MAAenkR,IAF3CC,KAAKkuR,GAGf,CACD,CAAC9L,MACC,OAAOpiR,KAAKguR,GACb,CACD,CAAC1L,IAAqBviR,GACpB,MAAMP,EAAQQ,KAAKguR,IAAa1/R,IAAIyR,GACpC,OAAIP,SAAUuB,EACLvB,EAEFQ,KAAK4iR,IAAc7iR,EAC3B,CACD,EAAEyiR,IAAsBziR,EAAM+wR,GAC5B,MAAMtxR,EAAQQ,KAAKguR,IAAa1/R,IAAIyR,GAChCP,UACIA,GAER,IAAK,MAAM8vQ,KAAStvQ,KAAKkuR,IAAY,CAC/B5e,EAAM4U,MAAenkR,UACjBuvQ,GAEJwhB,UACKxhB,EAAMkT,IAAsBziR,EAAM+wR,GAE5C,CACF,CACD,EAAE3O,IAAiBpiR,EAAMsxR,GACvB,MAAM7xR,EAAQQ,KAAKguR,IAAa1/R,IAAIyR,IAChCP,GAAW6xR,GAAiB7xR,EAAMoiR,YAC9BpiR,GAER,IAAK,MAAM8vQ,KAAStvQ,KAAKkuR,UAChB5e,EAAM6S,IAAiBpiR,EAAMsxR,EAEvC,CACD,EAAE1O,IAA0B5iR,EAAM+wR,EAAgBO,GAChD,IAAK,MAAM/hB,KAAStvQ,KAAKkuR,IAAY,CAC/B5e,EAAM4U,MAAenkR,GAAUsxR,GAAiB/hB,EAAMsS,YAClDtS,GAEJwhB,UACKxhB,EAAMqT,IAA0B5iR,EAAM+wR,EAAgBO,GAEhE,CACF,CACD,CAAC5N,MACC,OAAIzjR,KAAKouR,MAAgB,KAChBpuR,KAAKkuR,IAAWhvR,SAAW,GAAKc,KAAKkuR,IAAW,GAAGjK,MAAkBwB,GAAaY,MAAMruP,GAE1Fh4B,KAAKouR,GACb,CACD,CAAC3L,MACC,OAAIziR,KAAKouR,MAAgB,KACnBpuR,KAAKkuR,IAAWhvR,SAAW,EACtBc,KAAK6hR,IAAUzQ,OAEpBpxQ,KAAKkuR,IAAW,GAAGjK,MAAkBwB,GAAaY,MAAMruP,GACnDh4B,KAAKkuR,IAAW,GAAGhJ,MAAS9T,OAE9B,KAEFpxQ,KAAK6hR,IAAUzQ,MACvB,CACD,CAAC4T,IAAWxlR,GACVA,EAAQA,EAAMA,OAAS,GACvBQ,KAAK6hR,IAAYriR,EAAMsE,UACxB,CACD,CAACi+Q,IAAOuP,EAAQ,OACd,MAAM1B,EAASzhS,OAAO0d,OAAO,MACzBylR,IACF1B,EAAO2B,IAAMvxR,KAAKikR,KAEhBjkR,KAAK6hR,MACP+N,EAAO/N,SAAW7hR,KAAK6hR,KAEzB+N,EAAO4B,MAAQxxR,KAAKkkR,IACpB0L,EAAOrmP,SAAW,GAClB,IAAK,MAAM+lO,KAAStvQ,KAAKkuR,IACvB0B,EAAOrmP,SAAS5nC,KAAK2tQ,EAAMyS,IAAOuP,IAEpC1B,EAAOniB,WAAat/Q,OAAO0d,OAAO,MAClC,IAAK,MAAO9L,EAAMP,KAAUQ,KAAKguR,IAC/B4B,EAAOniB,WAAW1tQ,GAAQP,EAAMqiR,IAElC,OAAO+N,CACR,EAEH,MAAM6B,sBAAsBvC,UAC1B,WAAAjvR,CAAYkvR,EAAMpvR,GAChBK,MAAM+uR,EAAMpvR,GACZC,KAAK6hR,IAAY,EAClB,CACD,CAACyC,IAASxmB,GACR99P,KAAK6hR,KAAa/jB,CACnB,CACD,CAACmkB,MAAe,EAElB,MAAMyP,qBAAqBD,cACzB,WAAAxxR,CAAYkvR,EAAMpvR,EAAMlB,GACtBuB,MAAM+uR,EAAMpvR,GACZC,KAAK2uR,IAAY9vR,CAClB,CACD,CAACojR,MACCjiR,KAAK6hR,IAAYqF,WAAW,CAC1Bp0Q,KAAM9S,KAAK6hR,IACXkF,aAAc/mR,KAAK2uR,IAAU,GAC7B3H,SAAU9gQ,GAAKlmB,KAAK2uR,IAAUxrR,SAAS+iB,IAE1C,CACD,CAACs7P,IAAQ96C,GACPtmO,MAAMohR,IAAQ96C,UACP1mO,KAAK2uR,GACb,EAEH,MAAMgD,qBAAqBF,cACzB,CAACxP,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,MACjC,EAEH,MAAMwgB,sBAAsBH,cAC1B,WAAAxxR,CAAYkvR,EAAMpvR,EAAMgnR,EAAc8K,GACpCzxR,MAAM+uR,EAAMpvR,GACZC,KAAKquR,IAAiBtH,EACtB/mR,KAAK+uR,IAAc8C,CACpB,CACD,CAAC5P,MACCjiR,KAAK6hR,IAAYiF,WAAW,CAC1Bh0Q,KAAM9S,KAAK6hR,IACXkF,aAAc/mR,KAAKquR,IACnBrH,SAAUhnR,KAAK+uR,KAElB,CACD,CAACvN,IAAQ96C,GACPtmO,MAAMohR,IAAQ96C,UACP1mO,KAAKquR,WACLruR,KAAK+uR,GACb,EAEH,MAAM+C,iBAAiBF,cACrB,WAAA3xR,CAAYkvR,EAAMpvR,GAChBK,MAAM+uR,EAAMpvR,EAAM,GAAG8D,GAAKA,IAAM,GACjC,EAEH,MAAMkuR,iBAAiBH,cACrB,WAAA3xR,CAAYkvR,EAAMpvR,GAChBK,MAAM+uR,EAAMpvR,EAAM,GAAG8D,GAAKA,IAAM,GACjC,EAUH,SAASmuR,gBAAgBptR,GACvB,cAAWA,IAAM,SACR,MAEFhH,OAAOC,UAAU+G,GAAK,GAAGA,MAAQ,GAAGA,EAAE2T,QAAQ,MACvD,CACA,MAAM05Q,GAAa,CACjB,UAAAC,CAAWxoP,EAAMq1M,GACf,MAAM/vO,EAAS06B,EAAKq5O,MACpB,GAAK/zQ,KAAUA,EAAOgtD,QAAUhtD,EAAOgtD,SAAW,YAAlD,CAGM,cAAe+iL,IACnBA,EAAMxmP,UAAY,IAEpB,OAAQmxC,EAAKwoP,YACX,IAAK,eACHnzC,EAAMxmP,WAAa,yBACnB,MACF,IAAK,aACHwmP,EAAMxmP,WAAa,qBACnB,MACF,IAAK,cACHwmP,EAAMxmP,WAAa,yBACnB,MACF,IAAK,eACHwmP,EAAMxmP,WAAa,uBACnB,MACF,IAAK,aACHwmP,EAAMxmP,WAAa,oBACnB,MACF,IAAK,cACHwmP,EAAMxmP,WAAa,wBACnB,MACF,IAAK,YACHwmP,EAAMxmP,WAAa,oBACnB,MACF,IAAK,WACHwmP,EAAMxmP,WAAa,qBACnB,MA5BH,CA8BF,EACD,UAAA45R,CAAWzoP,EAAMq1M,GACf,MAAM/vO,EAAS06B,EAAKq5O,MACpB,IAAI1pQ,EAAQqwB,EAAK0qJ,EACjB,MAAM96K,EAASowB,EAAKyH,EACpB,GAAIniC,EAAOgtD,QAAQ74D,SAAS,OAAQ,CAClC,MAAM88O,EAAQjxO,EAAOgzQ,IACrB,MAAMoQ,EAAU1oP,EAAK0oP,QACrB,IAAIh+F,EACJ,GAAIg+F,KAAa,EAAG,CAClBh+F,EAAI6rD,EAAMoyC,aAAaltR,MAAM86O,EAAMqyC,eAAevpE,QAAO,CAACrjN,EAAG6B,IAAM7B,EAAI6B,GAAG,GAC1E04O,EAAMqyC,cAAgB,CAC9B,KAAa,CACLl+F,EAAI6rD,EAAMoyC,aAAaltR,MAAM86O,EAAMqyC,cAAeryC,EAAMqyC,cAAgBF,GAASrpE,QAAO,CAACrjN,EAAG6B,IAAM7B,EAAI6B,GAAG,GACzG04O,EAAMqyC,eAAiBryC,EAAMqyC,cAAgB5oP,EAAK0oP,SAAWnyC,EAAMoyC,aAAanzR,MACjF,CACI4Y,MAAMs8K,KACT/6K,EAAQqwB,EAAK0qJ,EAAIA,EAEpB,CACD2qD,EAAM1lO,MAAQA,IAAU,GAAK24Q,gBAAgB34Q,GAAS,OACtD0lO,EAAMzlO,OAASA,IAAW,GAAK04Q,gBAAgB14Q,GAAU,MAC1D,EACD,QAAAuB,CAAS6uB,EAAMq1M,GACb,MAAM/vO,EAAS06B,EAAKq5O,MACpB,IAAI/zQ,GAAQgtD,QAAUhtD,EAAOgtD,SAAW,WAAxC,CAGA+iL,EAAMlkO,SAAW,WACjBkkO,EAAMr2L,KAAOspO,gBAAgBtoP,EAAKniC,GAClCw3O,EAAMorC,IAAM6H,gBAAgBtoP,EAAKliC,EAHhC,CAIF,EACD,MAAAg3P,CAAO90N,EAAMq1M,GACX,GAAIr1M,EAAK80N,OAAQ,CACT,cAAezf,IACnBA,EAAMxmP,UAAY,IAEpBwmP,EAAMxmP,WAAa,WAAWmxC,EAAK80N,aACnCzf,EAAMwzC,gBAAkB,UACzB,CACF,EACD,QAAAC,CAAS9oP,EAAMq1M,GACb,OAAQr1M,EAAK8oP,UACX,IAAK,YACHzzC,EAAM0zC,WAAa,SACnB,MACF,IAAK,SACL,IAAK,WACH1zC,EAAM2zC,QAAU,OAChB,MAEL,EACD,MAAAC,CAAOjpP,EAAMq1M,GACX,GAAIr1M,EAAKw6O,MAAe,OACtB,OAAQx6O,EAAKipP,QACX,IAAK,aACH5zC,EAAM6zC,UAAY,cAClB,MACF,IAAK,QACH7zC,EAAM6zC,UAAY,OAClB,MACF,QACE7zC,EAAM6zC,UAAYlpP,EAAKipP,YAG3B,OAAQjpP,EAAKipP,QACX,IAAK,OACH5zC,EAAM8zC,UAAY,QAClB,MACF,IAAK,SACH9zC,EAAM8zC,UAAY,SAClB,MACF,IAAK,QACH9zC,EAAM8zC,UAAY,MAClB,MAGP,EACD,MAAA5I,CAAOvgP,EAAMq1M,GACPr1M,EAAKugP,SACPlrC,EAAMkrC,OAASvgP,EAAKugP,OAAO3E,MAAY2E,OAE1C,GAEH,SAAS6I,oBAAoBppP,EAAMq1M,GACjC,MAAM/vO,EAAS06B,EAAKq5O,MACpB,GAAI/zQ,EAAOgtD,SAAW,WAAY,CAC5BtyB,EAAKqpP,KAAO,IACdh0C,EAAMi0C,SAAWhB,gBAAgBtoP,EAAKqpP,OAEpCrpP,EAAKupP,KAAO,IACdl0C,EAAM79M,SAAW8wP,gBAAgBtoP,EAAKupP,OAEpCvpP,EAAKwpP,KAAO,IACdn0C,EAAMo0C,UAAYnB,gBAAgBtoP,EAAKwpP,OAErCxpP,EAAK+J,KAAO,IACdsrM,EAAM8E,UAAYmuC,gBAAgBtoP,EAAK+J,MAE1C,CACH,CACA,SAAS2/O,WAAWt1B,EAAM0rB,EAASS,EAAQ7uD,EAAYyuD,EAAYxwQ,GACjE,MAAMg6Q,EAAU,IAAIrI,YAAYxB,EAASS,EAAQ7uD,EAAYyuD,UAClD/rB,IAAS,SAClBu1B,EAAQjI,UAAUttB,GAElBA,EAAKymB,IAAa8O,GAEpB,OAAOA,EAAQ3H,QAAQryQ,EACzB,CACA,SAASi6Q,WAAW5pP,EAAMmmP,GACxB,IAAIv2Q,EAAS,KACb,IAAID,EAAQ,KACZ,IAAI0yQ,EAAW,MACf,KAAMriP,EAAK0qJ,IAAM1qJ,EAAKyH,IAAMzH,EAAKlqC,MAAO,CACtC,IAAI+zR,EAAU,EACd,IAAIC,EAAU,EACd,GAAI9pP,EAAKugP,OAAQ,CACfsJ,EAAU7pP,EAAKugP,OAAOwJ,UAAY/pP,EAAKugP,OAAOyJ,WAC9CF,EAAU9pP,EAAKugP,OAAO0J,SAAWjqP,EAAKugP,OAAO2J,WAC9C,CACD,IAAIx4D,EAAa,KACjB,IAAI6uD,EAAS,KACb,GAAIvgP,EAAK6lP,KAAM,CACbtF,EAAS97R,OAAO0d,OAAO,MACvBuvN,EAAa1xL,EAAK6lP,KAAKn0D,aAAe,GAAK,KAAO1xL,EAAK6lP,KAAKn0D,WAC5D6uD,EAAOE,IAAMzgP,EAAK6lP,KAAKsE,aAAe,GAAK,EAAInqP,EAAK6lP,KAAKsE,WACzD5J,EAAOG,OAAS1gP,EAAK6lP,KAAKuE,aAAe,GAAK,EAAIpqP,EAAK6lP,KAAKuE,WAC5D7J,EAAOvhO,KAAOhf,EAAK6lP,KAAKwE,aAAe,GAAK,EAAIrqP,EAAK6lP,KAAKwE,WAC1D9J,EAAOI,MAAQ3gP,EAAK6lP,KAAKyE,cAAgB,GAAK,EAAItqP,EAAK6lP,KAAKyE,WAC7D,CACD,IAAI5vE,EAAO16K,EAAK06K,KAChB,IAAKA,EAAM,CACT,MAAM2mD,EAAOrhO,EAAKu5O,MAClB,IAAIj0Q,EAAS06B,EAAKs5O,MAClB,MAAOh0Q,GAAUA,IAAW+7P,EAAM,CAChC,GAAI/7P,EAAOo1M,KAAM,CACfA,EAAOp1M,EAAOo1M,KACd,KACD,CACDp1M,EAASA,EAAOg0Q,KACjB,CACF,CACD,MAAM9hP,GAAYwI,EAAK0qJ,GAAKy7F,EAAex2Q,OAASk6Q,EACpD,MAAM1J,EAAangP,EAAKw5O,IAAa2G,WACrC,GAAIngP,EAAKlqC,MAAMy0R,QAAUvqP,EAAKlqC,MAAMy0R,OAAOpS,KAAan4O,EAAKlqC,MAAMy0R,OAAOC,cAAgB,YAAa,CACrG,MAAM3qD,EAAM6pD,WAAW1pP,EAAKlqC,MAAMy0R,OAAOpS,IAAWz9D,EAAM6lE,EAAQ7uD,EAAYyuD,EAAY3oP,GAC1F7nB,EAAQkwN,EAAIlwN,MACZC,EAASiwN,EAAIjwN,OACbyyQ,EAAWxiD,EAAIwiD,QACrB,KAAW,CACL,MAAMjuB,EAAOp0N,EAAKlqC,MAAM0lR,MACxB,GAAIpnB,EAAM,CACR,MAAMv0B,EAAM6pD,WAAWt1B,EAAM15C,EAAM6lE,EAAQ7uD,EAAYyuD,EAAY3oP,GACnE7nB,EAAQkwN,EAAIlwN,MACZC,EAASiwN,EAAIjwN,OACbyyQ,EAAWxiD,EAAIwiD,QAChB,CACF,CACG1yQ,IAAU,MAASqwB,EAAK0qJ,IAC1B/6K,GAASk6Q,GAEPj6Q,IAAW,MAASowB,EAAKyH,IAC3B73B,GAAUk6Q,EAEb,CACD,MAAO,CACLp/F,EAAG/6K,EACH83B,EAAG73B,EACHyyQ,WAEJ,CACA,SAASoI,YAAYzqP,EAAM0+O,EAAMyH,GAC/B,IAAI18D,EACJ,GAAIzpL,EAAK0qJ,IAAM,IAAM1qJ,EAAKyH,IAAM,GAC9BgiL,EAAO,CAACzpL,EAAKniC,EAAGmiC,EAAKliC,EAAGkiC,EAAK0qJ,EAAG1qJ,EAAKyH,OAChC,CACL,IAAK0+O,EACH,OAAO,KAET,IAAIx2Q,EAAQqwB,EAAK0qJ,EACjB,GAAI/6K,IAAU,GAAI,CAChB,GAAIqwB,EAAKupP,OAAS,EAAG,CACnB,MAAMjkR,EAAS06B,EAAKq5O,MACpB1pQ,EAAQrK,EAAOgtD,SAAW,YAAchtD,EAAOolL,IAAM,GAAK,EAAI1qJ,EAAKqpP,IAC3E,MACQ15Q,EAAQ9X,KAAKC,IAAIkoC,EAAKupP,KAAMpD,EAAex2Q,OAE7C+uQ,EAAK3a,WAAW1uB,MAAM1lO,MAAQ24Q,gBAAgB34Q,EAC/C,CACD,IAAIC,EAASowB,EAAKyH,EAClB,GAAI73B,IAAW,GAAI,CACjB,GAAIowB,EAAK+J,OAAS,EAAG,CACnB,MAAMzkC,EAAS06B,EAAKq5O,MACpBzpQ,EAAStK,EAAOgtD,SAAW,YAAchtD,EAAOmiC,IAAM,GAAK,EAAIzH,EAAKwpP,IAC5E,MACQ55Q,EAAS/X,KAAKC,IAAIkoC,EAAK+J,KAAMo8O,EAAev2Q,QAE9C8uQ,EAAK3a,WAAW1uB,MAAMzlO,OAAS04Q,gBAAgB14Q,EAChD,CACD65M,EAAO,CAACzpL,EAAKniC,EAAGmiC,EAAKliC,EAAG6R,EAAOC,EAChC,CACD,OAAO65M,CACT,CACA,SAASihE,cAAc1qP,GACrB,MAAM16B,EAAS06B,EAAKq5O,MACpB,GAAI/zQ,EAAOgtD,QAAQ74D,SAAS,OAAQ,CAClC,MAAM88O,EAAQjxO,EAAOgzQ,IACrB,MAAMoQ,EAAU1oP,EAAK0oP,QACrB,IAAI/4Q,EAEFA,EADE+4Q,KAAa,EACPnyC,EAAMoyC,aAAaltR,MAAM86O,EAAMqyC,eAAevpE,QAAO,CAACrjN,EAAG0uL,IAAM1uL,EAAI0uL,GAAG,GAEtE6rD,EAAMoyC,aAAaltR,MAAM86O,EAAMqyC,cAAeryC,EAAMqyC,cAAgBF,GAASrpE,QAAO,CAACrjN,EAAG0uL,IAAM1uL,EAAI0uL,GAAG,GAE1Gt8K,MAAMuB,KACTqwB,EAAK0qJ,EAAI/6K,EAEZ,CACGrK,EAAOgtD,QAAUhtD,EAAOgtD,SAAW,aACrCtyB,EAAKniC,EAAImiC,EAAKliC,EAAI,GAEhBkiC,EAAKsyB,SAAW,SACdtyB,EAAK0qJ,IAAM,IAAMzwL,MAAM2J,QAAQo8B,EAAK2oP,gBACtC3oP,EAAK0qJ,EAAI1qJ,EAAK2oP,aAAatpE,QAAO,CAACrjN,EAAG6B,IAAM7B,EAAI6B,GAAG,GAGzD,CACA,SAAS8sR,YAAY3qP,GACnB,OAAQA,EAAKsyB,QACX,IAAK,WACH,MAAO,cACT,IAAK,QACH,MAAO,UACT,IAAK,SACH,MAAO,WACT,IAAK,QACH,MAAO,UACT,IAAK,MACH,MAAO,SACT,IAAK,QACH,MAAO,WACT,IAAK,KACH,MAAO,QACT,QACE,MAAO,cAEb,CACA,SAASs4N,QAAQ5qP,KAASyrB,GACxB,MAAM4pL,EAAQ5wP,OAAO0d,OAAO,MAC5B,IAAK,MAAM9L,KAAQo1D,EAAO,CACxB,MAAM31D,EAAQkqC,EAAK3pC,GACnB,GAAIP,IAAU,KAGd,GAAIyyR,GAAWvjS,eAAeqR,GAC5BkyR,GAAWlyR,GAAM2pC,EAAMq1M,QAGzB,GAAIv/O,aAAiB0vR,UAAW,CAC9B,MAAMqF,EAAW/0R,EAAM8lR,MACnBiP,EACFpmS,OAAOktD,OAAO0jM,EAAOw1C,GAErBp2R,KAAK,6BAA6B4B,wBAErC,CACF,CACD,OAAOg/O,CACT,CACA,SAASy1C,cAAc9qP,EAAM0+O,GAC3B,MAAM3a,WACJA,GACE2a,EACJ,MAAMrpC,MACJA,GACE0uB,EACJ,MAAMgnB,EAAU,CACd10R,KAAM,MACN0tQ,WAAY,CACVinB,MAAO,CAAC,cACR31C,MAAO5wP,OAAO0d,OAAO,OAEvB09B,SAAU,IAEZkkO,EAAWinB,MAAM/yR,KAAK,cACtB,GAAI+nC,EAAKirP,OAAQ,CACf,MAAM39N,OACJA,EAAM49N,OACNA,GACElrP,EAAKirP,OAAO3S,IAChB,IAAI3oQ,EAAOC,EACX,IAAI6wQ,EAAMyK,EAAO,GACjB,IAAIlsO,EAAOksO,EAAO,GAClB,MAAMC,EAAUD,EAAO,GAAKA,EAAO,GACnC,MAAME,EAAUF,EAAO,GAAKA,EAAO,GACnC,OAAQlrP,EAAKirP,OAAOI,MAClB,IAAK,OACH5K,GAAOnzN,EAAO,GAAK,EACnBtO,GAAQsO,EAAO,GAAK,EACpB39C,EAAQ,gBAAgB29C,EAAO,GAAKA,EAAO,IAAM,EAAI89N,OACrDx7Q,EAAS,gBAAgB09C,EAAO,GAAKA,EAAO,IAAM,EAAI69N,OACtD,MACF,IAAK,OACH1K,GAAOnzN,EAAO,GACdtO,GAAQsO,EAAO,GACf39C,EAAQ,eAAe29C,EAAO,GAAKA,EAAO,GAAK89N,OAC/Cx7Q,EAAS,eAAe09C,EAAO,GAAKA,EAAO,GAAK69N,OAChD,MACF,IAAK,QACHx7Q,EAAQy7Q,EAAU,eAAeA,OAAe,OAChDx7Q,EAASu7Q,EAAU,eAAeA,OAAe,OACjD,MAEJ,MAAMG,EAAa,CAAC,aAChBC,YAAYvrP,EAAKirP,SACnBK,EAAWrzR,KAAK,gBAElB,MAAMgzR,EAAS,CACb50R,KAAM,MACN0tQ,WAAY,CACVinB,MAAOM,EACPj2C,MAAO,CACLorC,IAAK,GAAGA,MACRzhO,KAAM,GAAGA,MACTrvC,QACAC,WAGJiwB,SAAU,IAEZ,IAAK,MAAMt7C,IAAO,CAAC,SAAU,cAAe,cAAe,eAAgB,eACzE,GAAI8wP,EAAM9wP,UAAS8S,EAAW,CAC5B4zR,EAAOlnB,WAAW1uB,MAAM9wP,GAAO8wP,EAAM9wP,UAC9B8wP,EAAM9wP,EACd,CAEHwmS,EAAQlrP,SAAS5nC,KAAKgzR,EAAQvM,EAClC,MACIqM,EAAQlrP,SAAS5nC,KAAKymR,GAExB,IAAK,MAAMn6R,IAAO,CAAC,aAAc,iBAAkB,MAAO,OAAQ,QAAS,SAAU,WAAY,YAAa,WAAY,YAAa,YAAa,kBAAmB,cACrK,GAAI8wP,EAAM9wP,UAAS8S,EAAW,CAC5B0zR,EAAQhnB,WAAW1uB,MAAM9wP,GAAO8wP,EAAM9wP,UAC/B8wP,EAAM9wP,EACd,CAEHwmS,EAAQhnB,WAAW1uB,MAAMlkO,SAAWkkO,EAAMlkO,WAAa,WAAa,WAAa,kBAC1EkkO,EAAMlkO,SACb,GAAIkkO,EAAM8zC,UAAW,CACnB4B,EAAQhnB,WAAW1uB,MAAM8zC,UAAY9zC,EAAM8zC,iBACpC9zC,EAAM8zC,SACd,CACD,OAAO4B,CACT,CACA,SAASS,cAAcp6B,GACrB,MAAMq6B,EAAS/N,eAAetsB,EAAOs6B,WAAY,OACjD,GAAID,GAAU,EACZ,OAEF,MAAM3oD,EAAQsuB,EAAO83B,YAAc,QAAU,QAAU,OACvD,MAAM7yR,EAAO,WAAaysO,IAAU,OAAS,OAAS,SACtD,MAAM6oD,EAAUjO,eAAetsB,EAAO/6P,GAAO,OAC7C+6P,EAAO/6P,GAAWs1R,EAAUF,EAAb,IACjB,CACA,SAASG,UAAU5rP,EAAMsrP,GACvB,OAAQtrP,EAAK6rP,QACX,IAAK,iBACHP,EAAWrzR,KAAK,qBAChB,MACF,IAAK,WACHqzR,EAAWrzR,KAAK,eAChB,MACF,IAAK,YACHqzR,EAAWrzR,KAAK,eAChB,MAEN,CACA,SAASszR,YAAYvrP,GACnB,OAAOA,EAAK8rP,SAASt2R,OAAS,IAAMwqC,EAAK8rP,SAAS,GAAG5N,UAAYl+O,EAAK8rP,SAAS,GAAG3N,WAAa,OACjG,CACA,SAAS4N,eAAe/rP,GACtB,MAAMjd,EAAQid,EAAKu5O,MAAoBjB,IAAQwN,UAC/C,OAAO/iQ,EAAMvtB,OAASutB,EAAMuN,IAAI,GAAK,IACvC,CACA,SAAS07P,QAAQhsP,EAAMisP,EAAWn2R,GAChC,GAAIA,EAAMiuQ,WAAWinB,OAAOvxR,SAAS,WAAY,CAC/C,GAAIwyR,EAAW,CACTjsP,EAAKyH,IAAM,KACbwkP,EAAUr8Q,OAAS,QAEjBowB,EAAK0qJ,IAAM,KACbuhG,EAAUt8Q,MAAQ,OAErB,CACD,MAAMk2Q,EAAOkG,eAAe/rP,GAC5B,GAAI6lP,EAAM,CACR,MAAMqG,EAAap2R,EAAMiuQ,WAAW1uB,MACpC62C,EAAWlD,QAAU,OACrBkD,EAAWC,cAAgB,SAC3B,OAAQtG,EAAKuG,QACX,IAAK,MACHF,EAAWG,eAAiB,QAC5B,MACF,IAAK,SACHH,EAAWG,eAAiB,MAC5B,MACF,IAAK,SACHH,EAAWG,eAAiB,SAC5B,MAEJ,MAAMC,EAAYzG,EAAKjK,MACvB,IAAK,MAAOr3R,EAAK44B,KAAQ14B,OAAOqpE,QAAQw+N,GAChC/nS,KAAO2nS,IACXA,EAAW3nS,GAAO44B,EAGvB,CACF,CACH,CACA,SAASovQ,cAAczM,EAAS9/O,EAAMmgP,EAAY9qC,GAChD,IAAK8qC,EAAY,QACR9qC,EAAMjoO,WACb,MACD,CACD,MAAM/W,EAAO8mR,YAAY2C,EAAQC,UACjC1qC,EAAMjoO,WAAa,IAAI/W,KACvB,MAAM0pR,EAAWI,EAAWT,KAAKrpR,GACjC,GAAI0pR,EAAU,CACZ,MAAM3yQ,WACJA,GACE2yQ,EAASX,QAAQzxQ,YACjBP,IAAe/W,IACjBg/O,EAAMjoO,WAAa,IAAIA,MAEzB,MAAMy4Q,EAAOkG,eAAe/rP,GAC5B,GAAI6lP,GAAQA,EAAKn0D,aAAe,GAC9B,OAEF,GAAI2jB,EAAM3jB,WACR,OAEF,MAAMwtD,EAAUW,WAAWC,EAASC,GAChCb,IACF7pC,EAAM3jB,WAAa75N,KAAK+D,IAAI,IAAKsjR,EAAQxtD,YAE5C,CACH,CACA,SAAS86D,OAAOp0R,GACd,MAAMzC,EAAcV,uBAAuBmD,EAAK,KAAM,CACpDhD,mBAAoB,KACpBK,mBAAoB,OAEtB,OAAOE,EAAcA,EAAYs8C,KAAO,IAC1C,CAKA,SAASw6O,WAAWzsP,EAAMH,GACxB,MAAO,CACLxpC,KAAM,MACN0tQ,WAAY,CACVinB,MAAO,CAAChrP,EAAKsyB,SAAW,QAAU,QAAU,UAE9CzyB,WAEJ,CACA,SAAS6sP,UAAU1sP,GACjB,IAAKA,EAAKs4O,IACR,OAAO,KAET,MAAMvU,EAAa/jO,EAAKs4O,IAAQvU,WAChC,MAAM2a,EAAO,CACXroR,KAAM,MACN0tQ,aACAlkO,SAAUG,EAAKs4O,IAAQz4O,UAEzB,GAAIG,EAAKs4O,IAAQ8N,YAAa,CAC5B,MAAMuG,EAAkB3sP,EAAKs4O,IAAQ8N,YAAY5N,MAC7CmU,IACE3sP,EAAKsyB,OAAOktN,SAAS,OACvBd,EAAK7+O,SAAS5nC,KAAKw0R,WAAWzsP,EAAM,CAAC2sP,KAErCjO,EAAK7+O,SAAS5nC,KAAK00R,GAGxB,CACD,OAAIjO,EAAK7+O,SAASrqC,SAAW,EACpB,KAEFkpR,CACT,CACA,SAASkO,QAAQ5sP,EAAM0+O,EAAMj1D,GAC3B,MAAM8sB,EAAQv2M,EAAKs4O,IACnB,MAAM6N,EAAiB5vC,EAAM4vC,eAC7B,MAAOtoR,EAAGC,EAAG4sL,EAAGjjJ,GAAKgiL,EACrB,OAAQzpL,EAAKsyB,QACX,IAAK,WAEDikL,EAAM5mO,MAAQ9X,KAAK+D,IAAI26O,EAAM5mO,MAAO9R,EAAI6sL,GACxC6rD,EAAM3mO,OAAS/X,KAAK+D,IAAI26O,EAAM3mO,OAAQ9R,EAAI2pC,GAC1C8uM,EAAM12M,SAAS5nC,KAAKymR,GACpB,MAEJ,IAAK,QACL,IAAK,QACH,IAAKnoC,EAAM32M,MAAQ22M,EAAMs2C,UAAY,EAAG,CACtCt2C,EAAM32M,KAAO6sP,WAAWzsP,EAAM,IAC9Bu2M,EAAM12M,SAAS5nC,KAAKs+O,EAAM32M,MAC1B22M,EAAMu2C,aAAe,CACtB,CACDv2C,EAAMu2C,cAAgB,EACtBv2C,EAAM32M,KAAKC,SAAS5nC,KAAKymR,GACzB,GAAInoC,EAAMs2C,UAAY,EAAG,CACvBt2C,EAAMviN,cAAgB02J,EACtB6rD,EAAM3mO,OAAS/X,KAAK+D,IAAI26O,EAAM3mO,OAAQ2mO,EAAMwD,WAAatyM,EACjE,KAAa,CACL8uM,EAAMviN,aAAe02J,EACrB6rD,EAAMwD,WAAaxD,EAAM3mO,OACzB2mO,EAAM3mO,QAAU63B,EAChB8uM,EAAMs2C,QAAU,CACjB,CACDt2C,EAAM5mO,MAAQ9X,KAAK+D,IAAI26O,EAAM5mO,MAAO4mO,EAAMviN,cAC1C,MACF,IAAK,SACL,IAAK,MACH,CACEuiN,EAAM12M,SAAS5nC,KAAKymR,GACpBnoC,EAAM5mO,OAAS+6K,EACf6rD,EAAM3mO,OAAS/X,KAAK+D,IAAI26O,EAAM3mO,OAAQ63B,GACtC,MAAM73B,EAAS04Q,gBAAgB/xC,EAAM3mO,QACrC,IAAK,MAAMg2P,KAASrvB,EAAM12M,SACxB+lO,EAAM7B,WAAW1uB,MAAMzlO,OAASA,EAElC,KACD,CACH,IAAK,QAED2mO,EAAM5mO,MAAQ9X,KAAKC,IAAIquR,EAAex2Q,MAAO9X,KAAK+D,IAAI26O,EAAM5mO,MAAO+6K,IACnE6rD,EAAM3mO,QAAU63B,EAChB8uM,EAAM12M,SAAS5nC,KAAKymR,GACpB,MAEJ,IAAK,KAEDnoC,EAAM5mO,MAAQ9X,KAAKC,IAAIquR,EAAex2Q,MAAO9X,KAAK+D,IAAI26O,EAAM5mO,MAAO+6K,IACnE6rD,EAAM3mO,QAAU63B,EAChB8uM,EAAM12M,SAAS5nC,KAAKymR,GACpB,MAGR,CACA,SAASqO,kBAAkB/sP,GACzB,MAAMmmP,EAAiBnmP,EAAKs4O,IAAQ6N,eACpC,MAAM2D,EAAU9pP,EAAKugP,OAASvgP,EAAKugP,OAAO0J,SAAWjqP,EAAKugP,OAAO2J,YAAc,EAC/E,MAAML,EAAU7pP,EAAKugP,OAASvgP,EAAKugP,OAAOwJ,UAAY/pP,EAAKugP,OAAOyJ,WAAa,EAC/E,OAAQhqP,EAAKsyB,QACX,IAAK,QACL,IAAK,QACH,OAAItyB,EAAKs4O,IAAQuU,UAAY,EACpB,CACLl9Q,MAAOw2Q,EAAex2Q,MAAQk6Q,EAAU7pP,EAAKs4O,IAAQtkP,aACrDpkB,OAAQu2Q,EAAev2Q,OAASk6Q,EAAU9pP,EAAKs4O,IAAQv+B,YAGpD,CACLpqO,MAAOw2Q,EAAex2Q,MAAQk6Q,EAC9Bj6Q,OAAQu2Q,EAAev2Q,OAASk6Q,EAAU9pP,EAAKs4O,IAAQ1oQ,QAE3D,IAAK,SACL,IAAK,MACH,MAAMD,EAAQqwB,EAAKs4O,IAAQqQ,aAAaltR,MAAMukC,EAAKs4O,IAAQsQ,eAAevpE,QAAO,CAACrjN,EAAG6B,IAAM7B,EAAI6B,IAC/F,MAAO,CACL8R,QACAC,OAAQu2Q,EAAev2Q,OAASi6Q,GAEpC,IAAK,QACL,IAAK,KACH,MAAO,CACLl6Q,MAAOw2Q,EAAex2Q,MAAQk6Q,EAC9Bj6Q,OAAQu2Q,EAAev2Q,OAASk6Q,EAAU9pP,EAAKs4O,IAAQ1oQ,QAE3D,IAAK,WACL,QACE,OAAOu2Q,EAEb,CACA,SAAS6G,mBAAmBhtP,GAC1B,IAAI0qJ,EAAI1qJ,EAAK0qJ,IAAM,GAAKjxI,IAAMzZ,EAAK0qJ,EACnC,IAAIjjJ,EAAIzH,EAAKyH,IAAM,GAAKgS,IAAMzZ,EAAKyH,EACnC,IAAKwlP,EAASC,GAAW,CAAC,EAAG,GAC7B,OAAQltP,EAAKwoP,YAAc,IACzB,IAAK,gBACFyE,EAASC,GAAW,CAACxiG,EAAI,EAAGjjJ,GAC7B,MACF,IAAK,cACFwlP,EAASC,GAAW,CAAC,EAAGzlP,GACzB,MACF,IAAK,eACFwlP,EAASC,GAAW,CAACxiG,EAAGjjJ,GACzB,MACF,IAAK,gBACFwlP,EAASC,GAAW,CAACxiG,EAAI,EAAGjjJ,EAAI,GACjC,MACF,IAAK,cACFwlP,EAASC,GAAW,CAAC,EAAGzlP,EAAI,GAC7B,MACF,IAAK,eACFwlP,EAASC,GAAW,CAACxiG,EAAGjjJ,EAAI,GAC7B,MACF,IAAK,aACFwlP,EAASC,GAAW,CAACxiG,EAAI,EAAG,GAC7B,MACF,IAAK,YACFuiG,EAASC,GAAW,CAACxiG,EAAG,GACzB,MAEJ,IAAI7sL,EAAGC,EACP,OAAQkiC,EAAK80N,QAAU,GACrB,KAAK,GACFj3P,EAAGC,GAAK,EAAEmvR,GAAUC,GACrB,MACF,KAAK,IACFrvR,EAAGC,GAAK,EAAEovR,EAASD,IACnBviG,EAAGjjJ,GAAK,CAACA,GAAIijJ,GACd,MACF,KAAK,KACF7sL,EAAGC,GAAK,CAACmvR,EAASC,IAClBxiG,EAAGjjJ,GAAK,EAAEijJ,GAAIjjJ,GACf,MACF,KAAK,KACF5pC,EAAGC,GAAK,CAACovR,GAAUD,IACnBviG,EAAGjjJ,GAAK,EAAEA,EAAGijJ,GACd,MAEJ,MAAO,CAAC1qJ,EAAKniC,EAAIA,EAAIhG,KAAKC,IAAI,EAAG4yL,GAAI1qJ,EAAKliC,EAAIA,EAAIjG,KAAKC,IAAI,EAAG2vC,GAAI5vC,KAAKmG,IAAI0sL,GAAI7yL,KAAKmG,IAAIypC,GAC1F,CACA,SAAS0lP,gBAAgBntP,EAAMuuI,GAC7B,GAAIvuI,EAAKu5O,MAAoBjB,IAAQ8U,oBAAsB,KACzD,OAAO,KAET,GAAIptP,EAAK0qJ,IAAM,GAAK1qJ,EAAKyH,IAAM,EAC7B,OAAO,KAET,MAAM4lP,EAAQ,EACd,MAAM/nR,EAAS06B,EAAKq5O,MACpB,MAAMwT,EAAUvnR,EAAOgzQ,KAASuU,SAAW,EAC3C,MAAM,CAAG/uR,EAAG4sL,EAAGjjJ,GAAKulP,mBAAmBhtP,GACvC,OAAQ16B,EAAOgtD,QACb,IAAK,QACL,IAAK,QACH,OAAIu6N,IAAY,EACT7sP,EAAKu5O,MAAoBjB,IAAQgV,gBAelCttP,EAAK0qJ,IAAM,GACN7yL,KAAK+W,MAAM87K,EAAInc,EAAM5+J,QAAU09Q,EAEjC9+G,EAAM5+J,MAAQ09Q,IAjBfrtP,EAAKyH,IAAM,IAAM5vC,KAAK+W,MAAM64B,EAAI8mI,EAAM3+J,QAAUy9Q,KAGhDrtP,EAAK0qJ,IAAM,GACT7yL,KAAK+W,MAAM87K,EAAInc,EAAM5+J,QAAU09Q,GAG/B/nR,EAAOgzQ,IAAQwU,eAAiB,GAC3Bv+G,EAAM3+J,OAASy9Q,EAInB9+G,EAAM5+J,MAAQ09Q,KAOrBrtP,EAAKu5O,MAAoBjB,IAAQgV,mBAGjCttP,EAAKyH,IAAM,IAAM5vC,KAAK+W,MAAM64B,EAAI8mI,EAAM3+J,QAAUy9Q,MAGhDrtP,EAAK0qJ,IAAM,IAAM7yL,KAAK+W,MAAM87K,EAAInc,EAAM5+J,QAAU09Q,IAGhD/nR,EAAO60Q,QAFF5rG,EAAM3+J,OAASy9Q,GAM1B,IAAK,QACL,IAAK,KACH,QAAIrtP,EAAKu5O,MAAoBjB,IAAQgV,kBAGjCttP,EAAKyH,IAAM,IAAOzH,EAAKk6O,OAGvBl6O,EAAK0qJ,IAAM,IAAM7yL,KAAK+W,MAAM87K,EAAInc,EAAM5+J,QAAU09Q,IAGhD/nR,EAAO60Q,QAFF5rG,EAAM3+J,OAASy9Q,EAHfx1R,KAAK+W,MAAM64B,EAAI8mI,EAAM3+J,SAAWy9Q,GAS3C,IAAK,WACH,GAAIrtP,EAAKu5O,MAAoBjB,IAAQgV,gBACnC,OAAO,KAET,GAAIttP,EAAKyH,IAAM,IAAM5vC,KAAK+W,MAAM64B,EAAI3pC,EAAIywK,EAAM3+J,SAAWy9Q,EACvD,OAAO,KAET,MAAMp1C,EAAOj4M,EAAKu5O,MAAoBjB,IAAQiV,mBAC9C,OAAO9lP,EAAI3pC,EAAIm6O,EAAKxwM,EACtB,IAAK,SACL,IAAK,MACH,QAAIzH,EAAKu5O,MAAoBjB,IAAQgV,kBAGjCttP,EAAKyH,IAAM,IACN5vC,KAAK+W,MAAM64B,EAAI8mI,EAAM3+J,SAAWy9Q,GAG3C,QACE,OAAO,KAEb,CAaA,MAAMG,GAAiBzR,GAAarrP,SAASpC,GAC7C,MAAMm/P,GAAS,6BACf,MAAMC,GAA+B,EACrC,MAAMC,GAAkB,EACxB,MAAMC,GAAoB,IAC1B,MAAMC,GAAkB,WACxB,MAAMC,GAAQ,IAAItoR,IAAI,CAAC,YAAa,aAAc,YAAa,cAAe,YAAa,aAAc,cAAe,YAAa,iBAAkB,aAAc,YAAa,6BAClL,MAAMuoR,GAAiB,CAAC,CAAC,CAAC,GAAM,IAAO,aAAc,CAAC,CAAC,IAAM,IAAM,KAAO,cAAe,CAAC,CAAC,GAAM,GAAM,GAAM,GAAO,cAAe,CAAC,CAAC,GAAM,GAAM,EAAM,IAAO,cAAe,CAAC,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,IAAO,aAAc,CAAC,CAAC,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAO,cACrR,SAASC,cAAchuP,GACrB,IAAKA,IAASA,EAAKirP,OACjB,MAAO,CACLvgG,EAAG,EACHjjJ,EAAG,GAGP,MAAMwmP,EAAcjuP,EAAKirP,OAAOjS,MAChC,OAAKiV,EAME,CACLvjG,EAAGujG,EAAY3gO,OAAO,GAAK2gO,EAAY3gO,OAAO,GAAK2gO,EAAY/C,OAAO,GAAK+C,EAAY/C,OAAO,GAC9FzjP,EAAGwmP,EAAY3gO,OAAO,GAAK2gO,EAAY3gO,OAAO,GAAK2gO,EAAY/C,OAAO,GAAK+C,EAAY/C,OAAO,IAPvF,CACLxgG,EAAG,EACHjjJ,EAAG,EAOT,CACA,SAASymP,UAAUluP,GACjB,OAAOA,EAAKugP,SAAWvgP,EAAKugP,OAAO0J,UAAYjqP,EAAKugP,OAAOyJ,YAAchqP,EAAKugP,OAAO2J,aAAelqP,EAAKugP,OAAOwJ,UAClH,CACA,SAASoE,UAAUC,EAAct4R,GAC/B,IAAKs4R,EAAat4R,MAAO,CACvB,MAAMyvQ,EAAY,IAAI8oB,MAAM,CAAA,GAC5BD,EAAaxW,IAAcrS,GAC3B6oB,EAAat4R,MAAQyvQ,CACtB,CACD6oB,EAAat4R,MAAMwlR,IAAWxlR,EAChC,CACA,SAAUw4R,qBAAqBtuP,GAC7B,IAAK,MAAM4lO,KAAS5lO,EAAKk5O,MACnBtT,aAAiB2oB,iBACZ3oB,EAAMuT,YAGTvT,CAEV,CACA,SAAS4oB,WAAWxuP,GAClB,OAAOA,EAAKs9O,UAAUmR,WAAa,OACrC,CACA,SAASC,YAAY1uP,GACnB,MAAOA,EAAM,CACX,IAAKA,EAAK2uP,UAAW,CACnB3uP,EAAKu7O,IAAav7O,EAAKs5O,MAAciC,IACrC,MACD,CACD,GAAIv7O,EAAKu7O,IACP,OAEF,IAAIh0P,EAAO,KACX,IAAK,MAAMq+O,KAAS5lO,EAAK2uP,UAAUzV,MACjC,GAAItT,EAAM3yB,YAAc,OAAQ,CAC9B1rN,EAAOq+O,EACP,KACD,CAEH,IAAKr+O,IAASA,EAAKriB,IAAK,CACtB86B,EAAKu7O,IAAav7O,EAAKs5O,MAAciC,IACrC,MACD,CACD,MAAMla,EAAOrhO,EAAKu5O,MAClBv5O,EAAKu7O,MAAela,EAAKka,IACzB,MAAMr2Q,EAAMm8P,EAAK8Z,IAAa5zP,EAAKriB,IAAK86B,GACxC,IAAK96B,EACH,OAEF86B,EAAO96B,EAAI,EACZ,CACH,CACA,SAAS0pR,YAAY/pS,EAAKk/Q,GACxB,MAAM8qB,EAAShqS,EAAIgqS,OACnB,GAAIA,EAAQ,CACV,MAAMC,EAAcD,EAAOnT,MACvBoT,IACF/qB,EAAW6H,MAAQkjB,GAErB,MAAMjiB,EAAOgiB,EAAOhiB,KACpB,MAAMt3Q,EAAQs3Q,EAAKt3Q,MAAMs4R,IACzB,GAAIt4R,EAAO,CACT,MAAMw5R,EAAW,UACjB,MAAMC,EAAYz5R,EAAM,GACxBwuQ,EAAW8I,KAAOkiB,EAClBhrB,EAAW,cAAgBirB,CAC5B,CACF,CACD,GAAInqS,EAAIytE,SAAW,QACjByxM,EAAW8I,KAAO,aACb,GAAIhoR,EAAIytE,SAAW,MACxByxM,EAAW8I,KAAO,UACb,CACL,MAAMvnQ,EAASzgB,EAAIy0R,MACfh0Q,EAAOgtD,SAAW,QACpByxM,EAAW8I,KAAOvnQ,EAAOupR,QAAQhiB,OAAS,KAAO,eAAiB,OAErE,CACH,CACA,SAASoiB,UAAUpqS,GACjB,IAAKA,EAAIgqS,OACP,OAAO,KAET,MAAMA,EAAShqS,EAAIgqS,OACnB,OAAIA,EAAOK,OAASL,EAAOK,MAAM/W,MAAc,GACtC0W,EAAOK,MAAM/W,IAElB0W,EAAOM,QACFN,EAAOM,QAAQhX,IAEjB,IACT,CACA,SAASiX,YAAYt5R,GACnB,OAAOwoR,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACVinB,MAAO,CAAC,WACR31C,MAAO5wP,OAAO0d,OAAO,OAEvB09B,SAAU,CAAC,CACTxpC,KAAM,OACN0tQ,WAAY,CACV1uB,MAAO5wP,OAAO0d,OAAO,OAEvBrM,WAGN,CACA,SAASu5R,qBAAqBrvP,GAC5B,MAAMqhO,EAAOrhO,EAAKu5O,MAClB,GAAIlY,EAAKiX,IAAQ8U,oBAAsB,KAAM,CAC3C/rB,EAAKiX,IAAQ8U,kBAAoBptP,EACjCqhO,EAAKiX,IAAQgV,gBAAkB,IAChC,CACH,CACA,SAASgC,uBAAuBtvP,GAC9B,MAAMqhO,EAAOrhO,EAAKu5O,MACdlY,EAAKiX,IAAQ8U,oBAAsBptP,IACrCqhO,EAAKiX,IAAQgV,gBAAkB,MAEnC,CACA,SAASiC,YAAYvvP,GACnB,GAAIA,EAAKs4O,IACP,OAAO,MAETt4O,EAAKs4O,IAAU7zR,OAAO0d,OAAO,MAC7B,GAAI69B,EAAKwvP,aAAe,OACtB,OAAO,MAET,MAAMnuB,EAAOrhO,EAAKu5O,MAClB,IAAI/C,EAAS,KACb,GAAIx2O,EAAKw2O,OAAQ,CACfA,EAASnV,EAAK8Z,IAAan7O,EAAKw2O,OAAQx2O,EAAKs5O,OAC7C,IAAK9C,EACH,OAAO,MAETA,EAASA,EAAO,EACjB,CACD,MAAMiZ,gBACJA,EAAelC,mBACfA,GACElsB,EAAKiX,IACT,GAAIt4O,EAAKwvP,aAAe,WAAY,CAC5BhZ,aAAkBkZ,WACtBlZ,EAAS,MAEX,GAAIx2O,EAAK2vP,SAAU,CACjB3vP,EAAKs4O,IAAQ9B,OAASA,GAAUiZ,EAChC,OAAO,IACb,CAAW,GAAIjZ,GAAUA,IAAWiZ,EAAiB,CAC/CzvP,EAAKs4O,IAAQ9B,OAASA,EACtB,OAAO,IACR,CACD,OAAO,KACR,CACKA,aAAkBoZ,cACtBpZ,EAAS,MAEX,MAAMqZ,EAAWrZ,GAAUA,EAAO8C,MAClC,IAAI73O,EACJ,IAAIquP,EAAeD,EACnB,GAAI7vP,EAAK2vP,SACP,GAAInZ,EAAQ,CACV,MAAMuZ,EAAeF,EAASG,YAAYnwP,SAC1C,MAAMowP,EAAkBF,EAAa5oO,QAAQomO,GAC7C,MAAM2C,EAAiBH,EAAa5oO,QAAQqvN,GACxCyZ,KAAqB,GAAKA,EAAkBC,IAC9CJ,EAAe,MAEjBruP,EAAQyuP,EAAiB,CAC/B,MACMzuP,EAAQguP,EAAgBO,YAAYnwP,SAASsnB,QAAQomO,OAElD,KAAI/W,GAAUA,IAAW+W,EAK9B,OAAO,MAL2C,CAClD,MAAMwC,EAAeF,EAASG,YAAYnwP,SAC1C4B,EAAQsuP,EAAa5oO,QAAQqvN,GAAU,EACvCsZ,EAAeD,IAAaJ,EAAkB,KAAOI,CACzD,CAEG,CACD7vP,EAAKs4O,IAAQ9B,OAASsZ,EACtB9vP,EAAKs4O,IAAQ72O,MAAQA,EACrB,OAAO,IACT,CACA,SAAS0uP,eAAenwP,EAAMowP,EAAW7hH,GACvC,MAAM8yF,EAAOrhO,EAAKu5O,MAClB,MAAM8W,EAAQhvB,EAAKiX,IAAQgV,gBAC3B,MAAMgD,EAAcF,EAAU/W,IAC9B+W,EAAU/W,IAAqB,IAAMr5O,EACrCqhO,EAAKiX,IAAQgV,gBAAkB,KAC/B,MAAMztD,EAAMuwD,EAAU1U,IAASntG,GAC/BvuI,EAAK23O,IAAU93C,EAAI6+C,KAAM7+C,EAAIpW,MAC7B43C,EAAKiX,IAAQgV,gBAAkB+C,EAC/BD,EAAU/W,IAAqBiX,CACjC,CACA,MAAMC,yBAAyBtI,aAC7B,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,oBACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM6J,YAAYhL,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,MAAO,MAC7Bl3R,KAAKm6R,SAAWrT,WAAW,CACzBh0Q,KAAM26P,EAAW0sB,SACjBpT,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAK+0R,KAAO5N,gBAAgB1Z,EAAWsnB,KAAM,CAAC,OAAQ,OAAQ,UAC9D/0R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKo6R,WAAanT,SAAS,CACzBn0Q,KAAM26P,EAAW2sB,WACjBrT,aAAc,EACdC,SAAUz/Q,GAAK,OAEjBvH,KAAKq6R,WAAapT,SAAS,CACzBn0Q,KAAM26P,EAAW4sB,WACjBtT,aAAc,IACdC,SAAUz/Q,GAAK,OAEjBvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs6R,KAAO,KACZt6R,KAAK/G,KAAO,IACb,CACD,CAACmsR,MACC,MAAMkV,EAAOt6R,KAAKs6R,MAAQ,IAAIC,KAAK,CAAE,GACrC,MAAMC,EAAYF,EAAKhV,MACvB,MAAMvmC,EAAQ5wP,OAAO0d,OAAO,MACxB7L,KAAK/G,MAAMu5R,WAAa,UAC1BrkS,OAAOktD,OAAO0jM,EAAO/+O,KAAK/G,KAAKqsR,OAE/BvmC,EAAM9lP,KAAO,cAEf8lP,EAAM07C,YAAczI,gBAAgBsI,EAAK9H,WAAa,UAAY8H,EAAKI,UAAY,GACnF37C,EAAMhmP,OAASyhS,EAAUpyQ,MACzB,IAAI07E,EACJ,MAAM2pK,EAAa,CACjBktB,MAAOxD,GACPp4C,MAAO,CACL1lO,MAAO,OACPC,OAAQ,OACRshR,SAAU,YAGd,GAAI56R,KAAKq6R,aAAe,IACtBv2L,EAAM,CACJ/jG,KAAM,UACN0tQ,WAAY,CACVktB,MAAOxD,GACP0D,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJj8C,cAGC,CACL,MAAMq7C,EAAap6R,KAAKo6R,WAAa74R,KAAK7K,GAAK,IAC/C,MAAM2jS,EAAar6R,KAAKq6R,WAAa94R,KAAK7K,GAAK,IAC/C,MAAMukS,EAAWj7R,KAAKq6R,WAAa,IAAM,EAAI,EAC7C,MAAOzzR,EAAII,EAAIH,EAAII,GAAM,CAAC,IAAM,EAAI1F,KAAK+5O,IAAI8+C,IAAc,IAAM,EAAI74R,KAAKi6O,IAAI4+C,IAAc,IAAM,EAAI74R,KAAK+5O,IAAI8+C,EAAaC,IAAc,IAAM,EAAI94R,KAAKi6O,IAAI4+C,EAAaC,KAC1Kv2L,EAAM,CACJ/jG,KAAM,OACN0tQ,WAAY,CACVktB,MAAOxD,GACPrpS,EAAG,KAAK8Y,KAAMI,eAAgBi0R,OAAcp0R,KAAMI,IAClDi0R,aAAc,qBACdn8C,UAGJ5wP,OAAOktD,OAAOoyN,EAAY,CACxBjT,QAAS,cACT2gC,oBAAqB,QAExB,CACD,MAAMC,EAAM,CACVr7R,KAAM,MACNwpC,SAAU,CAACu6D,GACX2pK,cAEF,MAAMz+P,EAAShP,KAAKgjR,MAAcA,MAClC,GAAI4U,UAAU5oR,GACZ,OAAOg5Q,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACV1uB,MAAO,CACL2zC,QAAS,SACTr5Q,MAAO,OACPC,OAAQ,SAGZiwB,SAAU,CAAC6xP,KAGfA,EAAI3tB,WAAW1uB,MAAMlkO,SAAW,WAChC,OAAOmtQ,WAAWG,QAAQiT,EAC3B,EAEH,MAAMC,aAAanM,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKoyR,QAAUtL,WAAW,CACxBh0Q,KAAM26P,EAAW2kB,QACjBrL,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAAKA,KAAO,IAElC7D,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKuH,EAAI6/Q,eAAe3Z,EAAWlmQ,EAAG,OACtCvH,KAAKwH,EAAI4/Q,eAAe3Z,EAAWjmQ,EAAG,OACtCxH,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAK2hP,KAAO,IAAI2tC,eAChBtvR,KAAKu7R,KAAO,IAAIjM,eAChBtvR,KAAKw7R,SAAW,IAAIlM,eACpBtvR,KAAKy7R,UAAY,IAAInM,eACrBtvR,KAAKszN,MAAQ,IAAIg8D,eACjBtvR,KAAK07R,QAAU,IAAIpM,eACnBtvR,KAAK27R,WAAa,IAAIrM,cACvB,CACD,EAAEzM,YACOmV,qBAAqBh4R,KAC7B,CACD,CAAC8jR,MACC,OAAO,IACR,CACD,CAACN,MACC,OAAO,IACR,CACD,CAACnC,IAAU+G,EAAMj1D,GACf,MAAO5rN,EAAGC,EAAG4sL,EAAGjjJ,GAAKgiL,EACrBnzN,KAAKgiR,IAAQ3oQ,MAAQ9X,KAAK+D,IAAItF,KAAKgiR,IAAQ3oQ,MAAO9R,EAAI6sL,GACtDp0L,KAAKgiR,IAAQ1oQ,OAAS/X,KAAK+D,IAAItF,KAAKgiR,IAAQ1oQ,OAAQ9R,EAAI2pC,GACxDnxC,KAAKgiR,IAAQz4O,SAAS5nC,KAAKymR,EAC5B,CACD,CAAC/F,MACC,OAAOriR,KAAKgiR,IAAQ6N,cACrB,CACD,CAACzK,IAASyK,GACR,MAAM9wC,EAAQu1C,QAAQt0R,KAAM,YAC5B,MAAMytQ,EAAa,CACjB1uB,QACA/mN,GAAIh4B,KAAKulR,IACTmP,MAAO,CAAC,YAENO,YAAYj1R,OACdytQ,EAAWinB,MAAM/yR,KAAK,gBAEpB3B,KAAKD,OACP0tQ,EAAWmuB,QAAU57R,KAAKD,MAE5B,MAAMwpC,EAAW,GACjBvpC,KAAKgiR,IAAU,CACbz4O,WACAlwB,MAAO,EACPC,OAAQ,EACRu2Q,kBAEF,MAAMx8Q,EAASrT,KAAKuhR,IAAiB,CACnC1yP,OAAQ,IAAI3f,IAAI,CAAC,OAAQ,OAAQ,QAAS,YAAa,UAAW,eAClE4wQ,QAAS,OAEX,IAAKzsQ,EAAO80Q,QAAS,CACnB,GAAI90Q,EAAOi1Q,UACT,OAAOj1Q,SAEFrT,KAAKgiR,IACZ,OAAOgG,WAAWC,OACnB,CACDlpC,EAAM1lO,MAAQ24Q,gBAAgBhyR,KAAKgiR,IAAQ3oQ,OAC3C0lO,EAAMzlO,OAAS04Q,gBAAgBhyR,KAAKgiR,IAAQ1oQ,QAC5C,MAAM8uQ,EAAO,CACXroR,KAAM,MACN0tQ,aACAlkO,YAEF,MAAM4pL,EAAO,CAACnzN,KAAKuH,EAAGvH,KAAKwH,EAAGxH,KAAKgiR,IAAQ3oQ,MAAOrZ,KAAKgiR,IAAQ1oQ,eACxDtZ,KAAKgiR,IACZ,OAAOgG,WAAWG,QAAQC,EAAMj1D,EACjC,EAEH,MAAM0oE,eAAe3M,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKu2Q,KAAO9I,EAAW8I,MAAQ,GAC/Bv2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK44R,MAAQ,KACb54R,KAAK64R,QAAU,IAChB,CACD,CAACzT,MACC,OAAOplR,KAAK64R,UAAUhX,KAAa,IACpC,EAEH,MAAMia,gBAAgB5M,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAK+7R,aAAe7U,WAAW,CAC7Bp0Q,KAAM26P,EAAWsuB,aAAetuB,EAAWsuB,aAAanoR,cAAgB,GACxEmzQ,aAAc,GACdC,SAAU9gQ,GAAK,CAAC,QAAS,WAAY,eAAgB,MAAO,WAAY,UAAW,WAAY,OAAQ,YAAa,QAAS,UAAU/iB,SAAS+iB,IAAMA,EAAEjnB,MAAM,oBAEhKe,KAAKusN,SAAW46D,gBAAgB1Z,EAAWlhD,SAAU,CAAC,OAAQ,SAAU,gBAAiB,SAAU,SACnGvsN,KAAKg8R,gBAAkBlV,WAAW,CAChCh0Q,KAAM26P,EAAWuuB,gBACjBjV,cAAe,EACfC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAK4S,WAAak0Q,WAAW,CAC3Bh0Q,KAAM26P,EAAW76P,WACjBm0Q,cAAe,EACfC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKi8R,SAAW9U,gBAAgB1Z,EAAWwuB,SAAU,CAAC,OAAQ,kBAC9Dj8R,KAAKk8R,aAAepV,WAAW,CAC7Bh0Q,KAAM26P,EAAWyuB,aACjBnV,cAAe,EACfC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKm8R,QAAU1uB,EAAW0uB,SAAW,GACrCn8R,KAAKo8R,qBAAuBtV,WAAW,CACrCh0Q,KAAM26P,EAAW2uB,qBACjBrV,cAAe,EACfC,SAAUz/Q,GAAKA,GAAK,GAAKA,GAAK,IAEhCvH,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKq8R,aAAejV,eAAe3Z,EAAW4uB,aAAc,OAC5Dr8R,KAAKs8R,YAAclV,eAAe3Z,EAAW6uB,YAAa,UAC1Dt8R,KAAKu8R,gBAAkBzV,WAAW,CAChCh0Q,KAAM26P,EAAW8uB,gBACjBxV,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKw8R,eAAiB/U,SAASha,EAAW+uB,gBAC1Cx8R,KAAKy8R,UAAYhvB,EAAWgvB,WAAa,GACzCz8R,KAAK08R,aAAevV,gBAAgB1Z,EAAWivB,aAAc,CAAC,QAAS,QAAS,gBAAiB,gBAAiB,SAClH18R,KAAK28R,SAAW7V,WAAW,CACzBh0Q,KAAM26P,EAAWkvB,SACjB5V,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAOo+Q,EAAWp+Q,KAAKukB,cAAgB,GAAI,CAAC,QAAS,UAAW,qBAAsB,sBAAuB,iBAAkB,mBAAoB,WAAY,mBAAoB,SAAU,SAAU,SAAU,UAAW,WAAY,WAAY,WAAY,cAAe,aAAc,OAAQ,WAAY,WAAY,QAAS,YAAa,YAAa,YAAa,MAAO,UAAW,WAAY,MAAO,SAAU,cAAe,UAAW,eAAgB,eAAgB,mBAAoB,kBAAmB,eAAgB,aAAc,YAAa,iBAAkB,aAAc,SAAU,OAAQ,QAAS,gBAAiB,eAAgB,eAAgB,mBAAoB,iBAAkB,UAAW,SAAU,eAAgB,aAAc,OAAQ,WAAY,WAAY,WAAY,OAAQ,WAAY,WAAY,UAAW,UAAW,gBACt3B5T,KAAK48R,QAAUzV,gBAAgB1Z,EAAWmvB,QAAS,CAAC,YAAa,uBAAwB,eAAgB,mBACzG58R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK68R,gBAAkBpV,SAASha,EAAWovB,iBAC3C78R,KAAKy4Q,QAAU,KACfz4Q,KAAKs7R,OAAS,IACf,EAEH,MAAMwB,aAAa5N,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKf,MAAQkoR,gBAAgB1Z,EAAWxuQ,MAAO,CAAC,OAAQ,UAAW,SAAU,SAC7Ee,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAK+8R,QAAU,IAChB,EAEH,MAAMC,kBAAkB9N,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aACtBl3R,KAAKi9R,WAAaxvB,EAAWwvB,YAAc,GAC3Cj9R,KAAKk9R,SAAWzvB,EAAWyvB,UAAY,GACvCl9R,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAKm9R,SAAW1vB,EAAW0vB,UAAY,EACxC,EAEH,MAAMC,gBAAgBlO,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKq9R,OAAS5vB,EAAW4vB,QAAU,GACnCr9R,KAAKo6Q,QAAU3M,EAAW2M,SAAW,GACrCp6Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMiN,uBAAuBxL,SAC3B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACjL,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,MAAc,EAAI,IAAM,IACjD,EAEH,MAAM0b,eAAerO,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKw9R,MAAQrW,gBAAgB1Z,EAAW+vB,MAAO,CAAC,QAAS,SACzDx9R,KAAK+0R,KAAO5N,gBAAgB1Z,EAAWsnB,KAAM,CAAC,OAAQ,OAAQ,UAC9D/0R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKy9R,OAAS,IAAInO,eAAe,GACjCtvR,KAAKs6R,KAAO,IAAIhL,eAAe,GAC/BtvR,KAAKs7R,OAAS,KACdt7R,KAAK/G,KAAO,KACZ+G,KAAKiqR,OAAS,IACf,CACD,CAACvH,MACC,IAAK1iR,KAAKgiR,IAAS,CACjB,MAAM0b,EAAQ19R,KAAKs6R,KAAK/wP,SAASpkC,QACjC,GAAIu4R,EAAMx+R,OAAS,EAAG,CACpB,MAAMy+R,EAAcD,EAAM1jQ,IAAI,IAAM,IAAIugQ,KAAK,CAAA,GAC7C,IAAK,IAAIl5R,EAAIq8R,EAAMx+R,OAAQmC,EAAI,EAAGA,IAChCq8R,EAAM/7R,KAAKg8R,EAEd,CACD,MAAM3mO,EAAS0mO,EAAMvoR,KAAImlR,GAAQA,EAAKI,YACtC,MAAM9F,EAAS,CAAC,EAAG,EAAG,EAAG,GACzB,GAAI50R,KAAKiqR,OAAQ,CACf2K,EAAO,GAAK50R,KAAKiqR,OAAO0J,SACxBiB,EAAO,GAAK50R,KAAKiqR,OAAOyJ,WACxBkB,EAAO,GAAK50R,KAAKiqR,OAAO2J,YACxBgB,EAAO,GAAK50R,KAAKiqR,OAAOwJ,SACzB,CACDzzR,KAAKgiR,IAAU,CACbhrN,SACA49N,SACA8I,QAEH,CACD,OAAO19R,KAAKgiR,GACb,CACD,CAACsD,MACC,MAAMoY,MACJA,GACE19R,KAAK0iR,MACT,MAAMkb,EAAaF,EAAMvoR,KAAIu0B,IAC3B,MAAMq1M,EAAQr1M,EAAK47O,MACnBvmC,EAAM32N,QAAU,UAChB,OAAO22N,CAAK,IAEd,MAAMA,EAAQ5wP,OAAO0d,OAAO,MACxB7L,KAAKiqR,QACP97R,OAAOktD,OAAO0jM,EAAO/+O,KAAKiqR,OAAO3E,OAE/BtlR,KAAK/G,MAAMu5R,WAAa,WAC1BrkS,OAAOktD,OAAO0jM,EAAO/+O,KAAK/G,KAAKqsR,OAEjC,GAAItlR,KAAKy9R,OAAOl0P,SAASskP,MAAKnkP,GAAQA,EAAKm0P,SAAW,IAAI,CACxD,MAAMC,EAAe99R,KAAKy9R,OAAOl0P,SAASp0B,KAAIu0B,GAAQA,EAAK47O,QAC3D,GAAIwY,EAAa5+R,SAAW,GAAK4+R,EAAa5+R,SAAW,EAAG,CAC1D,MAAMmtB,EAAOyxQ,EAAa9jQ,IAAI,GAC9B,IAAK,IAAI34B,EAAIy8R,EAAa5+R,OAAQmC,EAAI,EAAGA,IACvCy8R,EAAan8R,KAAK0qB,EAErB,CACD0yN,EAAMg/C,aAAeD,EAAa3oR,KAAI2Z,GAAKA,EAAE+uQ,SAAQj8R,KAAK,IAC3D,CACD,OAAQ5B,KAAKwyR,UACX,IAAK,YACL,IAAK,SACHzzC,EAAMi/C,YAAc,GACpB,MACF,IAAK,WACHj/C,EAAMi/C,YAAc,OACpB,MACF,QACEj/C,EAAMi/C,YAAcJ,EAAWzoR,KAAI2Z,GAAKA,EAAEiwN,QAAOn9O,KAAK,KACtD,MAEJm9O,EAAMk/C,YAAcL,EAAWzoR,KAAI2Z,GAAKA,EAAEzV,QAAOzX,KAAK,KACtDm9O,EAAMm/C,YAAcN,EAAWzoR,KAAI2Z,GAAKA,EAAE1G,QAAOxmB,KAAK,KACtD,OAAOm9O,CACR,EAEH,MAAMo/C,cAAcjP,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAK2+O,MAAQwoC,gBAAgB1Z,EAAW9uB,MAAO,CAAC,OAAQ,cAAe,WAAY,WAAY,YAC/F3+O,KAAKo+R,YAAc3wB,EAAW2wB,aAAe,GAC7Cp+R,KAAK0+O,OAASyoC,gBAAgB1Z,EAAW/uB,OAAQ,CAAC,OAAQ,cAAe,WAAY,WAAY,YACjG1+O,KAAKq+R,aAAe5wB,EAAW4wB,cAAgB,GAC/Cr+R,KAAKs+R,cAAgB7wB,EAAW6wB,eAAiB,GACjDt+R,KAAKu+R,eAAiB9wB,EAAW8wB,gBAAkB,GACnDv+R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKw+R,eAAiB/wB,EAAW+wB,gBAAkB,GACnDx+R,KAAKy+R,eAAiBhxB,EAAWgxB,gBAAkB,GACnDz+R,KAAK0+R,gBAAkBjxB,EAAWixB,iBAAmB,GACrD1+R,KAAKq5R,SAAWvS,WAAW,CACzBh0Q,KAAM26P,EAAW4rB,SACjBtS,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,EAEH,MAAMqD,mBAAmBzP,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aAAc,MACpCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKq9R,OAAS5vB,EAAW4vB,QAAU,GACnCr9R,KAAKq5R,SAAWvS,WAAW,CACzBh0Q,KAAM26P,EAAW4rB,SACjBtS,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKkgR,OAASzS,EAAWyS,QAAU,GACnClgR,KAAKk5R,WAAa/R,gBAAgB1Z,EAAWyrB,WAAY,CAAC,OAAQ,cAAe,aACjFl5R,KAAKo6Q,QAAU3M,EAAW2M,SAAW,GACrCp6Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK4+R,OAAS,IACf,EAEH,MAAMC,oBAAoB3P,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,cAAe,MACrCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKq9R,OAAS5vB,EAAW4vB,QAAU,GACnCr9R,KAAKq5R,SAAWvS,WAAW,CACzBh0Q,KAAM26P,EAAW4rB,SACjBtS,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKkgR,OAASzS,EAAWyS,QAAU,GACnClgR,KAAKk5R,WAAa/R,gBAAgB1Z,EAAWyrB,WAAY,CAAC,OAAQ,cAAe,aACjFl5R,KAAKo6Q,QAAU3M,EAAW2M,SAAW,GACrCp6Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK4+R,OAAS,IACf,CACD,CAACxZ,IAASyK,GACR7vR,KAAKgiR,IAAU,GACf,OAAOgG,WAAWC,OACnB,EAEH,MAAM6W,eAAe5P,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAK++R,UAAY5X,gBAAgB1Z,EAAWsxB,UAAW,CAAC,WAAY,OAAQ,UAAW,SACvF/+R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,CACD,CAAClW,IAASyK,GACR,MAAM7gR,EAAShP,KAAKgjR,MACpB,MAAMgc,EAAUhwR,EAAOg0Q,MACvB,MAAMic,EAAa,CACjBl/R,KAAM,SACN0tQ,WAAY,CACVz1O,GAAIh4B,KAAKulR,IACTmP,MAAO,CAAC,aACR31C,MAAO,CAAE,GAEXx1M,SAAU,IAEZ,IAAK,MAAMsjP,KAASmS,EAAQnS,MAAMtjP,SAAU,CAC1C,GAAIsjP,EAAMqS,WAAa,UAAYrS,EAAM+R,OACvC,SAEF,MAAMne,EAAQ1oQ,aAAa80Q,EAAM+R,OAAO/c,KACxC,IAAKpB,EACH,SAEF,MAAM9kO,EAAOu6O,OAAOzV,EAAMhiR,KACrBk9C,GAGLsjP,EAAW11P,SAAS5nC,KAAK,CACvB5B,KAAM,IACN0tQ,WAAY,CACVz1O,GAAI,OAASh4B,KAAKulR,IAClB5pO,OACAxjC,UAAWsoQ,EAAMtoQ,UACjBu8Q,MAAO,CAAC,WACR31C,MAAO,CAAE,GAEXx1M,SAAU,IAEb,CACD,OAAOy+O,WAAWG,QAAQ8W,EAC3B,EAEH,MAAME,kBAAkBjQ,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKw4N,SAAW2uD,gBAAgB1Z,EAAWj1C,SAAU,CAAC,WAAY,QAAS,SAAU,YACrFx4N,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAKF,QAAU,KACfE,KAAK4+R,OAAS,IACf,EAEH,MAAMQ,gBAAgBlQ,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKq/R,UAAYlY,gBAAgB1Z,EAAW4xB,UAAW,CAAC,OAAQ,SAAU,SAAU,QAAS,QAC7Fr/R,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKs/R,QAAU/9R,KAAKuS,KAAKszQ,eAAe3Z,EAAW6xB,UACnDt/R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAKokN,KAAO,KACZpkN,KAAKiqR,OAAS,KACdjqR,KAAKuvR,KAAO,KACZvvR,KAAKR,MAAQ,IACd,CACD,CAACwlR,IAAWxlR,GACVq4R,UAAU73R,KAAMR,EACjB,CACD,CAACkjR,IAAWmN,GACV,IAAK7vR,KAAKgiR,IAAS,CACjB,IAAI3oQ,MACFA,EAAKC,OACLA,GACEu2Q,EACJ,OAAQ7vR,KAAKq/R,WACX,IAAK,OACL,IAAK,QACL,IAAK,SACHhmR,EAAQrZ,KAAKs/R,SAAW,EAAIjmR,EAAQrZ,KAAKs/R,QACzC,MACF,IAAK,MACL,IAAK,SACHhmR,EAAStZ,KAAKs/R,SAAW,EAAIhmR,EAAStZ,KAAKs/R,QAC3C,MAEJt/R,KAAKgiR,IAAUsR,WAAWtzR,KAAM,CAC9BqZ,QACAC,UAEH,CACD,OAAOtZ,KAAKgiR,GACb,CACD,CAACoD,IAASyK,GACR,IAAK7vR,KAAKR,MACR,OAAOwoR,WAAWE,MAEpBloR,KAAKykR,MACL,MAAMjlR,EAAQQ,KAAKR,MAAM4lR,IAASyK,GAAgBzH,KAClD,IAAK5oR,EAAO,CACVQ,KAAKwkR,MACL,OAAOwD,WAAWE,KACnB,CACD,MAAMqX,EAAev/R,KAAKs/R,QAC1B,GAAIt/R,KAAKs/R,SAAW,EAAG,CACrB,MAAMlrG,EACJA,EAACjjJ,EACDA,GACEnxC,KAAK0iR,IAAWmN,GACpB,OAAQ7vR,KAAKq/R,WACX,IAAK,OACL,IAAK,QACL,IAAK,SACHr/R,KAAKs/R,QAAUlrG,EACf,MACF,IAAK,MACL,IAAK,SACHp0L,KAAKs/R,QAAUnuP,EACf,MAEL,CACD,MAAM5H,EAAW,UACN/pC,IAAU,SACnB+pC,EAAS5nC,KAAK,CACZ5B,KAAM,QACNP,UAGF+pC,EAAS5nC,KAAKnC,GAEhB,MAAMu/O,EAAQu1C,QAAQt0R,KAAM,OAAQ,SAAU,cAC9C,OAAQA,KAAKq/R,WACX,IAAK,OACL,IAAK,QACCr/R,KAAKs/R,QAAU,IACjBvgD,EAAM1lO,MAAQ24Q,gBAAgBhyR,KAAKs/R,UAErC,MACF,IAAK,MACL,IAAK,SACCt/R,KAAKs/R,QAAU,IACjBvgD,EAAMzlO,OAAS04Q,gBAAgBhyR,KAAKs/R,UAEtC,MAEJ5J,QAAQ11R,KAAM,KAAMR,GACpBQ,KAAKwkR,MACLxkR,KAAKs/R,QAAUC,EACf,OAAOvX,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACV1uB,QACA21C,MAAO,CAAC,eAEVnrP,YAEH,EAEH,MAAMi2P,oBAAoB7N,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMoP,qBAAqBvQ,UACzB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eAAgB,MACtCl3R,KAAK0/R,uBAAyBvY,gBAAgB1Z,EAAWiyB,uBAAwB,CAAC,WAAY,aAC9F1/R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKvB,IAAMgvQ,EAAWhvQ,KAAO,GAC7BuB,KAAK2/R,UAAYlyB,EAAWkyB,WAAa,GACzC3/R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK4/R,WAAa,KAClB5/R,KAAK6/R,QAAU,KACf7/R,KAAK8/R,SAAW,KAChB9/R,KAAK+/R,KAAO,KACZ//R,KAAKggS,QAAU,KACfhgS,KAAKigS,WAAa,IACnB,EAEH,MAAMC,oBAAoBhR,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,cAAe,MACrCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKmgS,KAAOhZ,gBAAgB1Z,EAAW0yB,KAAM,CAAC,UAAW,QAAS,SAAU,QAAS,UAAW,SAAU,SAC1GngS,KAAKogS,MAAQjZ,gBAAgB1Z,EAAW2yB,MAAO,CAAC,SAAU,UAC1DpgS,KAAK6M,KAAOu6Q,eAAe3Z,EAAW5gQ,KAAM,QAC5C7M,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,CACD,CAAC7E,IAASyK,GACR,MAAM9wC,EAAQu1C,QAAQ,UACtB,MAAMznR,EAAOmlR,gBAAgBhyR,KAAK6M,MAClCkyO,EAAM1lO,MAAQ0lO,EAAMzlO,OAASzM,EAC7B,IAAIxd,EACJ,IAAIgxS,EACJ,IAAIC,EACJ,MAAMhtE,EAAQtzN,KAAKgjR,MAAcA,MACjC,MAAMtzQ,EAAQ4jN,EAAM5jN,MAAM65B,SAASrqC,QAAUo0N,EAAM5jN,MAAM65B,SAAS,GAAG67O,MAAWgD,MAAQ,GACxF,MAAMmY,EAAgB,CACpBpkB,IAAKzsQ,EAAM,UAAO3O,EAAY2O,EAAM,GAAK,MAAM5L,WAC/Cs4Q,KAAM1sQ,EAAM,UAAO3O,EAAY2O,EAAM,GAAK,OAAO5L,YAEnD,MAAMtE,EAAQ8zN,EAAM9zN,QAAQ0lR,OAAY,MACxC,MAAMh1B,EAAU1wP,IAAU+gS,EAAcpkB,SAAMp7Q,EAC9C,MAAMssR,EAAY/5D,EAAMyvD,MACxB,MAAMyd,EAAUltE,EAAMiyD,IACtB,IAAIkb,EACJ,GAAIpT,aAAqBqT,UAAW,CAClCJ,EAAUjT,EAAU9H,IACpBl2R,EAAO,QACPgxS,EAAY,WACZI,EAASpT,EAAUvL,MAASyD,KAAS8H,EAAU9H,GACrD,KAAW,CACLl2R,EAAO,WACPgxS,EAAY,cACZI,EAASntE,EAAMwuD,MAASyD,KAASjyD,EAAMiyD,GACxC,CACD,MAAMj2P,EAAQ,CACZvvB,KAAM,QACN0tQ,WAAY,CACVinB,MAAO,CAAC2L,GACRthD,QACAyhD,UACAC,SACApxS,OACA6gQ,UACAywC,MAAOJ,EAAcpkB,GACrBykB,OAAQL,EAAcnkB,IACtB,aAAcuc,UAAUrlE,GACxB,gBAAiB,QAGjBgtE,IACFhxQ,EAAMm+O,WAAW1tQ,KAAOugS,GAE1B,GAAIpI,WAAW5kE,GAAQ,CACrBhkM,EAAMm+O,WAAW,iBAAmB,KACpCn+O,EAAMm+O,WAAWozB,SAAW,IAC7B,CACD,OAAO7Y,WAAWG,QAAQ,CACxBpoR,KAAM,QACN0tQ,WAAY,CACVinB,MAAO,CAAC,aAEVnrP,SAAU,CAACja,IAEd,EAEH,MAAMwxQ,mBAAmB5R,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aAAc,MACpCl3R,KAAK+gS,SAAW5Z,gBAAgB1Z,EAAWszB,SAAU,CAAC,SAAU,SAChE/gS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKi8C,KAAOkrO,gBAAgB1Z,EAAWxxN,KAAM,CAAC,cAAe,SAAU,cAAe,YACtFj8C,KAAKghS,UAAYla,WAAW,CAC1Bh0Q,KAAM26P,EAAWuzB,UACjBja,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,CACD,CAAC7E,IAASyK,GACR,MAAM9wC,EAAQu1C,QAAQt0R,KAAM,SAAU,UACtC,MAAMihS,EAAKjhS,KAAKgjR,MAChB,MAAM1vD,EAAQ2tE,EAAGje,MACjB,MAAMxpB,EAAWlmC,EAAMlP,MAAMv3M,MAAQ,GACrC,MAAMq0R,EAAc,CAClB1nC,SAAU,QAAQA,8BAEpB,MAAMjwN,EAAW,GACjB,GAAI+pL,EAAM5jN,MAAM65B,SAASrqC,OAAS,EAAG,CACnC,MAAMwQ,EAAQ4jN,EAAM5jN,MACpB,IAAIyxR,EAAiB,EACrB,IAAIC,EAAY,EAChB,GAAI1xR,EAAM65B,SAASrqC,SAAW,EAAG,CAC/BiiS,EAAiBzxR,EAAM65B,SAAS,GAAGlxC,KACnC+oS,EAAY,EAAID,CACjB,CACD,MAAME,EAAY3xR,EAAM65B,SAAS43P,GAAgB/b,MAAWgD,KAC5D,MAAM16Q,EAASgC,EAAM65B,SAAS63P,GAAWhc,MAAWgD,KACpD,IAAIkZ,EAAW,MACf,MAAM9hS,EAAQ8zN,EAAM9zN,QAAQ0lR,OAAY,GACxC,IAAK,IAAI7jR,EAAI,EAAGoH,EAAK44R,EAAUniS,OAAQmC,EAAIoH,EAAIpH,IAAK,CAClD,MAAMkxJ,EAAS,CACbxyJ,KAAM,SACN0tQ,WAAY,CACVjuQ,MAAOkO,EAAOrM,IAAMggS,EAAUhgS,GAC9B09O,MAAOmiD,GAET1hS,MAAO6hS,EAAUhgS,IAEfqM,EAAOrM,KAAO7B,IAChB+yJ,EAAOk7G,WAAW6zB,SAAWA,EAAW,MAE1C/3P,EAAS5nC,KAAK4wJ,EACf,CACI+uI,GACH/3P,EAAS8kL,OAAO,EAAG,EAAG,CACpBtuN,KAAM,SACN0tQ,WAAY,CACV8zB,OAAQ,KACRD,SAAU,MAEZ9hS,MAAO,KAGZ,CACD,MAAMgiS,EAAmB,CACvB9M,MAAO,CAAC,aACR8L,QAASltE,EAAMiyD,IACfkb,OAAQntE,EAAMwuD,MAASyD,KAASjyD,EAAMiyD,IACtCxmC,QACA,aAAc45C,UAAUrlE,GACxB,gBAAiB,OAEnB,GAAI4kE,WAAW5kE,GAAQ,CACrBkuE,EAAiB,iBAAmB,KACpCA,EAAiBX,SAAW,IAC7B,CACG7gS,KAAKi8C,OAAS,gBAChBulP,EAAiBtgP,SAAW,MAE9B,OAAO8mO,WAAWG,QAAQ,CACxBpoR,KAAM,QACN0tQ,WAAY,CACVinB,MAAO,CAAC,aAEVnrP,SAAU,CAAC,CACTxpC,KAAM,SACNwpC,WACAkkO,WAAY+zB,KAGjB,EAEH,MAAMC,cAAcvS,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAK0hS,OAASva,gBAAgB1Z,EAAWi0B,OAAQ,CAAC,SAClD1hS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKR,MAAQiuQ,EAAWjuQ,MAAQsoR,SAASra,EAAWjuQ,OAAS,GAC7DQ,KAAKs7R,OAAS,IACf,CACD,CAACnY,MACC,OAAO,KACR,CACD,CAACmC,MACC,OAAOtlR,KAAKR,MAAQwE,KAAKC,aAAajE,KAAKR,MAAM0E,EAAGlE,KAAKR,MAAM2E,EAAGnE,KAAKR,MAAM4E,GAAK,IACnF,EAEH,MAAMu9R,aAAazS,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK4hS,cAAgB9a,WAAW,CAC9Bh0Q,KAAM26P,EAAWm0B,cACjB7a,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMwR,gBAAgB3S,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKi9R,WAAaxvB,EAAWwvB,YAAc,GAC3Cj9R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAK66Q,MAAQsM,gBAAgB1Z,EAAWoN,MAAO,CAAC,kBAAmB,aAAc,eACjF76Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK+8R,QAAU,IAChB,EAEH,MAAMzD,oBAAoBpK,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,cAAe,MACrCl3R,KAAKmxC,EAAIi2O,eAAe3Z,EAAWt8N,GACnCnxC,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKo0L,EAAIgzF,eAAe3Z,EAAWr5E,GACnCp0L,KAAKuH,EAAI6/Q,eAAe3Z,EAAWlmQ,EAAG,OACtCvH,KAAKwH,EAAI4/Q,eAAe3Z,EAAWjmQ,EAAG,OACtCxH,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,IACf,CACD,CAAClW,IAASyK,GACR,MAAMnnO,EAAOspO,gBAAgBhyR,KAAKuH,GAClC,MAAM4iR,EAAM6H,gBAAgBhyR,KAAKwH,GACjC,MAAMu3O,EAAQ,CACZr2L,OACAyhO,MACA9wQ,MAAO24Q,gBAAgBhyR,KAAKo0L,GAC5B96K,OAAQ04Q,gBAAgBhyR,KAAKmxC,IAE/B,MAAM6jP,EAAa,CAAC,kBAChBC,YAAYj1R,OACdg1R,EAAWrzR,KAAK,gBAElB,OAAOqmR,WAAWG,QAAQ,CACxBpoR,KAAM,MACNwpC,SAAU,GACVkkO,WAAY,CACV1uB,QACA21C,MAAOM,EACPh9P,GAAIh4B,KAAKulR,MAGd,EAEH,MAAMuc,eAAe5S,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK+hS,SAAWjb,WAAW,CACzBh0Q,KAAM26P,EAAWs0B,SACjBhb,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAK4B,KAAOulR,gBAAgB1Z,EAAW7rQ,KAAM,CAAC,SAAU,UACxD5B,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAK69R,OAASzW,eAAe3Z,EAAWowB,QACxC79R,KAAKjH,OAASouR,gBAAgB1Z,EAAW10Q,OAAQ,CAAC,QAAS,UAAW,aAAc,SAAU,SAAU,WAAY,SAAU,UAAW,WACzIiH,KAAK06R,UAAYtT,eAAe3Z,EAAWitB,UAAW,SACtD16R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,IACf,CACD,CAAChW,MACC,MAAMvmC,EAAQu1C,QAAQt0R,KAAM,cAC5B++O,EAAM8+C,OAAS7L,gBAAgBhyR,KAAK4B,OAAS,SAAW,EAAI5B,KAAK69R,QACjE,OAAO9+C,CACR,EAEH,MAAMijD,oBAAoBvQ,cACxB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACC,MAAM54Q,EAAOrJ,KAAK6hR,IAAUzQ,OAC5BpxQ,KAAK6hR,IAAYx4Q,EAAO,IAAIC,KAAKD,GAAQ,IAC1C,CACD,CAAC+7Q,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,IAAY7hR,KAAK6hR,IAAU/9Q,WAAa,GACjE,EAEH,MAAMm+R,iBAAiBxQ,cACrB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACC,MAAM54Q,EAAOrJ,KAAK6hR,IAAUzQ,OAC5BpxQ,KAAK6hR,IAAYx4Q,EAAO,IAAIC,KAAKD,GAAQ,IAC1C,CACD,CAAC+7Q,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,IAAY7hR,KAAK6hR,IAAU/9Q,WAAa,GACjE,EAEH,MAAMo+R,qBAAqBhT,UACzB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eAAgB,MACtCl3R,KAAKmiS,cAAgBhb,gBAAgB1Z,EAAW00B,cAAe,CAAC,OAAQ,MAAO,OAC/EniS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKoiS,OAASjb,gBAAgB1Z,EAAW20B,OAAQ,CAAC,OAAQ,SAC1DpiS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKqiS,KAAO,KACZriS,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,CACD,CAAC7E,IAASyK,GACR,MAAM9wC,EAAQu1C,QAAQt0R,KAAM,SAAU,OAAQ,UAC9C,MAAMszN,EAAQtzN,KAAKgjR,MAAcA,MACjC,MAAMoF,EAAO,CACXroR,KAAM,QACN0tQ,WAAY,CACVp+Q,KAAM,OACNmxS,QAASltE,EAAMiyD,IACfkb,OAAQntE,EAAMwuD,MAASyD,KAASjyD,EAAMiyD,IACtCmP,MAAO,CAAC,gBACR31C,QACA,aAAc45C,UAAUrlE,GACxB,gBAAiB,QAGrB,GAAI4kE,WAAW5kE,GAAQ,CACrB80D,EAAK3a,WAAW,iBAAmB,KACnC2a,EAAK3a,WAAWozB,SAAW,IAC5B,CACD,OAAO7Y,WAAWG,QAAQ,CACxBpoR,KAAM,QACN0tQ,WAAY,CACVinB,MAAO,CAAC,aAEVnrP,SAAU,CAAC6+O,IAEd,EAEH,MAAMka,gBAAgB7Q,cACpB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKuiS,WAAazb,WAAW,CAC3Bh0Q,KAAM26P,EAAW80B,WACjBxb,aAAc,EACdC,SAAUz/Q,GAAK,OAEjBvH,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKwiS,WAAa1b,WAAW,CAC3Bh0Q,KAAM26P,EAAW+0B,WACjBzb,cAAe,EACfC,SAAUz/Q,GAAK,OAEjBvH,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACC,MAAMzuQ,EAASqE,WAAW7X,KAAK6hR,IAAUzQ,QACzCpxQ,KAAK6hR,IAAY/pQ,MAAMtE,GAAU,KAAOA,CACzC,CACD,CAAC4xQ,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,MAAc,KAAO7hR,KAAK6hR,IAAU/9Q,WAAa,GAC1E,EAEH,MAAM2+R,kBAAkBvT,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,EAEH,MAAMoH,aAAaxT,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK2iS,QAAU,IAAIrT,eACnBtvR,KAAKqJ,KAAO,IAAIimR,eAChBtvR,KAAK4iS,SAAW,IAAItT,eACpBtvR,KAAK6iS,QAAU,IAAIvT,eACnBtvR,KAAKi0R,OAAS,IAAI3E,eAClBtvR,KAAK8iS,MAAQ,IAAIxT,eACjBtvR,KAAK85C,MAAQ,IAAIw1O,eACjBtvR,KAAK+iS,QAAU,IAAIzT,eACnBtvR,KAAK89P,KAAO,IAAIwxB,eAChBtvR,KAAKgjS,KAAO,IAAI1T,cACjB,EAEH,MAAM2T,qBAAqBvR,aACzB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eAAgB,CAAC,GAAI,OAAQ,SAAU,SAAU,cACvEl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM6S,sBAAsBhU,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,gBAAiB,MACvCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKmjS,aAAe,IAAI7T,cACzB,EAEH,MAAM8T,aAAalU,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKkyR,WAAa/K,gBAAgB1Z,EAAWykB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KlyR,KAAKoyR,QAAUtL,WAAW,CACxBh0Q,KAAM26P,EAAW2kB,QACjBrL,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAAKA,KAAO,IAElC7D,KAAKmxC,EAAIs8N,EAAWt8N,EAAIi2O,eAAe3Z,EAAWt8N,GAAK,GACvDnxC,KAAK2yR,OAASxL,gBAAgB1Z,EAAWklB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG3yR,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKqjS,OAAS51B,EAAW41B,QAAU,GACnCrjS,KAAKyzC,KAAO2zO,eAAe3Z,EAAWh6N,KAAM,OAC5CzzC,KAAKizR,KAAO7L,eAAe3Z,EAAWwlB,KAAM,OAC5CjzR,KAAKkzR,KAAO9L,eAAe3Z,EAAWylB,KAAM,OAC5ClzR,KAAK+yR,KAAO3L,eAAe3Z,EAAWslB,KAAM,OAC5C/yR,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKw+P,OAASsoB,WAAW,CACvBh0Q,KAAM26P,EAAWjP,OACjBuoB,aAAc,EACdC,SAAUz/Q,GAAKA,EAAI,KAAO,IAE5BvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKo0L,EAAIq5E,EAAWr5E,EAAIgzF,eAAe3Z,EAAWr5E,GAAK,GACvDp0L,KAAKuH,EAAI6/Q,eAAe3Z,EAAWlmQ,EAAG,OACtCvH,KAAKwH,EAAI4/Q,eAAe3Z,EAAWjmQ,EAAG,OACtCxH,KAAKu4R,OAAS,KACdv4R,KAAK20R,OAAS,KACd30R,KAAKsjS,QAAU,KACftjS,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAKokN,KAAO,KACZpkN,KAAKujS,KAAO,KACZvjS,KAAKiqR,OAAS,KACdjqR,KAAKuvR,KAAO,KACZvvR,KAAKq4R,UAAY,KACjBr4R,KAAKihS,GAAK,KACVjhS,KAAKR,MAAQ,KACbQ,KAAKwjS,YAAc,IAAIlU,cACxB,CACD,CAACtK,IAAWxlR,GACVq4R,UAAU73R,KAAMR,EACjB,CACD,CAAC4lR,IAASyK,GACRuI,YAAYp4R,MACZ,GAAIA,KAAKwyR,WAAa,UAAYxyR,KAAKwyR,WAAa,WAClD,OAAOxK,WAAWE,MAEpBkM,cAAcp0R,MACdA,KAAKykR,MACL,MAAMgf,EAASzjS,KAAKo0L,EACpB,MAAMsvG,EAAS1jS,KAAKmxC,EACpB,MAAMijJ,EACJA,EAACjjJ,EACDA,EAAC46O,SACDA,GACEuH,WAAWtzR,KAAM6vR,GACrB,GAAIz7F,GAAKp0L,KAAKo0L,IAAM,GAAI,CACtB,GAAI23F,GAAY/rR,KAAK+iR,MAAqBc,MAAsB,CAC9D7jR,KAAKwkR,MACL,OAAOwD,WAAWC,OACnB,CACDjoR,KAAKo0L,EAAIA,CACV,CACGjjJ,GAAKnxC,KAAKmxC,IAAM,KAClBnxC,KAAKmxC,EAAIA,GAEX4nP,qBAAqB/4R,MACrB,IAAK62R,gBAAgB72R,KAAM6vR,GAAiB,CAC1C7vR,KAAKo0L,EAAIqvG,EACTzjS,KAAKmxC,EAAIuyP,EACT1jS,KAAKwkR,MACL,OAAOwD,WAAWC,OACnB,CACD+Q,uBAAuBh5R,MACvB,MAAM++O,EAAQu1C,QAAQt0R,KAAM,OAAQ,SAAU,aAAc,WAAY,WAAY,SAAU,aAAc,SAAU,UACtH8yR,oBAAoB9yR,KAAM++O,GAC1B,GAAIA,EAAMkrC,OAAQ,CAChBlrC,EAAMs2C,QAAUt2C,EAAMkrC,cACflrC,EAAMkrC,MACd,CACD,MAAM+K,EAAa,CAAC,WAChBh1R,KAAKokN,MACP4wE,EAAWrzR,KAAK,WAEdszR,YAAYj1R,OACdg1R,EAAWrzR,KAAK,gBAElB,MAAM8rQ,EAAa,CACjB1uB,QACA/mN,GAAIh4B,KAAKulR,IACTmP,MAAOM,GAELh1R,KAAKD,OACP0tQ,EAAWmuB,QAAU57R,KAAKD,MAE5B,MAAMqoR,EAAO,CACXroR,KAAM,MACN0tQ,aACAlkO,SAAU,IAEZ+uP,YAAYt4R,KAAMytQ,GAClB,MAAMt6C,EAAOghE,YAAYn0R,KAAMooR,EAAMyH,GACrC,MAAMrwR,EAAQQ,KAAKR,MAAQQ,KAAKR,MAAM4lR,IAASyK,GAAgBzH,KAAO,KACtE,GAAI5oR,IAAU,KAAM,CAClBQ,KAAKo0L,EAAIqvG,EACTzjS,KAAKmxC,EAAIuyP,EACT1jS,KAAKwkR,MACL,OAAOwD,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,EACtD,CACDi1D,EAAK7+O,SAAS5nC,KAAKnC,GACnBk2R,QAAQ11R,KAAM++O,EAAOv/O,GACrBQ,KAAKo0L,EAAIqvG,EACTzjS,KAAKmxC,EAAIuyP,EACT1jS,KAAKwkR,MACL,OAAOwD,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,EACtD,EAEH,MAAMonE,aAAarL,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAK2jS,IAAMxc,gBAAgB1Z,EAAWk2B,IAAK,CAAC,SAAU,OAAQ,UAC9D3jS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKjH,OAASouR,gBAAgB1Z,EAAW10Q,OAAQ,CAAC,QAAS,UAAW,aAAc,SAAU,SAAU,WAAY,SAAU,UAAW,WACzIiH,KAAK06R,UAAYtT,eAAe3Z,EAAWitB,UAAW,SACtD16R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,IACf,CACD,CAAChW,MACC,MAAMvmC,EAAQu1C,QAAQt0R,KAAM,cAC5B7R,OAAOktD,OAAO0jM,EAAO,CACnB6kD,QAAS5jS,KAAK2jS,IACdtqR,MAAO24Q,gBAAgBhyR,KAAK06R,WAC5BtyQ,MAAOpoB,KAAKooB,MAAQpoB,KAAKooB,MAAMk9P,MAAc,UAC7CvmC,MAAO,KAET,GAAI/+O,KAAKwyR,WAAa,UACpBzzC,EAAMA,MAAQ,YAEd,OAAQ/+O,KAAKjH,QACX,IAAK,QACHgmP,EAAMA,MAAQ,QACd,MACF,IAAK,UACHA,EAAMA,MAAQ,SACd,MACF,IAAK,aACHA,EAAMA,MAAQ,SACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SACd,MACF,IAAK,WACHA,EAAMA,MAAQ,QACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SACd,MACF,IAAK,UACHA,EAAMA,MAAQ,QACd,MACF,IAAK,SACHA,EAAMA,MAAQ,SACd,MAGN,OAAOA,CACR,EAEH,MAAM8kD,iBAAiBnS,aACrB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,CAAC,qBAAsB,sBAAuB,oBAChFl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMyT,kBAAkB5U,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKiI,SAAW,IAAIqnR,cACrB,EAEH,MAAMyU,gBAAgB7U,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKgkS,YAAc,IACpB,EAEH,MAAMC,oBAAoB/U,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,cAAe,MACrCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK28O,UAAYwqC,gBAAgB1Z,EAAW9wB,UAAW,CAAC,UAAW,YACnE38O,KAAKkgR,OAASzS,EAAWyS,QAAU,GACnClgR,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK6uB,OAAS,KACd7uB,KAAKkkS,SAAW,IACjB,EAEH,MAAMC,mBAAmBjV,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aAAc,MACpCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKgkS,YAAc,IAAI1U,cACxB,EAEH,MAAM8U,yBAAyB1S,aAC7B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,mBAAoB,CAAC,GAAI,aAAc,gBAAiB,aAAc,eAC5Fl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMgU,0BAA0BnV,UAC9B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,oBAAqB,MAC3Cl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKskS,iBAAmB,IAAIhV,cAC7B,EAEH,MAAMiV,cAAcrV,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAKk/R,SAAW/X,gBAAgB1Z,EAAWyxB,SAAU,CAAC,QAAS,SAAU,WAAY,WAAY,QAAS,OAAQ,OAAQ,cAAe,aAAc,YAAa,aAAc,YAAa,UAAW,cAAe,WAAY,YAAa,WAAY,WAAY,aAAc,aAAc,UAAW,WAAY,UAAW,UAAW,YAAa,QAAS,oBACzWl/R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKwkS,OAASrd,gBAAgB1Z,EAAW+2B,OAAQ,CAAC,UAAW,sBAC7DxkS,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAKykS,YAAc,KACnBzkS,KAAKy6O,QAAU,KACfz6O,KAAK4+R,OAAS,KACd5+R,KAAK0kS,SAAW,KAChB1kS,KAAK2kS,OAAS,IACf,EAEH,MAAMC,eAAenT,cACnB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UACtBl3R,KAAKk0R,YAAczmB,EAAWymB,aAAe,GAC7Cl0R,KAAK27C,KAAO8xN,EAAW9xN,MAAQ,GAC/B37C,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK6kS,UAAY/d,WAAW,CAC1Bh0Q,KAAM26P,EAAWo3B,UACjB9d,cAAe,EACfC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK8kS,IAAMr3B,EAAWq3B,KAAO,GAC7B9kS,KAAK+kS,iBAAmB5d,gBAAgB1Z,EAAWs3B,iBAAkB,CAAC,OAAQ,SAAU,YACxF/kS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAAC9M,MACC,OAAOvjR,KAAKk0R,cAAgB,WAC7B,CACD,CAAC9P,IAAU9U,GACT,GAAItvQ,KAAKk0R,cAAgB,aAAe5kB,EAAM2U,MAAkBwB,GAAaY,MAAMruP,GAAI,CACrFh4B,KAAK6hR,IAAYvS,EACjB,OAAO,IACR,CACD,GAAItvQ,KAAKk0R,cAAgB,WAAY,CACnCl0R,KAAK6hR,IAAYvS,EACjB,OAAO,IACR,CACD,OAAO,KACR,CACD,CAAC8V,IAASyK,GACR,OAAI7vR,KAAKk0R,cAAgB,aAAgBl0R,KAAK6hR,IAGvC7hR,KAAK6hR,IAAUuD,IAASyK,GAFtB7H,WAAWE,KAGrB,EAEH,MAAM8c,iBAAiB9V,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKilS,QAAUx3B,EAAWw3B,SAAW,GACrCjlS,KAAKklS,QAAUz3B,EAAWy3B,SAAW,GACrCllS,KAAKmlS,SAAW13B,EAAW03B,UAAY,GACvCnlS,KAAKolS,SAAW33B,EAAW23B,UAAY,GACvCplS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK2iS,QAAU,IAAIrT,eACnBtvR,KAAKqJ,KAAO,IAAIimR,eAChBtvR,KAAK4iS,SAAW,IAAItT,eACpBtvR,KAAK6iS,QAAU,IAAIvT,eACnBtvR,KAAKi0R,OAAS,IAAI3E,eAClBtvR,KAAKw7R,SAAW,IAAIlM,eACpBtvR,KAAK8iS,MAAQ,IAAIxT,eACjBtvR,KAAK85C,MAAQ,IAAIw1O,eACjBtvR,KAAK+iS,QAAU,IAAIzT,eACnBtvR,KAAK89P,KAAO,IAAIwxB,eAChBtvR,KAAKgjS,KAAO,IAAI1T,cACjB,EAEH,MAAMoR,kBAAkBxR,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKu1R,OAASpO,gBAAgB1Z,EAAW8nB,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,aACzFv1R,KAAKqlS,UAAY53B,EAAW43B,WAAa,GACzCrlS,KAAKkyR,WAAa/K,gBAAgB1Z,EAAWykB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KlyR,KAAKoyR,QAAUtL,WAAW,CACxBh0Q,KAAM26P,EAAW2kB,QACjBrL,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAAKA,KAAO,IAElC7D,KAAKmxC,EAAIs8N,EAAWt8N,EAAIi2O,eAAe3Z,EAAWt8N,GAAK,GACvDnxC,KAAK2yR,OAASxL,gBAAgB1Z,EAAWklB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG3yR,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKg8D,OAASmrN,gBAAgB1Z,EAAWzxM,OAAQ,CAAC,WAAY,QAAS,SAAU,QAAS,MAAO,QAAS,OAC1Gh8D,KAAKyzC,KAAO2zO,eAAe3Z,EAAWh6N,KAAM,OAC5CzzC,KAAKizR,KAAO7L,eAAe3Z,EAAWwlB,KAAM,OAC5CjzR,KAAKkzR,KAAO9L,eAAe3Z,EAAWylB,KAAM,OAC5ClzR,KAAK+yR,KAAO3L,eAAe3Z,EAAWslB,KAAM,OAC5C/yR,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKo0L,EAAIq5E,EAAWr5E,EAAIgzF,eAAe3Z,EAAWr5E,GAAK,GACvDp0L,KAAKuH,EAAI6/Q,eAAe3Z,EAAWlmQ,EAAG,OACtCvH,KAAKwH,EAAI4/Q,eAAe3Z,EAAWjmQ,EAAG,OACtCxH,KAAKu4R,OAAS,KACdv4R,KAAKuc,KAAO,KACZvc,KAAK20R,OAAS,KACd30R,KAAKslS,UAAY,KACjBtlS,KAAKsjS,QAAU,KACftjS,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,KACdjqR,KAAKuvR,KAAO,KACZvvR,KAAKq4R,UAAY,KACjBr4R,KAAKgnR,SAAW,KAChBhnR,KAAKulS,QAAU,IAAIjW,eACnBtvR,KAAK6sR,MAAQ,IAAIyC,eACjBtvR,KAAKszN,MAAQ,IAAIg8D,eACjBtvR,KAAKwjS,YAAc,IAAIlU,cACxB,CACD,CAAC9L,MACC,OAAO,IACR,CACD,CAACL,MACC,OAAO,IACR,CACD,CAAC6B,IAAWxlR,GACV,IAAK,MAAM8zN,KAAStzN,KAAKszN,MAAM/pL,SAAU,CACvC,IAAK+pL,EAAM9zN,MAAO,CAChB,MAAMyvQ,EAAY,IAAI8oB,MAAM,CAAA,GAC5BzkE,EAAMguD,IAAcrS,GACpB37C,EAAM9zN,MAAQyvQ,CACf,CACD37C,EAAM9zN,MAAMwlR,IAAWxlR,EACxB,CACF,CACD,CAACqkR,MACC,OAAO7jR,KAAKg8D,OAAOktN,SAAS,QAAUlpR,KAAKgiR,IAAQuU,UAAY,GAAKv2R,KAAKgiR,IAAQwU,aAAe,GAAKx2R,KAAKgjR,MAAca,KACzH,CACD,CAACD,MACC,MAAM50Q,EAAShP,KAAK+iR,MACpB,IAAK/zQ,EAAO40Q,MACV,OAAO,MAET,GAAI5jR,KAAKgiR,IAAQwjB,qBAAkBzkS,EACjC,OAAOf,KAAKgiR,IAAQwjB,cAEtB,GAAIxlS,KAAKg8D,SAAW,YAAch8D,KAAKg8D,OAAO74D,SAAS,OAAQ,CAC7DnD,KAAKgiR,IAAQwjB,cAAgB,MAC7B,OAAO,KACR,CACD,GAAIx2R,EAAOgtD,QAAQktN,SAAS,QAAUl6Q,EAAOgzQ,IAAQwU,eAAiB,EACpE,OAAO,MAETx2R,KAAKgiR,IAAQwjB,cAAgB,KAC7B,OAAO,IACR,CACD,CAACtjB,MACC,OAAOkU,UAAUp2R,KAClB,CACD,CAACqhR,IAAU+G,EAAMj1D,GACfmjE,QAAQt2R,KAAMooR,EAAMj1D,EACrB,CACD,CAACkvD,MACC,OAAOoU,kBAAkBz2R,KAC1B,CACD,CAAColR,IAASyK,GACRuI,YAAYp4R,MACZ,GAAIA,KAAKwyR,WAAa,UAAYxyR,KAAKwyR,WAAa,YAAcxyR,KAAKmxC,IAAM,GAAKnxC,KAAKo0L,IAAM,EAC3F,OAAO4zF,WAAWE,MAEpBkM,cAAcp0R,MACd,MAAMupC,EAAW,GACjB,MAAMkkO,EAAa,CACjBz1O,GAAIh4B,KAAKulR,IACTmP,MAAO,IAETY,UAAUt1R,KAAMytQ,EAAWinB,OACtB10R,KAAKgiR,MACRhiR,KAAKgiR,IAAU7zR,OAAO0d,OAAO,OAE/B1d,OAAOktD,OAAOr7C,KAAKgiR,IAAS,CAC1Bz4O,WACAkkO,aACA8oB,QAAS,EACTjtP,KAAM,KACNktP,aAAc,EACd3G,eAAgB,CACdx2Q,MAAO9X,KAAKC,IAAIxB,KAAKo0L,GAAK6iE,SAAU44B,EAAex2Q,OACnDC,OAAQ/X,KAAKC,IAAIxB,KAAKmxC,GAAK8lN,SAAU44B,EAAev2Q,SAEtDD,MAAO,EACPC,OAAQ,EACRmqO,WAAY,EACZ/lN,aAAc,IAEhB,MAAM+nQ,EAAezlS,KAAK4jR,MACrB6hB,GACH1M,qBAAqB/4R,MAEvB,IAAK62R,gBAAgB72R,KAAM6vR,GACzB,OAAO7H,WAAWC,QAEpB,MAAMp5P,EAAS,IAAI3f,IAAI,CAAC,UACxB,GAAIlP,KAAKg8D,OAAO74D,SAAS,OAAQ,CAC/B,MAAMkvR,EAAeryR,KAAK+iR,MAAqBsP,aAC/C,GAAI1uR,MAAM2J,QAAQ+kR,IAAiBA,EAAanzR,OAAS,EAAG,CAC1Dc,KAAKgiR,IAAQqQ,aAAeA,EAC5BryR,KAAKgiR,IAAQsQ,cAAgB,CAC9B,CACF,CACD,MAAMvzC,EAAQu1C,QAAQt0R,KAAM,aAAc,aAAc,WAAY,WAAY,SAAU,SAAU,UACpG,MAAMg1R,EAAa,CAAC,gBACpB,MAAMzlD,EAAK8kD,YAAYr0R,MACnBuvO,GACFylD,EAAWrzR,KAAK4tO,GAEd0lD,YAAYj1R,OACdg1R,EAAWrzR,KAAK,gBAElB8rQ,EAAW1uB,MAAQA,EACnB0uB,EAAWinB,MAAQM,EACfh1R,KAAKD,OACP0tQ,EAAWmuB,QAAU57R,KAAKD,MAE5BC,KAAKykR,MACL,MAAMihB,EAAS1lS,KAAKg8D,SAAW,SAAWh8D,KAAKg8D,SAAW,QAC1D,MAAM2pO,EAASD,EAAStO,GAA+B,EACvD,KAAOp3R,KAAKgiR,IAAQuU,QAAUoP,EAAQ3lS,KAAKgiR,IAAQuU,UAAW,CACxDmP,GAAU1lS,KAAKgiR,IAAQuU,UAAYa,GAA+B,IACpEp3R,KAAKgiR,IAAQwU,aAAe,GAE9B,MAAMnjR,EAASrT,KAAKuhR,IAAiB,CACnC1yP,SACAixP,QAAS,OAEX,GAAIzsQ,EAAO80Q,QACT,MAEF,GAAI90Q,EAAOi1Q,UAAW,CACpBtoR,KAAKwkR,MACL,OAAOnxQ,CACR,CACD,GAAIqyR,GAAU1lS,KAAKgiR,IAAQuU,UAAY,GAAKv2R,KAAKgiR,IAAQwU,eAAiB,IAAMx2R,KAAKijR,MAAoBjB,IAAQgV,gBAAiB,CAChIh3R,KAAKgiR,IAAQuU,QAAUoP,EACvB,KACD,CACF,CACD3lS,KAAKwkR,MACAihB,GACHzM,uBAAuBh5R,MAEzB,GAAIA,KAAKgiR,IAAQuU,UAAYoP,EAAQ,CAC9BF,UACIzlS,KAAKgiR,IAEd,OAAOgG,WAAWC,OACnB,CACD,IAAIsL,EAAU,EACd,IAAIC,EAAU,EACd,GAAIxzR,KAAKiqR,OAAQ,CACfsJ,EAAUvzR,KAAKiqR,OAAOwJ,UAAYzzR,KAAKiqR,OAAOyJ,WAC9CF,EAAUxzR,KAAKiqR,OAAO0J,SAAW3zR,KAAKiqR,OAAO2J,WAC9C,CACD,MAAMv6Q,EAAQ9X,KAAK+D,IAAItF,KAAKgiR,IAAQ3oQ,MAAQk6Q,EAASvzR,KAAKo0L,GAAK,GAC/D,MAAM96K,EAAS/X,KAAK+D,IAAItF,KAAKgiR,IAAQ1oQ,OAASk6Q,EAASxzR,KAAKmxC,GAAK,GACjE,MAAMgiL,EAAO,CAACnzN,KAAKuH,EAAGvH,KAAKwH,EAAG6R,EAAOC,GACjCtZ,KAAKo0L,IAAM,KACb2qD,EAAM1lO,MAAQ24Q,gBAAgB34Q,IAE5BrZ,KAAKmxC,IAAM,KACb4tM,EAAMzlO,OAAS04Q,gBAAgB14Q,IAEjC,MAAM8uQ,EAAO,CACXroR,KAAM,MACN0tQ,aACAlkO,YAEF+uP,YAAYt4R,KAAMytQ,UACXztQ,KAAKgiR,IACZ,OAAOgG,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,EACtD,EAEH,MAAMyyE,gBAAgB1W,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKi9R,WAAaxvB,EAAWwvB,YAAc,GAC3Cj9R,KAAK6lS,YAAc1e,gBAAgB1Z,EAAWo4B,YAAa,CAAC,SAAU,YACtE7lS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK8lS,MAAQ3e,gBAAgB1Z,EAAWq4B,MAAO,CAAC,SAAU,OAAQ,WAClE9lS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM0V,eAAe7W,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK2iS,QAAU,IAAIrT,eACnBtvR,KAAKqJ,KAAO,IAAIimR,eAChBtvR,KAAK4iS,SAAW,IAAItT,eACpBtvR,KAAK6iS,QAAU,IAAIvT,eACnBtvR,KAAKi0R,OAAS,IAAI3E,eAClBtvR,KAAKs7R,OAAS,IAAIhM,eAClBtvR,KAAK8iS,MAAQ,IAAIxT,eACjBtvR,KAAK85C,MAAQ,IAAIw1O,eACjBtvR,KAAK+iS,QAAU,IAAIzT,eACnBtvR,KAAK89P,KAAO,IAAIwxB,eAChBtvR,KAAKgjS,KAAO,IAAI1T,cACjB,EAEH,MAAM0W,cAAc9W,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAKu1R,OAASpO,gBAAgB1Z,EAAW8nB,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,aACzFv1R,KAAKqlS,UAAY53B,EAAW43B,WAAa,GACzCrlS,KAAKkyR,WAAa/K,gBAAgB1Z,EAAWykB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KlyR,KAAKoyR,QAAUtL,WAAW,CACxBh0Q,KAAM26P,EAAW2kB,QACjBrL,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAAKA,KAAO,IAElC7D,KAAKmxC,EAAIs8N,EAAWt8N,EAAIi2O,eAAe3Z,EAAWt8N,GAAK,GACvDnxC,KAAK2yR,OAASxL,gBAAgB1Z,EAAWklB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG3yR,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKqjS,OAAS51B,EAAW41B,QAAU,GACnCrjS,KAAKyzC,KAAO2zO,eAAe3Z,EAAWh6N,KAAM,OAC5CzzC,KAAKizR,KAAO7L,eAAe3Z,EAAWwlB,KAAM,OAC5CjzR,KAAKkzR,KAAO9L,eAAe3Z,EAAWylB,KAAM,OAC5ClzR,KAAK+yR,KAAO3L,eAAe3Z,EAAWslB,KAAM,OAC5C/yR,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKw+P,OAASsoB,WAAW,CACvBh0Q,KAAM26P,EAAWjP,OACjBuoB,aAAc,EACdC,SAAUz/Q,GAAKA,EAAI,KAAO,IAE5BvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKo0L,EAAIq5E,EAAWr5E,EAAIgzF,eAAe3Z,EAAWr5E,GAAK,GACvDp0L,KAAKuH,EAAI6/Q,eAAe3Z,EAAWlmQ,EAAG,OACtCvH,KAAKwH,EAAI4/Q,eAAe3Z,EAAWjmQ,EAAG,OACtCxH,KAAKu4R,OAAS,KACdv4R,KAAKuc,KAAO,KACZvc,KAAK20R,OAAS,KACd30R,KAAKslS,UAAY,KACjBtlS,KAAKsjS,QAAU,KACftjS,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAKokN,KAAO,KACZpkN,KAAKo6D,OAAS,KACdp6D,KAAK0P,MAAQ,IAAI4/Q,eAAe,GAChCtvR,KAAKujS,KAAO,KACZvjS,KAAKiqR,OAAS,KACdjqR,KAAKuvR,KAAO,KACZvvR,KAAKq4R,UAAY,KACjBr4R,KAAKihS,GAAK,KACVjhS,KAAKgnR,SAAW,KAChBhnR,KAAKR,MAAQ,KACbQ,KAAKimS,UAAY,IAAI3W,eACrBtvR,KAAKulS,QAAU,IAAIjW,eACnBtvR,KAAK6sR,MAAQ,IAAIyC,eACjBtvR,KAAKwjS,YAAc,IAAIlU,cACxB,CACD,CAAC9L,MACC,OAAO,IACR,CACD,CAACwB,IAAWxlR,GACVq4R,UAAU73R,KAAMR,EACjB,CACD,CAAC4lR,IAASyK,GACRuI,YAAYp4R,MACZ,IAAKA,KAAKihS,GAAI,CACZjhS,KAAKihS,GAAK,IAAIiF,GAAG,CAAE,GACnBlmS,KAAKihS,GAAG/d,IAAeljR,KAAKkjR,IAC5BljR,KAAKshR,IAActhR,KAAKihS,IACxB,IAAIv3P,EACJ,OAAQ1pC,KAAK0P,MAAM65B,SAASrqC,QAC1B,KAAK,EACHwqC,EAAO,IAAIy8P,SAAS,CAAA,GACpBnmS,KAAKihS,GAAGmF,SAAW18P,EACnB,MACF,KAAK,EACHA,EAAO,IAAIw2P,YAAY,CAAA,GACvBlgS,KAAKihS,GAAGoF,YAAc38P,EACtB,MACF,KAAK,EACHA,EAAO,IAAIo3P,WAAW,CAAA,GACtB9gS,KAAKihS,GAAGqF,WAAa58P,EACrB,MAEJ1pC,KAAKihS,GAAG3f,IAAc53O,EACvB,CACD,IAAK1pC,KAAKihS,IAAMjhS,KAAKwyR,WAAa,UAAYxyR,KAAKwyR,WAAa,YAAcxyR,KAAKmxC,IAAM,GAAKnxC,KAAKo0L,IAAM,EACvG,OAAO4zF,WAAWE,MAEhBloR,KAAKsjS,gBACAtjS,KAAKsjS,QAAQthB,IAEtBhiR,KAAKykR,MACL,MAAM6e,EAAUtjS,KAAKsjS,QAAUtjS,KAAKsjS,QAAQle,IAASyK,GAAgBzH,KAAO,KAC5E,MAAMqb,EAASzjS,KAAKo0L,EACpB,MAAMsvG,EAAS1jS,KAAKmxC,EACpB,IAAIoiP,EAAU,EACd,IAAIC,EAAU,EACd,GAAIxzR,KAAKiqR,OAAQ,CACfsJ,EAAUvzR,KAAKiqR,OAAOwJ,UAAYzzR,KAAKiqR,OAAOyJ,WAC9CF,EAAUxzR,KAAKiqR,OAAO0J,SAAW3zR,KAAKiqR,OAAO2J,WAC9C,CACD,IAAI2S,EAAa,KACjB,GAAIvmS,KAAKo0L,IAAM,IAAMp0L,KAAKmxC,IAAM,GAAI,CAClC,IAAI93B,EAAQ,KACZ,IAAIC,EAAS,KACb,IAAIktR,EAAM,EACV,IAAIC,EAAM,EACV,GAAIzmS,KAAKihS,GAAGoF,YACVG,EAAMC,EAAMzmS,KAAKihS,GAAGoF,YAAYx5R,SAC3B,CACL,MAAMunL,EACJA,EAACjjJ,EACDA,GACEmiP,WAAWtzR,KAAM6vR,GACrB,GAAIz7F,IAAM,KAAM,CACdoyG,EAAMpyG,EACNqyG,EAAMt1P,CAChB,MACUs1P,EAAM9c,iBAAiB3pR,KAAKokN,KAAM,MAAM0lE,SAE3C,CACDyc,EAAa7O,cAAc13R,KAAKihS,GAAGve,OACnC8jB,GAAOD,EAAWnyG,EAClBqyG,GAAOF,EAAWp1P,EAClB,GAAInxC,KAAKsjS,QAAS,CAChB,MAAMlvG,EACJA,EAACjjJ,EACDA,EAAC46O,SACDA,GACE/rR,KAAKsjS,QAAQ5gB,IAAWmN,GAC5B,GAAI9D,GAAY/rR,KAAK+iR,MAAqBc,MAAsB,CAC9D7jR,KAAKwkR,MACL,OAAOwD,WAAWC,OACnB,CACD5uQ,EAAQ+6K,EACR96K,EAAS63B,EACT,OAAQnxC,KAAKsjS,QAAQjE,WACnB,IAAK,OACL,IAAK,QACL,IAAK,SACHhmR,GAASmtR,EACT,MACF,IAAK,MACL,IAAK,SACHltR,GAAUmtR,EACV,MAEZ,KAAa,CACLptR,EAAQmtR,EACRltR,EAASmtR,CACV,CACD,GAAIptR,GAASrZ,KAAKo0L,IAAM,GAAI,CAC1B/6K,GAASk6Q,EACTvzR,KAAKo0L,EAAI7yL,KAAKC,IAAIxB,KAAKizR,MAAQ,EAAIh8B,SAAWj3P,KAAKizR,KAAMjzR,KAAK+yR,KAAO,EAAI15Q,EAAQA,EAAQrZ,KAAK+yR,KAC/F,CACD,GAAIz5Q,GAAUtZ,KAAKmxC,IAAM,GAAI,CAC3B73B,GAAUk6Q,EACVxzR,KAAKmxC,EAAI5vC,KAAKC,IAAIxB,KAAKyzC,MAAQ,EAAIwjN,SAAWj3P,KAAKyzC,KAAMzzC,KAAKkzR,KAAO,EAAI55Q,EAASA,EAAStZ,KAAKkzR,KACjG,CACF,CACDlzR,KAAKwkR,MACL4P,cAAcp0R,MACd+4R,qBAAqB/4R,MACrB,IAAK62R,gBAAgB72R,KAAM6vR,GAAiB,CAC1C7vR,KAAKo0L,EAAIqvG,EACTzjS,KAAKmxC,EAAIuyP,EACT1jS,KAAKwkR,MACL,OAAOwD,WAAWC,OACnB,CACD+Q,uBAAuBh5R,MACvB,MAAM++O,EAAQu1C,QAAQt0R,KAAM,OAAQ,aAAc,WAAY,SAAU,aAAc,WAAY,SAAU,UAC5G8yR,oBAAoB9yR,KAAM++O,GAC1B,MAAMi2C,EAAa,CAAC,YAChBh1R,KAAKokN,MACP4wE,EAAWrzR,KAAK,WAEdszR,YAAYj1R,OACdg1R,EAAWrzR,KAAK,gBAElB,MAAM8rQ,EAAa,CACjB1uB,QACA/mN,GAAIh4B,KAAKulR,IACTmP,MAAOM,GAET,GAAIj2C,EAAMkrC,OAAQ,CAChBlrC,EAAMs2C,QAAUt2C,EAAMkrC,cACflrC,EAAMkrC,MACd,CACDqL,UAAUt1R,KAAMg1R,GACZh1R,KAAKD,OACP0tQ,EAAWmuB,QAAU57R,KAAKD,MAE5B,MAAMwpC,EAAW,GACjB,MAAM6+O,EAAO,CACXroR,KAAM,MACN0tQ,aACAlkO,YAEF+uP,YAAYt4R,KAAMytQ,GAClB,MAAMuwB,EAAch+R,KAAK20R,OAAS30R,KAAK20R,OAAOrP,MAAc,KAC5D,MAAMnyD,EAAOghE,YAAYn0R,KAAMooR,EAAMyH,GACrC,MAAMoR,EAAKjhS,KAAKihS,GAAG7b,MAAWgD,KAC9B,IAAK6Y,EAAI,CACP9yS,OAAOktD,OAAO0jM,EAAOi/C,GACrB,OAAOhW,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,EACtD,CACGnzN,KAAKilR,MACHgc,EAAG13P,WAAW,GAChB03P,EAAG13P,SAAS,GAAGkkO,WAAWi5B,SAAW1mS,KAAKilR,IAE1Cgc,EAAGxzB,WAAWi5B,SAAW1mS,KAAKilR,KAG7Bgc,EAAGxzB,WAAW1uB,QACjBkiD,EAAGxzB,WAAW1uB,MAAQ5wP,OAAO0d,OAAO,OAEtC,IAAI86R,EAAW,KACf,GAAI3mS,KAAKihS,GAAG2F,OAAQ,CACd3F,EAAG13P,SAASrqC,SAAW,KACxBynS,GAAY1F,EAAG13P,SAAS8kL,OAAO,EAAG,IAErClgO,OAAOktD,OAAO4lP,EAAGxzB,WAAW1uB,MAAOi/C,EACzC,MACM7vS,OAAOktD,OAAO0jM,EAAOi/C,GAEvBz0P,EAAS5nC,KAAKs/R,GACd,GAAIjhS,KAAKR,MACP,GAAIQ,KAAKihS,GAAG4F,UACV5F,EAAG13P,SAAS5nC,KAAK3B,KAAKR,MAAM4lR,MAAWgD,WAClC,IAAKpoR,KAAKihS,GAAG2F,OAAQ,CAC1B,IAAIpnS,EAAQ,GACZ,GAAIQ,KAAKR,MAAMy0R,OACbz0R,EAAQQ,KAAKR,MAAMy0R,OAAO/O,WACrB,GAAIllR,KAAKR,MAAMs+P,KACpBt+P,EAAQQ,KAAKR,MAAMs+P,KAAK4kB,UACnB,CACL,MAAMokB,EAAY9mS,KAAKR,MAAM4lR,MAAWgD,KACpC0e,IAAc,OAChBtnS,EAAQsnS,EAAUv9P,SAAS,GAAG/pC,MAEjC,CACGQ,KAAKihS,GAAGmF,UAAYpmS,KAAKR,MAAMs+P,MAAMipC,WACvC9F,EAAG13P,SAAS,GAAGkkO,WAAWo3B,UAAY7kS,KAAKR,MAAMs+P,KAAKipC,UAExD,GAAIvnS,EAAO,CACT,GAAIQ,KAAKihS,GAAG+F,YAAa,CACvBxnS,EAAQqY,WAAWrY,GACnBA,EAAQsY,MAAMtY,GAAS,GAAKA,EAAMsE,UACnC,CACGm9R,EAAG13P,SAAS,GAAGxpC,OAAS,WAC1BkhS,EAAG13P,SAAS,GAAGkkO,WAAW5S,YAAcr7P,EAExCyhS,EAAG13P,SAAS,GAAGkkO,WAAWjuQ,MAAQA,CAErC,CACF,CAEH,IAAKQ,KAAKihS,GAAG4F,WAAa5F,EAAG13P,WAAW,IAAMvpC,KAAKmxC,EAAG,CACpDo1P,EAAaA,GAAc7O,cAAc13R,KAAKihS,GAAGve,OACjD,IAAIukB,EAAgB,EACpB,GAAIjnS,KAAKsjS,SAAW,CAAC,MAAO,UAAUngS,SAASnD,KAAKsjS,QAAQjE,WAAY,CACtE4H,EAAgBjnS,KAAKsjS,QAAQhE,QACzB2H,GAAiB,IACnBA,EAAgBjnS,KAAKsjS,QAAQ5gB,IAAWmN,GAAgB1+O,GAE1D,MAAM+1P,EAAclnS,KAAKmxC,EAAI81P,EAAgBzT,EAAU+S,EAAWp1P,EAClE8vP,EAAG13P,SAAS,GAAGkkO,WAAW1uB,MAAMzlO,OAAS04Q,gBAAgBkV,EACjE,MACQjG,EAAG13P,SAAS,GAAGkkO,WAAW1uB,MAAMzlO,OAAS,MAE5C,CACGqtR,GACF1F,EAAG13P,SAAS5nC,KAAKglS,GAEnB,IAAKrD,EAAS,CACRrC,EAAGxzB,WAAWinB,OAChBuM,EAAGxzB,WAAWinB,MAAM/yR,KAAK,WAE3B3B,KAAKo0L,EAAIqvG,EACTzjS,KAAKmxC,EAAIuyP,EACT,OAAO1b,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,EACtD,CACD,GAAInzN,KAAKihS,GAAG2F,OAAQ,CACd7nD,EAAMs2C,gBACDt2C,EAAMs2C,QAEXiO,EAAQvjS,OAAS,QACnBujS,EAAQvjS,KAAO,QAEjBkhS,EAAG13P,SAAS5nC,KAAK2hS,GACjB,OAAOtb,WAAWG,QAAQC,EAAMj1D,EACtC,CAAenzN,KAAKihS,GAAGoF,cACjB/C,EAAQ71B,WAAWinB,MAAM,GAAK,4BAE3BuM,EAAGxzB,WAAWinB,QACjBuM,EAAGxzB,WAAWinB,MAAQ,IAExBuM,EAAG13P,SAAS8kL,OAAO,EAAG,EAAGi1E,GACzB,OAAQtjS,KAAKsjS,QAAQjE,WACnB,IAAK,OACH4B,EAAGxzB,WAAWinB,MAAM/yR,KAAK,WACzB,MACF,IAAK,QACHs/R,EAAGxzB,WAAWinB,MAAM/yR,KAAK,YACzB,MACF,IAAK,MACHs/R,EAAGxzB,WAAWinB,MAAM/yR,KAAK,UACzB,MACF,IAAK,SACHs/R,EAAGxzB,WAAWinB,MAAM/yR,KAAK,aACzB,MACF,IAAK,SACHs/R,EAAGxzB,WAAWinB,MAAM/yR,KAAK,WACzB,MAEJ3B,KAAKo0L,EAAIqvG,EACTzjS,KAAKmxC,EAAIuyP,EACT,OAAO1b,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,EACtD,EAEH,MAAMg0E,aAAajY,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,KACdt7R,KAAKonS,OAAS,KACdpnS,KAAKgmP,QAAU,KACfhmP,KAAKqnS,OAAS,KACdrnS,KAAKsnS,MAAQ,KACbtnS,KAAKunS,QAAU,IAChB,CACD,CAACjiB,MACC,MAAMt2Q,EAAShP,KAAKgjR,MACpB,MAAMgc,EAAUhwR,EAAOg0Q,MACvB,MAAMwkB,EAAWxI,EAAQhc,MACzB,MAAMjkC,EAAQ5wP,OAAO0d,OAAO,MAC5B,IAAI47R,EAAW,QACf,IAAIC,EAAcD,EAClB,GAAIz4R,aAAkBuuR,OAAQ,CAC5BkK,EAAW,mBACXC,EAAc,aACVF,aAAoBtB,KACtBnnD,EAAM4oD,gBAAkB,QAE3B,CACD,GAAI34R,aAAkB44R,WAAa54R,aAAkBkrR,IAAK,CACxDuN,EAAWC,EAAc,OACzB3oD,EAAM9lP,KAAO,OACd,CACD,IAAK,MAAM8G,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,GAAID,IAAS,UAAYA,IAAS,QAChC,SAEF,MAAMxR,EAAMyR,KAAKD,GACjB,KAAMxR,aAAe2gS,WACnB,SAEF,MAAM9mQ,EAAQ75B,EAAI+2R,IAAUtlR,KAAKooB,OAC7BA,IACF22N,EAAM32N,EAAMrpB,WAAW,KAAO0oS,EAAWC,GAAet/Q,GAE1D,OAAO22N,CACR,CACD,GAAI/+O,KAAKooB,OAAO5oB,MAAO,CACrB,MAAM4oB,EAAQpoB,KAAKooB,MAAMk9P,MACzBvmC,EAAM32N,EAAMrpB,WAAW,KAAO0oS,EAAWC,GAAet/Q,CACzD,CACD,OAAO22N,CACR,EAEH,MAAMhzL,eAAemjO,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAK6nS,kBAAoB1gB,gBAAgB1Z,EAAWo6B,kBAAmB,CAAC,GAAI,WAAY,WAAY,SACpG7nS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKo1C,QAAU0xO,WAAW,CACxBh0Q,KAAM9S,KAAKo1C,QACX2xO,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,GAAKA,GAAK,IAEhCvH,KAAK8nS,iBAAmB,KACxB9nS,KAAK+nS,aAAe,KACpB/nS,KAAKgoS,cAAgB,KACrBhoS,KAAK2iN,UAAY,KACjB3iN,KAAKioS,kBAAoB,KACzBjoS,KAAKwwP,QAAU,KACfxwP,KAAKkoS,aAAe,KACpBloS,KAAKmoS,IAAM,KACXnoS,KAAKooS,QAAU,KACfpoS,KAAKqoS,UAAY,IAClB,EAEH,MAAMC,cAAc7W,cAClB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACC,MAAMzuQ,EAASqE,WAAW7X,KAAK6hR,IAAUzQ,QACzCpxQ,KAAK6hR,IAAY/pQ,MAAMtE,GAAU,KAAOA,CACzC,CACD,CAAC4xQ,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,MAAc,KAAO7hR,KAAK6hR,IAAU/9Q,WAAa,GAC1E,EAEH,MAAMykS,sBAAsBrZ,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKwoS,cAAgBphB,eAAe3Z,EAAW+6B,eAC/CxoS,KAAKyoS,oBAAsBxhB,SAAS,CAClCn0Q,KAAM26P,EAAWg7B,oBACjB1hB,aAAc,IACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAK0oS,kBAAoBzhB,SAAS,CAChCn0Q,KAAM26P,EAAWi7B,kBACjB3hB,aAAc,IACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK2oS,YAAcxhB,gBAAgB1Z,EAAWk7B,YAAa,CAAC,OAAQ,SACpE3oS,KAAKsqR,cAAgBlD,eAAe3Z,EAAW6c,cAAe,KAC9DtqR,KAAK4oS,YAAc9hB,WAAW,CAC5Bh0Q,KAAM26P,EAAWm7B,YACjB7hB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,GAAKA,IAAM,IAElCvH,KAAK6oS,kBAAoB1hB,gBAAgB1Z,EAAWo7B,kBAAmB,CAAC,MAAO,SAC/E7oS,KAAKyzJ,SAAWqzH,WAAW,CACzBh0Q,KAAM26P,EAAWh6G,SACjBszH,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,GAAKA,IAAM,IAElCvH,KAAK8oS,eAAiB3hB,gBAAgB1Z,EAAWq7B,eAAgB,CAAC,MAAO,SACzE9oS,KAAK0pR,QAAUvC,gBAAgB1Z,EAAWic,QAAS,CAAC,SAAU,WAC9D1pR,KAAK6M,KAAOu6Q,eAAe3Z,EAAW5gQ,KAAM,QAC5C7M,KAAKypR,SAAWhc,EAAWgc,UAAY,UACvCzpR,KAAK+oS,UAAYjiB,WAAW,CAC1Bh0Q,KAAM26P,EAAWs7B,UACjBhiB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,GAAKA,IAAM,IAElCvH,KAAKgpS,gBAAkB7hB,gBAAgB1Z,EAAWu7B,gBAAiB,CAAC,MAAO,SAC3EhpS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK2X,OAASwvQ,gBAAgB1Z,EAAW91P,OAAQ,CAAC,SAAU,SAC5D3X,KAAKs7R,OAAS,KACdt7R,KAAK/G,KAAO,IACb,CACD,CAACuoR,IAAQ96C,GACPtmO,MAAMohR,IAAQ96C,GACd1mO,KAAKkjR,IAAa+lB,cAAc75R,IAAIpP,KAAKypR,SAC1C,CACD,CAACnE,MACC,MAAMvmC,EAAQu1C,QAAQt0R,KAAM,QAC5B,MAAMooB,EAAQ22N,EAAM32N,MACpB,GAAIA,EACF,GAAIA,IAAU,iBACL22N,EAAM32N,WACR,IAAKA,EAAMrpB,WAAW,KAAM,CACjCggP,EAAMlT,WAAazjN,EACnB22N,EAAMmqD,eAAiB,OACvBnqD,EAAM32N,MAAQ,aACf,CAECpoB,KAAKwoS,gBACPzpD,EAAMoqD,cAAgBnX,gBAAgBhyR,KAAKwoS,gBAE7CzpD,EAAMqqD,YAAcppS,KAAK2oS,cAAgB,OAAS,OAAS,SAC3D5pD,EAAMurC,cAAgB0H,gBAAgBhyR,KAAKsqR,eAC3C,GAAItqR,KAAK4oS,cAAgB,EAAG,CAC1B7pD,EAAMsqD,eAAiB,eACnBrpS,KAAK4oS,cAAgB,IACvB7pD,EAAMuqD,oBAAsB,SAE/B,CACD,GAAItpS,KAAKyzJ,WAAa,EAAG,CACvBsrF,EAAMsqD,eAAiB,WACnBrpS,KAAKyzJ,WAAa,IACpBsrF,EAAMuqD,oBAAsB,SAE/B,CACDvqD,EAAMwqD,UAAYvpS,KAAK0pR,QACvB3qC,EAAMya,SAAWw4B,gBAAgB,IAAOhyR,KAAK6M,MAC7CopR,cAAcj2R,KAAMA,KAAMA,KAAKkjR,IAAa2G,WAAY9qC,GACxD,GAAI/+O,KAAK+oS,YAAc,EAAG,CACxBhqD,EAAMsqD,eAAiB,YACnBrpS,KAAK+oS,YAAc,IACrBhqD,EAAMuqD,oBAAsB,SAE/B,CACDvqD,EAAMtnO,WAAazX,KAAK2X,OACxB,OAAOonO,CACR,EAEH,MAAMyqD,eAAeta,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK+8R,QAAU,IAChB,EAEH,MAAM0M,gBAAgB9X,aACpB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMqZ,oBAAoBxa,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eACtBl3R,KAAK2pS,eAAiB7iB,WAAW,CAC/Bh0Q,KAAM26P,EAAWk8B,eACjB5iB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAK4pS,kBAAoB9iB,WAAW,CAClCh0Q,KAAM26P,EAAWm8B,kBACjB7iB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAK6pS,UAAY/iB,WAAW,CAC1Bh0Q,KAAM26P,EAAWo8B,UACjB9iB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK8pS,mBAAqBhjB,WAAW,CACnCh0Q,KAAM26P,EAAWq8B,mBACjB/iB,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAK+pS,qBAAuBjjB,WAAW,CACrCh0Q,KAAM26P,EAAWs8B,qBACjBhjB,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKgqS,mBAAqBljB,WAAW,CACnCh0Q,KAAM26P,EAAWu8B,mBACjBjjB,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,GAEvB,EAEH,MAAM0iS,cAActY,aAClB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SACtBl3R,KAAKkqS,OAAS/iB,gBAAgB1Z,EAAWy8B,OAAQ,CAAC,MAAO,SAAU,SAAU,OAAQ,UACrFlqS,KAAKk0R,YAAczmB,EAAWymB,aAAe,GAC7Cl0R,KAAK27C,KAAO8xN,EAAW9xN,MAAQ,GAC/B37C,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK+kS,iBAAmB5d,gBAAgB1Z,EAAWs3B,iBAAkB,CAAC,SAAU,OAAQ,YACxF/kS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACjL,MACC,GAAIplR,KAAKk0R,cAAgBsD,GAAM5pR,IAAI5N,KAAKk0R,YAAYtgR,eAClD,OAAOo0Q,WAAWE,MAEpB,IAAI1lR,EAASxC,KAAKkjR,IAAa56B,QAAUtoP,KAAKkjR,IAAa56B,OAAOh6P,IAAI0R,KAAK27C,MAC3E,IAAKn5C,IAAWxC,KAAK27C,OAAS37C,KAAK6hR,KACjC,OAAOmG,WAAWE,MAEf1lR,GAAUxC,KAAK+kS,mBAAqB,WACvCviS,EAASyI,eAAejL,KAAK6hR,MAE/B,IAAKr/Q,EACH,OAAOwlR,WAAWE,MAEpB,IAAKloR,KAAKk0R,YAAa,CACrB,IAAK,MAAOhnQ,EAAQ79B,KAASooS,GAC3B,GAAIj1R,EAAOtD,OAASguB,EAAOhuB,QAAUguB,EAAO3Y,OAAM,CAAChN,EAAGlG,IAAMkG,IAAM/E,EAAOnB,KAAK,CAC5ErB,KAAKk0R,YAAc7kS,EACnB,KACD,CAEH,IAAK2Q,KAAKk0R,YACR,OAAOlM,WAAWE,KAErB,CACD,MAAMiiB,EAAO,IAAIlnD,KAAK,CAACzgP,GAAS,CAC9BnT,KAAM2Q,KAAKk0R,cAEb,IAAIn1C,EACJ,OAAQ/+O,KAAKkqS,QACX,IAAK,MACL,IAAK,SACH,MACF,IAAK,SACHnrD,EAAQ,CACNzlO,OAAQ,OACR8wR,UAAW,QAEb,MACF,IAAK,OACHrrD,EAAQ,CACN1lO,MAAO,OACPC,OAAQ,OACR8wR,UAAW,QAEb,MACF,IAAK,QACHrrD,EAAQ,CACN1lO,MAAO,OACP+wR,UAAW,QAEb,MAEJ,MAAMp7R,EAAShP,KAAKgjR,MACpB,OAAOgF,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACVinB,MAAO,CAAC,YACR31C,QACA7/N,IAAK5f,IAAI+qS,gBAAgBF,GACzB3lR,IAAKxV,EAAS2pR,UAAU3pR,EAAOg0Q,OAAiB,OAGrD,EAEH,MAAMsnB,kBAAkBpb,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAK8S,KAAOq0Q,gBAAgB1Z,EAAW36P,KAAM,CAAC,OAAQ,UACtD9S,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,CACD,CAAC7E,IAASyK,GACR,OAAI7vR,KAAK8S,OAAS,QACTk1Q,WAAWG,QAAQ,CACxBpoR,KAAM,MACNwpC,SAAU,GACVkkO,WAAY,CAAE,IAGXua,WAAWE,KACnB,EAEH,MAAMqiB,gBAAgB9Y,cACpB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACC,MAAMzuQ,EAAS1E,SAAS9O,KAAK6hR,IAAUzQ,OAAQ,IAC/CpxQ,KAAK6hR,IAAY/pQ,MAAMtE,GAAU,KAAOA,CACzC,CACD,CAAC4xQ,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,MAAc,KAAO7hR,KAAK6hR,IAAU/9Q,WAAa,GAC1E,EAEH,MAAM0mS,gBAAgBtb,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKgkS,YAAc,IAAI1U,cACxB,EAEH,MAAMmb,cAAcvb,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAK3H,KAAOyuR,WAAW,CACrBh0Q,KAAM26P,EAAWp1Q,KACjB0uR,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK2iS,QAAU,IAAIrT,eACnBtvR,KAAKqJ,KAAO,IAAIimR,eAChBtvR,KAAK4iS,SAAW,IAAItT,eACpBtvR,KAAK6iS,QAAU,IAAIvT,eACnBtvR,KAAKi0R,OAAS,IAAI3E,eAClBtvR,KAAK8iS,MAAQ,IAAIxT,eACjBtvR,KAAK85C,MAAQ,IAAIw1O,eACjBtvR,KAAK+iS,QAAU,IAAIzT,eACnBtvR,KAAK89P,KAAO,IAAIwxB,eAChBtvR,KAAKgjS,KAAO,IAAI1T,cACjB,CACD,CAAClK,MACC,MAAM/tO,EAAS,GACf,IAAK,MAAMi4N,KAAStvQ,KAAK4iR,MACvBvrO,EAAO11C,KAAK2tQ,EAAM4V,OAEpB,OAAO8C,WAAWG,QAAQ9wO,EAC3B,EAEH,MAAMqzP,aAAaxb,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3B,MAAMn5B,EAAU,CAAC,OAAQ,cAAe,YACxCmB,KAAK2qS,OAASxjB,gBAAgB1Z,EAAWk9B,OAAQ9rS,GACjDmB,KAAKixB,KAAOk2P,gBAAgB1Z,EAAWx8O,KAAMpyB,GAC7CmB,KAAKkyD,SAAWi1N,gBAAgB1Z,EAAWv7M,SAAUrzD,GACrDmB,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,EAEH,MAAMsP,iBAAiB1b,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YACtB,MAAMr4R,EAAU,CAAC,GAAI,MAAO,MAC5BmB,KAAK6qS,QAAU1jB,gBAAgB1Z,EAAWo9B,QAAShsS,GACnDmB,KAAK8qS,iBAAmB3jB,gBAAgB1Z,EAAWq9B,iBAAkBjsS,GACrEmB,KAAK+qS,aAAe5jB,gBAAgB1Z,EAAWs9B,aAAclsS,GAC7DmB,KAAKgrS,iBAAmB7jB,gBAAgB1Z,EAAWu9B,iBAAkBnsS,GACrEmB,KAAKirS,aAAe9jB,gBAAgB1Z,EAAWw9B,aAAcpsS,GAC7DmB,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKkrS,aAAe/jB,gBAAgB1Z,EAAWy9B,aAAcrsS,GAC7DmB,KAAKmrS,YAAchkB,gBAAgB1Z,EAAW09B,YAAatsS,GAC3DmB,KAAKorS,gBAAkBjkB,gBAAgB1Z,EAAW29B,gBAAiBvsS,GACnEmB,KAAKqrS,eAAiBlkB,gBAAgB1Z,EAAW49B,eAAgBxsS,GACjEmB,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMib,aAAapc,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAK+0R,KAAO5N,gBAAgB1Z,EAAWsnB,KAAM,CAAC,OAAQ,OAAQ,UAC9D/0R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKurS,MAAQpkB,gBAAgB1Z,EAAW89B,MAAO,CAAC,KAAM,MACtDvrS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs6R,KAAO,IACb,CACD,CAAClV,MACC,MAAMp2Q,EAAShP,KAAKgjR,MAAcA,MAClC,MAAMsX,EAAOt6R,KAAKs6R,MAAQ,IAAIC,KAAK,CAAE,GACrC,MAAMC,EAAYF,EAAKhV,MACvB,MAAMvmC,EAAQ5wP,OAAO0d,OAAO,MAC5B,MAAM6uR,EAAYJ,EAAK9H,WAAa,UAAY8H,EAAKI,UAAY,EACjE37C,EAAM07C,YAAczI,gBAAgB0I,GACpC37C,EAAMhmP,OAASyhS,EAAUpyQ,MACzB,IAAIxhB,EAAII,EAAIH,EAAII,EAChB,IAAIoS,EAAQ,OACZ,IAAIC,EAAS,OACb,GAAItK,EAAOolL,GAAKsmG,EAAW,EACxB9zR,EAAII,EAAIH,EAAII,GAAM,CAAC,MAAO,EAAG,MAAO,QACrCoS,EAAQ0lO,EAAM07C,WACpB,MAAW,GAAIzrR,EAAOmiC,GAAKupP,EAAW,EAC/B9zR,EAAII,EAAIH,EAAII,GAAM,CAAC,EAAG,MAAO,OAAQ,OACtCqS,EAASylO,EAAM07C,WACrB,MAAez6R,KAAKurS,QAAU,MACvB3kS,EAAII,EAAIH,EAAII,GAAM,CAAC,EAAG,EAAG,OAAQ,SAEjCL,EAAII,EAAIH,EAAII,GAAM,CAAC,EAAG,OAAQ,OAAQ,GAEzC,MAAMqiC,EAAO,CACXvpC,KAAM,OACN0tQ,WAAY,CACVktB,MAAOxD,GACPvwR,KACAI,KACAH,KACAI,KACA83O,UAGJ,MAAMq8C,EAAM,CACVr7R,KAAM,MACNwpC,SAAU,CAACD,GACXmkO,WAAY,CACVktB,MAAOxD,GACP99Q,QACAC,SACAylO,MAAO,CACL67C,SAAU,aAIhB,GAAIhD,UAAU5oR,GACZ,OAAOg5Q,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACV1uB,MAAO,CACL2zC,QAAS,SACTr5Q,MAAO,OACPC,OAAQ,SAGZiwB,SAAU,CAAC6xP,KAGfA,EAAI3tB,WAAW1uB,MAAMlkO,SAAW,WAChC,OAAOmtQ,WAAWG,QAAQiT,EAC3B,EAEH,MAAMoQ,eAAetc,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,UAAW,WAAY,SAAU,UAC/E2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,IACf,CACD,CAAChW,IAAUmmB,GACTA,EAAaA,EAAaA,EAAWnmB,MAAc,UACnD,MAAMn6D,EAASnrN,KAAK3Q,KAAKwsD,QAAQ,WAAY,OAAOjoC,cACpD,MAAM83R,EAAW1rS,KAAKooB,MAAQpoB,KAAKooB,MAAMk9P,MAAc,UACvD,MAAO,mBAAmBn6D,MAAWsgF,MAAeC,IACrD,EAEH,MAAMC,qBAAqBla,cACzB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,gBACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACCjiR,KAAK6hR,IAAYsF,gBAAgBnnR,KAAK6hR,IAAW,CAAC,OAAQ,IAAK,KAChE,EAEH,MAAM+pB,iBAAiB1c,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKoW,OAAS+wQ,gBAAgB1Z,EAAWr3P,OAAQ,CAAC,UAAW,MAAO,YACpEpW,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK4O,IAAM,IAAI0gR,cAChB,EAEH,MAAMuc,eAAe3c,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAK4zR,YAAcxM,eAAe3Z,EAAWmmB,YAAa,KAC1D5zR,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKyzR,UAAYrM,eAAe3Z,EAAWgmB,UAAW,KACtDzzR,KAAK0zR,WAAatM,eAAe3Z,EAAWimB,WAAY,KACxD1zR,KAAK2zR,SAAWvM,eAAe3Z,EAAWkmB,SAAU,KACpD3zR,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,CACD,CAAChW,MACC,MAAO,CACL2E,OAAQ+H,gBAAgBhyR,KAAK2zR,UAAY,IAAM3B,gBAAgBhyR,KAAK0zR,YAAc,IAAM1B,gBAAgBhyR,KAAK4zR,aAAe,IAAM5B,gBAAgBhyR,KAAKyzR,WAE1J,EAEH,MAAMqY,YAAY5c,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKk6Q,YAAc4M,WAAW,CAC5Bh0Q,KAAM26P,EAAWyM,YACjB6M,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,GAAKA,IAAM,IAElCvH,KAAK+rS,cAAgB5kB,gBAAgB1Z,EAAWs+B,cAAe,CAAC,SAAU,WAC1E/rS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM2b,eAAe9c,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKisS,YAAclkB,QAAQta,EAAWw+B,aACtCjsS,KAAKksS,KAAO9kB,eAAe3Z,EAAWy+B,MACtClsS,KAAKmsS,YAAchlB,gBAAgB1Z,EAAW0+B,YAAa,CAAC,WAAY,cACxEnsS,KAAKosS,MAAQhlB,eAAe3Z,EAAW2+B,OACvCpsS,KAAKqsS,MAAQ5+B,EAAW4+B,OAAS,GACjCrsS,KAAKssS,OAASnlB,gBAAgB1Z,EAAW6+B,OAAQ,CAAC,OAAQ,WAAY,cACtEtsS,KAAKusS,QAAUplB,gBAAgB1Z,EAAW8+B,QAAS,CAAC,OAAQ,aAC5DvsS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMmc,gBAAgBtd,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK89P,KAAO,IAAIwxB,cACjB,EAEH,MAAMmd,oBAAoBvd,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,cAAe,MACrCl3R,KAAKmiS,cAAgBhb,gBAAgB1Z,EAAW00B,cAAe,CAAC,OAAQ,MAAO,OAC/EniS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKqiS,KAAO,KACZriS,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,CACD,CAAC7E,IAASyK,GACR,MAAM9wC,EAAQu1C,QAAQt0R,KAAM,SAAU,OAAQ,UAC9C,MAAMszN,EAAQtzN,KAAKgjR,MAAcA,MACjC,MAAMoF,EAAO,CACXroR,KAAM,QACN0tQ,WAAY,CACVp+Q,KAAM,OACNmxS,QAASltE,EAAMiyD,IACfkb,OAAQntE,EAAMwuD,MAASyD,KAASjyD,EAAMiyD,IACtCmP,MAAO,CAAC,gBACR31C,QACA,aAAc45C,UAAUrlE,GACxB,gBAAiB,QAGrB,GAAI4kE,WAAW5kE,GAAQ,CACrB80D,EAAK3a,WAAW,iBAAmB,KACnC2a,EAAK3a,WAAWozB,SAAW,IAC5B,CACD,OAAO7Y,WAAWG,QAAQ,CACxBpoR,KAAM,QACN0tQ,WAAY,CACVinB,MAAO,CAAC,aAEVnrP,SAAU,CAAC6+O,IAEd,EAEH,MAAMskB,cAAcxd,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK2sS,QAAUl/B,EAAWk/B,UAAY,GAAK7lB,WAAW,CACpDh0Q,KAAM26P,EAAWk/B,QACjB5lB,aAAc,GACdC,SAAUz/Q,GAAK,OACZ,GACLvH,KAAKsF,IAAMmoQ,EAAWnoQ,MAAQ,GAAKwhR,WAAW,CAC5Ch0Q,KAAM26P,EAAWnoQ,IACjByhR,aAAc,EACdC,SAAUz/Q,GAAK,OACZ,GACLvH,KAAKwB,IAAMisQ,EAAWjsQ,MAAQ,GAAKslR,WAAW,CAC5Ch0Q,KAAM26P,EAAWjsQ,IACjBulR,aAAc,EACdC,SAAUz/Q,GAAK,OACZ,GACLvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,CACD,CAAC9Z,MACC,MAAMxyQ,EAAShP,KAAKgjR,MACpB,MAAM4pB,EAAc5sS,KAAKwB,IACrBxB,KAAKwB,MAAQ,KACfxB,KAAKwB,IAAMwN,aAAkBoqR,UAAYpqR,aAAkB69R,QAAU,EAAI,GAEvE7sS,KAAKsF,MAAQ,KAEbtF,KAAKsF,IADHsnS,IAAgB,GACP59R,aAAkBoqR,UAAYpqR,aAAkB69R,SAAW,EAAI,EAE/D7sS,KAAKwB,KAGhBxB,KAAKsF,OAAS,GAAKtF,KAAKsF,IAAMtF,KAAKwB,MACrCxB,KAAKsF,IAAMtF,KAAKwB,KAEdxB,KAAK2sS,UAAY,KACnB3sS,KAAK2sS,QAAU39R,aAAkB89R,SAAW,EAAI9sS,KAAKwB,IAExD,EAEH,MAAMurS,YAAYpb,aAChB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM2c,aAAa9d,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKitS,IAAM,IAAI3d,cAChB,EAEH,MAAM4d,iBAAiBhe,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKq9R,OAAS5vB,EAAW4vB,QAAU,GACnCr9R,KAAKkgR,OAASzS,EAAWyS,QAAU,GACnClgR,KAAKo6Q,QAAU3M,EAAW2M,SAAW,GACrCp6Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAAC3N,MACC,IAAK1iR,KAAKgiR,IAAS,CACjB,MAAMhzQ,EAAShP,KAAKgjR,MACpB,MAAMjY,EAAO/qQ,KAAKijR,MAClB,MAAM/C,EAASnV,EAAK8Z,IAAa7kR,KAAKkgR,OAAQlxQ,GAC9C,MAAMquR,EAAStyB,EAAK8Z,IAAa7kR,KAAKq9R,OAAQruR,GAC9C,MAAMorQ,EAAUrP,EAAK8Z,IAAa7kR,KAAKo6Q,QAASprQ,GAChDhP,KAAKgiR,IAAU,CACb9B,OAAQA,IAAS,IAAM,KACvBmd,OAAQA,IAAS,IAAM,KACvBjjB,QAASA,IAAU,IAAM,KACzB+yB,UAAW,MACXC,WAAY,MAEf,CACD,OAAOptS,KAAKgiR,GACb,EAEH,MAAMoX,iBAAiBlK,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKqtS,gBAAkBlmB,gBAAgB1Z,EAAW4/B,gBAAiB,CAAC,MAAO,QAAS,aACpFrtS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKstS,cAAgBxmB,WAAW,CAC9Bh0Q,KAAM26P,EAAW6/B,cACjBvmB,aAAc,EACdC,SAAUz/Q,GAAK,OAEjBvH,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKutS,SAAWzmB,WAAW,CACzBh0Q,KAAM26P,EAAW8/B,SACjBxmB,aAAc,EACdC,SAAUz/Q,GAAK,OAEjBvH,KAAKwtS,UAAYrmB,gBAAgB1Z,EAAW+/B,UAAW,CAAC,MAAO,OAAQ,QACvExtS,KAAKytS,aAAetmB,gBAAgB1Z,EAAWggC,aAAc,CAAC,MAAO,QAAS,OAAQ,OAAQ,SAC9FztS,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAK0tS,OAAS,KACd1tS,KAAK2tS,MAAQ,KACb3tS,KAAK2hP,KAAO,IAAI2tC,eAChBtvR,KAAK05R,YAAc,IAAIpK,eACvBtvR,KAAKu7R,KAAO,IAAIjM,eAChBtvR,KAAKy7R,UAAY,IAAInM,eACrBtvR,KAAKszN,MAAQ,IAAIg8D,eACjBtvR,KAAK07R,QAAU,IAAIpM,cACpB,CACD,CAACvL,MACC,IAAK/jR,KAAKgiR,IAAS,CACjBhiR,KAAKgiR,IAAU,CACb4rB,YAAa,GAEf,OAAO,IACR,CACD,OAAQ5tS,KAAK2tS,OAAS3tS,KAAK2tS,MAAMroS,OAAS,GAAKtF,KAAKgiR,IAAQ4rB,YAAc5tS,KAAK2tS,MAAMroS,GACtF,CACD,CAACm8Q,aACQzhR,KAAKgiR,GACb,CACD,CAACc,MACM9iR,KAAKgiR,MACRhiR,KAAKgiR,IAAU,CACb4rB,YAAa,IAGjB,MAAM5+R,EAAShP,KAAKgjR,MACpB,GAAIh0Q,EAAO6+R,WAAa,qBAClB7tS,KAAK+jR,MAAc,CACrB/jR,KAAKgiR,IAAQ4rB,aAAe,EAC5B,OAAO5tS,IACR,CAEH,OAAOgP,EAAO8zQ,KACf,CACD,CAACT,MACC,OAAOriR,KAAKgiR,IAAQ/pG,OAAS,CAC3B5+J,MAAO,EACPC,OAAQ,EAEX,CACD,CAAC8rQ,MACMplR,KAAKgiR,MACRhiR,KAAKgiR,IAAU,CACb4rB,YAAa,IAGjB,MAAMrkQ,EAAW,GACjBvpC,KAAKgiR,IAAQz4O,SAAWA,EACxB,MAAMw1M,EAAQ5wP,OAAO0d,OAAO,MAC5B,GAAI7L,KAAK0tS,QAAU1tS,KAAK0tS,OAAOtB,OAASpsS,KAAK0tS,OAAOxB,KAAM,CACxDntD,EAAM1lO,MAAQ24Q,gBAAgBhyR,KAAK0tS,OAAOtB,OAC1CrtD,EAAMzlO,OAAS04Q,gBAAgBhyR,KAAK0tS,OAAOxB,MAC3ClsS,KAAKgiR,IAAQ/pG,MAAQ,CACnB5+J,MAAOrZ,KAAK0tS,OAAOtB,MACnB9yR,OAAQtZ,KAAK0tS,OAAOxB,MAEtB,GAAIlsS,KAAK0tS,OAAOvB,cAAgB,YAAa,CAC3C,MAAM5kS,EAAIw3O,EAAM1lO,MAChB0lO,EAAM1lO,MAAQ0lO,EAAMzlO,OACpBylO,EAAMzlO,OAAS/R,EACfvH,KAAKgiR,IAAQ/pG,MAAQ,CACnB5+J,MAAOrZ,KAAK0tS,OAAOxB,KACnB5yR,OAAQtZ,KAAK0tS,OAAOtB,MAEvB,CACP,MACMjuS,KAAK,6DAEP6B,KAAKuhR,IAAiB,CACpB1yP,OAAQ,IAAI3f,IAAI,CAAC,OAAQ,OAAQ,QAAS,YAC1C4wQ,QAAS,OAEX9/Q,KAAKuhR,IAAiB,CACpB1yP,OAAQ,IAAI3f,IAAI,CAAC,gBACjB4wQ,QAAS,OAEX,OAAOkI,WAAWG,QAAQ,CACxBpoR,KAAM,MACNwpC,WACAkkO,WAAY,CACVinB,MAAO,CAAC,WACR18P,GAAIh4B,KAAKulR,IACTxmC,QACA68C,QAAS57R,KAAKD,OAGnB,EAEH,MAAM8sS,gBAAgB3d,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAK8tS,iBAAmB3mB,gBAAgB1Z,EAAWqgC,iBAAkB,CAAC,WAAY,cAClF9tS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK6tS,SAAW1mB,gBAAgB1Z,EAAWogC,SAAU,CAAC,oBAAqB,kBAAmB,qBAC9F7tS,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK2tS,MAAQ,KACb3tS,KAAKu5R,SAAW,IAAIjK,eACpBtvR,KAAK+tS,QAAU,IAAIze,cACpB,CACD,CAAC7N,MACC,IAAK,MAAMjN,KAAQx0Q,KAAKu5R,SAAShwP,SAC/BirO,EAAKiN,MAEP,IAAK,MAAMjN,KAAQx0Q,KAAK+tS,QAAQxkQ,SAC9BirO,EAAKiN,KAER,CACD,CAACsC,MACC,OAAQ/jR,KAAK2tS,OAAS3tS,KAAK2tS,MAAMroS,OAAS,GAAKtF,KAAKgiR,IAAQ4rB,YAAc5tS,KAAK2tS,MAAMroS,GACtF,CACD,CAACw9Q,MACM9iR,KAAKgiR,MACRhiR,KAAKgiR,IAAU,CACb4rB,YAAa,EACbh1R,WAAY,EACZo1R,cAAe,IAGnB,GAAIhuS,KAAK6tS,WAAa,oBAAqB,CACzC,GAAI7tS,KAAKgiR,IAAQppQ,UAAY,EAAI5Y,KAAKu5R,SAAShwP,SAASrqC,OAAQ,CAC9Dc,KAAKgiR,IAAQppQ,WAAa,EAC1B,MAAM2gR,EAAWv5R,KAAKu5R,SAAShwP,SAASvpC,KAAKgiR,IAAQppQ,WACrD,OAAO2gR,EAASzW,KACjB,CACD,GAAI9iR,KAAKgiR,IAAQgsB,aAAe,EAAIhuS,KAAK+tS,QAAQxkQ,SAASrqC,OAAQ,CAChEc,KAAKgiR,IAAQgsB,cAAgB,EAC7B,OAAOhuS,KAAK+tS,QAAQxkQ,SAASvpC,KAAKgiR,IAAQgsB,cAAclrB,KACzD,CACD,GAAI9iR,KAAK+jR,MAAc,CACrB/jR,KAAKgiR,IAAQ4rB,aAAe,EAC5B5tS,KAAKgiR,IAAQppQ,WAAa,EAC1B5Y,KAAKgiR,IAAQgsB,cAAgB,EAC7B,OAAOhuS,KAAK8iR,KACb,CACD,MAAM9zQ,EAAShP,KAAKgjR,MACpB,GAAIh0Q,aAAkB69R,QACpB,OAAO79R,EAAO8zQ,MAEhB9iR,KAAKyhR,MACL,OAAOzhR,KAAK8iR,KACb,CACD,MAAMmrB,EAAajuS,KAAKijR,MAAoBjB,IAAQisB,WACpD,MAAMC,EAASD,EAAa,IAAM,EAAI,OAAS,MAC/C,MAAMpzR,EAAWozR,IAAe,EAAI,QAAU,OAC9C,IAAIz5B,EAAOx0Q,KAAKu5R,SAAShwP,SAAS6/O,MAAKzkR,GAAKA,EAAE6oS,YAAcU,GAAUvpS,EAAE8oS,eAAiB5yR,IACzF,GAAI25P,EACF,OAAOA,EAETA,EAAOx0Q,KAAKu5R,SAAShwP,SAAS6/O,MAAKzkR,GAAKA,EAAE6oS,YAAc,OAAS7oS,EAAE8oS,eAAiB5yR,IACpF,GAAI25P,EACF,OAAOA,EAETA,EAAOx0Q,KAAKu5R,SAAShwP,SAAS6/O,MAAKzkR,GAAKA,EAAE6oS,YAAc,OAAS7oS,EAAE8oS,eAAiB,QACpF,OAAIj5B,GAGGx0Q,KAAKu5R,SAAShwP,SAAS,EAC/B,EAEH,MAAM4kQ,aAAajf,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OAAQ,MAC9Bl3R,KAAK2yR,OAASxL,gBAAgB1Z,EAAWklB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG3yR,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKo7N,WAAaqyC,EAAWryC,WAAagsD,eAAe3Z,EAAWryC,WAAY,OAAS,GACzFp7N,KAAK+zR,WAAatmB,EAAWsmB,WAAa3M,eAAe3Z,EAAWsmB,WAAY,OAAS,GACzF/zR,KAAKg0R,YAAcvmB,EAAWumB,YAAc5M,eAAe3Z,EAAWumB,YAAa,OAAS,GAC5Fh0R,KAAKouS,QAAUtnB,WAAW,CACxBh0Q,KAAM26P,EAAW2gC,QACjBrnB,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKquS,SAAW5gC,EAAW4gC,UAAY,GACvCruS,KAAKsuS,YAAc7gC,EAAW6gC,YAAclnB,eAAe3Z,EAAW6gC,YAAa,OAAS,GAC5FtuS,KAAK6zR,WAAapmB,EAAWomB,WAAazM,eAAe3Z,EAAWomB,WAAY,OAAS,GACzF7zR,KAAK8zR,WAAarmB,EAAWqmB,WAAa1M,eAAe3Z,EAAWqmB,WAAY,OAAS,GACzF9zR,KAAKuuS,WAAa9gC,EAAW8gC,WAAannB,eAAepnR,KAAKuuS,YAAc,GAC5EvuS,KAAKwuS,UAAY/gC,EAAW+gC,UAAY,IAAIp9B,OAAOl8P,MAAM,OAAOC,KAAI,CAAC5N,EAAGlG,IAAMA,EAAI,IAAM,EAAI+lR,eAAe7/Q,GAAKA,IAChHvH,KAAKo1R,WAAa3nB,EAAW2nB,WAAahO,eAAe3Z,EAAW2nB,WAAY,OAAS,GACzFp1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK81R,OAAS3O,gBAAgB1Z,EAAWqoB,OAAQ,CAAC,MAAO,SAAU,WACnE91R,KAAKyuS,OAAS3nB,WAAW,CACvBh0Q,KAAM26P,EAAWghC,OACjB1nB,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAK0uS,YAAc,IACpB,CACD,CAACppB,MACC,MAAMvmC,EAAQu1C,QAAQt0R,KAAM,UACxBA,KAAK+zR,aAAe,KACtBh1C,EAAM4vD,YAAc3c,gBAAgBhyR,KAAK+zR,aAEvC/zR,KAAKg0R,cAAgB,KACvBj1C,EAAM6vD,aAAe5c,gBAAgBhyR,KAAKg0R,cAExCh0R,KAAK6zR,aAAe,KACtB90C,EAAM8vD,WAAa7c,gBAAgBhyR,KAAK6zR,aAEtC7zR,KAAK8zR,aAAe,KACtB/0C,EAAM+vD,cAAgB9c,gBAAgBhyR,KAAK8zR,aAE7C,GAAI9zR,KAAKo1R,aAAe,GAAI,CAC1Br2C,EAAMq2C,WAAapD,gBAAgBhyR,KAAKo1R,YACxCF,cAAcn2C,EACf,CACG/+O,KAAKo7N,WAAa,IACpB2jB,EAAM3jB,WAAa42D,gBAAgBhyR,KAAKo7N,aAEtCp7N,KAAKuuS,aAAe,KACtBxvD,EAAMgwD,QAAU/c,gBAAgBhyR,KAAKuuS,aAEnCvuS,KAAKwuS,SAAStvS,OAAS,EACvBc,KAAKgvS,eACP7gT,OAAOktD,OAAO0jM,EAAO/+O,KAAKgvS,cAAc1pB,OAE1C,OAAOvmC,CACR,EAEH,MAAMkwD,qBAAqB/f,UACzB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eAAgB,MACtCl3R,KAAKmiS,cAAgBhb,gBAAgB1Z,EAAW00B,cAAe,CAAC,OAAQ,MAAO,OAC/EniS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKkvS,aAAezhC,EAAWyhC,cAAgB,IAC/ClvS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,EAEH,MAAMklB,yBAAyBjgB,UAC7B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,aAAc,gBAAiB,eAAgB,gBAAiB,aAAc,aAC5H2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,IACf,CACD,CAAChW,IAAUmmB,GACTA,EAAaA,EAAaA,EAAWnmB,MAAc,UACnD,MAAMomB,EAAW1rS,KAAKooB,MAAQpoB,KAAKooB,MAAMk9P,MAAc,UACvD,MAAMjsQ,EAAQ,EACd,MAAMlN,EAAM,4BACZ,MAAMu7C,EAAS,GAAG+jP,KAAcA,KAAcpyR,OAAWqyR,KAAYryR,OAAWqyR,KAAY,EAAIryR,MAChG,OAAQrZ,KAAK3Q,MACX,IAAK,aACH,MAAO,GAAG8c,YAAcu7C,MAAWv7C,cAAgBu7C,KACrD,IAAK,gBACH,MAAO,GAAGv7C,WAAau7C,MAAWv7C,YAAcu7C,KAClD,IAAK,eACH,MAAO,GAAGv7C,WAAau7C,KACzB,IAAK,gBACH,MAAO,GAAGv7C,YAAcu7C,KAC1B,IAAK,aACH,MAAO,GAAGv7C,YAAcu7C,KAC1B,IAAK,WACH,MAAO,GAAGv7C,cAAgBu7C,KAE9B,MAAO,EACR,EAEH,MAAM0nP,gBAAgBzd,aACpB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMgf,cAAcngB,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAK8nS,iBAAmB,IAAIxY,eAC5BtvR,KAAK8jG,IAAM,IAAIwrL,eACftvR,KAAK2hP,KAAO,IAAI2tC,eAChBtvR,KAAKu4R,OAAS,IAAIjJ,eAClBtvR,KAAKsvS,QAAU,IAAIhgB,eACnBtvR,KAAKimS,UAAY,IAAI3W,eACrBtvR,KAAKuvS,QAAU,IAAIjgB,eACnBtvR,KAAK2iS,QAAU,IAAIrT,eACnBtvR,KAAK20R,OAAS,IAAIrF,eAClBtvR,KAAKw9R,MAAQ,IAAIlO,eACjBtvR,KAAKwvS,WAAa,IAAIlgB,eACtBtvR,KAAKyvS,YAAc,IAAIngB,eACvBtvR,KAAK4mS,OAAS,IAAItX,eAClBtvR,KAAKslS,UAAY,IAAIhW,eACrBtvR,KAAKsjS,QAAU,IAAIhU,eACnBtvR,KAAKgkS,YAAc,IAAI1U,eACvBtvR,KAAK+nS,aAAe,IAAIzY,eACxBtvR,KAAKqmS,YAAc,IAAI/W,eACvBtvR,KAAKsmS,WAAa,IAAIhX,eACtBtvR,KAAKooB,MAAQ,IAAIknQ,eACjBtvR,KAAKqiS,KAAO,IAAI/S,eAChBtvR,KAAKulS,QAAU,IAAIjW,eACnBtvR,KAAK05R,YAAc,IAAIpK,eACvBtvR,KAAKy9R,OAAS,IAAInO,eAClBtvR,KAAKqJ,KAAO,IAAIimR,eAChBtvR,KAAK4iS,SAAW,IAAItT,eACpBtvR,KAAK0vS,aAAe,IAAIpgB,eACxBtvR,KAAK6iS,QAAU,IAAIvT,eACnBtvR,KAAK2vS,UAAY,IAAIrgB,eACrBtvR,KAAKqsQ,KAAO,IAAIijB,eAChBtvR,KAAKmjS,aAAe,IAAI7T,eACxBtvR,KAAKgoS,cAAgB,IAAI1Y,eACzBtvR,KAAKu7R,KAAO,IAAIjM,eAChBtvR,KAAKs6R,KAAO,IAAIhL,eAChBtvR,KAAKiI,SAAW,IAAIqnR,eACpBtvR,KAAK2iN,UAAY,IAAI2sE,eACrBtvR,KAAKy4Q,QAAU,IAAI6W,eACnBtvR,KAAKykS,YAAc,IAAInV,eACvBtvR,KAAK4/R,WAAa,IAAItQ,eACtBtvR,KAAKskS,iBAAmB,IAAIhV,eAC5BtvR,KAAKioS,kBAAoB,IAAI3Y,eAC7BtvR,KAAK6sR,MAAQ,IAAIyC,eACjBtvR,KAAKi0R,OAAS,IAAI3E,eAClBtvR,KAAKw7R,SAAW,IAAIlM,eACpBtvR,KAAKy7R,UAAY,IAAInM,eACrBtvR,KAAKy6O,QAAU,IAAI60C,eACnBtvR,KAAKs7R,OAAS,IAAIhM,eAClBtvR,KAAKszN,MAAQ,IAAIg8D,eACjBtvR,KAAK/G,KAAO,IAAIq2R,eAChBtvR,KAAK6uB,OAAS,IAAIygQ,eAClBtvR,KAAK8iS,MAAQ,IAAIxT,eACjBtvR,KAAKokN,KAAO,IAAIkrE,eAChBtvR,KAAKo6D,OAAS,IAAIk1N,eAClBtvR,KAAKwwP,QAAU,IAAI8+B,eACnBtvR,KAAK0uS,YAAc,IAAIpf,eACvBtvR,KAAK85C,MAAQ,IAAIw1O,eACjBtvR,KAAK6mS,UAAY,IAAIvX,eACrBtvR,KAAK+iS,QAAU,IAAIzT,eACnBtvR,KAAK6/R,QAAU,IAAIvQ,eACnBtvR,KAAK0P,MAAQ,IAAI4/Q,eACjBtvR,KAAKujS,KAAO,IAAIjU,eAChBtvR,KAAK8/R,SAAW,IAAIxQ,eACpBtvR,KAAKspC,KAAO,IAAIgmP,eAChBtvR,KAAKonS,OAAS,IAAI9X,eAClBtvR,KAAKkoS,aAAe,IAAI5Y,eACxBtvR,KAAKkkS,SAAW,IAAI5U,eACpBtvR,KAAKiqR,OAAS,IAAIqF,eAClBtvR,KAAKmoS,IAAM,IAAI7Y,eACftvR,KAAK0tS,OAAS,IAAIpe,eAClBtvR,KAAKF,QAAU,IAAIwvR,eACnBtvR,KAAKgnS,YAAc,IAAI1X,eACvBtvR,KAAK2tS,MAAQ,IAAIre,eACjBtvR,KAAKitS,IAAM,IAAI3d,eACftvR,KAAK+/R,KAAO,IAAIzQ,eAChBtvR,KAAK46R,SAAW,IAAItL,eACpBtvR,KAAKu5R,SAAW,IAAIjK,eACpBtvR,KAAK+tS,QAAU,IAAIze,eACnBtvR,KAAKuvR,KAAO,IAAID,eAChBtvR,KAAK4vS,aAAe,IAAItgB,eACxBtvR,KAAKgmP,QAAU,IAAIspC,eACnBtvR,KAAK+8R,QAAU,IAAIzN,eACnBtvR,KAAKqnS,OAAS,IAAI/X,eAClBtvR,KAAK6d,OAAS,IAAIyxQ,eAClBtvR,KAAKooS,QAAU,IAAI9Y,eACnBtvR,KAAKlH,UAAY,IAAIw2R,eACrBtvR,KAAK4O,IAAM,IAAI0gR,eACftvR,KAAK4+R,OAAS,IAAItP,eAClBtvR,KAAKwjS,YAAc,IAAIlU,eACvBtvR,KAAK0kS,SAAW,IAAIpV,eACpBtvR,KAAKgxN,UAAY,IAAIs+D,eACrBtvR,KAAKggS,QAAU,IAAI1Q,eACnBtvR,KAAKsnS,MAAQ,IAAIhY,eACjBtvR,KAAK44R,MAAQ,IAAItJ,eACjBtvR,KAAKunS,QAAU,IAAIjY,eACnBtvR,KAAK07R,QAAU,IAAIpM,eACnBtvR,KAAK27R,WAAa,IAAIrM,eACtBtvR,KAAK6vS,UAAY,IAAIvgB,eACrBtvR,KAAKigS,WAAa,IAAI3Q,eACtBtvR,KAAK2kS,OAAS,IAAIrV,eAClBtvR,KAAK89P,KAAO,IAAIwxB,eAChBtvR,KAAKomS,SAAW,IAAI9W,eACpBtvR,KAAKgjS,KAAO,IAAI1T,eAChBtvR,KAAKqoS,UAAY,IAAI/Y,eACrBtvR,KAAK64R,QAAU,IAAIvJ,eACnBtvR,KAAKq4R,UAAY,IAAI/I,eACrBtvR,KAAK8vS,SAAW,IAAIxgB,eACpBtvR,KAAKihS,GAAK,IAAI3R,eACdtvR,KAAKgnR,SAAW,IAAIsI,eACpBtvR,KAAKR,MAAQ,IAAI8vR,eACjBtvR,KAAK+vS,UAAY,IAAIzgB,cACtB,EAEH,MAAM0gB,eAAe9gB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,SAAU,aACxD2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,IACf,CACD,CAAChW,IAAUmmB,GACTA,EAAaA,EAAaA,EAAWnmB,MAAc,UACnD,MAAMomB,EAAW1rS,KAAKooB,MAAQpoB,KAAKooB,MAAMk9P,MAAc,UACvD,MAAM59N,EAAS1nD,KAAK3Q,OAAS,SAAW,GAAGo8S,KAAcC,IAAa,GAAGA,KAAYD,IACrF,MAAO,qCAAqC/jP,IAC7C,EAEH,MAAMuoP,eAAete,aACnB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM6f,gBAAgBhhB,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK6d,OAAS,IAAIyxQ,cACnB,EAEH,MAAMsY,kBAAkB1Y,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAK+0R,KAAO5N,gBAAgB1Z,EAAWsnB,KAAM,CAAC,OAAQ,OAAQ,UAC9D/0R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKy9R,OAAS,IAAInO,eAAe,GACjCtvR,KAAKs6R,KAAO,IAAIhL,eAAe,GAC/BtvR,KAAK/G,KAAO,IACb,CACD,CAACmsR,MACC,MAAMkV,EAAOt6R,KAAKs6R,KAAK/wP,SAASrqC,OAASc,KAAKs6R,KAAK/wP,SAAS,GAAK,IAAIgxP,KAAK,CAAE,GAC5E,MAAMC,EAAYF,EAAKhV,MACvB,MAAMvmC,EAAQ5wP,OAAO0d,OAAO,MACxB7L,KAAK/G,MAAMu5R,WAAa,UAC1BrkS,OAAOktD,OAAO0jM,EAAO/+O,KAAK/G,KAAKqsR,OAE/BvmC,EAAM9lP,KAAO,cAEf8lP,EAAM07C,YAAczI,gBAAgBsI,EAAK9H,WAAa,UAAY8H,EAAKI,UAAY,GACnF37C,EAAMhmP,OAASyhS,EAAUpyQ,MACzB,MAAMq1Q,EAASz9R,KAAKy9R,OAAOl0P,SAASrqC,OAASc,KAAKy9R,OAAOl0P,SAAS,GAAK,IAAIu4P,OAAO,CAAE,GACpF,MAAMqO,EAAc1S,EAAOnY,MAC3B,MAAMp/Q,EAAO,CACXnG,KAAM,OACN0tQ,WAAY,CACVktB,MAAOxD,GACP99Q,MAAO,OACPC,OAAQ,OACR/R,EAAG,EACHC,EAAG,EACHuzR,GAAIoV,EAAYtS,OAChB7C,GAAImV,EAAYtS,OAChB9+C,UAGJ,MAAMq8C,EAAM,CACVr7R,KAAM,MACNwpC,SAAU,CAACrjC,GACXunQ,WAAY,CACVktB,MAAOxD,GACPp4C,MAAO,CACL67C,SAAU,WAEZvhR,MAAO,OACPC,OAAQ,SAGZ,MAAMtK,EAAShP,KAAKgjR,MAAcA,MAClC,GAAI4U,UAAU5oR,GACZ,OAAOg5Q,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACV1uB,MAAO,CACL2zC,QAAS,SACTr5Q,MAAO,OACPC,OAAQ,SAGZiwB,SAAU,CAAC6xP,KAGfA,EAAI3tB,WAAW1uB,MAAMlkO,SAAW,WAChC,OAAOmtQ,WAAWG,QAAQiT,EAC3B,EAEH,MAAMgV,mBAAmBze,aACvB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,OACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMt3E,eAAe44E,aACnB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UACtBl3R,KAAKqwS,QAAU5iC,EAAW4iC,SAAW,GACrCrwS,KAAKk0R,YAAczmB,EAAWymB,aAAe,GAC7Cl0R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK8lS,MAAQ3e,gBAAgB1Z,EAAWq4B,MAAO,CAAC,SAAU,OAAQ,WAClE9lS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMigB,oBAAoBphB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,eACtBl3R,KAAKi9R,WAAaxvB,EAAWwvB,YAAc,GAC3Cj9R,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAKkgR,OAASzS,EAAWyS,QAAU,EACpC,EAEH,MAAMqwB,iBAAiBrhB,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK28O,UAAYwqC,gBAAgB1Z,EAAW9wB,UAAW,CAAC,OAAQ,QAAS,WACzE38O,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAKkgR,OAASzS,EAAWyS,QAAU,GACnClgR,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK6uB,OAAS,KACd7uB,KAAKkkS,SAAW,IACjB,EAEH,MAAMsM,kBAAkBthB,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,SAAU,WACxD2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK20R,OAAS,KACd30R,KAAKs7R,OAAS,KACdt7R,KAAK6uB,OAAS,KACd7uB,KAAKkkS,SAAW,KAChBlkS,KAAKiqR,OAAS,IACf,EAEH,MAAMwmB,gBAAgBvhB,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKgkS,YAAc,IAAI1U,cACxB,EAEH,MAAMohB,cAAcxhB,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,IACf,CACD,CAAChW,IAAUmmB,GACT,OAAOA,EAAaA,EAAWnmB,MAAc,SAC9C,EAEH,MAAMqrB,cAAchf,aAClB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SACtBl3R,KAAK4wS,QAAU9pB,WAAW,CACxBh0Q,KAAM26P,EAAWmjC,QACjB7pB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK6wS,SAAW1pB,gBAAgB1Z,EAAWojC,SAAU,CAAC,SAAU,UAAW,OAAQ,YACnF7wS,KAAK8kS,IAAMr3B,EAAWq3B,KAAO,GAC7B9kS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMygB,gBAAgB5hB,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK+wS,KAAOjqB,WAAW,CACrBh0Q,KAAM26P,EAAWsjC,KACjBhqB,aAAc,GACdC,SAAUz/Q,GAAKA,GAAK,GAAKA,GAAK,MAEhCvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKooB,MAAQ,KACbpoB,KAAKs7R,OAAS,IACf,CACD,CAAChW,IAAUnb,GACT,MAAM1oK,EAAQzhG,KAAK+wS,KAAO,IAC1B,OAAO/sS,KAAKC,aAAa1C,KAAK+W,MAAM6xP,EAAQ3qQ,MAAM0E,GAAK,EAAIu9F,GAASzhG,KAAKR,MAAM0E,EAAIu9F,GAAQlgG,KAAK+W,MAAM6xP,EAAQ3qQ,MAAM2E,GAAK,EAAIs9F,GAASzhG,KAAKR,MAAM2E,EAAIs9F,GAAQlgG,KAAK+W,MAAM6xP,EAAQ3qQ,MAAM4E,GAAK,EAAIq9F,GAASzhG,KAAKR,MAAM4E,EAAIq9F,GACxN,EAEH,MAAMuvM,gBAAgB9hB,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,UAAW,MACjCl3R,KAAKu1R,OAASpO,gBAAgB1Z,EAAW8nB,OAAQ,CAAC,OAAQ,iBAAkB,YAAa,aACzFv1R,KAAKixS,WAAanqB,WAAW,CAC3Bh0Q,KAAM26P,EAAWwjC,WACjBlqB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKkyR,WAAa/K,gBAAgB1Z,EAAWykB,WAAY,CAAC,UAAW,eAAgB,aAAc,cAAe,eAAgB,aAAc,cAAe,YAAa,aAC5KlyR,KAAKoyR,QAAUtL,WAAW,CACxBh0Q,KAAM26P,EAAW2kB,QACjBrL,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAAKA,KAAO,IAElC7D,KAAKqyR,cAAgB5kB,EAAW4kB,cAAgB,IAAIjhB,OAAOl8P,MAAM,OAAOC,KAAI5N,GAAKA,IAAM,MAAQ,EAAI6/Q,eAAe7/Q,KAClHvH,KAAKmxC,EAAIs8N,EAAWt8N,EAAIi2O,eAAe3Z,EAAWt8N,GAAK,GACvDnxC,KAAK2yR,OAASxL,gBAAgB1Z,EAAWklB,OAAQ,CAAC,OAAQ,SAAU,UAAW,aAAc,QAAS,UACtG3yR,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKg8D,OAASmrN,gBAAgB1Z,EAAWzxM,OAAQ,CAAC,WAAY,QAAS,SAAU,QAAS,MAAO,QAAS,OAC1Gh8D,KAAKqjS,OAAS51B,EAAW41B,QAAU,GACnCrjS,KAAKyzC,KAAO2zO,eAAe3Z,EAAWh6N,KAAM,OAC5CzzC,KAAKizR,KAAO7L,eAAe3Z,EAAWwlB,KAAM,OAC5CjzR,KAAKkxS,UAAY/pB,gBAAgB1Z,EAAWyjC,UAAW,CAAC,cAAe,kBACvElxS,KAAKkzR,KAAO9L,eAAe3Z,EAAWylB,KAAM,OAC5ClzR,KAAK+yR,KAAO3L,eAAe3Z,EAAWslB,KAAM,OAC5C/yR,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKwyR,SAAWrL,gBAAgB1Z,EAAW+kB,SAAU,CAAC,UAAW,SAAU,WAAY,cACvFxyR,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKmxS,aAAehqB,gBAAgB1Z,EAAW0jC,aAAc,CAAC,SAAU,SACxEnxS,KAAKoxS,MAAQjqB,gBAAgB1Z,EAAW2jC,MAAO,CAAC,OAAQ,SACxDpxS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKo0L,EAAIq5E,EAAWr5E,EAAIgzF,eAAe3Z,EAAWr5E,GAAK,GACvDp0L,KAAKuH,EAAI6/Q,eAAe3Z,EAAWlmQ,EAAG,OACtCvH,KAAKwH,EAAI4/Q,eAAe3Z,EAAWjmQ,EAAG,OACtCxH,KAAKu4R,OAAS,KACdv4R,KAAKuc,KAAO,KACZvc,KAAKuvS,QAAU,KACfvvS,KAAK20R,OAAS,KACd30R,KAAKw9R,MAAQ,KACbx9R,KAAKslS,UAAY,KACjBtlS,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAKujS,KAAO,KACZvjS,KAAKiqR,OAAS,KACdjqR,KAAK2tS,MAAQ,KACb3tS,KAAK46R,SAAW,KAChB56R,KAAK+tS,QAAU,KACf/tS,KAAKuvR,KAAO,KACZvvR,KAAKq4R,UAAY,KACjBr4R,KAAKgnR,SAAW,KAChBhnR,KAAK+vS,UAAY,KACjB/vS,KAAK2hP,KAAO,IAAI2tC,eAChBtvR,KAAKwvS,WAAa,IAAIlgB,eACtBtvR,KAAKyvS,YAAc,IAAIngB,eACvBtvR,KAAKulS,QAAU,IAAIjW,eACnBtvR,KAAKu7R,KAAO,IAAIjM,eAChBtvR,KAAK6sR,MAAQ,IAAIyC,eACjBtvR,KAAKw7R,SAAW,IAAIlM,eACpBtvR,KAAKy7R,UAAY,IAAInM,eACrBtvR,KAAKszN,MAAQ,IAAIg8D,eACjBtvR,KAAKu5N,MAAQ,IAAI+1D,eACjBtvR,KAAKwjS,YAAc,IAAIlU,eACvBtvR,KAAK07R,QAAU,IAAIpM,eACnBtvR,KAAK27R,WAAa,IAAIrM,cACvB,CACD,CAACvM,MACC,MAAM/zQ,EAAShP,KAAKgjR,MACpB,OAAIh0Q,aAAkBipR,WACbjpR,EAAO+zQ,MAET/zQ,CACR,CACD,CAACw0Q,MACC,OAAO,IACR,CACD,CAACK,MACC,OAAO7jR,KAAKg8D,OAAOktN,SAAS,QAAUlpR,KAAKgiR,IAAQuU,UAAY,GAAKv2R,KAAKgiR,IAAQwU,aAAe,GAAKx2R,KAAKgjR,MAAca,KACzH,CACD,EAAEhB,YACOmV,qBAAqBh4R,KAC7B,CACD,CAACkiR,MACC,OAAOkU,UAAUp2R,KAClB,CACD,CAACqhR,IAAU+G,EAAMj1D,GACfmjE,QAAQt2R,KAAMooR,EAAMj1D,EACrB,CACD,CAACkvD,MACC,OAAOoU,kBAAkBz2R,KAC1B,CACD,CAAC4jR,MACC,MAAM50Q,EAAShP,KAAK+iR,MACpB,IAAK/zQ,EAAO40Q,MACV,OAAO,MAET,GAAI5jR,KAAKgiR,IAAQwjB,qBAAkBzkS,EACjC,OAAOf,KAAKgiR,IAAQwjB,cAEtB,GAAIxlS,KAAKg8D,SAAW,YAAch8D,KAAKg8D,OAAO74D,SAAS,OAAQ,CAC7DnD,KAAKgiR,IAAQwjB,cAAgB,MAC7B,OAAO,KACR,CACD,GAAIxlS,KAAKujS,MAAQvjS,KAAKujS,KAAKoH,SAAW,OAAQ,CAC5C3qS,KAAKgiR,IAAQwjB,cAAgB,MAC7B,OAAO,KACR,CACD,GAAIx2R,EAAOgtD,QAAQktN,SAAS,QAAUl6Q,EAAOgzQ,IAAQwU,eAAiB,EACpE,OAAO,MAETx2R,KAAKgiR,IAAQwjB,cAAgB,KAC7B,OAAO,IACR,CACD,CAACpgB,IAASyK,GACRuI,YAAYp4R,MACZ,GAAIA,KAAKw9R,MAAO,CACd,GAAIx9R,KAAKw9R,MAAM7+C,QAAU,QAAU3+O,KAAKw9R,MAAMY,cAAgB,GAAI,CAChE,MAAM10P,EAAO,IAAIi1P,WAAW,CAC1BzF,WAAYl5R,KAAKw9R,MAAM7+C,MACvBuhC,OAAQlgR,KAAKw9R,MAAMY,YACnB/E,SAAUr5R,KAAKw9R,MAAMnE,SAASv1R,aAEhC4lC,EAAKw5O,IAAeljR,KAAKkjR,IACzBljR,KAAKshR,IAAc53O,GACnB1pC,KAAKwvS,WAAW7tS,KAAK+nC,EACtB,CACD,GAAI1pC,KAAKw9R,MAAM9+C,SAAW,QAAU1+O,KAAKw9R,MAAMa,eAAiB,GAAI,CAClE,MAAM30P,EAAO,IAAIm1P,YAAY,CAC3B3F,WAAYl5R,KAAKw9R,MAAM9+C,OACvBwhC,OAAQlgR,KAAKw9R,MAAMa,aACnBhF,SAAUr5R,KAAKw9R,MAAMnE,SAASv1R,aAEhC4lC,EAAKw5O,IAAeljR,KAAKkjR,IACzBljR,KAAKshR,IAAc53O,GACnB1pC,KAAKyvS,YAAY9tS,KAAK+nC,EACvB,CACD,GAAI1pC,KAAKw9R,MAAMiB,iBAAmB,GAAI,CACpC,MAAM/0P,EAAO,IAAIwjQ,SAAS,CACxBhtB,OAAQlgR,KAAKw9R,MAAMiB,eACnBpB,OAAQr9R,KAAKw9R,MAAMgB,eACnBpkB,QAASp6Q,KAAKw9R,MAAMkB,kBAEtBh1P,EAAKw5O,IAAeljR,KAAKkjR,IACzBljR,KAAKshR,IAAc53O,GACnB1pC,KAAK46R,SAASj5R,KAAK+nC,EACpB,CACD1pC,KAAK0kR,IAAc1kR,KAAKw9R,OACxBx9R,KAAKw9R,MAAQ,IACd,CACD,GAAIx9R,KAAKwyR,WAAa,UAAYxyR,KAAKwyR,WAAa,WAClD,OAAOxK,WAAWE,OAEhBloR,KAAKyvS,YAAYlmQ,SAASrqC,OAAS,GAAKc,KAAKwvS,WAAWjmQ,SAASrqC,OAAS,IAC5Ef,KAAK,2EAEP,GAAI6B,KAAKyvS,YAAYlmQ,SAASrqC,QAAU,EAAG,CACzC,MAAMuwS,EAAczvS,KAAKyvS,YAAYlmQ,SAAS,GAC9C,GAAI0vP,YAAYwW,GACd,OAAOznB,WAAWK,UAAUonB,EAE/B,CACD,GAAIzvS,KAAKgiR,KAASqvB,gBAChB,OAAOrpB,WAAWE,MAEpBkM,cAAcp0R,MACd,MAAMupC,EAAW,GACjB,MAAMkkO,EAAa,CACjBz1O,GAAIh4B,KAAKulR,IACTmP,MAAO,IAETY,UAAUt1R,KAAMytQ,EAAWinB,OACtB10R,KAAKgiR,MACRhiR,KAAKgiR,IAAU7zR,OAAO0d,OAAO,OAE/B1d,OAAOktD,OAAOr7C,KAAKgiR,IAAS,CAC1Bz4O,WACAD,KAAM,KACNmkO,aACA8oB,QAAS,EACTC,aAAc,EACd3G,eAAgB,CACdx2Q,MAAO9X,KAAKC,IAAIxB,KAAKo0L,GAAK6iE,SAAU44B,EAAex2Q,OACnDC,OAAQ/X,KAAKC,IAAIxB,KAAKmxC,GAAK8lN,SAAU44B,EAAev2Q,SAEtDD,MAAO,EACPC,OAAQ,EACRmqO,WAAY,EACZ/lN,aAAc,IAEhB,MAAMqtO,EAAO/qQ,KAAKijR,MAClB,MAAMquB,EAAuBvmC,EAAKiX,IAAQgV,gBAC1C,MAAMyO,EAAezlS,KAAK4jR,MACrB6hB,GACH1M,qBAAqB/4R,MAEvB,IAAK62R,gBAAgB72R,KAAM6vR,GACzB,OAAO7H,WAAWC,QAEpB,MAAMp5P,EAAS,IAAI3f,IAAI,CAAC,OAAQ,OAAQ,YAAa,QAAS,UAAW,eACzE,GAAIlP,KAAKg8D,OAAO74D,SAAS,OAAQ,CAC/B,MAAMkvR,EAAeryR,KAAK+iR,MAAqBsP,aAC/C,GAAI1uR,MAAM2J,QAAQ+kR,IAAiBA,EAAanzR,OAAS,EAAG,CAC1Dc,KAAKgiR,IAAQqQ,aAAeA,EAC5BryR,KAAKgiR,IAAQsQ,cAAgB,CAC9B,CACF,CACD,MAAMvzC,EAAQu1C,QAAQt0R,KAAM,aAAc,aAAc,WAAY,WAAY,SAAU,SAAU,UACpG,MAAMg1R,EAAa,CAAC,cACpB,MAAMzlD,EAAK8kD,YAAYr0R,MACnBuvO,GACFylD,EAAWrzR,KAAK4tO,GAElBk+B,EAAW1uB,MAAQA,EACnB0uB,EAAWinB,MAAQM,EACfh1R,KAAKD,OACP0tQ,EAAWmuB,QAAU57R,KAAKD,MAE5B,GAAIC,KAAK46R,SAAU,CACjB,MAAM2W,EAAgBvxS,KAAK46R,SAASlY,MACpC,GAAI6uB,EAAcpE,UAAW,CAC3BoE,EAAcpE,UAAY,MAC1BtT,eAAe75R,KAAMuxS,EAAclU,OAAQxN,EAC5C,CACF,CACD7vR,KAAKykR,MACL,MAAMihB,EAAS1lS,KAAKg8D,SAAW,SAAWh8D,KAAKg8D,SAAW,QAC1D,MAAM2pO,EAASD,EAAStO,GAA+B,EACvD,KAAOp3R,KAAKgiR,IAAQuU,QAAUoP,EAAQ3lS,KAAKgiR,IAAQuU,UAAW,CACxDmP,GAAU1lS,KAAKgiR,IAAQuU,UAAYa,GAA+B,IACpEp3R,KAAKgiR,IAAQwU,aAAe,GAE9B,MAAMnjR,EAASrT,KAAKuhR,IAAiB,CACnC1yP,SACAixP,QAAS,OAEX,GAAIzsQ,EAAO80Q,QACT,MAEF,GAAI90Q,EAAOi1Q,UAAW,CACpBtoR,KAAKwkR,MACL,OAAOnxQ,CACR,CACD,GAAIqyR,GAAU1lS,KAAKgiR,IAAQuU,UAAY,GAAKv2R,KAAKgiR,IAAQwU,eAAiB,IAAMzrB,EAAKiX,IAAQgV,gBAAiB,CAC5Gh3R,KAAKgiR,IAAQuU,QAAUoP,EACvB,KACD,CACF,CACD3lS,KAAKwkR,MACAihB,GACHzM,uBAAuBh5R,MAEzB+qQ,EAAKiX,IAAQgV,gBAAkBsa,EAC/B,GAAItxS,KAAKgiR,IAAQuU,UAAYoP,EAAQ,CAC/B3lS,KAAK46R,WACP56R,KAAKijR,MAAoBjB,IAAQwvB,aAAexxS,KAAK46R,UAElD6K,UACIzlS,KAAKgiR,IAEd,OAAOgG,WAAWC,OACnB,CACD,GAAIjoR,KAAK46R,SAAU,CACjB,MAAM2W,EAAgBvxS,KAAK46R,SAASlY,MACpC,GAAI6uB,EAAcnE,WAAY,CAC5BmE,EAAcnE,WAAa,MAC3BvT,eAAe75R,KAAMuxS,EAAcn3B,QAASyV,EAC7C,CACF,CACD,IAAI0D,EAAU,EACd,IAAIC,EAAU,EACd,GAAIxzR,KAAKiqR,OAAQ,CACfsJ,EAAUvzR,KAAKiqR,OAAOwJ,UAAYzzR,KAAKiqR,OAAOyJ,WAC9CF,EAAUxzR,KAAKiqR,OAAO0J,SAAW3zR,KAAKiqR,OAAO2J,WAC9C,CACD,MAAMv6Q,EAAQ9X,KAAK+D,IAAItF,KAAKgiR,IAAQ3oQ,MAAQk6Q,EAASvzR,KAAKo0L,GAAK,GAC/D,MAAM96K,EAAS/X,KAAK+D,IAAItF,KAAKgiR,IAAQ1oQ,OAASk6Q,EAASxzR,KAAKmxC,GAAK,GACjE,MAAMgiL,EAAO,CAACnzN,KAAKuH,EAAGvH,KAAKwH,EAAG6R,EAAOC,GACjCtZ,KAAKo0L,IAAM,KACb2qD,EAAM1lO,MAAQ24Q,gBAAgB34Q,IAE5BrZ,KAAKmxC,IAAM,KACb4tM,EAAMzlO,OAAS04Q,gBAAgB14Q,IAEjC,IAAKylO,EAAM1lO,QAAU,OAAS0lO,EAAMzlO,SAAW,QAAUiwB,EAASrqC,SAAW,EAC3E,OAAO8oR,WAAWE,MAEpB,MAAME,EAAO,CACXroR,KAAM,MACN0tQ,aACAlkO,YAEF+uP,YAAYt4R,KAAMytQ,GAClB,MAAMp6P,EAAS20Q,WAAWG,QAAQqM,cAAcx0R,KAAMooR,GAAOj1D,GAC7D,GAAInzN,KAAKwvS,WAAWjmQ,SAASrqC,QAAU,EAAG,CACxC,MAAMswS,EAAaxvS,KAAKwvS,WAAWjmQ,SAAS,GAC5C,GAAI0vP,YAAYuW,GAAa,CAC3BxvS,KAAKgiR,IAAQqvB,gBAAkBh+R,EAC/B,OAAO20Q,WAAWK,UAAUmnB,EAC7B,CACF,QACMxvS,KAAKgiR,IACZ,OAAO3uQ,CACR,EAEH,MAAM4kR,mBAAmB/I,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aAAc,MACpCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK6tS,SAAW1mB,gBAAgB1Z,EAAWogC,SAAU,CAAC,UAAW,SAAU,cAC3E7tS,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKuvS,QAAU,KACfvvS,KAAKw9R,MAAQ,KACbx9R,KAAKqsQ,KAAO,KACZrsQ,KAAKs7R,OAAS,KACdt7R,KAAK2tS,MAAQ,KACb3tS,KAAK46R,SAAW,KAChB56R,KAAKwvS,WAAa,IAAIlgB,eACtBtvR,KAAKyvS,YAAc,IAAIngB,eACvBtvR,KAAK07R,QAAU,IAAIpM,eACnBtvR,KAAK27R,WAAa,IAAIrM,cACvB,CACD,EAAEzM,YACOmV,qBAAqBh4R,KAC7B,CACD,CAAC+iR,MACC,IAAI/zQ,EAAShP,KAAKgjR,MAClB,QAASh0Q,aAAkBgiS,SACzBhiS,EAASA,EAAOg0Q,MAElB,OAAOh0Q,CACR,CACD,CAACw0Q,MACC,OAAO,IACR,EAEH,MAAMiuB,kBAAkBhgB,cACtB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aACtBl3R,KAAK0xS,UAAYjkC,EAAWikC,WAAa,IACzC1xS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACCjiR,KAAK6hR,IAAY,IAAI73Q,IAAIhK,KAAK6hR,IAAU3sQ,MAAMlV,KAAK0xS,WAAWv8R,KAAIw8R,IAChEA,EAAKA,EAAGz8R,MAAM,IAAK,GACnBy8R,EAAG,GAAKA,EAAG,GAAGvgC,OACd,OAAOugC,CAAE,IAEZ,EAEH,MAAMC,mBAAmB1iB,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aAAc,MACpCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK6vS,UAAY,IAAIvgB,cACtB,EAEH,MAAMuiB,eAAe3iB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,SAAU,MAChCl3R,KAAK8xS,SAAWhrB,WAAW,CACzBh0Q,KAAM26P,EAAWqkC,SACjB/qB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKo6D,OAAS+sN,gBAAgB1Z,EAAWrzM,OAAQ,CAAC,MAAO,WAAY,MAAO,aAAc,MAAO,QACjGp6D,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKkgR,OAASzS,EAAWyS,QAAU,GACnClgR,KAAK+xS,aAAe7qB,WAAW,CAC7Bp0Q,KAAM26P,EAAWskC,aAAetkC,EAAWskC,aAAan+R,cAAgB,GACxEmzQ,aAAc,GACdC,SAAU9gQ,GAAK,CAAC,QAAS,WAAY,eAAgB,MAAO,WAAY,UAAW,WAAY,OAAQ,YAAa,QAAS,UAAU/iB,SAAS+iB,IAAMA,EAAEjnB,MAAM,oBAEhKe,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKgyS,WAAavkC,EAAWukC,YAAc,GAC3ChyS,KAAKy4Q,QAAU,KACfz4Q,KAAKykS,YAAc,IAAInV,eACvBtvR,KAAK0kS,SAAW,IAAIpV,cACrB,EAEH,MAAMwd,iBAAiB5d,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKiyS,YAAc9qB,gBAAgB1Z,EAAWwkC,YAAa,CAAC,OAAQ,qBACpEjyS,KAAKs7R,OAAS,KACdt7R,KAAK07R,QAAU,IAAIpM,cACpB,CACD,CAACrN,MACKjiR,KAAK07R,QAAQnyP,SAASrqC,SAAW,GACnCf,KAAK,uCAEH6B,KAAK07R,QAAQnyP,SAASrqC,QAAU,GAClCf,KAAK,+DAEP6B,KAAKilR,IAAaqS,EACnB,CACD,CAAC1T,MACC,OAAO,IACR,CACD,CAACiB,IAAavnC,EAAM+vC,GAClB,OAAI/vC,EAAKv+O,WAAW,KACX,CAACiB,KAAKojR,IAAM90R,IAAIgvP,EAAKn4O,MAAM,KAE7BqqQ,WAAWxvQ,KAAMqtR,EAAW/vC,EAAM,KAAM,KAChD,CACD,EAAE6nC,MACA,IAAKnlR,KAAK07R,QAAQnyP,SAASrqC,OACzB,OAAO8oR,WAAWG,QAAQ,CACxBpoR,KAAM,MACNwpC,SAAU,KAGdvpC,KAAKgiR,IAAU,CACbwvB,aAAc,KACd1a,kBAAmB,KACnBG,mBAAoB,KACpBkC,gBAAiB,KACjBnC,gBAAiB,MACjBiX,WAAY,EACZR,aAAc,QACdD,UAAW,MACXH,gBAAiB,WACjB7d,UAAW,IAEb,MAAMzkB,EAAO/qQ,KAAK07R,QAAQnyP,SAAS,GACnCwhO,EAAKgjC,QAAQtsB,MACb,MAAMywB,EAAYnnC,EAAKgjC,QAAQxU,SAAShwP,SACxC,MAAM4oQ,EAAW,CACfpyS,KAAM,MACNwpC,SAAU,IAEZ,IAAIgwP,EAAW,KACf,IAAIkW,EAAc,KAClB,IAAI2C,EAAoB,KACxB,GAAIrnC,EAAK0kC,YAAYlmQ,SAASrqC,QAAU,EAAG,CACzCuwS,EAAc1kC,EAAK0kC,YAAYlmQ,SAAS,GACxC6oQ,EAAoB3C,EAAYvvB,MACtC,MAAW,GAAInV,EAAK2wB,QAAQnyP,SAASrqC,QAAU,GAAK6rQ,EAAK2wB,QAAQnyP,SAAS,GAAGkmQ,YAAYlmQ,SAASrqC,QAAU,EAAG,CACzGuwS,EAAc1kC,EAAK2wB,QAAQnyP,SAAS,GAAGkmQ,YAAYlmQ,SAAS,GAC5D6oQ,EAAoB3C,EAAYvvB,MACtC,MAAW,GAAInV,EAAKyyB,OAAOa,aAAc,CACnCoR,EAAc1kC,EAAKyyB,MACnB4U,EAAoB3C,EAAYpR,YACjC,MAAM,GAAItzB,EAAK2wB,QAAQnyP,SAASrqC,QAAU,GAAK6rQ,EAAK2wB,QAAQnyP,SAAS,GAAGi0P,OAAOa,aAAc,CAC5FoR,EAAc1kC,EAAK2wB,QAAQnyP,SAAS,GAAGi0P,MACvC4U,EAAoB3C,EAAYpR,YACjC,CACD,GAAIoR,EAAa,CACf,MAAMvvB,EAASlgR,KAAK6kR,IAAautB,EAAmB3C,EAAYzsB,OAChE,GAAI9C,aAAkBkZ,SAAU,CAC9BG,EAAWrZ,EACXuvB,EAAYztB,IAAU,EACvB,CACF,CACIuX,IACHA,EAAW2Y,EAAU,IAEvB3Y,EAASvX,IAAU,CACjB4rB,YAAa,GAEf,MAAMyE,EAAiB9Y,EAASvW,MAChCqvB,EAAerwB,IAAU,CACvB4rB,YAAa,EACbh1R,UAAWy5R,EAAe9Y,SAAShwP,SAASsnB,QAAQ0oO,GACpDyU,aAAc,GAEhB,IAAIsE,EACJ,IAAIjV,EAAS,KACb,IAAIjjB,EAAU,KACd,IAAIm4B,EAAe,KACnB,IAAIC,EAAsB,EAC1B,IAAIvhF,EAAa,EACjB,MAAO,KAAM,CACX,GAAKshF,EAOHC,EAAsB,MAPL,CACjBL,EAAS5oQ,SAAS4E,MAClB,KAAMqkQ,IAAwBnb,GAAiB,CAC7Cl5R,KAAK,kDACL,OAAOg0S,CACR,CACT,CAGMG,EAAiB,KACjBtyS,KAAKgiR,IAAQmX,gBAAkBI,EAC/B,MAAM/kB,EAAO+kB,EAASnU,MAAWgD,KACjC+pB,EAAS5oQ,SAAS5nC,KAAK6yQ,GACvB,GAAI6oB,EAAQ,CACVr9R,KAAKgiR,IAAQgV,gBAAkB,KAC/BxiB,EAAKjrO,SAAS5nC,KAAK07R,EAAOjY,IAASmU,EAASvX,IAAQ/pG,OAAOmwG,MAC3DiV,EAAS,IACV,CACD,GAAIjjB,EAAS,CACXp6Q,KAAKgiR,IAAQgV,gBAAkB,KAC/BxiB,EAAKjrO,SAAS5nC,KAAKy4Q,EAAQgL,IAASmU,EAASvX,IAAQ/pG,OAAOmwG,MAC5DhO,EAAU,IACX,CACD,MAAMqf,EAAeF,EAASG,YAAYnwP,SAC1C,MAAMkpQ,EAAmBj+B,EAAKjrO,SAAS1a,QAAO6a,GAAQA,EAAK+jO,WAAWinB,MAAMvxR,SAAS,oBACrFovS,EAAe,MACfvyS,KAAKgiR,IAAQ8U,kBAAoB,KACjC92R,KAAKgiR,IAAQgV,gBAAkB,MAC/B,MAAMptC,MAAQz+M,IACZ,MAAMi9O,EAAOrd,EAAKmX,MAClB,GAAIkG,EAAM,CACRmqB,IAAiBnqB,EAAK7+O,UAAUrqC,OAAS,EACzCuzS,EAAiBtnQ,GAAO5B,SAAS5nC,KAAKymR,EACvC,GAEH,IAAK,IAAI/mR,EAAI4vN,EAAYxoN,EAAKgxR,EAAav6R,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC9D,MAAMq4R,EAAc15R,KAAKgiR,IAAQiV,mBAAqBwC,EAAap4R,GACnE,MAAM42K,EAAQ,CACZ5+J,MAAOqgR,EAAYtlG,EACnB96K,OAAQogR,EAAYvoP,GAEtB8/K,EAAa,EACb,GAAIosE,EAAQ,CACVoV,EAAiBpxS,GAAGkoC,SAAS5nC,KAAK07R,EAAOjY,IAASntG,GAAOmwG,MACzDiV,EAAS,IACV,CACD,GAAIjjB,EAAS,CACXq4B,EAAiBpxS,GAAGkoC,SAAS5nC,KAAKy4Q,EAAQgL,IAASntG,GAAOmwG,MAC1DhO,EAAU,IACX,CACD,MAAMgO,EAAOrd,EAAKqa,IAASntG,GAC3B,GAAImwG,EAAKD,QAAS,CAChB,GAAIC,EAAKA,KAAM,CACbmqB,IAAiBnqB,EAAKA,KAAK7+O,UAAUrqC,OAAS,EAC9CuzS,EAAiBpxS,GAAGkoC,SAAS5nC,KAAKymR,EAAKA,KACnD,MAAsBmqB,GAAgBJ,EAAS5oQ,SAASrqC,OAAS,GACrDizS,EAAS5oQ,SAAS4E,MAEpB,OAAOgkQ,CACR,CACD,GAAI/pB,EAAKE,UAAT,CACE,MAAM5+O,EAAO0+O,EAAKC,UAClBz+B,MAAMvoP,GACN,GAAIqoC,EAAKwvP,aAAe,OACtB,SAEF,GAAIxvP,EAAK2zP,OAAQ,CACfA,EAASr9R,KAAK6kR,IAAan7O,EAAK2zP,OAAQ3zP,EAAKs5O,OAC7Cqa,EAASA,EAASA,EAAO,GAAK,IAC/B,CACD,GAAI3zP,EAAK0wO,QAAS,CAChBA,EAAUp6Q,KAAK6kR,IAAan7O,EAAK0wO,QAAS1wO,EAAKs5O,OAC/C5I,EAAUA,EAAUA,EAAQ,GAAK,IAClC,CACD,GAAI1wO,EAAKwvP,aAAe,WAAY,CAClCoZ,EAAiB5oQ,EAAKs4O,IAAQ9B,OAC9B7+Q,EAAI41P,QACL,MAAM,GAAKvtN,EAAKs4O,IAAQ9B,OAElB,CACLoyB,EAAiB5oQ,EAAKs4O,IAAQ9B,OAC9BjvD,EAAavnL,EAAKs4O,IAAQ72O,MAAQ,EAClC9pC,EAAI41P,QACL,MALC51P,EAAIqoC,EAAKs4O,IAAQ72O,KAOpB,MACD,GAAInrC,KAAKgiR,IAAQwvB,aAAjB,CACE,MAAM9nQ,EAAO1pC,KAAKgiR,IAAQwvB,aAC1BxxS,KAAKgiR,IAAQwvB,aAAe,KAC5B,MAAMD,EAAgB7nQ,EAAKg5O,MAC3B,MAAMxC,EAASqxB,EAAcrxB,OAC7BqxB,EAAcpE,UAAYoE,EAAclU,SAAW,KACnDkU,EAAcnE,WAAamE,EAAcn3B,UAAY,KACrDxwB,MAAMvoP,GACN,MAAM+pC,EAAe/pC,EACrBA,EAAI41P,SACJ,GAAIipB,aAAkBkZ,SACpBkZ,EAAiBpyB,OACZ,GAAIA,aAAkBoZ,YAAa,CACxC,MAAMnuP,EAAQsuP,EAAa5oO,QAAQqvN,GACnC,GAAI/0O,KAAW,EACTA,EAAQC,EACV/pC,EAAI8pC,EAAQ,EAEZ8lL,EAAa9lL,MAEV,CACLmnQ,EAAiBpyB,EAAO8C,MACxB/xD,EAAaqhF,EAAe5Y,YAAYnwP,SAASsnB,QAAQqvN,EAC1D,CACF,CAEF,MACDt2B,MAAMvoP,EACP,CACDrB,KAAKgiR,IAAQisB,YAAc,EACvBqE,IACEA,EAAevuB,MACjBuuB,EAAetwB,IAAQ4rB,aAAe,EAEtC0E,EAAiB,MAGrB/Y,EAAW+Y,GAAkB/Y,EAASzW,YAChC,IACP,CACF,EAEH,MAAM4vB,aAAajhB,cACjB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK+mS,SAAWjgB,WAAW,CACzBh0Q,KAAM26P,EAAWs5B,SACjBhgB,aAAc,EACdC,SAAUz/Q,GAAKA,GAAK,IAEtBvH,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK8kS,IAAMr3B,EAAWq3B,KAAO,GAC7B9kS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACjP,MACC,OAAO,IACR,CACD,CAACgD,IAAU9U,GACT,GAAIA,EAAM2U,MAAkBwB,GAAaY,MAAMruP,GAAI,CACjDh4B,KAAK6hR,IAAYvS,EACjB,OAAO,IACR,CACDnxQ,KAAK,kCAAkCmxQ,EAAM4U,QAC7C,OAAO,KACR,CACD,CAACI,IAASxiR,GACJ9B,KAAK6hR,cAAqBqN,WAG9B9uR,MAAMkkR,IAASxiR,EAChB,CACD,CAACmgR,aACYjiR,KAAK6hR,MAAc,WAC5B7hR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUt5Q,WAAW,OAAQ,MAEtD,CACD,CAACm6Q,MACC,cAAW1iR,KAAK6hR,MAAc,SACrB7hR,KAAK6hR,IAAU3sQ,MAAM,oBAAoB6zM,QAAO,CAAC4pF,EAAKrpQ,KACvDA,GACFqpQ,EAAIhxS,KAAK2nC,GAEX,OAAOqpQ,CAAG,GACT,IAAI/wS,KAAK,MAEP5B,KAAK6hR,IAAUqD,KACvB,CACD,CAACE,IAASyK,GACR,UAAW7vR,KAAK6hR,MAAc,SAAU,CACtC,MAAMuG,EAAO0Q,YAAY94R,KAAK6hR,KAAWuG,KACzC,GAAIpoR,KAAK6hR,IAAU1+Q,SAAS,UAAW,CACrCilR,EAAKroR,KAAO,MACZqoR,EAAK7+O,SAAW,GAChBvpC,KAAK6hR,IAAU3sQ,MAAM,UAAUC,KAAIo6Q,GAAQA,EAAKr6Q,MAAM,cAAc6zM,QAAO,CAAC4pF,EAAKrpQ,KAC/EqpQ,EAAIhxS,KAAK,CACP5B,KAAM,OACNP,MAAO8pC,GACN,CACDvpC,KAAM,OAER,OAAO4yS,CAAG,GACT,MAAKlwP,SAAQ1Y,IACdq+O,EAAK7+O,SAAS5nC,KAAK,CACjB5B,KAAM,IACNwpC,SAAUQ,GACV,GAEL,MAAM,GAAI,aAAa7yB,KAAKlX,KAAK6hR,KAAY,CAC5CuG,EAAKroR,KAAO,MACZqoR,EAAK7+O,SAAW,GAChBvpC,KAAK6hR,IAAU3sQ,MAAM,cAAcutC,SAAQnZ,IACzC8+O,EAAK7+O,SAAS5nC,KAAK,CACjB5B,KAAM,OACNP,MAAO8pC,GACN,CACDvpC,KAAM,MACN,GAEL,CACD,OAAOioR,WAAWG,QAAQC,EAC3B,CACD,OAAOpoR,KAAK6hR,IAAUuD,IAASyK,EAChC,EAEH,MAAMsW,iBAAiBjX,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAK4yS,cAAgB9rB,WAAW,CAC9Bh0Q,KAAM26P,EAAWmlC,cACjB7rB,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKmiS,cAAgBhb,gBAAgB1Z,EAAW00B,cAAe,CAAC,OAAQ,MAAO,OAC/EniS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK6yS,UAAY/rB,WAAW,CAC1Bh0Q,KAAM26P,EAAWolC,UACjB9rB,aAAc,GACdC,SAAUz/Q,GAAKA,IAAM,GAAKA,IAAM,IAElCvH,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK8yS,cAAgB3rB,gBAAgB1Z,EAAWqlC,cAAe,CAAC,OAAQ,MAAO,OAC/E9yS,KAAK20R,OAAS,KACd30R,KAAKqiS,KAAO,KACZriS,KAAKs7R,OAAS,KACdt7R,KAAKiqR,OAAS,IACf,CACD,CAAC7E,IAASyK,GACR,MAAM9wC,EAAQu1C,QAAQt0R,KAAM,SAAU,OAAQ,UAC9C,IAAIooR,EACJ,MAAM90D,EAAQtzN,KAAKgjR,MAAcA,MAC7BhjR,KAAK6yS,YAAc,KACrB7yS,KAAK6yS,UAAYv/E,aAAiB8vE,KAAO,EAAI,GAG7Chb,EADEpoR,KAAK6yS,YAAc,EACd,CACL9yS,KAAM,WACN0tQ,WAAY,CACVgzB,OAAQntE,EAAMwuD,MAASyD,KAASjyD,EAAMiyD,IACtCib,QAASltE,EAAMiyD,IACfmP,MAAO,CAAC,gBACR31C,QACA,aAAc45C,UAAUrlE,GACxB,gBAAiB,QAId,CACLvzN,KAAM,QACN0tQ,WAAY,CACVp+Q,KAAM,OACNoxS,OAAQntE,EAAMwuD,MAASyD,KAASjyD,EAAMiyD,IACtCib,QAASltE,EAAMiyD,IACfmP,MAAO,CAAC,gBACR31C,QACA,aAAc45C,UAAUrlE,GACxB,gBAAiB,QAIvB,GAAI4kE,WAAW5kE,GAAQ,CACrB80D,EAAK3a,WAAW,iBAAmB,KACnC2a,EAAK3a,WAAWozB,SAAW,IAC5B,CACD,OAAO7Y,WAAWG,QAAQ,CACxBpoR,KAAM,QACN0tQ,WAAY,CACVinB,MAAO,CAAC,aAEVnrP,SAAU,CAAC6+O,IAEd,EAEH,MAAM2qB,aAAaphB,aACjB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,CACD,CAACpO,MACC,MAAM54Q,EAAOrJ,KAAK6hR,IAAUzQ,OAC5BpxQ,KAAK6hR,IAAYx4Q,EAAO,IAAIC,KAAKD,GAAQ,IAC1C,CACD,CAAC+7Q,IAASyK,GACR,OAAOiJ,YAAY94R,KAAK6hR,IAAY7hR,KAAK6hR,IAAU/9Q,WAAa,GACjE,EAEH,MAAMkvS,kBAAkB9jB,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,aACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKizS,OAASxlC,EAAWwlC,QAAU,GACnCjzS,KAAK3Q,KAAO83R,gBAAgB1Z,EAAWp+Q,KAAM,CAAC,WAAY,aAC1D2Q,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM6iB,gBAAgBvhB,aACpB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WACtBl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK8kS,IAAMr3B,EAAWq3B,KAAO,GAC7B9kS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM8iB,kBAAkBjkB,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK8vS,SAAW,IAAIxgB,cACrB,EAEH,MAAM8jB,iBAAiBlkB,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAK28O,UAAYwqC,gBAAgB1Z,EAAW9wB,UAAW,CAAC,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAAS,OAC1G38O,KAAK4O,IAAM6+P,EAAW7+P,KAAO,GAC7B5O,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK4+R,OAAS,IACf,CACD,QAAI7+R,GACF,OAAOC,KAAK28O,SACb,CACD,CAACmnC,MACC,OAAO,KACR,EAEH,MAAMoiB,WAAWhX,UACf,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,KAAM,MAC5Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAK+8R,QAAU,KACf/8R,KAAKsvS,QAAU,KACftvS,KAAK4mS,OAAS,KACd5mS,KAAKqmS,YAAc,KACnBrmS,KAAKsmS,WAAa,KAClBtmS,KAAK0vS,aAAe,KACpB1vS,KAAK2vS,UAAY,KACjB3vS,KAAK6mS,UAAY,KACjB7mS,KAAKgnS,YAAc,KACnBhnS,KAAK4vS,aAAe,KACpB5vS,KAAKgxN,UAAY,KACjBhxN,KAAKomS,SAAW,IACjB,CACD,CAAC1jB,MACC,GAAI1iR,KAAKgiR,WAAYjhR,EAAW,CAC9B,IAAK,MAAMhB,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,GAAID,IAAS,UAAYA,IAAS,UAChC,SAEF,MAAMxR,EAAMyR,KAAKD,GACjB,GAAMxR,aAAe2gS,UAArB,CAGAlvR,KAAKgiR,IAAUzzR,EACf,OAAOA,CAFN,CAGF,CACDyR,KAAKgiR,IAAU,IAChB,CACD,OAAOhiR,KAAKgiR,GACb,CACD,CAACoD,IAASyK,GACR,MAAMthS,EAAMyR,KAAK0iR,MACjB,OAAIn0R,EACKA,EAAI62R,IAASyK,GAEf7H,WAAWE,KACnB,EAEH,MAAMmrB,iBAAiBnkB,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,WAAY,MAClCl3R,KAAKszS,WAAansB,gBAAgB1Z,EAAW6lC,WAAY,CAAC,UAAW,WAAY,UACjFtzS,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKm4R,SAAWhR,gBAAgB1Z,EAAW0qB,SAAU,CAAC,WAAY,QAAS,YAC3En4R,KAAKuzS,WAAapsB,gBAAgB1Z,EAAW8lC,WAAY,CAAC,QAAS,WAAY,YAC/EvzS,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAKs7R,OAAS,KACdt7R,KAAKF,QAAU,KACfE,KAAK+8R,QAAU,KACf/8R,KAAK4+R,OAAS,IACf,EAEH,MAAM7G,cAAc7I,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,QAAS,MAC/Bl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKw4N,SAAWsuD,WAAW,CACzBh0Q,KAAM26P,EAAWj1C,SACjBuuD,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKw1R,SAAW7N,YAAYla,EAAW+nB,UACvCx1R,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK8jG,IAAM,KACX9jG,KAAK2iS,QAAU,KACf3iS,KAAKqJ,KAAO,KACZrJ,KAAK4iS,SAAW,KAChB5iS,KAAK6iS,QAAU,KACf7iS,KAAKi0R,OAAS,KACdj0R,KAAK8iS,MAAQ,KACb9iS,KAAK85C,MAAQ,KACb95C,KAAK+iS,QAAU,KACf/iS,KAAKspC,KAAO,KACZtpC,KAAKlH,UAAY,KACjBkH,KAAK89P,KAAO,KACZ99P,KAAKgjS,KAAO,IACb,CACD,CAAChe,IAAWxlR,GACV,MAAMwP,EAAShP,KAAKgjR,MACpB,GAAIh0Q,aAAkBg3R,OAChBh3R,EAAOiyR,IAAI4F,UAAW,CACxB,IAAK7mS,KAAK85C,MAAO,CACf95C,KAAK85C,MAAQ,IAAImwP,MAAM,CAAE,GACzBjqS,KAAKshR,IAActhR,KAAK85C,MACzB,CACD95C,KAAK85C,MAAM+nO,IAAYriR,EAAMqiR,IAC7B,MACD,CAEH,MAAM2xB,EAAYh0S,EAAM0kR,IACxB,GAAIlkR,KAAKwzS,KAAe,KAAxB,CAIA,IAAK,MAAMzzS,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,MAAMzR,EAAMyR,KAAKD,GACjB,GAAIxR,aAAe2gS,UAAW,CAC5BlvR,KAAKD,GAAQ,KACbC,KAAK0kR,IAAcn2R,EACpB,CACF,CACDyR,KAAKR,EAAM0kR,KAAc1kR,EACzBQ,KAAKshR,IAAc9hR,EATlB,MAFCQ,KAAKwzS,GAAW3xB,IAAYriR,EAAMqiR,GAYrC,CACD,CAACqD,MACC,GAAIllR,KAAKi0R,OACP,cAAWj0R,KAAKi0R,OAAOpS,MAAc,SAC5B7hR,KAAKi0R,OAAOpS,IAAUzQ,OAExBpxQ,KAAKi0R,OAAOpS,IAAUqD,MAAS9T,OAExC,IAAK,MAAMrxQ,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,GAAID,IAAS,QACX,SAEF,MAAMxR,EAAMyR,KAAKD,GACjB,GAAIxR,aAAe2gS,UACjB,OAAQ3gS,EAAIszR,KAAa,IAAI/9Q,WAAWstQ,MAE3C,CACD,OAAO,IACR,CACD,CAACgU,IAASyK,GACR,IAAK,MAAM9vR,KAAQ5R,OAAOwhS,oBAAoB3vR,MAAO,CACnD,MAAMzR,EAAMyR,KAAKD,GACjB,GAAMxR,aAAe2gS,UAGrB,OAAO3gS,EAAI62R,IAASyK,EACrB,CACD,OAAO7H,WAAWE,KACnB,EAEH,MAAMurB,kBAAkBvkB,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM82R,GAAgB,YAAa,MACnCl3R,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,GACrCrwR,KAAK2iS,QAAU,IAAIrT,eACnBtvR,KAAKqJ,KAAO,IAAIimR,eAChBtvR,KAAK4iS,SAAW,IAAItT,eACpBtvR,KAAK6iS,QAAU,IAAIvT,eACnBtvR,KAAKi0R,OAAS,IAAI3E,eAClBtvR,KAAK8iS,MAAQ,IAAIxT,eACjBtvR,KAAK85C,MAAQ,IAAIw1O,eACjBtvR,KAAK+iS,QAAU,IAAIzT,eACnBtvR,KAAKkkS,SAAW,IAAI5U,eACpBtvR,KAAK4+R,OAAS,IAAItP,eAClBtvR,KAAK89P,KAAO,IAAIwxB,eAChBtvR,KAAKgjS,KAAO,IAAI1T,cACjB,CACD,CAACxL,MACC,OAAO,IACR,EAEH,MAAM4vB,kBACJ,OAAQluB,IAAiBzlR,EAAM0tQ,GAC7B,GAAIimC,kBAAkBhlT,eAAeqR,GAAO,CAC1C,MAAM2pC,EAAOgqQ,kBAAkB3zS,GAAM0tQ,GACrC/jO,EAAKq7O,IAAmBtX,GACxB,OAAO/jO,CACR,CAEF,CACD,uBAAOo+P,CAAiB6L,GACtB,OAAO,IAAI1Z,iBAAiB0Z,EAC7B,CACD,UAAO7vM,CAAI6vM,GACT,OAAO,IAAIzZ,IAAIyZ,EAChB,CACD,WAAOhyD,CAAKgyD,GACV,OAAO,IAAItY,KAAKsY,EACjB,CACD,aAAOpb,CAAOob,GACZ,OAAO,IAAI9X,OAAO8X,EACnB,CACD,cAAOrE,CAAQqE,GACb,OAAO,IAAI7X,QAAQ6X,EACpB,CACD,WAAOp3R,CAAKo3R,GACV,OAAO,IAAI7W,KAAK6W,EACjB,CACD,gBAAO1N,CAAU0N,GACf,OAAO,IAAI3W,UAAU2W,EACtB,CACD,cAAOpE,CAAQoE,GACb,OAAO,IAAIvW,QAAQuW,EACpB,CACD,cAAOhR,CAAQgR,GACb,OAAO,IAAIrW,eAAeqW,EAC3B,CACD,aAAOhf,CAAOgf,GACZ,OAAO,IAAIpW,OAAOoW,EACnB,CACD,YAAO,CAAMA,GACX,OAAO,IAAIxV,MAAMwV,EAClB,CACD,iBAAOnE,CAAWmE,GAChB,OAAO,IAAIhV,WAAWgV,EACvB,CACD,kBAAOlE,CAAYkE,GACjB,OAAO,IAAI9U,YAAY8U,EACxB,CACD,aAAO/M,CAAO+M,GACZ,OAAO,IAAI7U,OAAO6U,EACnB,CACD,gBAAOrO,CAAUqO,GACf,OAAO,IAAIxU,UAAUwU,EACtB,CACD,cAAOrQ,CAAQqQ,GACb,OAAO,IAAIvU,QAAQuU,EACpB,CACD,kBAAO3P,CAAY2P,GACjB,OAAO,IAAInU,YAAYmU,EACxB,CACD,mBAAO5L,CAAa4L,GAClB,OAAO,IAAIlU,aAAakU,EACzB,CACD,kBAAOtN,CAAYsN,GACjB,OAAO,IAAIzT,YAAYyT,EACxB,CACD,iBAAOrN,CAAWqN,GAChB,OAAO,IAAI7S,WAAW6S,EACvB,CACD,YAAOvrR,CAAMurR,GACX,OAAO,IAAIlS,MAAMkS,EAClB,CACD,WAAOtR,CAAKsR,GACV,OAAO,IAAIhS,KAAKgS,EACjB,CACD,cAAOpO,CAAQoO,GACb,OAAO,IAAI9R,QAAQ8R,EACpB,CACD,kBAAOja,CAAYia,GACjB,OAAO,IAAIra,YAAYqa,EACxB,CACD,aAAOlW,CAAOkW,GACZ,OAAO,IAAI7R,OAAO6R,EACnB,CACD,WAAOtqS,CAAKsqS,GACV,OAAO,IAAI3R,YAAY2R,EACxB,CACD,eAAO/Q,CAAS+Q,GACd,OAAO,IAAI1R,SAAS0R,EACrB,CACD,mBAAOjE,CAAaiE,GAClB,OAAO,IAAIzR,aAAayR,EACzB,CACD,cAAO9Q,CAAQ8Q,GACb,OAAO,IAAIrR,QAAQqR,EACpB,CACD,gBAAOhE,CAAUgE,GACf,OAAO,IAAIlR,UAAUkR,EACtB,CACD,WAAOtnC,CAAKsnC,GACV,OAAO,IAAIjR,KAAKiR,EACjB,CACD,mBAAOxQ,CAAawQ,GAClB,OAAO,IAAI1Q,aAAa0Q,EACzB,CACD,oBAAO3L,CAAc2L,GACnB,OAAO,IAAIzQ,cAAcyQ,EAC1B,CACD,WAAOpY,CAAKoY,GACV,OAAO,IAAIvQ,KAAKuQ,EACjB,CACD,WAAOrZ,CAAKqZ,GACV,OAAO,IAAIpZ,KAAKoZ,EACjB,CACD,eAAO1rS,CAAS0rS,GACd,OAAO,IAAI9P,SAAS8P,EACrB,CACD,gBAAOhxF,CAAUgxF,GACf,OAAO,IAAI7P,UAAU6P,EACtB,CACD,cAAOl7B,CAAQk7B,GACb,OAAO,IAAI5P,QAAQ4P,EACpB,CACD,kBAAOlP,CAAYkP,GACjB,OAAO,IAAI1P,YAAY0P,EACxB,CACD,iBAAO/T,CAAW+T,GAChB,OAAO,IAAIxP,WAAWwP,EACvB,CACD,uBAAOrP,CAAiBqP,GACtB,OAAO,IAAIvP,iBAAiBuP,EAC7B,CACD,wBAAO1L,CAAkB0L,GACvB,OAAO,IAAItP,kBAAkBsP,EAC9B,CACD,YAAO9mB,CAAM8mB,GACX,OAAO,IAAIpP,MAAMoP,EAClB,CACD,aAAO1f,CAAO0f,GACZ,OAAO,IAAI/O,OAAO+O,EACnB,CACD,eAAOnY,CAASmY,GACd,OAAO,IAAI3O,SAAS2O,EACrB,CACD,gBAAOlY,CAAUkY,GACf,OAAO,IAAIjT,UAAUiT,EACtB,CACD,cAAOl5D,CAAQk5D,GACb,OAAO,IAAI/N,QAAQ+N,EACpB,CACD,aAAOrY,CAAOqY,GACZ,OAAO,IAAI5N,OAAO4N,EACnB,CACD,YAAOrgF,CAAMqgF,GACX,OAAO,IAAI3N,MAAM2N,EAClB,CACD,WAAO16S,CAAK06S,GACV,OAAO,IAAIxM,KAAKwM,EACjB,CACD,aAAO9kR,CAAO8kR,GACZ,OAAO,IAAI5nP,OAAO4nP,EACnB,CACD,YAAO7Q,CAAM6Q,GACX,OAAO,IAAIrL,MAAMqL,EAClB,CACD,WAAOvvF,CAAKuvF,GACV,OAAO,IAAIpL,cAAcoL,EAC1B,CACD,aAAOv5O,CAAOu5O,GACZ,OAAO,IAAInK,OAAOmK,EACnB,CACD,cAAOnjD,CAAQmjD,GACb,OAAO,IAAIlK,QAAQkK,EACpB,CACD,kBAAOjF,CAAYiF,GACjB,OAAO,IAAIjK,YAAYiK,EACxB,CACD,YAAO75P,CAAM65P,GACX,OAAO,IAAI1J,MAAM0J,EAClB,CACD,gBAAO9M,CAAU8M,GACf,OAAO,IAAIrJ,UAAUqJ,EACtB,CACD,cAAO5Q,CAAQ4Q,GACb,OAAO,IAAIpJ,QAAQoJ,EACpB,CACD,cAAO9T,CAAQ8T,GACb,OAAO,IAAInJ,QAAQmJ,EACpB,CACD,YAAOjkS,CAAMikS,GACX,OAAO,IAAIlJ,MAAMkJ,EAClB,CACD,WAAOpQ,CAAKoQ,GACV,OAAO,IAAIjJ,KAAKiJ,EACjB,CACD,eAAO7T,CAAS6T,GACd,OAAO,IAAI/I,SAAS+I,EACrB,CACD,WAAOrqQ,CAAKqqQ,GACV,OAAO,IAAIrI,KAAKqI,EACjB,CACD,aAAOvM,CAAOuM,GACZ,OAAO,IAAInI,OAAOmI,EACnB,CACD,mBAAOzL,CAAayL,GAClB,OAAO,IAAIhI,aAAagI,EACzB,CACD,eAAOzP,CAASyP,GACd,OAAO,IAAI/H,SAAS+H,EACrB,CACD,aAAO1pB,CAAO0pB,GACZ,OAAO,IAAI9H,OAAO8H,EACnB,CACD,UAAOxL,CAAIwL,GACT,OAAO,IAAI7H,IAAI6H,EAChB,CACD,aAAOjG,CAAOiG,GACZ,OAAO,IAAI3H,OAAO2H,EACnB,CACD,cAAO7zS,CAAQ6zS,GACb,OAAO,IAAInH,QAAQmH,EACpB,CACD,kBAAO3M,CAAY2M,GACjB,OAAO,IAAIlH,YAAYkH,EACxB,CACD,YAAOhG,CAAMgG,GACX,OAAO,IAAIjH,MAAMiH,EAClB,CACD,UAAO1G,CAAI0G,GACT,OAAO,IAAI5G,IAAI4G,EAChB,CACD,WAAO5T,CAAK4T,GACV,OAAO,IAAI3G,KAAK2G,EACjB,CACD,eAAO/Y,CAAS+Y,GACd,OAAO,IAAIzG,SAASyG,EACrB,CACD,eAAOpa,CAASoa,GACd,OAAO,IAAIva,SAASua,EACrB,CACD,cAAO5F,CAAQ4F,GACb,OAAO,IAAI9G,QAAQ8G,EACpB,CACD,WAAOpkB,CAAKokB,GACV,OAAO,IAAIxF,KAAKwF,EACjB,CACD,mBAAO/D,CAAa+D,GAClB,OAAO,IAAI1E,aAAa0E,EACzB,CACD,cAAO3tD,CAAQ2tD,GACb,OAAO,IAAIxE,iBAAiBwE,EAC7B,CACD,cAAO5W,CAAQ4W,GACb,OAAO,IAAIvE,QAAQuE,EACpB,CACD,YAAOp6E,CAAMo6E,GACX,OAAO,IAAItE,MAAMsE,EAClB,CACD,aAAOtM,CAAOsM,GACZ,OAAO,IAAI3D,OAAO2D,EACnB,CACD,aAAO91R,CAAO81R,GACZ,OAAO,IAAI1D,OAAO0D,EACnB,CACD,cAAOvL,CAAQuL,GACb,OAAO,IAAIzD,QAAQyD,EACpB,CACD,gBAAO76S,CAAU66S,GACf,OAAO,IAAI/L,UAAU+L,EACtB,CACD,UAAO/kS,CAAI+kS,GACT,OAAO,IAAIvD,WAAWuD,EACvB,CACD,aAAO/U,CAAO+U,GACZ,OAAO,IAAI56F,OAAO46F,EACnB,CACD,kBAAOnQ,CAAYmQ,GACjB,OAAO,IAAIrD,YAAYqD,EACxB,CACD,eAAOjP,CAASiP,GACd,OAAO,IAAIpD,SAASoD,EACrB,CACD,gBAAO3iF,CAAU2iF,GACf,OAAO,IAAInD,UAAUmD,EACtB,CACD,cAAO3T,CAAQ2T,GACb,OAAO,IAAIlD,QAAQkD,EACpB,CACD,YAAOrM,CAAMqM,GACX,OAAO,IAAIjD,MAAMiD,EAClB,CACD,YAAO/a,CAAM+a,GACX,OAAO,IAAIhD,MAAMgD,EAClB,CACD,cAAOpM,CAAQoM,GACb,OAAO,IAAI7C,QAAQ6C,EACpB,CACD,cAAOjY,CAAQiY,GACb,OAAO,IAAI3C,QAAQ2C,EACpB,CACD,iBAAOhY,CAAWgY,GAChB,OAAO,IAAI1b,WAAW0b,EACvB,CACD,gBAAO9D,CAAU8D,GACf,OAAO,IAAIlC,UAAUkC,EACtB,CACD,iBAAO1T,CAAW0T,GAChB,OAAO,IAAI/B,WAAW+B,EACvB,CACD,aAAOhP,CAAOgP,GACZ,OAAO,IAAI9B,OAAO8B,EACnB,CACD,eAAOv5Q,CAASu5Q,GACd,OAAO,IAAI7G,SAAS6G,EACrB,CACD,WAAO71C,CAAK61C,GACV,OAAO,IAAIjB,KAAKiB,EACjB,CACD,eAAOvN,CAASuN,GACd,OAAO,IAAIxN,SAASwN,EACrB,CACD,WAAO3Q,CAAK2Q,GACV,OAAO,IAAIZ,KAAKY,EACjB,CACD,gBAAOtL,CAAUsL,GACf,OAAO,IAAIX,UAAUW,EACtB,CACD,cAAO9a,CAAQ8a,GACb,OAAO,IAAIT,QAAQS,EACpB,CACD,gBAAOtb,CAAUsb,GACf,OAAO,IAAIR,UAAUQ,EACtB,CACD,eAAO7D,CAAS6D,GACd,OAAO,IAAIP,SAASO,EACrB,CACD,SAAO1S,CAAG0S,GACR,OAAO,IAAIzN,GAAGyN,EACf,CACD,eAAO3sB,CAAS2sB,GACd,OAAO,IAAIN,SAASM,EACrB,CACD,YAAOn0S,CAAMm0S,GACX,OAAO,IAAI5b,MAAM4b,EAClB,CACD,gBAAO5D,CAAU4D,GACf,OAAO,IAAIF,UAAUE,EACtB,EAUH,MAAMC,GAAmBnuB,GAAaG,SAAS5tP,GAC/C,SAAS67Q,WAAWjvE,GAClB,MAAMl7L,EAAO,IAAIgpQ,KAAK,CAAA,GACtBhpQ,EAAKm4O,IAAYj9C,EACjB,OAAOl7L,CACT,CACA,MAAMoqQ,OACJ,WAAA7zS,CAAY8qQ,GACV/qQ,KAAK+qQ,KAAOA,EACZ/qQ,KAAK4lR,SAAW7a,EAAK6a,SACrB5lR,KAAK8S,KAAOi4P,EAAK6a,UAAU9yQ,MAAQ,IAAIu8Q,UAAU5J,GAAaG,SAAS5tP,GAAI,QAC3Eh4B,KAAK+zS,WAAa/zS,KAAK8S,KAAK8vQ,MAAgB1jR,SAAW,EACvDc,KAAK+qQ,KAAK8a,KAAO7lR,KAAK6lR,KAAO9a,EAAK3wO,SAASunP,KAC5C,CACD,cAAAqyB,GACE,OAAQh0S,KAAK+zS,YAAc/zS,KAAKi0S,UACjC,CACD,gBAAAC,GACE,OAAQl0S,KAAKg0S,gBACd,CACD,IAAAz3R,GACEvc,KAAKm0S,aAAan0S,KAAK6lR,KAAM7lR,KAAK8S,MAClC,OAAO9S,KAAK6lR,IACb,CACD,OAAAltO,GACE,OAAO34C,KAAK8S,IACb,CACD,UAAAshS,CAAWC,EAAUvhS,EAAMiqR,GACzBsX,EAASvyB,IAAShvQ,EAClB,GAAIuhS,EAASlxB,MACX,GAAIrwQ,EAAK2wQ,MAAiB,CACxB,MAAMjkR,EAAQsT,EAAK2vQ,MACnB4xB,EAASrvB,IAAW6uB,WAAWr0S,GACvC,MAAa,GAAI60S,aAAoBrO,OAASqO,EAASpT,IAAIqF,YAAYrqP,OAAS,cAAe,CACvF,MAAMz8C,EAAQsT,EAAK8vQ,MAAgBztQ,KAAIm6P,GAASA,EAAMuS,IAAUzQ,SAAQxvQ,KAAK,MAC7EyyS,EAASrvB,IAAW6uB,WAAWr0S,GACvC,MAAiBQ,KAAKg0S,kBACd71S,KAAK,2CAEG2U,EAAK2wQ,OAAmBzjR,KAAKk0S,mBACvCl0S,KAAKm0S,aAAaE,EAAUvhS,GAE5B3U,KAAK,qCAER,CACD,wBAAAm2S,CAAyBv0S,EAAMw0S,EAASvjB,EAAUwjB,GAChD,IAAKz0S,EACH,OAAO,KAET,IAAIgwR,EAAW9wR,EACf,IAAK,IAAIoC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B0uR,EAAYiB,EAASrO,IAA0B5iR,EAAM,MAAO,MAC5D,MAAO,KAAM,CACXd,EAAQ8wR,EAAU9+P,OAAOzxB,MACzB,IAAKP,EACH,MAEF,GAAIs1S,IAAYt1S,EAAMwkR,MACpB,OAAOxkR,CAEV,CACD,GAAI+xR,EAAS/M,MAAkBwB,GAAaG,SAAS5tP,IAAMg5P,EAAS9M,MAAe,OACjF,MAEF8M,EAAWA,EAAShO,KACrB,CACD,IAAKwxB,EACH,OAAO,KAETzkB,EAAY/vR,KAAK8S,KAAK6vQ,IAA0B5iR,EAAM,KAAM,OAC5Dd,EAAQ8wR,EAAU9+P,OAAOzxB,MACzB,GAAIP,EACF,OAAOA,EAET8wR,EAAY/vR,KAAK8S,KAAKqvQ,IAAiBpiR,EAAM,MAC7Cd,EAAQ8wR,EAAU9+P,OAAOzxB,MACzB,OAAIP,IAAQwkR,MACHxkR,EAEF,IACR,CACD,cAAAw1S,CAAeJ,EAAUrjB,GACvB,GAAKqjB,EAAS3lT,eAAe,eAG7B,IAAK,MAAMkgB,IACTA,EAAGsxQ,OACHA,EAAM+c,WACNA,KACGoX,EAAS7Q,YAAYj6P,SAAU,CAClC,GAAI0zP,EACF,SAEF,IAAKruR,EACH,SAEF,MAAM0iP,EAAQke,WAAWxvQ,KAAK+qQ,KAAMimB,EAAUpiR,EAAK,MAAO,OAC1D,IAAK0iP,EAAO,CACVnzP,KAAK,4BAA4ByQ,MACjC,QACD,CACD,MAAO86B,GAAQ4nN,EACf,IAAK5nN,EAAKg6O,IAAe1jR,KAAK8S,MAAO,CACnC3U,KAAK,4CACL,QACD,CACD,MAAMu2S,EAAcllC,WAAWxvQ,KAAK+qQ,KAAMspC,EAAUn0B,EAAQ,MAAO,OACnE,IAAKw0B,EAAa,CAChBv2S,KAAK,yBAAyB+hR,MAC9B,QACD,CACD,MAAOy0B,GAAcD,EACrB,IAAKC,EAAWjxB,IAAe2wB,GAAW,CACxCl2S,KAAK,4DACL,QACD,CACD,MAAMy2S,EAAeD,EAAW3xB,MAChC,GAAI2xB,aAAsBrE,aAAesE,aAAwBtE,YAAa,CAC5EnyS,KAAK,2EACL,QACD,CACD,GAAIw2S,aAAsB3X,WAAa4X,aAAwB5X,UAAW,CACxE7+R,KAAK,yEACL,QACD,CACD,MAAMymO,EAAUl7L,EAAKw7O,MACrB,MAAMnlR,EAAO40S,EAAWzwB,IACxB,GAAIywB,aAAsB5jB,aAA1B,CACE,MAAM4iB,EAAQxlT,OAAO0d,OAAO,MAC5B8nS,EAAM5zS,GAAQ6kO,EACd,MAAMr2O,EAAMsmT,QAAQC,UAAU3mT,OAAOuhS,eAAeklB,GAAc30S,YAAa,CAAC0zS,IAChFiB,EAAa70S,GAAQxR,EAAIwR,EAE1B,MACD,GAAK40S,EAAWjmT,eAAemzR,IAA/B,CAIA8yB,EAAW7yB,IAASp4O,EACpBirQ,EAAW9yB,IAAYj9C,EACvB+vE,EAAW1yB,KAHV,MAFC9jR,KAAK,2CAMR,CACF,CACD,UAAA42S,CAAWV,EAAUrjB,GACnB,IAAKqjB,EAAS3lT,eAAe,WAAa2lT,EAAS3lT,eAAe,cAAgB2lT,EAASpO,UAAU91R,UACnG,OAEF,IAAK,MAAM4C,KAAQshS,EAAS3kS,MAAM65B,SAChC8qQ,EAAS3vB,IAAc3xQ,GAEzBshS,EAAS3kS,MAAMlB,QACf,MAAMwmS,EAAS,IAAIvK,MAAM,CAAA,GACzB,MAAM/8R,EAAS,IAAI+8R,MAAM,CAAA,GACzB4J,EAAS/yB,IAAc0zB,GACvBX,EAAS3kS,MAAM/N,KAAKqzS,GACpBX,EAAS/yB,IAAc5zQ,GACvB2mS,EAAS3kS,MAAM/N,KAAK+L,GACpB,IAAK,MAAMkB,IACTA,EAAGsuR,SACHA,EAAQC,SACRA,EAAQF,WACRA,KACGoX,EAASpO,UAAU18P,SAAU,CAChC,GAAI0zP,EACF,SAEF,IAAKruR,EACH,SAEF,MAAM0iP,EAAQke,WAAWxvQ,KAAK+qQ,KAAMimB,EAAUpiR,EAAK,MAAO,OAC1D,GAAK0iP,EAIL,IAAK,MAAM5nN,KAAQ4nN,EAAO,CACxB,IAAK5nN,EAAKg6O,IAAe1jR,KAAK4lR,UAAW,CACvCznR,KAAK,sBAAsByQ,iCAC3B,QACD,CACD,MAAMqmS,EAAazlC,WAAWxvQ,KAAK+qQ,KAAMrhO,EAAMwzP,EAAU,KAAM,OAC/D,IAAK+X,EAAY,CACf92S,KAAK,wBAAwB++R,MAC7B,QACD,CACD,MAAOgY,GAAaD,EACpB,IAAKC,EAAUxxB,IAAe1jR,KAAK4lR,UAAW,CAC5CznR,KAAK,kDACL,QACD,CACD,MAAMg3S,EAAa3lC,WAAWxvQ,KAAK+qQ,KAAMrhO,EAAMyzP,EAAU,KAAM,OAC/D,IAAKgY,EAAY,CACfh3S,KAAK,wBAAwBg/R,MAC7B,QACD,CACD,MAAOiY,GAAaD,EACpB,IAAKC,EAAU1xB,IAAe1jR,KAAK4lR,UAAW,CAC5CznR,KAAK,kDACL,QACD,CACD,MAAMk3S,EAAQxB,WAAWqB,EAAUhwB,OACnC,MAAM1lR,EAAQq0S,WAAWuB,EAAUlwB,OACnC8vB,EAAO1zB,IAAc+zB,GACrBL,EAAOl3C,KAAKn8P,KAAK0zS,GACjB3nS,EAAO4zQ,IAAc9hR,GACrBkO,EAAOowP,KAAKn8P,KAAKnC,EAClB,MAlCCrB,KAAK,4BAA4ByQ,KAmCpC,CACF,CACD,gBAAA0mS,CAAiBjB,EAAUt5E,EAASgiE,GAClC,IAAIwY,EACJ,GAAIx6E,EAAQ77N,OAAS,EAAG,CACtBq2S,EAAYlB,EAAS1yB,MACrB4zB,EAAU7wB,IAAc6wB,EAAU5H,OAClC4H,EAAU5H,MAAQ,IACnB,CACD3tS,KAAKo0S,WAAWC,EAAUt5E,EAAQ,GAAIgiE,GACtC/8R,KAAKy0S,eAAeJ,EAAUt5E,EAAQ,IACtC/6N,KAAK+0S,WAAWV,EAAUt5E,EAAQ,IAClC,GAAIA,EAAQ77N,SAAW,EACrB,OAEF,MAAM8P,EAASqlS,EAASrxB,MACxB,MAAMjjR,EAAOs0S,EAASnwB,IACtB,MAAMnzQ,EAAM/B,EAAOq0Q,IAAUgxB,GAC7B,IAAK,IAAIhzS,EAAI,EAAGoH,EAAKsyN,EAAQ77N,OAAQmC,EAAIoH,EAAIpH,IAAK,CAChD,MAAMpC,EAAQ87N,EAAQ15N,GACtB,MAAMoN,EAAQ8mS,EAAU5zB,MACxB3yQ,EAAOjP,GAAM4B,KAAK8M,GAClBO,EAAOs0Q,IAAWvyQ,EAAM1P,EAAGoN,GAC3BzO,KAAKo0S,WAAW3lS,EAAOxP,EAAO89R,GAC9B/8R,KAAKy0S,eAAehmS,EAAOxP,GAC3Be,KAAK+0S,WAAWtmS,EAAOxP,EACxB,CACF,CACD,kBAAAu2S,CAAmBnB,GACjB,IAAKr0S,KAAK+zS,WACR,OAEF,MAAMpG,MACJA,GACE0G,EACJ,IAAK1G,GAASA,EAAMhB,SAAW,EAC7B,OAEF,MAAM39R,EAASqlS,EAASrxB,MACxB,MAAMjjR,EAAOs0S,EAASnwB,IACtB,KAAMl1Q,EAAOjP,aAAiBuvR,gBAC5B,OAEF,IAAImmB,EAEFA,EADEpB,EAASt0S,KACKiP,EAAOjP,GAAMwpC,SAAS1a,QAAO9R,GAAKA,EAAEhd,OAASs0S,EAASt0S,OAAMb,OAE5D8P,EAAOjP,GAAMwpC,SAASrqC,OAExC,MAAM6R,EAAM/B,EAAOq0Q,IAAUgxB,GAAY,EACzC,MAAM5rS,EAAKklS,EAAMhB,QAAU8I,EAC3B,GAAIhtS,EAAI,CACN,MAAMitS,EAAYrB,EAAS1yB,MAC3B+zB,EAAUhxB,IAAcgxB,EAAU/H,OAClC+H,EAAU/H,MAAQ,KAClB3+R,EAAOjP,GAAM4B,KAAK+zS,GAClB1mS,EAAOs0Q,IAAWvyQ,EAAK2kS,GACvB,IAAK,IAAIr0S,EAAI,EAAGA,EAAIoH,EAAIpH,IAAK,CAC3B,MAAMoN,EAAQinS,EAAU/zB,MACxB3yQ,EAAOjP,GAAM4B,KAAK8M,GAClBO,EAAOs0Q,IAAWvyQ,EAAM1P,EAAGoN,EAC5B,CACF,CACF,CACD,aAAAknS,CAActB,GACZ,MAAMt0S,KACJA,EAAI4tS,MACJA,GACE0G,EACJ,IAAK1G,IAAU5tS,EACb,MAAO,CAAC,EAAG,GAEb,MAAMuF,EAAMqoS,EAAMroS,OAAS,EAAI2xP,SAAW02C,EAAMroS,IAChD,MAAO,CAACqoS,EAAMnsS,IAAK8D,EACpB,CACD,WAAAswS,CAAYvB,EAAUrjB,GACpBhxR,KAAKy0S,eAAeJ,EAAUrjB,GAC9BhxR,KAAK+0S,WAAWV,EAAUrjB,GAC1BhxR,KAAKm0S,aAAaE,EAAUrjB,EAC7B,CACD,YAAAmjB,CAAaE,EAAUrjB,GACrB,MAAM6kB,EAAe,GACrB71S,KAAKw1S,mBAAmBnB,GACxB,IAAK,MAAM/kC,KAAS+kC,EAASzxB,MAAiB,CAC5C,GAAItT,EAAMwS,IACR,SAEF,GAAI9hR,KAAKi0S,kBAAelzS,GAAauuQ,EAAM4U,MAAe,UAAW,CACnElkR,KAAKi0S,WAAa3kC,EAAM4hC,YAAc,cACtC,MAAM4E,EAAe9kB,EAASpO,MAC9B,GAAIkzB,EAAa52S,OAAS,EACxBc,KAAKs1S,iBAAiBhmC,EAAO,CAACwmC,EAAa,IAAK,WAC3C,GAAI91S,KAAK+zS,WAAY,CAC1B,MAAM5kB,EAAO6B,EAAS/M,MAAkB2vB,IAAoB,EAAI5iB,EAAS/M,IACzE,MAAM8xB,EAAYzmC,EAAMwS,IAAS,IAAIuN,UAAUF,EAAM7f,EAAMvvQ,MAAQ,QACnEixR,EAAS1P,IAAcy0B,GACvB/1S,KAAKm0S,aAAa7kC,EAAOymC,EAC1B,CACD,QACD,CACD,IAAKzmC,EAAMkU,MACT,SAEF,IAAIgxB,EAAS,MACb,IAAIzX,EAAU,KACd,IAAInuR,EAAM,KACV,IAAI3P,EAAQ,KACZ,GAAIqwQ,EAAM/yP,KAAM,CACd,OAAQ+yP,EAAM/yP,KAAKtd,OACjB,IAAK,OACHe,KAAK41S,YAAYtmC,EAAO0hB,GACxB,SACF,IAAK,SACHwjB,EAAS,KACT,MACF,IAAK,UACH,IAAKllC,EAAM/yP,KAAK3N,IAAK,CACnBzQ,KAAK,8BAA8BmxQ,EAAM4U,QACzClkR,KAAK41S,YAAYtmC,EAAO0hB,GACxB,QACD,CACDpiR,EAAM0gQ,EAAM/yP,KAAK3N,IACjB,MACF,QACE,MAEA0gQ,EAAM/yP,KAAKwgR,UACbA,EAAUztB,EAAM/yP,KAAKwgR,QAAQlb,IAEhC,CACD,MAAOrgR,EAAK8D,GAAOtF,KAAK21S,cAAcrmC,GACtC,GAAI1gQ,EAAK,CACP3P,EAAQuwQ,WAAWxvQ,KAAK+qQ,KAAMimB,EAAUpiR,EAAK,KAAM,OACnD,GAAI3P,IAAU,KAAM,CAClBA,EAAQ2uR,eAAe5tR,KAAK8S,KAAMk+Q,EAAUpiR,GAC5C,IAAK3P,EACH,SAEEe,KAAKg0S,mBACP/0S,EAAM2iR,IAAa,MAErB5hR,KAAK41S,YAAYtmC,EAAOrwQ,GACxB,QACV,CACce,KAAKg0S,mBACP/0S,EAAQA,EAAM4vB,QAAO6a,IAASA,EAAKk4O,OAEjC3iR,EAAMC,OAASoG,EACjBrG,EAAQA,EAAMkG,MAAM,EAAGG,GACdrG,EAAMC,SAAW,IAC1BD,EAAQ,MAENA,GAASe,KAAKg0S,kBAChB/0S,EAAMwjD,SAAQ/Y,IACZA,EAAKk4O,IAAa,IAAI,GAIpC,KAAa,CACL,IAAKtS,EAAMvvQ,KAAM,CACfC,KAAK41S,YAAYtmC,EAAO0hB,GACxB,QACD,CACD,GAAIhxR,KAAKg0S,iBAAkB,CACzB,MAAMj5E,EAAU,GAChB,MAAOA,EAAQ77N,OAASoG,EAAK,CAC3B,MAAMynD,EAAQ/sD,KAAKs0S,yBAAyBhlC,EAAMvvQ,KAAMuvQ,EAAM6T,MAAsB6N,EAAUwjB,GAC9F,IAAKznP,EACH,MAEFA,EAAM60N,IAAa,KACnB7mD,EAAQp5N,KAAKorD,EACd,CACD9tD,EAAQ87N,EAAQ77N,OAAS,EAAI67N,EAAU,IACjD,KAAe,CACL97N,EAAQ+xR,EAASrO,IAA0BrT,EAAMvvQ,KAAM,MAAOC,KAAK+zS,YAAY9iR,OAAOzxB,MACtF,IAAKP,EAAO,CACV,GAAIuC,IAAQ,EAAG,CACbq0S,EAAal0S,KAAK2tQ,GAClB,QACD,CACD,MAAM6f,EAAO6B,EAAS/M,MAAkB2vB,IAAoB,EAAI5iB,EAAS/M,IACzEhlR,EAAQqwQ,EAAMwS,IAAS,IAAIuN,UAAUF,EAAM7f,EAAMvvQ,MAC7CC,KAAK+zS,aACP90S,EAAM2iR,IAAa,MAErBoP,EAAS1P,IAAcriR,GACvBe,KAAK41S,YAAYtmC,EAAOrwQ,GACxB,QACD,CACGe,KAAK+zS,aACP90S,EAAM2iR,IAAa,MAErB3iR,EAAQ,CAACA,EACV,CACF,CACGA,EACFe,KAAKs1S,iBAAiBhmC,EAAOrwQ,EAAO89R,GAC3Bv7R,EAAM,EACfxB,KAAK41S,YAAYtmC,EAAO0hB,GAExB6kB,EAAal0S,KAAK2tQ,EAErB,CACDumC,EAAapzP,SAAQ/Y,GAAQA,EAAKs5O,MAAc0B,IAAch7O,IAC/D,EAKH,MAAMssQ,YACJ,WAAA/1S,CAAY8qQ,EAAMj4P,GAChB9S,KAAK8S,KAAOA,EACZ9S,KAAKi2S,QAAUlrC,EAAK6a,UAAY,IACjC,CACD,SAAAswB,CAAUC,GACR,MAAM1pR,EAAQ,CAAC,EAAE,EAAGzsB,KAAK8S,KAAK8vQ,QAC9B,MAAOn2P,EAAMvtB,OAAS,EAAG,CACvB,MAAMmtB,EAAOI,EAAMuN,IAAI,GACvB,MAAO34B,EAAGkoC,GAAYld,EACtB,GAAIhrB,EAAI,IAAMkoC,EAASrqC,OAAQ,CAC7ButB,EAAM0hB,MACN,QACD,CACD,MAAMmhO,EAAQ/lO,IAAWld,EAAK,IAC9B,MAAM+pR,EAAeD,EAAQ7nT,IAAIghR,EAAMiW,KACvC,GAAI6wB,EACF9mC,EAAM0V,IAAWoxB,OACZ,CACL,MAAM3oC,EAAa6B,EAAM8S,MACzB,IAAK,MAAM5iR,KAASiuQ,EAAW//P,SAAU,CACvC,MAAMgI,EAAQygS,EAAQ7nT,IAAIkR,EAAM+lR,KAChC,GAAI7vQ,EAAO,CACTlW,EAAMwlR,IAAWtvQ,GACjB,KACD,CACF,CACF,CACD,MAAM47O,EAAQge,EAAMsT,MAChBtxB,EAAMpyP,OAAS,GACjButB,EAAM9qB,KAAK,EAAE,EAAG2vP,GAEnB,CACD,MAAMr4O,EAAM,CAAC,sEACb,GAAIjZ,KAAKi2S,QACP,IAAK,MAAM3mC,KAAStvQ,KAAKi2S,QAAQrzB,MAC3BtT,EAAM4U,MAAe,QACvB5U,EAAM+V,IAAWpsQ,GAIvBjZ,KAAK8S,KAAKuyQ,IAAWpsQ,GACrBA,EAAItX,KAAK,mBACT,OAAOsX,EAAIrX,KAAK,GACjB,EASH,MAAMy0S,GAAe5wB,GAAanL,OAAOtiP,GACzC,MAAMs+Q,gBAAgBpnB,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UAAW,MAC/Br2S,KAAKu2S,SAAW,KAChBv2S,KAAKw2S,SAAW,KAChBx2S,KAAKy2S,OAAS,KACdz2S,KAAKgnR,SAAW,KAChBhnR,KAAK02S,2BAA6B,KAClC12S,KAAK22S,UAAY,IAAIrnB,cACtB,EAEH,MAAMsnB,iBAAiB1nB,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,MAChCr2S,KAAK62S,cAAgB,IACtB,EAEH,MAAMC,uBAAuBplB,aAC3B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,iBAAkB,CAAC,WAAY,SAAU,WAC9D,EAEH,MAAMU,wBAAwBrlB,aAC5B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,kBAAmB,CAAC,WAAY,SAAU,WAC/D,EAEH,MAAMW,uBAAuBllB,SAC3B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,iBACrB,EAEH,MAAMY,6BAA6BnlB,SACjC,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,uBACrB,EAEH,MAAMa,mBAAmBnlB,SACvB,WAAA9xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aACrB,EAEH,MAAMc,4BAA4BvlB,cAChC,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,sBAAuB,GAAGxyS,GAAKA,GAAK,GAAKA,GAAK,GACnE,EAEH,MAAMuzS,cAAcloB,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QAAS,MAC7Br2S,KAAKD,KAAO0tQ,EAAW1tQ,KAAO0tQ,EAAW1tQ,KAAKqxQ,OAAS,GACvDpxQ,KAAKy2S,OAAS,IAAInnB,cACnB,EAEH,MAAM+nB,oBAAoB5lB,cACxB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cACrB,EAEH,MAAMiB,YAAY3lB,aAChB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MACrB,EAEH,MAAMkB,oBAAoBroB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QACpBr2S,KAAKrC,MAAQmpR,WAAW,CACtBh0Q,KAAM26P,EAAW9vQ,MACjBopR,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAAKA,GAAK,IAEhC7D,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,GAAI,UAAW,WAAY,eAAgB,OAAQ,UAAW,SAAU,QAAS,SAAU,YAAa,YAAa,iBACpK,EAEH,MAAMy3S,mBAAmB9lB,aACvB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,CAAC,WAAY,WAAY,UAC5D,EAEH,MAAMoB,iBAAiB/lB,aACrB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,CAAC,WAAY,WAC9C,EAEH,MAAMqB,aAAa/lB,aACjB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,OACrB,EAEH,MAAMsB,oBAAoBzoB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eACpBr2S,KAAKo6D,OAAS+sN,gBAAgB1Z,EAAWrzM,OAAQ,CAAC,OAAQ,SAAU,MAAO,eAC5E,EAEH,MAAMw9O,yBAAyBnmB,cAC7B,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,mBACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY,IAAI73Q,IAAIhK,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,OAAO2Z,QAAOtnB,GAAKA,EAAEpE,SAAS,OAAMgS,KAAI5N,GAAKA,EAAE2N,MAAM,IAAK,KAChH,EAEH,MAAM2iS,cAAc3oB,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QAAS,MAC7Br2S,KAAK83S,cAAgB,IACtB,EAEH,MAAMC,eAAejmB,SACnB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SACrB,EAEH,MAAM2B,eAAe9oB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,MAC9Br2S,KAAK8S,KAAO,KACZ9S,KAAKqjS,OAAS,KACdrjS,KAAK8lR,UAAY,KACjB9lR,KAAKi4S,UAAY,KACjBj4S,KAAKk4S,eAAiB,KACtBl4S,KAAKo6B,SAAW,KAChBp6B,KAAKm4S,oBAAsB,KAC3Bn4S,KAAKo4S,eAAiB,KACtBp4S,KAAK9B,IAAM,IAAIoxR,cAChB,EAEH,MAAM+oB,iBAAiBnpB,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACpBr2S,KAAKoxS,MAAQjqB,gBAAgB1Z,EAAW2jC,MAAO,CAAC,YAAa,YAC9D,EAEH,MAAMkH,iCAAiCxmB,SACrC,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,2BACrB,EAEH,MAAMkC,6BAA6BxmB,SACjC,WAAA9xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,uBACrB,EAEH,MAAMmC,oBAAoBtpB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,MACnCr2S,KAAKy4S,yBAA2B,KAChCz4S,KAAK04S,qBAAuB,KAC5B14S,KAAKrC,MAAQ,KACbqC,KAAK3Q,KAAO,IACb,EAEH,MAAMspT,eAAezpB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,MAC9Br2S,KAAK44S,QAAU,KACf54S,KAAK64S,QAAU,KACf74S,KAAK84S,MAAQ,KACb94S,KAAK+4S,MAAQ,IAAIzpB,cAClB,EAEH,MAAM0pB,oBAAoBtnB,aACxB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,CAAC,IAAK,KAC1C,EAEH,MAAM4C,oBAAoBnnB,SACxB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cACrB,EAEH,MAAM6C,eAAetnB,cACnB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,GAAGxyS,GAAKA,GAAK,GAC5C,EAEH,MAAMs1S,gBAAgBxnB,aACpB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACrB,EAEH,MAAM+C,oBAAoBxnB,cACxB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,GAAGxyS,GAAKA,GAAK,GACjD,EAEH,MAAMw1S,aAAanqB,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,OAAQ,MAC5Br2S,KAAKs5S,WAAa,KAClBt5S,KAAKytQ,WAAa,KAClBztQ,KAAKu5S,gBAAkB,KACvBv5S,KAAKw5S,UAAY,KACjBx5S,KAAKoe,MAAQ,KACbpe,KAAKyjO,OAAS,KACdzjO,KAAKy5S,UAAY,KACjBz5S,KAAK2/Q,IAAM,KACX3/Q,KAAK05S,OAAS,KACd15S,KAAK25S,IAAM,KACX35S,KAAK45S,UAAY,IAAItqB,eACrBtvR,KAAKzH,UAAY,IAAI+2R,cACtB,EAEH,MAAMuqB,cAAc3qB,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QAAS,MAC7Br2S,KAAK2/Q,IAAM,IACZ,EAEH,MAAMm6B,wBAAwBroB,cAC5B,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,mBACpBr2S,KAAK+5S,cAAgB5yB,gBAAgB1Z,EAAWssC,cAAe,CAAC,IAAK,SAAU,WAAY,oBAAqB,QAAS,SAAU,WAAY,SAAU,QAAS,oBAAqB,OAAQ,qBAAsB,cACtN,EAEH,MAAMC,oBAAoBtoB,aACxB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,CAAC,MAAO,MAAO,KAAM,YAAa,OACtE,EAEH,MAAM4D,yBAAyBnoB,SAC7B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,mBACrB,EAEH,MAAM6D,eAAehrB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,MAC9Br2S,KAAKD,KAAO0tQ,EAAW1tQ,KAAO0tQ,EAAW1tQ,KAAKqxQ,OAAS,GACvDpxQ,KAAK6qR,SAAW,KAChB7qR,KAAKkmR,IAAM,IACZ,EAEH,MAAMi0B,qBAAqBzoB,aACzB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eAAgB,CAAC,UAAW,qBAAsB,uBACvE,EAEH,MAAM+D,sBAAsB1oB,aAC1B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,gBAAiB,CAAC,YAAa,YACpD,EAEH,MAAMgE,cAAcvoB,SAClB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QACrB,EAEH,MAAMiE,uBAAuBxoB,SAC3B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACrB,EAEH,MAAMkE,0BAA0BrrB,UAC9B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,MAClCr2S,KAAKy4Q,QAAU,KACfz4Q,KAAKw6S,gBAAkB,KACvBx6S,KAAKk6Q,YAAc,IACpB,EAEH,MAAMugC,wBAAwB/oB,aAC5B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,kBAAmB,CAAC,QAAS,UAClD,EAEH,MAAMqE,gBAAgB/oB,aACpB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACrB,EAEH,MAAMsE,eAAezrB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACpBr2S,KAAK46S,MAAQ9zB,WAAW,CACtBh0Q,KAAM26P,EAAWmtC,MACjB7zB,aAAc,EACdC,SAAUnjR,GAAKA,IAAM,IAEvB7D,KAAK4D,KAAO6pQ,EAAW7pQ,MAAQ,GAC/B5D,KAAK66S,GAAKptC,EAAWotC,IAAM,EAC5B,EAEH,MAAMC,oBAAoB5rB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eACpBr2S,KAAK4D,KAAO6pQ,EAAW7pQ,MAAQ,GAC/B5D,KAAK66S,GAAKptC,EAAWotC,IAAM,GAC3B76S,KAAK+6S,cAAgBttC,EAAWutC,cAAgB,EACjD,CACD,gBAAIA,GACF,MAAM78R,EAAS,GACf,MAAM88R,EAAe,oBACrB,MAAMD,EAAeh7S,KAAK+6S,cAC1B,IAAK,IAAI38R,KAAS48R,EAAa9lS,MAAM,KAAKC,KAAI5N,GAAKA,EAAE6pQ,SAAQviP,QAAOtnB,KAAOA,IAAI,CAC7E6W,EAAQA,EAAMlJ,MAAM,IAAK,GAAGC,KAAI5N,IAC9B,MAAMwlD,EAAQxlD,EAAEtI,MAAMg8S,GACtB,OAAKluP,EAGEj+C,SAASi+C,EAAM,GAAI,IAFjB,CAEoB,IAE3B3uC,EAAMlf,SAAW,GACnBkf,EAAMzc,KAAKyc,EAAM,IAEnBD,EAAOxc,KAAKyc,EACb,CACD,OAAO7e,OAAOS,KAAM,eAAgBme,EACrC,EAEH,MAAM+8R,gBAAgBzpB,cACpB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,OAAO2Z,QAAOtnB,GAAKA,GAAK,CAAC,YAAa,QAAS,QAAS,OAAQ,aAAc,QAAS,YAAYpE,SAASoE,IAC1J,EAEH,MAAM4zS,kBAAkBxpB,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACrB,EAEH,MAAM+E,kBAAkB1pB,aACtB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,CAAC,oBAAqB,KAAM,OAC9D,EAEH,MAAMgF,wBAAwBnsB,UAC5B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,MAChCr2S,KAAKs7S,MAAQ,KACbt7S,KAAKmV,IAAM,KACXnV,KAAKu7S,YAAc,KACnBv7S,KAAKw7S,YAAc,IAAIlsB,eACvBtvR,KAAKy7S,gBAAkB,IAAInsB,eAC3BtvR,KAAK07S,WAAa,IAAIpsB,cACvB,EAEH,MAAMqsB,yBAAyB7pB,SAC7B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,mBACrB,EAEH,MAAMuF,oBAAoBjqB,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cACrB,EAEH,MAAMwF,gBAAgBnqB,aACpB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UAAW,CAAC,YAAa,YAAa,SAAU,UACrE,EAEH,MAAMyF,0BAA0BnqB,aAC9B,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,oBACrB,EAEH,MAAM0F,wBAAwBrqB,aAC5B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,kBAAmB,CAAC,OAAQ,eACjD,EAEH,MAAM2F,yBAAyBlqB,SAC7B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,mBACrB,EAEH,MAAM4F,oBAAoBnqB,SACxB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cACrB,EAEH,MAAM6F,YAAYxqB,aAChB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,CAAC,oBAAqB,OAAQ,WAC1D,EAEH,MAAM8F,qBAAqBjtB,UACzB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eAAgB,MACpCr2S,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,MAAO,MAAO,MAAO,SACnEC,KAAKo8S,YAAc,KACnBp8S,KAAKq8S,UAAY,KACjBr8S,KAAK6qR,SAAW,KAChB7qR,KAAKkmR,IAAM,IACZ,EAEH,MAAMo2B,eAAe5qB,aACnB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,CAAC,WAAY,SAC5C,EAEH,MAAMkG,cAAc3qB,cAClB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QAAS,GAAGxyS,GAAKA,EAAI,GAC1C,EAEH,MAAM24S,mBAAmB1qB,SACvB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aACrB,EAEH,MAAMoG,eAAe9qB,aACnB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SACrB,EAEH,MAAMqG,kBAAkB/qB,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACrB,EAEH,MAAMsG,YAAYztB,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAK+jB,KAAO,KACZ/jB,KAAK48S,UAAY,KACjB58S,KAAK66S,GAAK,KACV76S,KAAK2/Q,IAAM,IACZ,EAEH,MAAMk9B,mBAAmB3tB,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAK88S,OAAS,IAAIxtB,eAClBtvR,KAAK+8S,YAAc,IAAIztB,cACxB,EAEH,MAAM0tB,mBAAmB9tB,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,MAClCr2S,KAAKmV,IAAM,IACZ,EAEH,MAAM8nS,uBAAuB/tB,UAC3B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UAAW,MAC/Br2S,KAAKk9S,MAAQ,KACbl9S,KAAKm9S,SAAW,IACjB,EAEH,MAAMC,kBAAkBluB,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,MACjCr2S,KAAKF,QAAU,IAAIwvR,cACpB,EAEH,MAAM+tB,aAAa3rB,aACjB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,OAAQ,CAAC,SAAU,aACxC,EAEH,MAAMiH,qBAAqBxrB,SACzB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eACrB,EAEH,MAAMkH,cAAc3rB,cAClB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QAAS,GAAGxyS,GAAKA,GAAK,GAC3C,EAEH,MAAM25S,iBAAiB7rB,aACrB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WACrB,EAEH,MAAMoH,mBAAmBhsB,cACvB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aACrB,EAEH,MAAMqH,uBAAuB9rB,cAC3B,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,iBAAkB,MAAMxyS,GAAKA,GAAK,GAAKA,GAAK,GACjE,EAEH,MAAM85S,mBAAmBzuB,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,MAClCr2S,KAAK49S,YAAc,IACpB,EAEH,MAAMC,eAAe3uB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,MAC9Br2S,KAAK66S,GAAK,KACV76S,KAAK3Q,KAAO,KACZ2Q,KAAK2/Q,IAAM,IACZ,EAEH,MAAMm+B,kBAAkBnsB,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACrB,EAEH,MAAM0H,kBAAkB7uB,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,MACjCr2S,KAAK2/Q,IAAM,IACZ,EAEH,MAAMq+B,kBAAkBtsB,aACtB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,CAAC,OAAQ,OAAQ,OAAQ,SAC3D,EAEH,MAAM4H,gBAAgBtsB,aACpB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACrB,CACD,CAACp0B,MACKjiR,KAAK6hR,MAAc,MAGvB7hR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,OAAO2Z,QAAOtnB,GAAK,CAAC,SAAU,WAAY,WAAY,OAAQ,QAAQpE,SAASoE,KAC7H,EAEH,MAAM22S,mBAAmBhvB,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cACpBr2S,KAAKuH,EAAIu/Q,WAAW,CAClBh0Q,KAAM26P,EAAWlmQ,EACjBw/Q,aAAc,gBACdC,SAAUnjR,GAAK,OAEjB7D,KAAKwH,EAAIs/Q,WAAW,CAClBh0Q,KAAM26P,EAAWjmQ,EACjBu/Q,aAAc,gBACdC,SAAUnjR,GAAK,MAElB,EAEH,MAAMs6S,kBAAkBxsB,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACrB,CACD,CAACp0B,MACC,MAAMm8B,EAAUp+S,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,OAAOC,KAAI5N,GAAKuH,SAASvH,EAAG,MACxE,MAAM4W,EAAS,GACf,IAAK,IAAI9c,EAAI,EAAGoH,EAAK21S,EAAQl/S,OAAQmC,EAAIoH,EAAIpH,GAAK,EAChD8c,EAAOxc,KAAKy8S,EAAQj5S,MAAM9D,EAAGA,EAAI,IAEnCrB,KAAK6hR,IAAY1jQ,CAClB,EAEH,MAAMkgS,mBAAmB3sB,aACvB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,CAAC,UAAW,kBAAmB,kBAClE,EAEH,MAAMiI,2BAA2B5sB,aAC/B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,qBAAsB,CAAC,OAAQ,cAAe,sBAAuB,uBAAwB,gBAClH,EAEH,MAAMkI,aAAa3sB,cACjB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,OAAQ,GAAGxyS,GAAK,OACrC,EAEH,MAAM26S,YAAYtvB,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKo8S,YAAc,KACnBp8S,KAAK6qR,SAAW,KAChB7qR,KAAKy+S,IAAM,KACXz+S,KAAK0+S,WAAa,KAClB1+S,KAAK2+S,UAAY,KACjB3+S,KAAK4+S,WAAa,KAClB5+S,KAAK6+S,OAAS,KACd7+S,KAAKkmR,IAAM,IACZ,EAEH,MAAM44B,YAAY5vB,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK++S,oBAAsB,KAC3B/+S,KAAKo8S,YAAc,KACnBp8S,KAAKqkP,YAAc,KACnBrkP,KAAKi8Q,QAAU,KACfj8Q,KAAK4/R,WAAa,KAClB5/R,KAAK6qR,SAAW,KAChB7qR,KAAKg/S,YAAc,KACnBh/S,KAAKi/S,WAAa,KAClBj/S,KAAK+9Q,WAAa,KAClB/9Q,KAAKk/S,KAAO,KACZl/S,KAAKm/S,SAAW,KAChBn/S,KAAKo/S,aAAe,KACpBp/S,KAAKq/S,YAAc,KACnBr/S,KAAKs/S,YAAc,KACnBt/S,KAAKu/S,aAAe,KACpBv/S,KAAKw/S,OAAS,KACdx/S,KAAKo1C,QAAU,KACfp1C,KAAK29Q,kBAAoB,KACzB39Q,KAAKkmR,IAAM,IACZ,EAEH,MAAMu5B,aAAavwB,UACjB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,OAAQ,MAC5Br2S,KAAK0/S,IAAM,KACX1/S,KAAK2/S,YAAc,KACnB3/S,KAAK4/S,kBAAoB,KACzB5/S,KAAKgtD,KAAO,IACb,EAEH,MAAM6yP,oBAAoB3wB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,MACnCr2S,KAAK8/S,kBAAoB,KACzB9/S,KAAK+/S,OAAS,KACd//S,KAAKggT,YAAc,KACnBhgT,KAAKigT,iBAAmB,KACxBjgT,KAAKkgT,iBAAmB,KACxBlgT,KAAKmgT,aAAe,KACpBngT,KAAKogT,kBAAoB,KACzBpgT,KAAK86Q,MAAQ,KACb96Q,KAAKqgT,iBAAmB,IACzB,EAEH,MAAMC,0BAA0BxuB,SAC9B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,oBACrB,EAEH,MAAMkK,uBAAuB5uB,aAC3B,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACrB,EAEH,MAAMmK,0BAA0B1uB,SAC9B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,oBACrB,EAEH,MAAMoK,iBAAiB/uB,aACrB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,CAAC,WAAY,WAAY,oBAAqB,SAAU,UACzF,EAEH,MAAMqK,gBAAgBxxB,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UAAW,MAC/Br2S,KAAK2gT,iBAAmB,KACxB3gT,KAAKo4B,MAAQ,KACbp4B,KAAKy2S,OAAS,KACdz2S,KAAK4gT,OAAS,KACd5gT,KAAK49S,YAAc,KACnB59S,KAAK6gT,iBAAmB,KACxB7gT,KAAKg8D,OAAS,KACdh8D,KAAKq3C,OAAS,KACdr3C,KAAK8gT,UAAY,KACjB9gT,KAAK+gT,WAAa,KAClB/gT,KAAKghT,mBAAqB,KAC1BhhT,KAAK4+R,OAAS,KACd5+R,KAAKgnR,SAAW,KAChBhnR,KAAKmmR,IAAM,KACXnmR,KAAKihT,OAAS,IAAI3xB,eAClBtvR,KAAKkhT,aAAe,IAAI5xB,eACxBtvR,KAAKmhT,IAAM,IAAI7xB,eACftvR,KAAK+lR,IAAM,IAAIuJ,eACftvR,KAAKmuO,GAAK,IAAImhD,eACdtvR,KAAK22S,UAAY,IAAIrnB,eACrBtvR,KAAKohT,UAAY,IAAI9xB,eACrBtvR,KAAKqhT,IAAM,IAAI/xB,cAChB,EAEH,MAAMgyB,cAAcxvB,SAClB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QACrB,EAEH,MAAMkL,yBAAyBzvB,SAC7B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,mBACrB,EAEH,MAAMmL,qBAAqB9vB,aACzB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eAAgB,CAAC,aAAc,aACpD,EAEH,MAAMoL,oBAAoB9vB,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cACrB,EAEH,MAAMqL,iBAAiB/vB,aACrB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WACrB,EAEH,MAAMsL,WAAWzyB,UACf,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,KAAM,MAC1Br2S,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKo8S,YAAc,KACnBp8S,KAAK6qR,SAAW,KAChB7qR,KAAKy+S,IAAM,KACXz+S,KAAK0+S,WAAa,KAClB1+S,KAAK2+S,UAAY,KACjB3+S,KAAK6+S,OAAS,KACd7+S,KAAKkmR,IAAM,IACZ,EAEH,MAAM07B,cAAcnwB,cAClB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,UAAW,GAAGC,KAAIiJ,GAASA,EAAMlJ,MAAM,KAAKC,KAAI5N,GAAKuH,SAASvH,EAAE6pQ,OAAQ,QAAMviP,QAAOzQ,GAASA,EAAM7J,OAAMhN,IAAMuQ,MAAMvQ,OAAK4N,KAAIiJ,IACtKA,EAAMlf,SAAW,GACnBkf,EAAMzc,KAAKyc,EAAM,IAEnB,OAAOA,CAAK,GAEf,EAEH,MAAMyjS,eAAepwB,cACnB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,OAChC,MAAMvtQ,EAAIiL,SAAS9O,KAAK6hR,IAAW,KAC9B/pQ,MAAMjU,IAAMA,GAAK,IACpB7D,KAAK6hR,IAAYh+Q,EAEpB,EAEH,MAAMi+S,iBAAiBrwB,cACrB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,MAC9C,EAEH,MAAM6sS,eAAetwB,cACnB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,QAC5BpxQ,KAAK6hR,IAAUjuQ,cAAc7U,WAAW,QAAU,IAAIkY,OAAO,iCAAkC,KAAKC,KAAKlX,KAAK6hR,OAChH1jR,KAAK,iCAER,EAEH,MAAM6jT,qBAAqBtwB,aACzB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eAAgB,CAAC,SAAU,UAChD,EAEH,MAAM4L,mBAAmBvwB,aACvB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,CAAC,OAAQ,SAAU,OAAQ,UAC9D,EAEH,MAAM6L,sBAAsBhzB,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SAAU,MAC9Br2S,KAAKmiT,YAAc,KACnBniT,KAAKoiT,QAAU,KACfpiT,KAAKqiT,WAAa,IACnB,EAEH,MAAMC,oBAAoB5wB,aACxB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,CAAC,MAAO,QAC5C,EAEH,MAAMkM,iBAAiB7wB,aACrB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,CAAC,SAAU,QAAS,cAAe,QAAS,WAC7E,EAEH,MAAMmM,oBAAoBtzB,UACxB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,MACnCr2S,KAAKyiT,eAAiB,KACtBziT,KAAK0iT,YAAc,IACpB,EAEH,MAAMC,eAAezzB,UACnB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UACpBr2S,KAAK+jB,KAAOojQ,gBAAgB1Z,EAAW1pP,KAAM,CAAC,oBAAqB,KAAM,OAC1E,EAEH,MAAM6+R,kBAAkBjxB,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACrB,EAEH,MAAMwM,kBAAkBjxB,cACtB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,GAAGxyS,GAAK,MAC1C,EAEH,MAAMi/S,qBAAqBpxB,aACzB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,eAAgB,CAAC,OAAQ,WAAY,MAAO,MAAO,OACxE,EAEH,MAAM0M,kBAAkBpxB,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YACrB,EAEH,MAAM2M,oBAAoBpxB,cACxB,WAAA3xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,cAAe,KAAKxyS,GAAKA,GAAK,GAAKA,GAAK,KAC7D,EAEH,MAAMo/S,uBAAuBnxB,SAC3B,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,iBACrB,EAEH,MAAM6M,eAAepxB,SACnB,WAAA7xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SACrB,EAEH,MAAM8M,wBAAwBj0B,UAC5B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,MAChCr2S,KAAKmlB,KAAO,KACZnlB,KAAKw1R,SAAW,KAChBx1R,KAAKojT,UAAY,KACjBpjT,KAAK2/Q,IAAM,KACX3/Q,KAAK25S,IAAM,IACZ,EAEH,MAAM0J,kBAAkB3xB,aACtB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,CAAC,QAAS,QAAS,cAAe,WACpE,EAEH,MAAMiN,WAAW5xB,aACf,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,KAAM,CAAC,OAAQ,SAAU,SAAU,SAAU,SAAU,OAC5E,EAEH,MAAMkN,sBAAsBr0B,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,iBACpBr2S,KAAKwjT,WAAa18B,WAAW,CAC3Bh0Q,KAAM26P,EAAW+1C,WACjBz8B,aAAc,EACdC,SAAUnjR,GAAKA,GAAK,GAEvB,EAEH,MAAM4/S,cAAcv0B,UAClB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,QAAS,MAC7Br2S,KAAK2hP,KAAO,IAAI2tC,cACjB,EAEH,MAAMo0B,kBAAkBx0B,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,MACjCr2S,KAAK2jT,YAAc,KACnB3jT,KAAK4jT,QAAU,KACf5jT,KAAK6jT,SAAW,KAChB7jT,KAAK+8R,QAAU,KACf/8R,KAAKwyR,SAAW,KAChBxyR,KAAK8jT,OAAS,KACd9jT,KAAK+jT,WAAa,IACnB,EAEH,MAAM/rP,aAAa05N,aACjB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,OAAQ,CAAC,OAAQ,UAAW,WAAY,WAAY,QAAS,MAAO,YAAa,SAAU,MAAO,aACvH,EAEH,MAAM2N,YAAYryB,aAChB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MACrB,EAEH,MAAM4N,wBAAwBvyB,aAC5B,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,WAAY,CAAC,YAAa,WAAY,aAAc,WACzE,EAEH,MAAM6N,mCAAmCzyB,cACvC,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,6BACrB,CACD,CAACp0B,MACCjiR,KAAK6hR,IAAY7hR,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,OAAO2Z,QAAOtnB,GAAK,CAAC,WAAY,YAAYpE,SAASoE,IACnG,EAEH,MAAM48S,4BAA4BzyB,aAChC,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,sBAAuB,CAAC,0BAA2B,sBAAuB,mBAAoB,cACnH,EAEH,MAAM+N,gBAAgB1yB,aACpB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OACpE,EAEH,MAAMgO,uBAAuBn1B,UAC3B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,kBACpBr2S,KAAKskT,YAAcn9B,gBAAgB1Z,EAAW62C,YAAa,CAAC,OAAQ,QAAS,WAC7EtkT,KAAKukT,YAAcp9B,gBAAgB1Z,EAAW82C,YAAa,CAAC,OAAQ,UACpEvkT,KAAKwkT,YAAcr9B,gBAAgB1Z,EAAW+2C,YAAa,CAAC,SAAU,YACvE,EAEH,MAAMC,0BAA0Bv1B,UAC9B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,oBAAqB,MACzCr2S,KAAK82S,eAAiB,KACtB92S,KAAK+2S,gBAAkB,KACvB/2S,KAAK0kT,qBAAuB,KAC5B1kT,KAAK2kT,aAAe,KACpB3kT,KAAK4kT,QAAU,KACf5kT,KAAK6kT,eAAiB,KACtB7kT,KAAK8kT,UAAY,KACjB9kT,KAAK+kT,kBAAoB,KACzB/kT,KAAKglT,aAAe,IACrB,EAEH,MAAMC,kBAAkB/1B,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,YAAa,MACjCr2S,KAAKD,KAAO0tQ,EAAW1tQ,KAAO0tQ,EAAW1tQ,KAAKqxQ,OAAS,GACvDpxQ,KAAK6qR,SAAW,KAChB7qR,KAAKkmR,IAAM,IACZ,EAEH,MAAMg/B,mBAAmBxzB,aACvB,WAAAzxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,aAAc,CAAC,WAAY,QAAS,YAAa,QAAS,QAC/E,EAEH,MAAM8O,eAAe1zB,cACnB,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,SACrB,CACD,CAACp0B,MACC,MAAMmjC,EAAOplT,KAAK6hR,IAAUzQ,OAAOl8P,MAAM,UAAW,GAAGC,KAAI5N,GAAKuH,SAASvH,EAAG,MAC5E,GAAI69S,EAAKv3B,MAAKtmR,GAAKuQ,MAAMvQ,KACvBvH,KAAK6hR,IAAY,CAAC,EAAG,OADvB,CAIIujC,EAAKlmT,SAAW,GAClBkmT,EAAKzjT,KAAKyjT,EAAK,IAEjBplT,KAAK6hR,IAAYujC,CAJhB,CAKF,EAEH,MAAMC,YAAYn2B,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAK2/Q,IAAM,IAAI2P,eACftvR,KAAK25S,IAAM,IAAIrqB,cAChB,EAEH,MAAMg2B,YAAYp2B,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAKulT,QAAU,IAChB,EAEH,MAAMC,YAAYt2B,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAKylT,MAAQ,KACbzlT,KAAK2/Q,IAAM,IACZ,EAEH,MAAM+lC,YAAYx2B,UAChB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMi2S,GAAc,MAAO,MAC3Br2S,KAAKD,KAAO0tQ,EAAW1tQ,KAAO0tQ,EAAW1tQ,KAAKqxQ,OAAS,GACvDpxQ,KAAKo8S,YAAc,KACnBp8S,KAAKq8S,UAAY,KACjBr8S,KAAK6qR,SAAW,KAChB7qR,KAAKkmR,IAAM,IACZ,EAEH,MAAMy/B,gBACJ,OAAQngC,IAAiBzlR,EAAM0tQ,GAC7B,GAAIk4C,gBAAgBj3T,eAAeqR,GACjC,OAAO4lT,gBAAgB5lT,GAAM0tQ,EAGhC,CACD,cAAOmrC,CAAQjF,GACb,OAAO,IAAI2C,QAAQ3C,EACpB,CACD,eAAO4C,CAAS5C,GACd,OAAO,IAAIiD,SAASjD,EACrB,CACD,qBAAOmD,CAAenD,GACpB,OAAO,IAAImD,eAAenD,EAC3B,CACD,sBAAOoD,CAAgBpD,GACrB,OAAO,IAAIoD,gBAAgBpD,EAC5B,CACD,qBAAO8O,CAAe9O,GACpB,OAAO,IAAIqD,eAAerD,EAC3B,CACD,2BAAO+Q,CAAqB/Q,GAC1B,OAAO,IAAIsD,qBAAqBtD,EACjC,CACD,iBAAO2F,CAAW3F,GAChB,OAAO,IAAIuD,WAAWvD,EACvB,CACD,0BAAOoL,CAAoBpL,GACzB,OAAO,IAAIwD,oBAAoBxD,EAChC,CACD,YAAOoF,CAAMpF,GACX,OAAO,IAAIyD,MAAMzD,EAClB,CACD,kBAAO6H,CAAY7H,GACjB,OAAO,IAAI0D,YAAY1D,EACxB,CACD,UAAO+L,CAAI/L,GACT,OAAO,IAAI2D,IAAI3D,EAChB,CACD,WAAOhyD,CAAKgyD,GACV,OAAO,IAAI4D,YAAY5D,EACxB,CACD,iBAAOlmC,CAAWkmC,GAChB,OAAO,IAAI6D,WAAW7D,EACvB,CACD,eAAO6C,CAAS7C,GACd,OAAO,IAAI8D,SAAS9D,EACrB,CACD,WAAOxuR,CAAKwuR,GACV,OAAO,IAAI+D,KAAK/D,EACjB,CACD,kBAAOyI,CAAYzI,GACjB,OAAO,IAAIgE,YAAYhE,EACxB,CACD,uBAAOgN,CAAiBhN,GACtB,OAAO,IAAIiE,iBAAiBjE,EAC7B,CACD,YAAOv7Q,CAAMu7Q,GACX,OAAO,IAAIkE,MAAMlE,EAClB,CACD,aAAOoM,CAAOpM,GACZ,OAAO,IAAIoE,OAAOpE,EACnB,CACD,aAAO8C,CAAO9C,GACZ,OAAO,IAAIqE,OAAOrE,EACnB,CACD,eAAOiS,CAASjS,GACd,OAAO,IAAI0E,SAAS1E,EACrB,CACD,+BAAO8E,CAAyB9E,GAC9B,OAAO,IAAI2E,yBAAyB3E,EACrC,CACD,2BAAO+E,CAAqB/E,GAC1B,OAAO,IAAI4E,qBAAqB5E,EACjC,CACD,kBAAOtvD,CAAYsvD,GACjB,OAAO,IAAI6E,YAAY7E,EACxB,CACD,aAAOr5B,CAAOq5B,GACZ,OAAO,IAAIgF,OAAOhF,EACnB,CACD,kBAAOgM,CAAYhM,GACjB,OAAO,IAAIqF,YAAYrF,EACxB,CACD,kBAAOqM,CAAYrM,GACjB,OAAO,IAAIsF,YAAYtF,EACxB,CACD,aAAOiN,CAAOjN,GACZ,OAAO,IAAIuF,OAAOvF,EACnB,CACD,cAAO13B,CAAQ03B,GACb,OAAO,IAAIwF,QAAQxF,EACpB,CACD,kBAAOwO,CAAYxO,GACjB,OAAO,IAAIyF,YAAYzF,EACxB,CACD,WAAO7gS,CAAK6gS,GACV,OAAO,IAAI0F,KAAK1F,EACjB,CACD,YAAO8R,CAAM9R,GACX,OAAO,IAAIkG,MAAMlG,EAClB,CACD,sBAAO8H,CAAgB9H,GACrB,OAAO,IAAImG,gBAAgBnG,EAC5B,CACD,kBAAOiK,CAAYjK,GACjB,OAAO,IAAIqG,YAAYrG,EACxB,CACD,uBAAOsM,CAAiBtM,GACtB,OAAO,IAAIsG,iBAAiBtG,EAC7B,CACD,aAAOsN,CAAOtN,GACZ,OAAO,IAAIuG,OAAOvG,EACnB,CACD,mBAAOgR,CAAahR,GAClB,OAAO,IAAIwG,aAAaxG,EACzB,CACD,oBAAOkD,CAAclD,GACnB,OAAO,IAAIyG,cAAczG,EAC1B,CACD,YAAO2H,CAAM3H,GACX,OAAO,IAAI0G,MAAM1G,EAClB,CACD,cAAOl7B,CAAQk7B,GACb,OAAO,IAAI2G,eAAe3G,EAC3B,CACD,iBAAO/T,CAAW+T,GAChB,OAAO,IAAI4G,kBAAkB5G,EAC9B,CACD,sBAAO6G,CAAgB7G,GACrB,OAAO,IAAI8G,gBAAgB9G,EAC5B,CACD,cAAOiR,CAAQjR,GACb,OAAO,IAAI+G,QAAQ/G,EACpB,CACD,aAAOmJ,CAAOnJ,GACZ,OAAO,IAAIgH,OAAOhH,EACnB,CACD,kBAAOoJ,CAAYpJ,GACjB,OAAO,IAAImH,YAAYnH,EACxB,CACD,cAAOyO,CAAQzO,GACb,OAAO,IAAIuH,QAAQvH,EACpB,CACD,gBAAOiG,CAAUjG,GACf,OAAO,IAAIwH,UAAUxH,EACtB,CACD,gBAAO0I,CAAU1I,GACf,OAAO,IAAIyH,UAAUzH,EACtB,CACD,eAAO9oB,CAAS8oB,GACd,OAAO,IAAI0H,gBAAgB1H,EAC5B,CACD,uBAAOuM,CAAiBvM,GACtB,OAAO,IAAIgI,iBAAiBhI,EAC7B,CACD,kBAAOgQ,CAAYhQ,GACjB,OAAO,IAAIiI,YAAYjI,EACxB,CACD,cAAOiQ,CAAQjQ,GACb,OAAO,IAAIkI,QAAQlI,EACpB,CACD,wBAAOiM,CAAkBjM,GACvB,OAAO,IAAImI,kBAAkBnI,EAC9B,CACD,sBAAO4F,CAAgB5F,GACrB,OAAO,IAAIoI,gBAAgBpI,EAC5B,CACD,uBAAOkN,CAAiBlN,GACtB,OAAO,IAAIqI,iBAAiBrI,EAC7B,CACD,kBAAOqL,CAAYrL,GACjB,OAAO,IAAIsI,YAAYtI,EACxB,CACD,UAAO8K,CAAI9K,GACT,OAAO,IAAIuI,IAAIvI,EAChB,CACD,mBAAOuN,CAAavN,GAClB,OAAO,IAAIwI,aAAaxI,EACzB,CACD,aAAO33O,CAAO23O,GACZ,OAAO,IAAI2I,OAAO3I,EACnB,CACD,YAAOh2S,CAAMg2S,GACX,OAAO,IAAI4I,MAAM5I,EAClB,CACD,iBAAOsL,CAAWtL,GAChB,OAAO,IAAI6I,WAAW7I,EACvB,CACD,aAAOtQ,CAAOsQ,GACZ,OAAO,IAAI8I,OAAO9I,EACnB,CACD,gBAAO7tB,CAAU6tB,GACf,OAAO,IAAI+I,UAAU/I,EACtB,CACD,UAAOz1S,CAAIy1S,GACT,OAAO,IAAIgJ,IAAIhJ,EAChB,CACD,UAAOx+R,CAAIw+R,GACT,OAAO,IAAIkJ,WAAWlJ,EACvB,CACD,iBAAO+K,CAAW/K,GAChB,OAAO,IAAIqJ,WAAWrJ,EACvB,CACD,cAAO7zS,CAAQ6zS,GACb,OAAO,IAAIsJ,eAAetJ,EAC3B,CACD,gBAAOsE,CAAUtE,GACf,OAAO,IAAIyJ,UAAUzJ,EACtB,CACD,WAAO5vR,CAAK4vR,GACV,OAAO,IAAI0J,KAAK1J,EACjB,CACD,mBAAOwM,CAAaxM,GAClB,OAAO,IAAI2J,aAAa3J,EACzB,CACD,YAAOuJ,CAAMvJ,GACX,OAAO,IAAI4J,MAAM5J,EAClB,CACD,eAAOkQ,CAASlQ,GACd,OAAO,IAAI6J,SAAS7J,EACrB,CACD,iBAAO+H,CAAW/H,GAChB,OAAO,IAAI8J,WAAW9J,EACvB,CACD,qBAAOkR,CAAelR,GACpB,OAAO,IAAI+J,eAAe/J,EAC3B,CACD,iBAAO51B,CAAW41B,GAChB,OAAO,IAAIgK,WAAWhK,EACvB,CACD,aAAOt8P,CAAOs8P,GACZ,OAAO,IAAIkK,OAAOlK,EACnB,CACD,gBAAOgL,CAAUhL,GACf,OAAO,IAAImK,UAAUnK,EACtB,CACD,gBAAO6F,CAAU7F,GACf,OAAO,IAAIoK,UAAUpK,EACtB,CACD,gBAAOmN,CAAUnN,GACf,OAAO,IAAIqK,UAAUrK,EACtB,CACD,cAAO4R,CAAQ5R,GACb,OAAO,IAAIsK,QAAQtK,EACpB,CACD,iBAAOiL,CAAWjL,GAChB,OAAO,IAAIuK,WAAWvK,EACvB,CACD,gBAAOmR,CAAUnR,GACf,OAAO,IAAIwK,UAAUxK,EACtB,CACD,iBAAOoN,CAAWpN,GAChB,OAAO,IAAI0K,WAAW1K,EACvB,CACD,yBAAOqN,CAAmBrN,GACxB,OAAO,IAAI2K,mBAAmB3K,EAC/B,CACD,WAAO3mP,CAAK2mP,GACV,OAAO,IAAI4K,KAAK5K,EACjB,CACD,UAAOwN,CAAIxN,GACT,OAAO,IAAI6K,IAAI7K,EAChB,CACD,UAAO5tB,CAAI4tB,GACT,OAAO,IAAImL,IAAInL,EAChB,CACD,WAAOuL,CAAKvL,GACV,OAAO,IAAI8L,KAAK9L,EACjB,CACD,kBAAOz5B,CAAYy5B,GACjB,OAAO,IAAIkM,YAAYlM,EACxB,CACD,wBAAOoR,CAAkBpR,GACvB,OAAO,IAAI2M,kBAAkB3M,EAC9B,CACD,cAAO5W,CAAQ4W,GACb,OAAO,IAAI4M,eAAe5M,EAC3B,CACD,wBAAOyM,CAAkBzM,GACvB,OAAO,IAAI6M,kBAAkB7M,EAC9B,CACD,eAAOnhB,CAASmhB,GACd,OAAO,IAAI8M,SAAS9M,EACrB,CACD,cAAOkF,CAAQlF,GACb,OAAO,IAAI+M,QAAQ/M,EACpB,CACD,YAAO74B,CAAM64B,GACX,OAAO,IAAI2N,MAAM3N,EAClB,CACD,uBAAO0M,CAAiB1M,GACtB,OAAO,IAAI4N,iBAAiB5N,EAC7B,CACD,mBAAOqR,CAAarR,GAClB,OAAO,IAAI6N,aAAa7N,EACzB,CACD,kBAAO+O,CAAY/O,GACjB,OAAO,IAAI8N,YAAY9N,EACxB,CACD,eAAOwL,CAASxL,GACd,OAAO,IAAI+N,SAAS/N,EACrB,CACD,SAAOxlE,CAAGwlE,GACR,OAAO,IAAIgO,GAAGhO,EACf,CACD,YAAOv1R,CAAMu1R,GACX,OAAO,IAAIiO,MAAMjO,EAClB,CACD,aAAOlwE,CAAOkwE,GACZ,OAAO,IAAIkO,OAAOlO,EACnB,CACD,eAAOne,CAASme,GACd,OAAO,IAAImO,SAASnO,EACrB,CACD,aAAOmQ,CAAOnQ,GACZ,OAAO,IAAIoO,OAAOpO,EACnB,CACD,mBAAOyL,CAAazL,GAClB,OAAO,IAAIqO,aAAarO,EACzB,CACD,iBAAO0O,CAAW1O,GAChB,OAAO,IAAIsO,WAAWtO,EACvB,CACD,aAAO/U,CAAO+U,GACZ,OAAO,IAAIuO,cAAcvO,EAC1B,CACD,kBAAO0L,CAAY1L,GACjB,OAAO,IAAI2O,YAAY3O,EACxB,CACD,eAAOwJ,CAASxJ,GACd,OAAO,IAAI4O,SAAS5O,EACrB,CACD,kBAAO2L,CAAY3L,GACjB,OAAO,IAAI6O,YAAY7O,EACxB,CACD,aAAOkL,CAAOlL,GACZ,OAAO,IAAIgP,OAAOhP,EACnB,CACD,gBAAO8F,CAAU9F,GACf,OAAO,IAAIiP,UAAUjP,EACtB,CACD,gBAAOyP,CAAUzP,GACf,OAAO,IAAIkP,UAAUlP,EACtB,CACD,mBAAO4L,CAAa5L,GAClB,OAAO,IAAImP,aAAanP,EACzB,CACD,gBAAOgD,CAAUhD,GACf,OAAO,IAAIoP,UAAUpP,EACtB,CACD,kBAAO4H,CAAY5H,GACjB,OAAO,IAAIqP,YAAYrP,EACxB,CACD,qBAAOuE,CAAevE,GACpB,OAAO,IAAIsP,eAAetP,EAC3B,CACD,aAAO6L,CAAO7L,GACZ,OAAO,IAAIuP,OAAOvP,EACnB,CACD,eAAOv5Q,CAASu5Q,GACd,OAAO,IAAIwP,gBAAgBxP,EAC5B,CACD,oBAAOmE,CAAcnE,GACnB,OAAO,IAAI4P,cAAc5P,EAC1B,CACD,gBAAOiJ,CAAUjJ,GACf,OAAO,IAAI0P,UAAU1P,EACtB,CACD,SAAOkH,CAAGlH,GACR,OAAO,IAAI2P,GAAG3P,EACf,CACD,YAAOmF,CAAMnF,GACX,OAAO,IAAI8P,MAAM9P,EAClB,CACD,gBAAOp7S,CAAUo7S,GACf,OAAO,IAAI+P,UAAU/P,EACtB,CACD,WAAOtkT,CAAKskT,GACV,OAAO,IAAI37O,KAAK27O,EACjB,CACD,UAAOh0B,CAAIg0B,GACT,OAAO,IAAIqQ,IAAIrQ,EAChB,CACD,eAAO3sB,CAAS2sB,GACd,OAAO,IAAIsQ,gBAAgBtQ,EAC5B,CACD,iCAAO+C,CAA2B/C,GAChC,OAAO,IAAIuQ,2BAA2BvQ,EACvC,CACD,0BAAOwE,CAAoBxE,GACzB,OAAO,IAAIwQ,oBAAoBxQ,EAChC,CACD,cAAOv+P,CAAQu+P,GACb,OAAO,IAAIyQ,QAAQzQ,EACpB,CACD,qBAAOyE,CAAezE,GACpB,OAAO,IAAI0Q,eAAe1Q,EAC3B,CACD,wBAAOh2B,CAAkBg2B,GACvB,OAAO,IAAI8Q,kBAAkB9Q,EAC9B,CACD,gBAAOyN,CAAUzN,GACf,OAAO,IAAIsR,UAAUtR,EACtB,CACD,iBAAOoQ,CAAWpQ,GAChB,OAAO,IAAIuR,WAAWvR,EACvB,CACD,aAAO+F,CAAO/F,GACZ,OAAO,IAAIwR,OAAOxR,EACnB,CACD,UAAOztB,CAAIytB,GACT,OAAO,IAAI0R,IAAI1R,EAChB,CACD,UAAOxtB,CAAIwtB,GACT,OAAO,IAAI2R,IAAI3R,EAChB,CACD,UAAOgG,CAAIhG,GACT,OAAO,IAAI6R,IAAI7R,EAChB,CACD,UAAO0N,CAAI1N,GACT,OAAO,IAAI+R,IAAI/R,EAChB,EAMH,MAAMkS,GAAuBpgC,GAAaE,cAAc3tP,GACxD,MAAM8tR,sBAAsB52B,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,gBAAiB,MAC7C7lT,KAAK+lT,eAAiB,IAAIz2B,eAC1BtvR,KAAKgmT,cAAgB,IAAI12B,eACzBtvR,KAAKimT,cAAgB,IAAI32B,cAC1B,EAEH,MAAM42B,6BAA6Bh3B,UACjC,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,wBAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM81B,8BAA8Bj3B,UAClC,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,yBAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAM+1B,kBAAkBz0B,aACtB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,aAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKsvB,MAAQm+O,EAAWn+O,OAAS,GACjCtvB,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKq3C,OAASo2N,EAAWp2N,QAAU,GACnCr3C,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMg2B,oBAAoB10B,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,eAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMi2B,mBAAmB30B,aACvB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,cAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMk2B,oBAAoB50B,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,eAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMm2B,2BAA2B70B,aAC/B,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,OAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMo2B,oBAAoB90B,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,eAC5B7lT,KAAKg4B,GAAKy1O,EAAWz1O,IAAM,GAC3Bh4B,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKowR,IAAM3iB,EAAW2iB,KAAO,GAC7BpwR,KAAKqwR,QAAU5iB,EAAW4iB,SAAW,EACtC,EAEH,MAAMq2B,uBAAuBx3B,UAC3B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,iBAAkB,MAC9C7lT,KAAK2mT,gBAAkBl5C,EAAWk5C,iBAAmB,GACrD3mT,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK4mT,qBAAuB,KAC5B5mT,KAAK6mT,sBAAwB,KAC7B7mT,KAAK28O,UAAY,KACjB38O,KAAK8mT,WAAa,KAClB9mT,KAAK+mT,YAAc,KACnB/mT,KAAKgnT,YAAc,IACpB,EAEH,MAAMC,sBAAsB/3B,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,gBAAiB,MAC7C7lT,KAAK2mT,gBAAkBl5C,EAAWk5C,iBAAmB,GACrD3mT,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAK2/Q,IAAM,IACZ,EAEH,MAAMunC,sBAAsBh4B,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMylT,GAAsB,gBAAiB,MAC7C7lT,KAAK2mT,gBAAkBl5C,EAAWk5C,iBAAmB,GACrD3mT,KAAKD,KAAO0tQ,EAAW1tQ,MAAQ,GAC/BC,KAAKmnT,YAAc,KACnBnnT,KAAK2/Q,IAAM,IACZ,EAEH,MAAMynC,uBACJ,OAAQ5hC,IAAiBzlR,EAAM0tQ,GAC7B,GAAI25C,uBAAuB14T,eAAeqR,GACxC,OAAOqnT,uBAAuBrnT,GAAM0tQ,EAGvC,CACD,oBAAOkY,CAAcguB,GACnB,OAAO,IAAImS,cAAcnS,EAC1B,CACD,2BAAOiT,CAAqBjT,GAC1B,OAAO,IAAIuS,qBAAqBvS,EACjC,CACD,4BAAOkT,CAAsBlT,GAC3B,OAAO,IAAIwS,sBAAsBxS,EAClC,CACD,gBAAOh3D,CAAUg3D,GACf,OAAO,IAAIyS,UAAUzS,EACtB,CACD,kBAAOwT,CAAYxT,GACjB,OAAO,IAAI0S,YAAY1S,EACxB,CACD,iBAAOmT,CAAWnT,GAChB,OAAO,IAAI2S,WAAW3S,EACvB,CACD,kBAAOoT,CAAYpT,GACjB,OAAO,IAAI4S,YAAY5S,EACxB,CACD,UAAOh0B,CAAIg0B,GACT,OAAO,IAAI6S,mBAAmB7S,EAC/B,CACD,kBAAOqT,CAAYrT,GACjB,OAAO,IAAI8S,YAAY9S,EACxB,CACD,qBAAOoS,CAAepS,GACpB,OAAO,IAAI+S,eAAe/S,EAC3B,CACD,oBAAOqS,CAAcrS,GACnB,OAAO,IAAIsT,cAActT,EAC1B,CACD,oBAAOsS,CAActS,GACnB,OAAO,IAAIuT,cAAcvT,EAC1B,EAOH,MAAM0T,GAAiB5hC,GAAaG,SAAS5tP,GAC7C,MAAMsvR,sBAAsBj4B,UAC1B,WAAApvR,CAAYwtQ,GACVrtQ,MAAMinT,GAAgB,OAAQ55C,EAC/B,CACD,CAACkW,MACC,OAAO,IACR,EAEH,MAAM4jC,iBAAiBr4B,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMinT,GAAgB,WAAY,MAClCrnT,KAAK8S,KAAO,KACZ9S,KAAKwwS,UAAY,IAClB,CACD,CAACpsB,IAAU9U,GACT,MAAMvvQ,EAAOuvQ,EAAM4U,KACfnkR,IAAS,QAAUuvQ,EAAM2U,MAAkBojC,IAAkBtnT,IAAS,aAAeuvQ,EAAM2U,MAAkBwB,GAAaz0D,UAAUh5L,MACtIh4B,KAAKD,GAAQuvQ,GAEftvQ,KAAKshR,IAAchS,EACpB,EAEH,MAAMk4C,kBACJ,OAAQhiC,IAAiBzlR,EAAM0tQ,GAC7B,GAAI+5C,kBAAkB94T,eAAeqR,GACnC,OAAOynT,kBAAkBznT,GAAM0tQ,EAGlC,CACD,eAAOmY,CAASnY,GACd,OAAO,IAAI85C,SAAS95C,EACrB,CACD,WAAO36P,CAAK26P,GACV,OAAO,IAAI65C,cAAc75C,EAC1B,EAOH,MAAMg6C,GAAmBhiC,GAAaK,UAAU9tP,GAChD,MAAM0vR,wBAAwBx4B,UAC5B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,kBAAmB,MAC3CznT,KAAKD,KAAO,YACZC,KAAK2nT,SAAW,IAAIr4B,eAAe,GACnCtvR,KAAK4nT,SAAW,KAChB5nT,KAAK6nT,cAAgB,KACrB7nT,KAAK8nT,WAAa,IAAIx4B,eAAe,EACtC,EAEH,MAAMy4B,uBAAuBp2B,aAC3B,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,kBACxBznT,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,SAAU,UAAW,WACpE,EAEH,MAAMioT,wBAAwB94B,UAC5B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,kBAAmB,MAC3CznT,KAAKioT,eAAiB,IAAI34B,eAAe,EAC1C,EAEH,MAAM44B,oBAAoBv2B,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,eACxBznT,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,OAAQ,OAAQ,MAAO,SACtE,EAEH,MAAMooT,qBAAqBj5B,UACzB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,eAAgB,MACxCznT,KAAKooT,YAAc,IAAI94B,eAAe,EACvC,EAEH,MAAM+4B,wBAAwB52B,cAC5B,WAAAxxR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,kBACzB,EAEH,MAAMa,YAAY32B,aAChB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,MACzB,EAEH,MAAMc,iBAAiBr5B,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,WAAY,MACpCznT,KAAKwoT,KAAO1hC,WAAW,CACrBh0Q,KAAM26P,EAAW+6C,KACjBzhC,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAKyoT,IAAM,IAAIn5B,eAAe,EAC/B,EAEH,MAAMo5B,YAAY/2B,aAChB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,MACzB,EAEH,MAAMkB,iBAAiBz5B,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,WAAY,MACpCznT,KAAK4oT,IAAM,IAAIt5B,eAAe,EAC/B,EAEH,MAAMu5B,0BAA0B35B,UAC9B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,SAAU,MAClCznT,KAAKqsQ,KAAOoB,EAAWpB,MAAQ,GAC/BrsQ,KAAKD,KAAO,UACZC,KAAK8oT,gBAAkB,KACvB9oT,KAAK+oT,gBAAkB,KACvB/oT,KAAKgpT,aAAe,KACpBhpT,KAAKipT,gBAAkB,KACvBjpT,KAAKkpT,eAAiB,KACtBlpT,KAAKmpT,cAAgB,KACrBnpT,KAAKopT,aAAe,KACpBppT,KAAKqpT,UAAY,IAClB,EAEH,MAAMC,6BAA6Bp6B,UACjC,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,YAAa,MACrCznT,KAAKqjS,OAAS,IAAI/T,cACnB,EAEH,MAAMi6B,iBAAiB53B,aACrB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,WACzB,EAEH,MAAM+B,sBAAsBt6B,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,gBAAiB,MACzCznT,KAAKypT,SAAW,IAAIn6B,eAAe,EACpC,EAEH,MAAMo6B,cAAc/3B,aAClB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,QACzB,EAEH,MAAMkC,mBAAmBz6B,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,aAAc,MACtCznT,KAAKwoT,KAAO1hC,WAAW,CACrBh0Q,KAAM26P,EAAW+6C,KACjBzhC,aAAc,EACdC,SAAUz/Q,GAAKA,IAAM,IAEvBvH,KAAK4pT,MAAQ,IAAIt6B,eAAe,GACjC,EAEH,MAAMu6B,sBAAsBl4B,aAC1B,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,iBACxBznT,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,OAAQ,OAAQ,MAAO,SACtE,EAEH,MAAM+pT,uBAAuB56B,UAC3B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,iBAAkB,MAC1CznT,KAAK+pT,cAAgB,IAAIz6B,eAAe,EACzC,EAEH,MAAM06B,qBAAqBr4B,aACzB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,gBACxBznT,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,UAAW,WAAY,UAAW,QAAS,QAC1F,EAEH,MAAMkqT,sBAAsB/6B,UAC1B,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,gBAAiB,MACzCznT,KAAKkqT,aAAe,IAAI56B,eAAe,EACxC,EAEH,MAAM66B,oBAAoBx4B,aACxB,WAAA1xR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,eACxBznT,KAAKD,KAAOonR,gBAAgB1Z,EAAW1tQ,KAAM,CAAC,OAAQ,OAAQ,MAAO,SACtE,EAEH,MAAMqqT,qBAAqBl7B,UACzB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,eAAgB,MACxCznT,KAAKqqT,YAAc,IAAI/6B,eAAe,EACvC,EAEH,MAAMg7B,iBAAiBp7B,UACrB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,WAAY,MACpCznT,KAAKD,KAAO0tQ,EAAW1tQ,KAAO,EAC/B,EAEH,MAAMwqT,kBAAkBr7B,UACtB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMqnT,GAAkB,YAAa,MACrCznT,KAAKwqT,SAAW,IAAIl7B,cACrB,EAEH,MAAMm7B,mBACJ,OAAQjlC,IAAiBzlR,EAAM0tQ,GAC7B,GAAIg9C,mBAAmB/7T,eAAeqR,GACpC,OAAO0qT,mBAAmB1qT,GAAM0tQ,EAGnC,CACD,sBAAOq7C,CAAgBnV,GACrB,OAAO,IAAI+T,gBAAgB/T,EAC5B,CACD,qBAAOsU,CAAetU,GACpB,OAAO,IAAIoU,eAAepU,EAC3B,CACD,sBAAOoV,CAAgBpV,GACrB,OAAO,IAAIqU,gBAAgBrU,EAC5B,CACD,kBAAOyU,CAAYzU,GACjB,OAAO,IAAIuU,YAAYvU,EACxB,CACD,mBAAOqV,CAAarV,GAClB,OAAO,IAAIwU,aAAaxU,EACzB,CACD,sBAAOsV,CAAgBtV,GACrB,OAAO,IAAI0U,gBAAgB1U,EAC5B,CACD,UAAO8U,CAAI9U,GACT,OAAO,IAAI2U,IAAI3U,EAChB,CACD,eAAOgU,CAAShU,GACd,OAAO,IAAI4U,SAAS5U,EACrB,CACD,UAAOiV,CAAIjV,GACT,OAAO,IAAI+U,IAAI/U,EAChB,CACD,eAAOiU,CAASjU,GACd,OAAO,IAAIgV,SAAShV,EACrB,CACD,aAAOtQ,CAAOsQ,GACZ,OAAO,IAAIkV,kBAAkBlV,EAC9B,CACD,gBAAO7tB,CAAU6tB,GACf,OAAO,IAAI2V,qBAAqB3V,EACjC,CACD,eAAO8V,CAAS9V,GACd,OAAO,IAAI4V,SAAS5V,EACrB,CACD,oBAAOkU,CAAclU,GACnB,OAAO,IAAI6V,cAAc7V,EAC1B,CACD,YAAOiW,CAAMjW,GACX,OAAO,IAAI+V,MAAM/V,EAClB,CACD,iBAAOmU,CAAWnU,GAChB,OAAO,IAAIgW,WAAWhW,EACvB,CACD,oBAAOoW,CAAcpW,GACnB,OAAO,IAAIkW,cAAclW,EAC1B,CACD,qBAAOuV,CAAevV,GACpB,OAAO,IAAImW,eAAenW,EAC3B,CACD,mBAAOuW,CAAavW,GAClB,OAAO,IAAIqW,aAAarW,EACzB,CACD,oBAAOwV,CAAcxV,GACnB,OAAO,IAAIsW,cAActW,EAC1B,CACD,kBAAO0W,CAAY1W,GACjB,OAAO,IAAIwW,YAAYxW,EACxB,CACD,mBAAOyV,CAAazV,GAClB,OAAO,IAAIyW,aAAazW,EACzB,CACD,eAAO6W,CAAS7W,GACd,OAAO,IAAI2W,SAAS3W,EACrB,CACD,gBAAO0V,CAAU1V,GACf,OAAO,IAAI4W,UAAU5W,EACtB,EAMH,MAAM+W,GAAkBjlC,GAAaz0D,UAAUh5L,GAC/C,MAAM2yR,4BAA4Bz7B,UAChC,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMsqT,GAAiB,YAAa,KACrC,EAEH,MAAME,mBACJ,OAAQplC,IAAiBzlR,EAAM0tQ,GAC7B,GAAIm9C,mBAAmBl8T,eAAeqR,GACpC,OAAO6qT,mBAAmB7qT,GAAM0tQ,EAGnC,CACD,gBAAOz8C,CAAUy8C,GACf,OAAO,IAAIk9C,oBAAoBl9C,EAChC,EAMH,MAAMo9C,GAAmBplC,GAAaQ,WAAWjuP,GACjD,MAAM8yR,mBAAmB57B,UACvB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAMyqT,GAAkB,aAAc,KACvC,EAEH,MAAME,oBACJ,OAAQvlC,IAAiBzlR,EAAM0tQ,GAC7B,GAAIs9C,oBAAoBr8T,eAAeqR,GACrC,OAAOgrT,oBAAoBhrT,GAAM0tQ,EAGpC,CACD,iBAAOwY,CAAWxY,GAChB,OAAO,IAAIq9C,WAAWr9C,EACvB,EAOH,MAAMu9C,GAAYvlC,GAAaU,IAAInuP,GACnC,MAAMizR,gBAAgB/7B,UACpB,WAAAjvR,CAAYwtQ,GACVrtQ,MAAM4qT,GAAW,MAAO,MACxBhrT,KAAKkrT,KAAOz9C,EAAWy9C,MAAQ,GAC/BlrT,KAAKqoS,UAAY56B,EAAW46B,WAAa,GACzCroS,KAAKs6Q,OAAS,KACdt6Q,KAAK2lR,cAAgB,KACrB3lR,KAAK4lR,SAAW,KAChB5lR,KAAK8lR,UAAY,KACjB9lR,KAAKimR,WAAa,IAAIqJ,eACtBtvR,KAAKo6B,SAAW,IACjB,CACD,CAACiqP,IAAe/U,GACd,MAAMoW,EAAKD,GAAanW,EAAM4U,KAC9B,OAAOwB,GAAMpW,EAAM2U,MAAkByB,EAAG1tP,EACzC,EAEH,MAAMmzR,aACJ,OAAQ3lC,IAAiBzlR,EAAM0tQ,GAC7B,GAAI09C,aAAaz8T,eAAeqR,GAC9B,OAAOorT,aAAaprT,GAAM0tQ,EAG7B,CACD,UAAO0Y,CAAI1Y,GACT,OAAO,IAAIw9C,QAAQx9C,EACpB,EASH,MAAM29C,GAAc3lC,GAAaY,MAAMruP,GACvC,MAAMqzR,GAAY3/S,SAClB,MAAM4/S,GAAe,IAAIp8S,IAAI,CAAC,QAAS,OAAQ,cAAe,YAAa,eAAgB,aAAc,cAAe,SAAU,gBAAiB,cAAe,eAAgB,aAAc,iBAAkB,cAAe,UAAW,mBAAoB,oBAAqB,oBAAqB,eAAgB,WAAY,aAAc,kBAAmB,cAAe,iBAAkB,SAAU,eAAgB,4BAA6B,0BAA2B,eAAgB,kBAC1e,MAAMq8S,GAAe,IAAIvhT,IAAI,CAAC,CAAC,mBAAoB,cAAe,CAAC,oBAAqB,eAAgB,CAAC,oBAAqB,eAAgB,CAAC,eAAgBxK,GAASA,IAAU,OAAS,OAAS,UAAW,CAAC,4BAA6BA,GAAS,UAAU+B,KAAK+D,IAAI,EAAG/D,KAAKC,IAAIsN,SAAStP,GAAS,MAAM+Y,QAAQ,OAAQ,CAAC,0BAA2B/Y,GAAS,UAAU+B,KAAK+D,IAAI,EAAG/D,KAAKC,IAAIsN,SAAStP,GAAS,MAAM+Y,QAAQ,OAAQ,CAAC,eAAgB,IAAK,CAAC,gBAAiB,IAAK,CAAC,YAAa,CAAC/Y,EAAOgsT,KAC1ehsT,EAAQgsT,EAAShyD,SAAW4tB,eAAe5nR,GAC3C,OAAOwyR,gBAAgB,IAAOxyR,EAAM,GAClC,CAAC,iBAAkBA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,cAAeA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,SAAUA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,gBAAiBA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,cAAeA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,eAAgBA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,aAAcA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,cAAeA,GAASwyR,gBAAgB5K,eAAe5nR,KAAU,CAAC,cAAeA,GAASA,GAAQ,CAAC,iBAAkBA,GAASwyR,gBAAgB5K,eAAe5nR,OAChnB,MAAMisT,GAAe,OACrB,MAAMC,GAAa,WACnB,MAAMC,GAAwB,SAC9B,SAASC,SAASC,EAAUniR,EAAMoiR,GAChC,MAAM/sE,EAAQ5wP,OAAO0d,OAAO,MAC5B,IAAKggT,EACH,OAAO9sE,EAET,MAAMysE,EAAWr9T,OAAO0d,OAAO,MAC/B,IAAK,MAAO5d,EAAKuR,KAAUqsT,EAAS32S,MAAM,KAAKC,KAAI2Z,GAAKA,EAAE5Z,MAAM,IAAK,KAAK,CACxE,MAAMoxN,EAAUilF,GAAaj9T,IAAIL,GACjC,GAAIq4O,IAAY,GACd,SAEF,IAAIylF,EAAWvsT,EACX8mO,IACFylF,SAAkBzlF,IAAY,SAAWA,EAAUA,EAAQ9mO,EAAOgsT,IAEhEv9T,EAAIi7R,SAAS,SACfnqC,EAAMxmP,UAAYwmP,EAAMxmP,UAAY,GAAGwmP,EAAM9wP,MAAQ89T,IAAaA,EAElEhtE,EAAM9wP,EAAIsa,WAAW,gBAAgB,CAAC0B,EAAG1C,IAAMA,EAAEqP,iBAAkBm1S,CAEtE,CACGhtE,EAAMjoO,YACRm/Q,cAAc,CACZxM,SAAU1qC,EAAMjoO,WAChBa,OAAQonO,EAAMtnO,YAAc,SAC5BiyQ,QAAS3qC,EAAMwqD,WAAa,SAC5B18R,KAAM2+S,EAAShyD,UAAY,GAC1B9vN,EAAMA,EAAKw5O,IAAa2G,WAAY9qC,GAEzC,GAAI+sE,GAAY/sE,EAAMoqD,eAAiBpqD,EAAMoqD,gBAAkB,OAASpqD,EAAMya,SAAU,CACtF,MAAMwyD,EAA0B,KAChC,MAAMC,EAAkB,KACxB,MAAMzyD,EAAW4tB,eAAeroC,EAAMya,UACtCza,EAAMya,SAAWw4B,gBAAgBx4B,EAAWwyD,GAC5CjtE,EAAMoqD,cAAgBnX,gBAAgBzwR,KAAKsrB,KAAKu6P,eAAeroC,EAAMoqD,gBAAkB3vC,EAAWyyD,EACnG,CACGH,GAAY/sE,EAAMya,WACpBza,EAAMya,SAAW,QAAQza,EAAMya,mCAEjC07B,cAAcn2C,GACd,OAAOA,CACT,CACA,SAASmtE,WAAWxiR,GAClB,OAAKA,EAAKq1M,MAGHr1M,EAAKq1M,MAAMqyB,OAAOl8P,MAAM,WAAW2Z,QAAOC,KAAOA,IAAG3Z,KAAI2Z,GAAKA,EAAE5Z,MAAM,UAAW,KAAI2Z,QAAO,EAAE5gC,EAAKuR,MACnGvR,IAAQ,eACVy7C,EAAKw5O,IAAa+lB,cAAc75R,IAAI5P,GAEtC,OAAO8rT,GAAa19S,IAAI3f,EAAI,IAC3BknB,KAAIw8R,GAAMA,EAAG/vS,KAAK,OAAMA,KAAK,KAPvB,EAQX,CACA,MAAMuqT,GAAW,IAAIj9S,IAAI,CAAC,OAAQ,SAClC,MAAMk9S,oBAAoB/8B,UACxB,WAAApvR,CAAYwtQ,EAAY1tQ,GACtBK,MAAMgrT,GAAarrT,GACnBC,KAAKqrT,IAAa,MAClBrrT,KAAK++O,MAAQ0uB,EAAW1uB,OAAS,EAClC,CACD,CAACyiC,IAAQ96C,GACPtmO,MAAMohR,IAAQ96C,GACd1mO,KAAK++O,MAAQmtE,WAAWlsT,KACzB,CACD,CAACohR,MACC,OAAQ+qC,GAASv+S,IAAI5N,KAAKkkR,IAC3B,CACD,CAACI,IAASxiR,EAAKgqT,EAAW,OACxB,GAAKA,EAMH9rT,KAAKqrT,IAAa,SANL,CACbvpT,EAAMA,EAAIyG,WAAWmjT,GAAY,IAC5B1rT,KAAK++O,MAAM57O,SAAS,sBACvBrB,EAAMA,EAAIyG,WAAWkjT,GAAc,KAE3C,CAGQ3pT,IACF9B,KAAK6hR,KAAa//Q,EAErB,CACD,CAACyiR,IAAa8O,EAASg5B,EAAU,MAC/B,MAAM7iC,EAAUr7R,OAAO0d,OAAO,MAC9B,MAAMo+Q,EAAS,CACbE,IAAKhnO,IACLinO,OAAQjnO,IACRuF,KAAMvF,IACNknO,MAAOlnO,KAET,IAAIi4K,EAAa,KACjB,IAAK,MAAOntO,EAAKuR,KAAUQ,KAAK++O,MAAM7pO,MAAM,KAAKC,KAAI2Z,GAAKA,EAAE5Z,MAAM,IAAK,KACrE,OAAQjnB,GACN,IAAK,cACHu7R,EAAQC,SAAW5C,YAAYrnR,GAC/B,MACF,IAAK,YACHgqR,EAAQ38Q,KAAOu6Q,eAAe5nR,GAC9B,MACF,IAAK,cACHgqR,EAAQ7xQ,OAASnY,EACjB,MACF,IAAK,aACHgqR,EAAQE,QAAUlqR,EAClB,MACF,IAAK,iBACHgqR,EAAQc,cAAgBlD,eAAe5nR,GACvC,MACF,IAAK,SACH,MAAMkO,EAASlO,EAAM0V,MAAM,OAAOC,KAAI5N,GAAK6/Q,eAAe7/Q,KAC1D,OAAQmG,EAAOxO,QACb,KAAK,EACH+qR,EAAOE,IAAMF,EAAOG,OAASH,EAAOvhO,KAAOuhO,EAAOI,MAAQ38Q,EAAO,GACjE,MACF,KAAK,EACHu8Q,EAAOE,IAAMF,EAAOG,OAAS18Q,EAAO,GACpCu8Q,EAAOvhO,KAAOuhO,EAAOI,MAAQ38Q,EAAO,GACpC,MACF,KAAK,EACHu8Q,EAAOE,IAAMz8Q,EAAO,GACpBu8Q,EAAOG,OAAS18Q,EAAO,GACvBu8Q,EAAOvhO,KAAOuhO,EAAOI,MAAQ38Q,EAAO,GACpC,MACF,KAAK,EACHu8Q,EAAOE,IAAMz8Q,EAAO,GACpBu8Q,EAAOvhO,KAAOh7C,EAAO,GACrBu8Q,EAAOG,OAAS18Q,EAAO,GACvBu8Q,EAAOI,MAAQ38Q,EAAO,GACtB,MAEJ,MACF,IAAK,aACHu8Q,EAAOE,IAAM/C,eAAe5nR,GAC5B,MACF,IAAK,gBACHyqR,EAAOG,OAAShD,eAAe5nR,GAC/B,MACF,IAAK,cACHyqR,EAAOvhO,KAAO0+N,eAAe5nR,GAC7B,MACF,IAAK,eACHyqR,EAAOI,MAAQjD,eAAe5nR,GAC9B,MACF,IAAK,cACH47N,EAAagsD,eAAe5nR,GAC5B,MAGN6zR,EAAQ1I,SAASnB,EAASS,EAAQ7uD,GAClC,GAAIp7N,KAAK6hR,IACPwR,EAAQjI,UAAUprR,KAAK6hR,UAEvB,IAAK,MAAMvS,KAAStvQ,KAAK4iR,MACnBtT,EAAM4U,MAAe,QAIzB5U,EAAMiV,IAAa8O,GAHjBA,EAAQjI,UAAU9b,EAAMuS,KAM1BwqC,GACFh5B,EAAQvI,SAEX,CACD,CAAC1F,IAASyK,GACR,MAAMtmP,EAAW,GACjBvpC,KAAKgiR,IAAU,CACbz4O,YAEFvpC,KAAKuhR,IAAiB,CAAA,GACtB,GAAIh4O,EAASrqC,SAAW,IAAMc,KAAK6hR,IACjC,OAAOmG,WAAWE,MAEpB,IAAI1oR,EAEFA,EADEQ,KAAKqrT,IACCrrT,KAAK6hR,IAAY7hR,KAAK6hR,IAAUt5Q,WAAWojT,GAAuB,WAAQ5qT,EAE1Ef,KAAK6hR,UAAa9gR,EAE5B,OAAOinR,WAAWG,QAAQ,CACxBpoR,KAAMC,KAAKkkR,IACXzW,WAAY,CACV9xN,KAAM37C,KAAK27C,KACXojM,MAAO6sE,SAAS5rT,KAAK++O,MAAO/+O,KAAMA,KAAKqrT,MAEzC9hR,WACA/pC,SAEH,EAEH,MAAMknB,UAAU0lS,YACd,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,KAClBztQ,KAAK27C,KAAOu6O,OAAOzoB,EAAW9xN,OAAS,EACxC,EAEH,MAAM3xB,UAAUoiS,YACd,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,IACnB,CACD,CAAC8W,IAAa8O,GACZA,EAAQi5B,SAAS,CACf30S,OAAQ,SAEVvX,MAAMmkR,IAAa8O,GACnBA,EAAQvI,SACT,EAEH,MAAMyhC,aAAaH,YACjB,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,OACnB,CACD,CAAC2X,IAASyK,GACR,MAAMtmD,EAAMnpO,MAAMglR,IAASyK,GAC3B,MAAMzH,KACJA,GACE7+C,EACJ,IAAK6+C,EACH,OAAOJ,WAAWE,MAEpBE,EAAKroR,KAAO,MACZqoR,EAAK3a,WAAWinB,MAAQ,CAAC,WACzB,OAAOnrD,CACR,EAEH,MAAMijF,WAAWJ,YACf,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,KACnB,CACD,CAACyX,MACC,MAAO,IACR,CACD,CAACX,IAAa8O,GACZA,EAAQjI,UAAU,KACnB,CACD,CAAChG,IAASyK,GACR,OAAO7H,WAAWG,QAAQ,CACxBpoR,KAAM,MAET,EAEH,MAAM0sT,aAAaL,YACjB,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,OACnB,CACD,CAAC2X,IAASyK,GACR,MAAMtmP,EAAW,GACjBvpC,KAAKgiR,IAAU,CACbz4O,YAEFvpC,KAAKuhR,IAAiB,CAAA,GACtB,GAAIh4O,EAASrqC,SAAW,EACtB,OAAO8oR,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACVinB,MAAO,CAAC,WACR31C,MAAO,CAAE,GAEXv/O,MAAOQ,KAAK6hR,KAAa,KAG7B,GAAIt4O,EAASrqC,SAAW,EAAG,CACzB,MAAMowQ,EAAQ/lO,EAAS,GACvB,GAAI+lO,EAAM7B,YAAYinB,MAAMvxR,SAAS,WACnC,OAAO6kR,WAAWG,QAAQ7Y,EAE7B,CACD,OAAO0Y,WAAWG,QAAQ,CACxBpoR,KAAM,MACN0tQ,WAAY,CACVinB,MAAO,CAAC,WACR31C,MAAO,CAAE,GAEXx1M,YAEH,EAEH,MAAM2gB,UAAUkiQ,YACd,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,IACnB,CACD,CAAC8W,IAAa8O,GACZA,EAAQi5B,SAAS,CACf5iC,QAAS,WAEXtpR,MAAMmkR,IAAa8O,GACnBA,EAAQvI,SACT,EAEH,MAAM4hC,WAAWN,YACf,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,KACnB,EAEH,MAAMk/C,WAAWP,YACf,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,KACnB,EAEH,MAAMhyL,UAAU2wO,YACd,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,IACnB,CACD,CAAC8W,IAAa8O,GACZjzR,MAAMmkR,IAAa8O,EAAS,OAC5BA,EAAQjI,UAAU,MAClBiI,EAAQlI,UACRkI,EAAQvI,SACT,CACD,CAAC5F,MACC,MAAM0nC,EAAW5sT,KAAKgjR,MAAcJ,MACpC,OAAIgqC,EAAS5yR,IAAI,KAAOh6B,KACfI,MAAM8kR,MAER9kR,MAAM8kR,MAAW,IACzB,EAEH,MAAM2nC,aAAaT,YACjB,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,OACnB,EAEH,MAAMq/C,YAAYV,YAChB,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,MACnB,EAEH,MAAMs/C,YAAYX,YAChB,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,MACnB,EAEH,MAAMu/C,WAAWZ,YACf,WAAAnsT,CAAYwtQ,GACVrtQ,MAAMqtQ,EAAY,KACnB,EAEH,MAAMw/C,eACJ,OAAQznC,IAAiBzlR,EAAM0tQ,GAC7B,GAAIw/C,eAAev+T,eAAeqR,GAChC,OAAOktT,eAAeltT,GAAM0tQ,EAG/B,CACD,QAAO/nQ,CAAE+nQ,GACP,OAAO,IAAI/mP,EAAE+mP,EACd,CACD,QAAOrpQ,CAAEqpQ,GACP,OAAO,IAAIzjP,EAAEyjP,EACd,CACD,WAAOy/C,CAAKz/C,GACV,OAAO,IAAI8+C,KAAK9+C,EACjB,CACD,SAAO0/C,CAAG1/C,GACR,OAAO,IAAI++C,GAAG/+C,EACf,CACD,WAAO2a,CAAK3a,GACV,OAAO,IAAIg/C,KAAKh/C,EACjB,CACD,QAAOpsQ,CAAEosQ,GACP,OAAO,IAAIvjN,EAAEujN,EACd,CACD,SAAO2/C,CAAG3/C,GACR,OAAO,IAAIi/C,GAAGj/C,EACf,CACD,SAAO4/C,CAAG5/C,GACR,OAAO,IAAIk/C,GAAGl/C,EACf,CACD,QAAO9oQ,CAAE8oQ,GACP,OAAO,IAAIhyL,EAAEgyL,EACd,CACD,WAAO6/C,CAAK7/C,GACV,OAAO,IAAIo/C,KAAKp/C,EACjB,CACD,UAAO8/C,CAAI9/C,GACT,OAAO,IAAIq/C,IAAIr/C,EAChB,CACD,UAAO+/C,CAAI//C,GACT,OAAO,IAAIs/C,IAAIt/C,EAChB,CACD,SAAOggD,CAAGhgD,GACR,OAAO,IAAIu/C,GAAGv/C,EACf,EAaH,MAAMigD,GAAiB,CACrBpzC,OAAQqrC,gBACR1oB,WAAYmqB,uBACZxhC,SAAU4hC,kBACV1hC,UAAW2kC,mBACXz5F,UAAW45F,mBACX3kC,WAAY8kC,oBACZ3wR,SAAUs5Q,kBACVvtB,IAAKglC,aACL9kC,MAAO4mC,gBAMT,MAAMU,iBACJ,WAAA1tT,CAAYkvR,GACVnvR,KAAK4tT,YAAcz+B,CACpB,CACD,CAAC3J,IAAiBzlR,EAAM0tQ,GACtB,OAAO,IAAI4hB,UAAUrvR,KAAK4tT,YAAa7tT,EAAM0tQ,EAC9C,EAWH,MAAMogD,aAAa3+B,UACjB,WAAAjvR,CAAYqjN,GACVljN,OAAO,EAAG,OAAQjS,OAAO0d,OAAO,OAChC7L,KAAK6V,QAAU,KACf7V,KAAKojR,IAAQ9/D,CACd,CACD,CAAC8gE,IAAU9U,GACTtvQ,KAAK6V,QAAUy5P,EACf,OAAO,IACR,CACD,CAAC2S,MACC7hR,MAAM6hR,MACN,GAAIjiR,KAAK6V,QAAQukB,oBAAoB0yQ,SAAU,CAC7C9sS,KAAKojR,IAAMz1Q,IAAIg3Q,GAAO3kR,KAAK6V,SAC3B7V,KAAK6V,QAAQukB,SAASwqP,IAAoB5kR,KAAKojR,KAC/CpjR,KAAK6V,QAAQukB,SAASgpP,IAAQpjR,KAAKojR,GACpC,CACF,EAEH,MAAM0qC,cAAc5+B,UAClB,WAAAjvR,GACEG,OAAO,EAAG,GAAIjS,OAAO0d,OAAO,MAC7B,CACD,CAACu4Q,IAAUn6Q,GACT,OAAO,KACR,EAEH,MAAM8jT,QACJ,WAAA9tT,CAAY+tT,EAAgB,MAC1BhuT,KAAKiuT,gBAAkB,GACvBjuT,KAAKkuT,iBAAmB,EACxBluT,KAAKmuT,mBAAqB,IAAInkT,IAC9BhK,KAAKouT,YAAc,IAAIpkT,IACvBhK,KAAKquT,UAAY9sT,KAAK+D,OAAOnX,OAAOuf,OAAO+3Q,IAActwQ,KAAI,EAC3D6iB,QACIA,KACNh4B,KAAKsuT,kBAAoBN,GAAiB,IAAIL,mBAAmB3tT,KAAKquT,UACvE,CACD,SAAAE,CAAUjrG,GACR,OAAO,IAAIuqG,KAAKvqG,EACjB,CACD,KAAAkrG,EAAMC,SACJA,EAAQ1uT,KACRA,EAAI0tQ,WACJA,EAAUihD,UACVA,EAASC,SACTA,IAEA,MAAMC,EAAkBF,IAAc,KACtC,GAAIE,EAAiB,CACnB5uT,KAAKiuT,gBAAgBtsT,KAAK3B,KAAKsuT,mBAC/BtuT,KAAKsuT,kBAAoBtuT,KAAK6uT,iBAAiBH,EAChD,CACGC,GACF3uT,KAAK8uT,oBAAoBH,GAE3B,GAAIlhD,EAAW/+Q,eAAey1R,IAAgB,CAC5C,MAAM4qC,EAAerB,GAAe9nC,SACpC,MAAMopC,EAAUvhD,EAAW0W,IAC3B,IAAI8qC,EAAW,KACf,IAAK,MAAOvpC,EAAIiuB,KAAUxlT,OAAOqpE,QAAQw3P,GAAU,CACjD,MAAME,EAAUlvT,KAAKmvT,mBAAmBzpC,GACxC,GAAIwpC,IAAYH,EAAc,CAC5BE,EAAW,CACTh+B,IAAK0iB,GAEP,KACD,CACF,CACGsb,EACFxhD,EAAW0W,IAAiB8qC,SAErBxhD,EAAW0W,GAErB,CACD,MAAMirC,EAAiBpvT,KAAKmvT,mBAAmBV,GAC/C,MAAM/kR,EAAO0lR,IAAiB5pC,IAAiBzlR,EAAM0tQ,IAAe,IAAIqgD,MACpEpkR,EAAKi6O,OACP3jR,KAAKkuT,oBAEHU,GAAmBD,GAAYjlR,EAAKi6O,SACtCj6O,EAAKg4O,IAAY,CACf2tC,aAAcT,EACdD,WACAW,WAAY5lR,EAAKi6O,QAGrB,OAAOj6O,CACR,CACD,YAAA6lR,GACE,OAAOvvT,KAAKkuT,iBAAmB,CAChC,CACD,gBAAAW,CAAiBW,GACf,IAAI9pC,EAAK1lR,KAAKouT,YAAY9/T,IAAIkhU,GAC9B,GAAI9pC,EACF,OAAOA,EAET,IAAK,MAAO3lR,GAAM61B,MAChBA,MACIznC,OAAOqpE,QAAQiuN,IACnB,GAAI7vP,EAAM45R,GAAS,CACjB9pC,EAAKgoC,GAAe3tT,GACpB,GAAI2lR,EAAI,CACN1lR,KAAKouT,YAAYzgT,IAAI6hT,EAAQ9pC,GAC7B,OAAOA,CACR,CACD,KACD,CAEHA,EAAK,IAAIioC,mBAAmB3tT,KAAKquT,WACjCruT,KAAKouT,YAAYzgT,IAAI6hT,EAAQ9pC,GAC7B,OAAOA,CACR,CACD,mBAAAopC,CAAoBH,GAClB,IAAK,MAAM5xC,OACTA,EAAMv9Q,MACNA,KACGmvT,EAAU,CACb,MAAMD,EAAY1uT,KAAK6uT,iBAAiBrvT,GACxC,IAAIiwT,EAAczvT,KAAKmuT,mBAAmB7/T,IAAIyuR,GAC9C,IAAK0yC,EAAa,CAChBA,EAAc,GACdzvT,KAAKmuT,mBAAmBxgT,IAAIovQ,EAAQ0yC,EACrC,CACDA,EAAY9tT,KAAK+sT,EAClB,CACF,CACD,kBAAAS,CAAmBpyC,GACjB,IAAKA,EACH,OAAO/8Q,KAAKsuT,kBAEd,MAAMmB,EAAczvT,KAAKmuT,mBAAmB7/T,IAAIyuR,GAChD,GAAI0yC,GAAavwT,OAAS,EACxB,OAAOuwT,EAAYz1R,IAAI,GAEzB77B,KAAK,6BAA6B4+Q,MAClC,OAAO,IACR,CACD,KAAA0S,CAAM38Q,GACJ,MAAMu8S,aACJA,EAAYV,SACZA,EAAQW,WACRA,GACEx8S,EACAu8S,IACFrvT,KAAKsuT,kBAAoBtuT,KAAKiuT,gBAAgB9/Q,OAE5CwgR,GACFA,EAASlsQ,SAAQ,EACfs6N,aAEA/8Q,KAAKmuT,mBAAmB7/T,IAAIyuR,GAAQ5uO,KAAK,IAGzCmhR,GACFtvT,KAAKkuT,kBAER,EAQH,MAAMwB,kBAAkBriD,cACtB,WAAAptQ,CAAY+tT,EAAgB,KAAMlC,EAAW,OAC3C1rT,QACAJ,KAAK2vT,SAAW,IAAI5B,QAAQC,GAC5BhuT,KAAKiwQ,OAAS,GACdjwQ,KAAK4vT,YAAc,CACjB3mB,cAAe,IAAI/5R,KAErBlP,KAAK6vT,KAAO,IAAI7lT,IAChBhK,KAAK8vT,SAAW9vT,KAAK2vT,SAASpB,UAAUvuT,KAAK6vT,MAC7C7vT,KAAKkwQ,WAAa1D,GAAmBC,QACrCzsQ,KAAK+vT,YAAc,QACnB/vT,KAAKgwT,OAAS,SACdhwT,KAAKiwT,UAAYnE,CAClB,CACD,KAAAzoS,CAAMvQ,GACJ9S,KAAKkuQ,SAASp7P,GACd,GAAI9S,KAAKkwQ,aAAe1D,GAAmBC,QAA3C,CAGAzsQ,KAAK8vT,SAAS7tC,MACd,OAAOjiR,KAAK8vT,SAASj6S,OAFpB,CAGF,CACD,MAAAi5P,CAAOhR,GACLA,EAAOA,EAAKjiN,QAAQ77C,KAAKgwT,QAAQ/wT,GAASA,EAAMkG,MAAM,GAAK,MACvDnF,KAAKiwT,WAAajwT,KAAK8vT,SAAS1uC,MAClCphR,KAAK8vT,SAASxrC,IAASxmB,EAAM99P,KAAKiwT,WAGhCjwT,KAAK+vT,YAAY74S,KAAK4mP,IAG1B99P,KAAK8vT,SAASxrC,IAASxmB,EAAKsT,OAC7B,CACD,OAAA7C,CAAQzQ,GACN99P,KAAK8vT,SAASxrC,IAASxmB,EACxB,CACD,aAAAoyD,CAAcziD,EAAYyjB,GACxB,IAAIw9B,EAAY,KAChB,IAAIC,EAAW,KACf,MAAMwB,EAAehiU,OAAO0d,OAAO,CAAE,GACrC,IAAK,MAAM9L,KACTA,EAAIP,MACJA,KACGiuQ,EACH,GAAI1tQ,IAAS,QACN2uT,EAGHvwT,KAAK,2CAA2C+yR,MAFhDw9B,EAAYlvT,OAIT,GAAIO,EAAKhB,WAAW,UAAW,CACpC,MAAMg+Q,EAASh9Q,EAAKwV,UAAU,GACzBo5S,IACHA,EAAW,IAEbA,EAAShtT,KAAK,CACZo7Q,SACAv9Q,SAEV,KAAa,CACL,MAAM6B,EAAItB,EAAK8wD,QAAQ,KACvB,GAAIxvD,KAAO,EACT8uT,EAAapwT,GAAQP,MAChB,CACL,IAAIwvT,EAAUmB,EAAahsC,IACtB6qC,IACHA,EAAUmB,EAAahsC,IAAiBh2R,OAAO0d,OAAO,OAExD,MAAO65Q,EAAI/X,GAAY,CAAC5tQ,EAAKoF,MAAM,EAAG9D,GAAItB,EAAKoF,MAAM9D,EAAI,IACzD,MAAMsyS,EAAQqb,EAAQtpC,KAAQv3R,OAAO0d,OAAO,MAC5C8nS,EAAMhmC,GAAYnuQ,CACnB,CACF,CAEH,MAAO,CAACkvT,EAAWC,EAAUwB,EAC9B,CACD,iBAAAC,CAAkBrwT,EAAMuvT,GACtB,MAAMjuT,EAAItB,EAAK8wD,QAAQ,KACvB,OAAIxvD,KAAO,EACF,CAACtB,EAAM,MAET,CAACA,EAAKwV,UAAUlU,EAAI,GAAIiuT,EAAa,GAAKvvT,EAAKwV,UAAU,EAAGlU,GACpE,CACD,cAAAwtQ,CAAeqiB,EAASzjB,EAAYt9P,GAClC,MAAOu+S,EAAWC,EAAU0B,GAAiBrwT,KAAKkwT,cAAcziD,EAAYyjB,GAC5E,MAAOnxR,EAAM0uT,GAAYzuT,KAAKowT,kBAAkBl/B,EAASlxR,KAAK2vT,SAASJ,gBACvE,MAAM7lR,EAAO1pC,KAAK2vT,SAASnB,MAAM,CAC/BC,WACA1uT,OACA0tQ,WAAY4iD,EACZ3B,YACAC,aAEFjlR,EAAKw5O,IAAeljR,KAAK4vT,YACzB,GAAIz/S,EAAJ,CACEu5B,EAAKu4O,MACDjiR,KAAK8vT,SAAS1rC,IAAU16O,IAC1BA,EAAKo7O,IAAQ9kR,KAAK6vT,MAEpBnmR,EAAK83O,IAAQxhR,KAAK2vT,SAEnB,KAPD,CAQA3vT,KAAKiwQ,OAAOtuQ,KAAK3B,KAAK8vT,UACtB9vT,KAAK8vT,SAAWpmR,CAFf,CAGF,CACD,YAAA0kO,CAAaruQ,GACX,MAAM2pC,EAAO1pC,KAAK8vT,SAClB,GAAIpmR,EAAK65O,cAAyB75O,EAAKm4O,MAAc,SAAU,CAC7D,MAAMvyN,EAAS,IAAIogQ,UACnBpgQ,EAAOsgQ,YAAc5vT,KAAK4vT,YAC1B,MAAM7kD,EAAOz7M,EAAOjsC,MAAMqmB,EAAKm4O,KAC/Bn4O,EAAKm4O,IAAY,KACjBn4O,EAAK06O,IAAUrZ,EAChB,CACDrhO,EAAKu4O,MACLjiR,KAAK8vT,SAAW9vT,KAAKiwQ,OAAO9hO,MACxBnuC,KAAK8vT,SAAS1rC,IAAU16O,IAC1BA,EAAKo7O,IAAQ9kR,KAAK6vT,MAEpBnmR,EAAK83O,IAAQxhR,KAAK2vT,SACnB,CACD,OAAA9wS,CAAQ1e,GACNH,KAAKkwQ,WAAa/vQ,CACnB,EAYH,MAAMmwT,WACJ,WAAArwT,CAAY6S,GACV,IACE9S,KAAK+qQ,MAAO,IAAI2kD,WAAYrsS,MAAMitS,WAAWC,gBAAgBz9S,IAC7D,MAAM09S,EAAS,IAAI1c,OAAO9zS,KAAK+qQ,MAC/B/qQ,KAAK6lR,KAAO2qC,EAAOj0S,OACnBvc,KAAKywT,YAAc,IAAIza,YAAYh2S,KAAK+qQ,KAAMylD,EAAO73Q,WACrD34C,KAAK6lR,KAAK3C,IAAa9oP,SAAWp6B,KAAK6lR,IACxC,CAAC,MAAO9oQ,GACP5e,KAAK,uDAAuD4e,IAC7D,CACF,CACD,OAAA+gQ,GACE,OAAO99Q,KAAK+qQ,MAAQ/qQ,KAAK6lR,IAC1B,CACD,kBAAA6qC,GACE,MAAM7iT,EAAW7N,KAAK6lR,KAAKV,MAC3B,OAAO,IAAI/5Q,SAAQ,CAACI,EAASiR,KAC3B,MAAMk0S,cAAgB,KACpB,IACE,MAAMnxT,EAAQqO,EAASojB,OACnBzxB,EAAMmd,KACRnR,EAAQhM,EAAMA,OAEd2lD,WAAWwrQ,cAAe,EAE7B,CAAC,MAAO5zS,GACPN,EAAOM,EACR,GAEHooC,WAAWwrQ,cAAe,EAAE,GAE/B,CACD,kBAAMC,GACJ,IACE5wT,KAAK2gD,YAAc3gD,KAAK0wT,qBACxB1wT,KAAK6wT,KAAO7wT,KAAK2gD,MAAMpX,SAASp0B,KAAIxP,IAClC,MAAM0T,MACJA,EAAKC,OACLA,GACE3T,EAAE8nQ,WAAW1uB,MACjB,MAAO,CAAC,EAAG,EAAGjwO,SAASuK,GAAQvK,SAASwK,GAAQ,GAEnD,CAAC,MAAOyD,GACP5e,KAAK,0CAA0C4e,IAChD,CACF,CACD,cAAA+zS,CAAel4S,GACb,OAAO5Y,KAAK6wT,KAAKj4S,EAClB,CACD,iBAAMm4S,GACC/wT,KAAK2gD,aACF3gD,KAAK4wT,eAEb,OAAO5wT,KAAK6wT,KAAK3xT,MAClB,CACD,SAAA8xT,CAAU1oE,GACRtoP,KAAK6lR,KAAK3C,IAAa56B,OAASA,CACjC,CACD,QAAA2oE,CAASxoC,GACPzoR,KAAK6lR,KAAK3C,IAAa2G,WAAa,IAAItB,WAAWE,GACnD,MAAMyoC,EAAe,GACrB,IAAK,IAAIznC,KAAYzpR,KAAK6lR,KAAK3C,IAAa+lB,cAAe,CACzDxf,EAAW5C,YAAY4C,GACvB,MAAMrlE,EAAOpkN,KAAK6lR,KAAK3C,IAAa2G,WAAWT,KAAKK,GAC/CrlE,GACH8sG,EAAavvT,KAAK8nR,EAErB,CACD,OAAIynC,EAAahyT,OAAS,EACjBgyT,EAEF,IACR,CACD,WAAAC,CAAY1oC,EAAOE,GACjB3oR,KAAK6lR,KAAK3C,IAAa2G,WAAWz6Q,IAAIq5Q,EAAOE,EAC9C,CACD,cAAMyoC,GACCpxT,KAAK2gD,aACF3gD,KAAK4wT,eAEb,MAAMjwQ,EAAQ3gD,KAAK2gD,MACnB3gD,KAAK2gD,MAAQ,KACb,OAAOA,CACR,CACD,aAAA0wQ,CAAclb,GACZ,OAAOn2S,KAAKywT,YAAYva,UAAUC,EACnC,CACD,sBAAOoa,CAAgBz9S,GACrB,OAAKA,EAAK,YAGH3kB,OAAOuf,OAAOoF,GAAMlR,KAAK,IAFvBkR,EAAK,UAGf,CACD,wBAAOw+S,CAAkBC,GACvB,IAAKA,UAAaA,IAAO,SACvB,OAAO,KAET,IACE,IAAIxmD,EAAO,IAAI2kD,UAAUzC,eAAgB,MAAM5pS,MAAMkuS,GACrD,IAAK,CAAC,OAAQ,SAASpuT,SAAS4nQ,EAAKmZ,KAAa,CAChD,MAAMstC,EAAUvE,eAAeC,KAAK,CAAE,GACtCsE,EAAQlwC,IAAcvW,GACtBA,EAAOymD,CACR,CACD,MAAMn+S,EAAS03P,EAAKqa,MACpB,IAAK/xQ,EAAO80Q,QACV,OAAO,KAET,MAAMC,KACJA,GACE/0Q,EACJ,MAAMo6P,WACJA,GACE2a,EACJ,GAAI3a,EAAY,CACVA,EAAWinB,QACbjnB,EAAWinB,MAAQjnB,EAAWinB,MAAM7lQ,QAAO4iS,IAASA,EAAK1yT,WAAW,UAEtE0uQ,EAAWzvB,IAAM,MAClB,CACD,MAAO,CACLoqC,OACAtmR,IAAKipQ,EAAKma,MAEb,CAAC,MAAOnoQ,GACP5e,KAAK,wDAAwD4e,IAC9D,CACD,OAAO,IACR,EAkBH,MAAM20S,kBACJ,oBAAOC,CAAc/+C,GACnB,OAAOxnQ,QAAQ4tP,IAAI,CAAC4Z,EAAWg/C,cAAc,YAAah/C,EAAWi/C,UAAU,eAAgBj/C,EAAWg/C,cAAc,kBAAmBh/C,EAAWg/C,cAAc,WAAYh/C,EAAWg/C,cAAc,iBAAiB90S,MAAK,EAAEu7P,EAAUy5C,EAAat+C,EAAgB50Q,EAASi7Q,MACxQ,CACLjH,aACAyF,SAAUA,aAAoBhsQ,KAAOgsQ,EAAWhsQ,KAAKyB,MACrDgkT,cACAt+C,iBACA50Q,UACAi7Q,kBAEDh8P,IACD1f,KAAK,mBAAmB0f,OACxB,OAAO,IAAI,GAEd,CACD,mBAAahS,CAAOS,EAAMsC,EAAKmjT,EAAmBvxE,EAAWwxE,EAAeC,EAAc1/C,GACxF,MAAM35P,EAAYo5S,QAAsBhyT,KAAKkyT,cAAc5lT,EAAMsC,EAAKmjT,EAAkBn/C,YAAc,KACtG,OAAOm/C,EAAkBn/C,WAAWu/C,OAAOnyT,KAAM,UAAW,CAACsM,EAAMsC,EAAKmjT,EAAmBvxE,EAAWwxE,EAAeC,EAAcr5S,EAAW25P,GAC/I,CACD,cAAO6/C,CAAQ9lT,EAAMsC,EAAKmjT,EAAmBvxE,EAAWwxE,EAAgB,MAAOC,EAAe,KAAMr5S,EAAY,KAAM25P,EAAU,MAC9H,MAAMlkQ,EAAO/B,EAAKiX,WAAW3U,GAC7B,KAAMP,aAAgBhC,MACpB,OAEF,MAAMgsQ,SACJA,EAAQzF,WACRA,GACEm/C,EACJ,MAAM/5R,EAAKppB,aAAe3B,IAAM2B,EAAI9K,WAAa,SAAS08O,EAAU8S,gBACpE,IAAI19B,EAAUvnN,EAAK/f,IAAI,WACvBsnO,EAAUA,aAAmB3pN,KAAO2pN,EAAQ71N,KAAO,KACnD,MAAMsyT,EAAa,CACjB/lT,OACAsC,MACAP,OACAunN,UACA59L,KACA+5R,oBACAC,gBACAC,eACAK,iBAAkBN,GAAiB35C,EAAS/pR,IAAI,qBAAuB,KACvEsqB,YACA48O,iBAAkBod,EAAWpd,iBAC7B+c,WAEF,OAAQ38C,GACN,IAAK,OACH,OAAO,IAAI28F,eAAeF,GAC5B,IAAK,OACH,OAAO,IAAIG,eAAeH,GAC5B,IAAK,SACH,IAAII,EAAYz/S,uBAAuB,CACrC3E,OACApgB,IAAK,OAEPwkU,EAAYA,aAAqBxmT,KAAOwmT,EAAU1yT,KAAO,KACzD,OAAQ0yT,GACN,IAAK,KACH,OAAO,IAAIC,qBAAqBL,GAClC,IAAK,MACH,OAAO,IAAIM,uBAAuBN,GACpC,IAAK,KACH,OAAO,IAAIO,uBAAuBP,GACpC,IAAK,MACH,OAAO,IAAIQ,0BAA0BR,GAEzCl0T,KAAK,oCAAoCs0T,wCACzC,OAAO,IAAIK,iBAAiBT,GAC9B,IAAK,QACH,OAAO,IAAIU,gBAAgBV,GAC7B,IAAK,WACH,OAAO,IAAIW,mBAAmBX,GAChC,IAAK,OACH,OAAO,IAAIY,eAAeZ,GAC5B,IAAK,SACH,OAAO,IAAIa,iBAAiBb,GAC9B,IAAK,SACH,OAAO,IAAIc,iBAAiBd,GAC9B,IAAK,WACH,OAAO,IAAIe,mBAAmBf,GAChC,IAAK,UACH,OAAO,IAAIgB,kBAAkBhB,GAC/B,IAAK,QACH,OAAO,IAAIiB,gBAAgBjB,GAC7B,IAAK,MACH,OAAO,IAAIkB,cAAclB,GAC3B,IAAK,YACH,OAAO,IAAImB,oBAAoBnB,GACjC,IAAK,YACH,OAAO,IAAIoB,oBAAoBpB,GACjC,IAAK,WACH,OAAO,IAAIqB,mBAAmBrB,GAChC,IAAK,YACH,OAAO,IAAIsB,oBAAoBtB,GACjC,IAAK,QACH,OAAO,IAAIuB,gBAAgBvB,GAC7B,IAAK,iBACH,OAAO,IAAIwB,yBAAyBxB,GACtC,QACOL,GAID7zT,KAHGy3N,EAGE,kCAAkCA,uCAFlC,gDAKT,OAAO,IAAIk+F,WAAWzB,GAE3B,CACD,0BAAaH,CAAc5lT,EAAMsC,EAAKgkQ,GACpC,IACE,MAAMmhD,QAAkBznT,EAAK0nT,gBAAgBplT,GAC7C,KAAMmlT,aAAqB1nT,MACzB,OAAQ,EAEV,MAAMkmQ,EAAUwhD,EAAUxmT,OAAO,KACjC,GAAIglQ,aAAmBtlQ,IACrB,IACE,MAAM2L,QAAkBg6P,EAAWg/C,cAAc,eAAgB,CAACr/C,IAClE,OAAO35P,CACR,CAAC,MAAOpQ,GACPzK,KAAK,iDAAiDyK,MACvD,CAEH,GAAIurT,EAAUnmT,IAAI,QAChB,OAAQ,EAEV,MAAMgiD,QAAiBgjN,EAAWi/C,UAAU,YAC5C,IAAK,IAAIj5S,EAAY,EAAGA,EAAYg3C,EAAUh3C,IAAa,CACzD,MAAM47P,QAAa5B,EAAWG,QAAQn6P,GACtC,MAAMD,QAAoBi6P,EAAWu/C,OAAO39C,EAAM,eAClD,IAAK,MAAMy/C,KAAYt7S,EACrB,GAAIs7S,aAAoBhnT,KAAO8C,YAAYkkT,EAAUrlT,GACnD,OAAOgK,CAGZ,CACF,CAAC,MAAOpQ,GACPrK,KAAK,mBAAmBqK,MACzB,CACD,OAAQ,CACT,CACD,qBAAO0rT,CAAev7S,EAAarM,EAAM1J,GACvC,IAAKA,EAA4B,CAC/BzE,KAAK,wGACL,OAAO,IACR,CACD,IAAIg2T,EACJ,IAAK,MAAMC,SACTA,EAAQ96R,OACRA,KACG3gB,EACH,GAAK2gB,EAAL,CAGA66R,IAAkB,IAAInqT,IACtBmqT,EAAcxmT,IAAIymT,EAAUR,gBAAgBlxE,YAAYppN,EAAQhtB,GAF/D,CAIH,OAAO6nT,CACR,CACD,+BAAaE,CAAmBl6E,EAAWiY,EAAMz5O,EAAaw7S,EAAehhD,GAC3E,MAAM7mQ,EAAO6tO,EAAU7tO,KACvB,IAAIs9P,EACJ,MAAM0qD,EAAW,GACjB,MAAM1xT,2BACJA,GACEu3O,EAAUt7O,QACd,IAAK,MAAM01T,KAAc57S,EACvB,IAAI47S,EAAWC,QAGf,OAAQD,EAAWE,gBACjB,KAAKlkU,EAAqBG,SACxB,IAAKk5Q,EAAa,CAChB,MAAMpG,EAAW,IAAIn3P,KAAKC,GAC1Bk3P,EAAS71P,IAAI,WAAY1B,KAAK3d,IAAI,cAClCk1Q,EAAS71P,IAAI,OAAQ1B,KAAK3d,IAAI,SAC9Bk1Q,EAAS71P,IAAI,UAAW1B,KAAK3d,IAAI,UACjCk1Q,EAAS71P,IAAI,WAAY1B,KAAK3d,IAAI,oBAClCs7Q,EAAct9P,EAAKinQ,qBACnBJ,EAAQhkQ,IAAIy6P,EAAa,CACvB92P,KAAM0wP,GAET,CACD8wD,EAAS3yT,KAAKqxT,mBAAmB0B,oBAAoBpoT,EAAMioT,EAAYphD,EAAS,CAC9Eh5B,YACAiY,OACAwX,iBAEF,MACF,KAAKr5Q,EAAqBI,UACpB4jU,EAAWI,WACbL,EAAS3yT,KAAK6xT,oBAAoBkB,oBAAoBpoT,EAAMioT,EAAYphD,IAExEmhD,EAAS3yT,KAAK4xT,cAAcmB,oBAAoBpoT,EAAMioT,EAAYphD,IAEpE,MACF,KAAK5iR,EAAqBM,IACxByjU,EAAS3yT,KAAK4xT,cAAcmB,oBAAoBpoT,EAAMioT,EAAYphD,IAClE,MACF,KAAK5iR,EAAqBK,MACxB,MAAMkpD,EAAQl3C,QAAmCuxT,GAAe7lU,IAAIimU,EAAWH,WAAY,KAC3F,GAAIt6Q,GAAOsS,YAAa,CACtB,MAAMA,YACJA,EAAWwoQ,YACXA,GACE96Q,EACJ,GAAI86Q,EAAa,CACf,MAAMC,EAAWvoT,EAAKinQ,qBACtBJ,EAAQhkQ,IAAI0lT,EAAU,CACpB/hT,KAAM8hT,IAERxoQ,EAAY/9C,KAAKV,IAAI,QAASknT,EAC/B,CACD,MAAM1hE,EAAWr5M,EAAMq5M,SAAW7mP,EAAKinQ,qBACvCJ,EAAQhkQ,IAAIgkP,EAAU,CACpBrgP,KAAMs5C,IAERtS,EAAMsS,YAActS,EAAM86Q,YAAc,IACzC,CACDN,EAAS3yT,KAAKiyT,gBAAgBc,oBAAoBpoT,EAAMioT,EAAYphD,EAAS,CAC3Er5N,WAEF,MAGN,MAAO,CACLnhC,kBAAmBvN,QAAQ4tP,IAAIs7D,GAElC,CACD,gCAAaQ,CAAoB/C,EAAmB53E,EAAWiY,EAAMz5O,EAAaw7S,GAChF,IAAKx7S,EACH,OAAO,KAET,MAAM9Z,QACJA,EAAOyN,KACPA,GACE6tO,EACJ,MAAMm6E,EAAW,GACjB,IAAK,MAAMC,KAAc57S,EACvB,IAAI47S,EAAWC,QAGf,OAAQD,EAAWE,gBACjB,KAAKlkU,EAAqBG,SACxB4jU,EAAS3yT,KAAKqxT,mBAAmB+B,yBAAyBhD,EAAmBzlT,EAAMioT,EAAY,CAC7Fp6E,YACAiY,OACAoD,iBAAkB32P,KAEpB,MACF,KAAKtO,EAAqBI,UACpB4jU,EAAWI,WACbL,EAAS3yT,KAAK6xT,oBAAoBuB,yBAAyBhD,EAAmBzlT,EAAMioT,EAAY,CAC9F/+D,iBAAkB32P,KAGpBy1T,EAAS3yT,KAAK4xT,cAAcwB,yBAAyBhD,EAAmBzlT,EAAMioT,EAAY,CACxF/+D,iBAAkB32P,KAGtB,MACF,KAAKtO,EAAqBM,IACxByjU,EAAS3yT,KAAK4xT,cAAcwB,yBAAyBhD,EAAmBzlT,EAAMioT,EAAY,CACxF/+D,iBAAkB32P,KAEpB,MACF,KAAKtO,EAAqBK,MACxB,MAAMkpD,EAAQj7C,EAAQ+D,iCAAmCuxT,GAAe7lU,IAAIimU,EAAWH,WAAY,KACnG,GAAIt6Q,GAAOsS,YAAa,CACtB,MAAMA,YACJA,EAAWwoQ,YACXA,GACE96Q,EACA86Q,GACFxoQ,EAAY/9C,KAAKV,IAAI,QAASinT,GAEhC96Q,EAAMq5M,SAAW,IAAIn6M,WAAWoT,EAAaA,EAAYltD,QACzD46C,EAAMsS,YAActS,EAAM86Q,YAAc,IACzC,CACDN,EAAS3yT,KAAKiyT,gBAAgBmB,yBAAyBhD,EAAmBzlT,EAAMioT,EAAY,CAC1Fz6Q,QACA07M,iBAAkB32P,KAEpB,MAGN,OAAOuM,QAAQ4tP,IAAIs7D,EACpB,EAEH,SAASU,YAAY5sS,EAAO6sS,EAAe,IAAIp0S,kBAAkB,IAC/D,IAAKld,MAAM2J,QAAQ8a,GACjB,OAAO6sS,EAET,MAAMlqF,EAAWkqF,GAAgB,IAAIp0S,kBAAkB,GACvD,OAAQuH,EAAMlpB,QACZ,KAAK,EACH,OAAO,KACT,KAAK,EACHshB,WAAWgD,WAAWC,KAAK3C,WAAWsH,EAAO,EAAG2iN,EAAU,GAC1D,OAAOA,EACT,KAAK,EACHvqN,WAAWgD,WAAW5C,IAAIE,WAAWsH,EAAO,EAAG2iN,EAAU,GACzD,OAAOA,EACT,KAAK,EACHvqN,WAAWgD,WAAWG,KAAK7C,WAAWsH,EAAO,EAAG2iN,EAAU,GAC1D,OAAOA,EACT,QACE,OAAOkqF,EAEb,CACA,SAASC,iBAAiB9sS,GACxB,OAAOzkB,MAAMC,KAAKwkB,GAAOziB,GAAKA,EAAI,KACpC,CACA,SAASwvT,cAAc9mT,EAAMnI,GAC3B,MAAMyuT,EAAatmT,EAAKhB,SAAS,cACjC,IAAKmH,cAAcmgT,EAAY,OAASA,EAAWz1T,SAAW,GAAKy1T,EAAWz1T,OAAS,EAAI,EACzF,OAAO,KAET,MAAMk2T,EAAgB,IAAI/vS,aAAasvS,EAAWz1T,QAClD,IAAK,IAAImC,EAAI,EAAGoH,EAAKksT,EAAWz1T,OAAQmC,EAAIoH,EAAIpH,GAAK,EAAG,CACtD,MAAOuF,EAAII,EAAIH,EAAII,EAAIH,EAAII,EAAImuT,EAAIC,GAAMX,EAAWxvT,MAAM9D,EAAGA,EAAI,GACjE,MAAMs5B,EAAOp5B,KAAKC,IAAIoF,EAAIC,EAAIC,EAAIuuT,GAClC,MAAMz6R,EAAOr5B,KAAK+D,IAAIsB,EAAIC,EAAIC,EAAIuuT,GAClC,MAAMx6R,EAAOt5B,KAAKC,IAAIwF,EAAIC,EAAIC,EAAIouT,GAClC,MAAMxlF,EAAOvuO,KAAK+D,IAAI0B,EAAIC,EAAIC,EAAIouT,GAClC,GAAIpvT,IAAS,OAASy0B,EAAOz0B,EAAK,IAAM00B,EAAO10B,EAAK,IAAM20B,EAAO30B,EAAK,IAAM4pO,EAAO5pO,EAAK,IACtF,OAAO,KAETkvT,EAAcznT,IAAI,CAACgtB,EAAMm1M,EAAMl1M,EAAMk1M,EAAMn1M,EAAME,EAAMD,EAAMC,GAAOx5B,EACrE,CACD,OAAO+zT,CACT,CACA,SAASG,mBAAmBrvT,EAAMitN,EAAM7uM,GACtC,MAAOqW,EAAME,EAAMD,EAAMk1M,GAAQ9rO,KAAKgB,2BAA2BmuN,EAAM7uM,GACvE,GAAIqW,IAASC,GAAQC,IAASi1M,EAC5B,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG5pO,EAAK,GAAIA,EAAK,IAEpC,MAAMwZ,GAAUxZ,EAAK,GAAKA,EAAK,KAAO00B,EAAOD,GAC7C,MAAMhb,GAAUzZ,EAAK,GAAKA,EAAK,KAAO4pO,EAAOj1M,GAC7C,MAAO,CAACnb,EAAQ,EAAG,EAAGC,EAAQzZ,EAAK,GAAKy0B,EAAOjb,EAAQxZ,EAAK,GAAK20B,EAAOlb,EAC1E,CACA,MAAMm0S,WACJ,WAAA7zT,CAAY+jB,GACV,MAAM3V,KACJA,EAAI/B,KACJA,EAAIylT,kBACJA,EAAiBnjT,IACjBA,EAAGqjT,aACHA,GACEjuS,EACJ,MAAMgyP,EAAYi8C,GAAc3jU,IAAIsgB,GAChConQ,GACF3nQ,EAAKV,IAAI,SAAUqoQ,GAErBh2Q,KAAKw1T,SAASnnT,EAAK/f,IAAI,MACvB0R,KAAKy1T,YAAYpnT,EAAK/f,IAAI,aAC1B0R,KAAK01T,oBAAoBrnT,EAAK/f,IAAI,MAClC0R,KAAK21T,SAAStnT,EAAK/f,IAAI,MACvB0R,KAAK41T,aAAavnT,EAAKhB,SAAS,SAChCrN,KAAK61T,SAASxnT,EAAKhB,SAAS,MAC5BrN,KAAK81T,eAAeznT,GACpBrO,KAAK+1T,cAAc1nT,GACnBrO,KAAKg2T,mBAAmB3nT,GACxB,MAAM4nT,EAAK5nT,EAAK/f,IAAI,MACpB0R,KAAKk2T,6BAA6BD,GAClCj2T,KAAKm2T,YAAYF,EAAI5nT,GACrBrO,KAAK4O,IAAMoV,EAAOpV,eAAe3B,IAAM+W,EAAOpV,IAAM,KACpD5O,KAAKo2T,SAAW,GACZp2T,KAAK2qQ,YACP3qQ,KAAKo2T,SAASz0T,KAAK3B,KAAK2qQ,YAE1B,MAAM0rD,KAAcr2T,KAAKi/B,MAAQlrC,EAAeM,QAChD,MAAMiiU,KAAqBt2T,KAAKi/B,MAAQlrC,EAAeQ,gBACvDyL,KAAK8S,KAAO,CACVyjT,gBAAiBv2T,KAAKi/B,MACtB++P,YAAah+R,KAAKg+R,YAClB51Q,MAAOpoB,KAAKooB,MACZu/Q,gBAAiB3nS,KAAK2nS,gBACtBzJ,YAAal+R,KAAKk+R,YAClB9kR,SAAUpZ,KAAKoZ,SACfo9S,YAAax2T,KAAKy2T,UAClBC,gBAAiB12T,KAAK2qQ,WACtB3yO,GAAIhU,EAAOgU,GACX2+R,iBAAkB32T,KAAK22T,iBACvBzwT,KAAMlG,KAAKlH,UACX88N,QAAS5xM,EAAO4xM,QAChBghG,aAAc,MACdC,YAAa72T,KAAKi/B,MAAQlrC,EAAeG,UACzC4iU,OAAQT,GAAYC,EACpBS,WAAY,MACZ9iD,cAAe,GAEjB,GAAI89C,EAAkBv+C,eAAgB,CACpC,IAAIS,EAAe5lQ,EAAK/f,IAAI,gBAC5B0R,KAAK8S,KAAKmhQ,aAAeA,EAAer2Q,OAAOC,UAAUo2Q,IAAiBA,GAAgB,EAAIA,GAAgB,EAC9G89C,EAAkBv+C,eAAehB,sBAAsBxuP,EAAOuuP,QAAS0B,EACxE,CACD,GAAIjwP,EAAOguS,cAAe,CACxB,MAAM9mD,EAAO78P,EAAK/f,IAAI,QACtB,GAAIqV,MAAM2J,QAAQ49P,GAAO,CACvB,MAAM8rD,EAAS,GACf,IAAK,MAAM7rD,KAAOD,EACZC,aAAel+P,KACjB+pT,EAAOr1T,KAAKwpQ,EAAIrnQ,YAGhBkzT,EAAO93T,SAAW,IACpBc,KAAK8S,KAAKkkT,OAASA,EAEtB,CACDh3T,KAAK8S,KAAKmD,QAAUF,eAAezJ,EAAM+B,EAAMrY,GAC/CgK,KAAK8S,KAAKmkT,UAAYj3T,KAAKk3T,oBAAoB7oT,GAC/CrO,KAAK8S,KAAK8F,UAAYoL,EAAOpL,SAC9B,CACD,MAAMu+S,EAAK9oT,EAAK/f,IAAI,MAChB6oU,aAAclrT,OAChBjM,KAAK8S,KAAKqkT,GAAKA,EAAGp3T,MAEpBC,KAAKo3T,4BAA8BpzS,EAAOwxO,iBAAiB5yP,2BAC3D5C,KAAKq3T,kBAAoB,KACzBr3T,KAAKs3T,iBAAmB,KACzB,CACD,QAAAC,CAASt4R,EAAOurL,GACd,SAAUvrL,EAAQurL,EACnB,CACD,WAAAgtG,CAAYC,EAAQC,GAClB,IAAIz4R,MACFA,GACEj/B,KACJ,GAAIy3T,SAAW12T,EAAW,CACxB,GAAI22T,SAAY32T,EACd,OAEF,OAAI22T,EACKz4R,GAASlrC,EAAehE,MAE1BkvC,GAASlrC,EAAeC,OAASD,EAAehE,KACxD,CACD,GAAI0nU,EAAQ,CACVx4R,GAASlrC,EAAehE,MACxB,OAAI2nU,EACKz4R,GAASlrC,EAAeI,OAASJ,EAAeC,OAElDirC,GAASlrC,EAAeC,OAASD,EAAeI,MACxD,CACD8qC,KAAWlrC,EAAeC,OAASD,EAAeI,QAClD,OAAIujU,EACKz4R,GAASlrC,EAAehE,MAE1BkvC,EAAQlrC,EAAehE,KAC/B,CACD,WAAA4nU,CAAY14R,GACV,OAAQj/B,KAAKu3T,SAASt4R,EAAOlrC,EAAerC,aAAesO,KAAKu3T,SAASt4R,EAAOlrC,EAAeI,OAChG,CACD,YAAAyjU,CAAa34R,GACX,OAAOj/B,KAAKu3T,SAASt4R,EAAOlrC,EAAehE,SAAWiQ,KAAKu3T,SAASt4R,EAAOlrC,EAAeC,UAAYgM,KAAKu3T,SAASt4R,EAAOlrC,EAAerC,UAC3I,CACD,YAAAmmU,CAAap/S,EAAmBq/S,GAC9B,MAAML,EAASh/S,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,KAAKy/R,OACrD,OAAIA,SAAW12T,GACL02T,EAEHz3T,KAAK+3T,WAAa/3T,KAAKu3T,SAASv3T,KAAKi/B,MAAOlrC,EAAeC,OACnE,CACD,aAAAgkU,CAAcv/S,GACZ,MAAMi/S,EAAUj/S,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,KAAK0/R,QACtD,OAAIA,SAAY32T,GACN22T,EAEH13T,KAAKi4T,SACb,CACD,uBAAAC,CAAwBC,EAAWC,EAAc,MAC/C,OAAOD,GAAan4T,KAAK8S,KAAKikT,YAAcqB,GAAaxqT,IAAI5N,KAAK8S,KAAKklB,GACxE,CACD,YAAI+/R,GACF,OAAI/3T,KAAK8S,KAAK6hT,aAAe,OAGzB30T,KAAKi/B,QAAU,GAGZj/B,KAAK23T,YAAY33T,KAAKi/B,OAC9B,CACD,aAAIg5R,GACF,OAAIj4T,KAAK8S,KAAK6hT,aAAe,OAGzB30T,KAAKi/B,QAAU,GAGZj/B,KAAK43T,aAAa53T,KAAKi/B,OAC/B,CACD,kBAAAo5R,CAAmBvlT,GACjB,MAAMhR,SAAagR,IAAS,SAAW9K,kBAAkB8K,GAAQ,GACjE,MAAMkrO,EAAMl8O,GAAOm8O,KAAKn8O,GAAKk8O,MAAQ,MAAQ,MAAQ,MACrD,MAAO,CACLl8O,MACAk8O,MAEH,CACD,oBAAAs6E,CAAqBt0S,GACnB,MAAM3V,KACJA,EAAI0jT,kBACJA,GACE/tS,EACJ,MAAMu0S,EAAoBvlT,uBAAuB,CAC/C3E,OACApgB,IAAK,QACD8jU,EAAkB15C,SAAS/pR,IAAI,MACrC0R,KAAKw4T,0BAA4BD,IAAsB,SAAWA,EAAoB,GACtFv4T,KAAK8S,KAAK2lT,sBAAwB/vD,uBAAuB1oQ,KAAKw4T,mBAC/D,CACD,QAAAhD,CAASlgD,GACPt1Q,KAAK04T,OAAS14T,KAAKq4T,mBAAmB/iD,EACvC,CACD,WAAAmgD,CAAYkD,GACV34T,KAAKy2T,UAAYz2T,KAAKq4T,mBAAmBM,EAC1C,CACD,mBAAAjD,CAAoBiB,GAClB32T,KAAK22T,wBAA0BA,IAAqB,SAAWA,EAAmB,IACnF,CACD,QAAAhB,CAAS12R,GACPj/B,KAAKi/B,MAAQrhC,OAAOC,UAAUohC,IAAUA,EAAQ,EAAIA,EAAQ,EACxDj/B,KAAKi/B,MAAQlrC,EAAerC,WAAasO,KAAKC,YAAYF,OAAS,eACrEC,KAAKi/B,OAASlrC,EAAerC,UAEhC,CACD,OAAAknU,CAAQpuG,GACN,OAAOxqN,KAAKu3T,SAASv3T,KAAKi/B,MAAOurL,EAClC,CACD,YAAAorG,CAAa98T,GACXkH,KAAKlH,UAAYgc,iBAAiBhc,EAAW,CAAC,EAAG,EAAG,EAAG,GACxD,CACD,QAAA+8T,CAASztS,GACPpoB,KAAKooB,MAAQ4sS,YAAY5sS,EAC1B,CACD,cAAAywS,CAAeC,GACb94T,KAAK84T,YAAc,CAAC,OAAQ,QAC5B,GAAIn1T,MAAM2J,QAAQwrT,IAAgBA,EAAY55T,SAAW,EACvD,IAAK,IAAImC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM9S,EAAMuqU,EAAYz3T,GACxB,GAAI9S,aAAe0d,KACjB,OAAQ1d,EAAIwR,MACV,IAAK,OACH,SACF,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,aACL,IAAK,eACL,IAAK,QACHC,KAAK84T,YAAYz3T,GAAK9S,EAAIwR,KAC1B,SAGN5B,KAAK,gCAAgC5P,IACtC,CAEJ,CACD,WAAA4nU,CAAY4C,EAAI1qT,GACdrO,KAAKoZ,SAAW,EAChB,IAAIxB,EAAQmhT,aAAc1sT,KAAO0sT,EAAGzqU,IAAI,MAAQ,EAAI+f,EAAK/f,IAAI,WAAa,EAC1E,GAAIsP,OAAOC,UAAU+Z,IAAUA,IAAU,EAAG,CAC1CA,GAAS,IACLA,EAAQ,IACVA,GAAS,KAEPA,EAAQ,KAAO,IACjB5X,KAAKoZ,SAAWxB,EAEnB,CACF,CACD,4BAAAs+S,CAA6B6C,GAC3B,GAAIA,aAAc1sT,KAAM,CACtBrM,KAAKk+R,YAAc82B,YAAY+D,EAAG1rT,SAAS,MAAO,MAClDrN,KAAK2nS,gBAAkBqtB,YAAY+D,EAAG1rT,SAAS,MAAO,KAC5D,MACMrN,KAAKk+R,YAAcl+R,KAAK2nS,gBAAkB,IAE7C,CACD,cAAAmuB,CAAe93B,GACbh+R,KAAKg+R,YAAc,IAAIg7B,sBACvB,GAAMh7B,aAAuB3xR,KAG7B,GAAI2xR,EAAYpwR,IAAI,MAAO,CACzB,MAAMS,EAAO2vR,EAAY1vS,IAAI,MAC7B,GAAI+f,aAAgBhC,KAAM,CACxB,MAAM4sT,EAAW5qT,EAAK/f,IAAI,QAC1B,IAAK2qU,GAAYtpT,OAAOspT,EAAU,UAAW,CAC3Cj5T,KAAKg+R,YAAYk7B,SAAS7qT,EAAK/f,IAAI,KAAM0R,KAAKlH,WAC9CkH,KAAKg+R,YAAYm7B,SAAS9qT,EAAK/f,IAAI,MACnC0R,KAAKg+R,YAAYo7B,aAAa/qT,EAAKhB,SAAS,KAC7C,CACF,CACF,MAAM,GAAI2wR,EAAYpwR,IAAI,UAAW,CACpC,MAAMomC,EAAQgqP,EAAY3wR,SAAS,UACnC,GAAI1J,MAAM2J,QAAQ0mC,IAAUA,EAAM90C,QAAU,EAAG,CAC7Cc,KAAKg+R,YAAYq7B,0BAA0BrlR,EAAM,IACjDh0C,KAAKg+R,YAAYs7B,wBAAwBtlR,EAAM,IAC/Ch0C,KAAKg+R,YAAYk7B,SAASllR,EAAM,GAAIh0C,KAAKlH,WACrCk7C,EAAM90C,SAAW,GACnBc,KAAKg+R,YAAYo7B,aAAaplR,EAAM,GAAI,KAE3C,CACP,MACMh0C,KAAKg+R,YAAYk7B,SAAS,EAE7B,CACD,aAAAnD,CAAc1nT,GACZrO,KAAK2qQ,WAAa,KAClB,MAAM4uD,EAAmBlrT,EAAK/f,IAAI,MAClC,KAAMirU,aAA4BltT,MAChC,OAEF,MAAMmtT,EAAwBD,EAAiBjrU,IAAI,KACnD,GAAIkrU,aAAiCtpT,WAAY,CAC/ClQ,KAAK2qQ,WAAa6uD,EAClB,MACD,CACD,KAAMA,aAAiCntT,MACrC,OAEF,MAAMmf,EAAKnd,EAAK/f,IAAI,MACpB,KAAMk9B,aAAcvf,QAAUutT,EAAsB5rT,IAAI4d,EAAGzrB,MACzD,OAEF,MAAM4qQ,EAAa6uD,EAAsBlrU,IAAIk9B,EAAGzrB,MAC5C4qQ,aAAsBz6P,aACxBlQ,KAAK2qQ,WAAaA,EAErB,CACD,kBAAAqrD,CAAmB3nT,GACjBrO,KAAKy5T,GAAK,KACV,MAAMA,EAAKprT,EAAK/f,IAAI,MAChBmrU,aAAcxtT,KAChB9N,KAAK,mEACIs7T,aAAcptT,OACvBrM,KAAKy5T,GAAKA,EAEb,CACD,aAAAC,CAAcv3T,EAAMwoQ,GAClB,OAAOA,EAAWt8P,KAAKlB,SAAS,aAAa2P,MAAKoG,IAChD,IAAKA,EACH,OAEF,MAAMy2S,EAAe,IAAI94C,aAAa39P,EAAW/gB,EAAM+gB,EAAU5W,MACjE,OAAOqtT,EAAa54C,OAAOjkQ,MAAK,WAC9B,OAAOoG,CACf,GAAQ,GAEL,CACD,qBAAM4vO,CAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GAC7C,MAAMm+S,aACJA,EAAY5+R,GACZA,EAAE9xB,KACFA,GACElG,KAAK8S,KACT,IAAI63P,EAAa3qQ,KAAK2qQ,WACtB,MAAMivD,KAAsBhD,GAAgB1sE,EAASt6P,EAAoBE,SACzE,GAAI8pU,IAAqB1zT,EAAK,KAAOA,EAAK,IAAMA,EAAK,KAAOA,EAAK,IAAK,CACpElG,KAAK8S,KAAK8jT,aAAe,MACzB,MAAO,CACL5rE,OAAQ,IAAIhB,aACZ6vE,aAAc,MACdC,eAAgB,MAEnB,CACD,IAAKnvD,EAAY,CACf,IAAKivD,EACH,MAAO,CACL5uE,OAAQ,IAAIhB,aACZ6vE,aAAc,MACdC,eAAgB,OAGpBnvD,EAAa,IAAIhxP,aAAa,IAC9BgxP,EAAWt8P,KAAO,IAAIhC,IACvB,CACD,MAAM0tT,EAAiBpvD,EAAWt8P,KAClC,MAAM6U,QAAkBljB,KAAK05T,cAAc,CAAC,YAAa,aAAc,UAAW,UAAW,UAAW,QAAS/uD,GACjH,MAAMx3C,EAAOt+M,WAAWklT,EAAe1sT,SAAS,QAAS,CAAC,EAAG,EAAG,EAAG,IACnE,MAAMiX,EAAS3P,aAAaolT,EAAe1sT,SAAS,UAAW/d,GAC/D,MAAMiJ,EAAYg9T,mBAAmBrvT,EAAMitN,EAAM7uM,GACjD,MAAM0mO,EAAS,IAAIhB,aACnB,IAAIY,EACA5qP,KAAKy5T,KACP7uE,QAAwBzQ,EAAUoY,wBAAwBvyP,KAAKy5T,GAAI,OAEjE7uE,SAAoB7pP,GACtBiqP,EAAOP,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM2uP,IAEnDI,EAAOP,MAAM9yP,EAAI8E,gBAAiB,CAACu7B,EAAI9xB,EAAM3N,EAAW+rB,EAAQs1S,UAC1Dz/E,EAAU2Y,gBAAgB,CAC9Bt3O,OAAQmvP,EACRvY,OACAlvO,YACAitN,aAAc6a,EACdkK,iBAAkBl1P,KAAKq3T,oBAEzBrsE,EAAOP,MAAM9yP,EAAI+E,cAAe,IAC5BkuP,SAAoB7pP,GACtBiqP,EAAOP,MAAM9yP,EAAIuE,iBAAkB,IAErC8D,KAAK4R,QACL,MAAO,CACLo5O,SACA6uE,aAAc,MACdC,eAAgBF,EAEnB,CACD,UAAMvhU,CAAK8hP,EAAWiY,EAAM35O,EAAmB06P,GAC7C,OAAO,IACR,CACD,kBAAI6mD,GACF,OAAO,KACR,CACD,wBAAMC,CAAmB9/E,EAAWiY,EAAMoI,GACxC,IAAKx6P,KAAK2qQ,WACR,OAEF,MAAMznP,QAAkBljB,KAAK05T,cAAc,CAAC,YAAa,OAAQ,aAAc,WAAY15T,KAAK2qQ,YAChG,MAAM7M,EAAO,GACb,MAAMt7P,EAAS,GACf,IAAI03T,EAAgB,KACpB,MAAM5/D,EAAO,CACX8F,YAAa7+P,KAAK01P,SAClBriO,MAAO,KACP,OAAAy2N,CAAQ5pP,EAAOoL,GACb,IAAK,MAAMkG,KAAQtR,EAAMiO,MACvB,GAAIqD,EAAKjR,WAAQf,EAAjB,CAGAm5T,IAAkBnnT,EAAKxa,UAAU4M,OAAO,GACxC3C,EAAOb,KAAKoR,EAAKjR,KACjB,GAAIiR,EAAK0oP,OAAQ,CACfqC,EAAKn8P,KAAKa,EAAOZ,KAAK,IAAIu4T,WAC1B33T,EAAOtD,OAAS,CACjB,CANA,CAQJ,SAEGi7O,EAAUigB,eAAe,CAC7B5+O,OAAQxb,KAAK2qQ,WACbvY,OACAlvO,YACAm3O,qBAAsB,KACtBM,eAAgB,KAChBL,OACAE,YAEFx6P,KAAK4R,QACDpP,EAAOtD,QACT4+P,EAAKn8P,KAAKa,EAAOZ,KAAK,IAAIu4T,WAE5B,GAAIr8D,EAAK5+P,OAAS,GAAK4+P,EAAK,GAAI,CAC9B,MAAMi8D,EAAiB/5T,KAAK2qQ,WAAWt8P,KACvC,MAAM8kN,EAAOt+M,WAAWklT,EAAe1sT,SAAS,QAAS,MACzD,MAAMiX,EAAS3P,aAAaolT,EAAe1sT,SAAS,UAAW,MAC/DrN,KAAK8S,KAAKsnT,aAAep6T,KAAKq6T,gBAAgBH,EAAe/mG,EAAM7uM,GACnEtkB,KAAK8S,KAAK+nP,YAAciD,CACzB,CACF,CACD,eAAAu8D,CAAgB/sF,EAAQna,EAAM7uM,GAC5B,MAAMpe,KACJA,GACElG,KAAK8S,KACTqgN,IAAS,CAAC,EAAG,EAAG,EAAG,GACnB7uM,IAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC3B,MAAM/rB,EAAYg9T,mBAAmBrvT,EAAMitN,EAAM7uM,GACjD/rB,EAAU,IAAM2N,EAAK,GACrB3N,EAAU,IAAM2N,EAAK,GACrBonO,EAAStpO,KAAKU,eAAe4oO,EAAQ/0O,GACrC,OAAOyL,KAAKU,eAAe4oO,EAAQhpN,EACpC,CACD,cAAAg2S,GACE,OAAIt6T,KAAK8S,KAAKkkT,OACL,CACLh/R,GAAIh4B,KAAK8S,KAAKklB,GACd/hB,QAASjW,KAAK8S,KAAKmD,QACnBlW,KAAMC,KAAK8S,KAAKmkT,UAChBsD,YAAav6T,KAAK8S,KAAKorR,YACvBs8B,UAAWx6T,KAAK8S,KAAK60R,gBACrBt4S,KAAM,GACN2nU,OAAQh3T,KAAK8S,KAAKkkT,OAClBxiD,KAAMx0Q,KAAK8S,KAAK8F,UAChBQ,SAAUpZ,KAAKoZ,UAGZ,IACR,CACD,KAAAxH,GACE,IAAK,MAAM4J,KAAUxb,KAAKo2T,SACxB56S,EAAO5J,OAEV,CACD,mBAAAslT,CAAoB7oT,GAClB,IAAKA,EAAKT,IAAI,OAASS,EAAKT,IAAI,UAAW,CACzCzP,KAAK,yDACL,MAAO,EACR,CACD,IAAKkQ,EAAKT,IAAI,UACZ,OAAO5F,kBAAkBqG,EAAK/f,IAAI,MAEpC,MAAM2oU,EAAY,GACd5oT,EAAKT,IAAI,MACXqpT,EAAUj5Q,QAAQh2C,kBAAkBqG,EAAK/f,IAAI,OAE/C,IAAImsU,EAAWpsT,EACf,MAAM6E,EAAU,IAAInE,OAChBV,EAAK7B,OACP0G,EAAQ/D,IAAId,EAAK7B,OAEnB,MAAOiuT,EAAS7sT,IAAI,UAAW,CAC7B6sT,EAAWA,EAASnsU,IAAI,UACxB,KAAMmsU,aAAoBpuT,OAASouT,EAASjuT,OAAS0G,EAAQtF,IAAI6sT,EAASjuT,OACxE,MAEEiuT,EAASjuT,OACX0G,EAAQ/D,IAAIsrT,EAASjuT,OAEnBiuT,EAAS7sT,IAAI,MACfqpT,EAAUj5Q,QAAQh2C,kBAAkByyT,EAASnsU,IAAI,MAEpD,CACD,OAAO2oU,EAAUr1T,KAAK,IACvB,EAEH,MAAMo3T,sBACJ,WAAA/4T,GACED,KAAKqZ,MAAQ,EACbrZ,KAAK06T,SAAW,EAChB16T,KAAK++O,MAAQppP,EAA0BC,MACvCoK,KAAK26T,UAAY,CAAC,GAClB36T,KAAK46T,uBAAyB,EAC9B56T,KAAK66T,qBAAuB,CAC7B,CACD,QAAA3B,CAAS7/S,EAAOnT,EAAO,CAAC,EAAG,EAAG,EAAG,IAC/B,GAAImT,aAAiBpN,KACnBjM,KAAKqZ,MAAQ,OAGf,UAAWA,IAAU,SAAU,CAC7B,GAAIA,EAAQ,EAAG,CACbrZ,KAAK06T,SAAWrhT,EAChB,MAAM6nB,GAAYh7B,EAAK,GAAKA,EAAK,IAAM,EACvC,MAAM29O,GAAa39O,EAAK,GAAKA,EAAK,IAAM,EACxC,GAAIg7B,EAAW,GAAK2iN,EAAY,IAAMxqO,EAAQ6nB,GAAY7nB,EAAQwqO,GAAY,CAC5E1lP,KAAK,oDAAoDkb,KACzDA,EAAQ,CACT,CACF,CACDrZ,KAAKqZ,MAAQA,CACd,CACF,CACD,QAAA8/S,CAASp6E,GACP,GAAMA,aAAiB9yO,KAGvB,OAAQ8yO,EAAMh/O,MACZ,IAAK,IACHC,KAAK++O,MAAQppP,EAA0BC,MACvC,MACF,IAAK,IACHoK,KAAK++O,MAAQppP,EAA0BE,OACvC,MACF,IAAK,IACHmK,KAAK++O,MAAQppP,EAA0BG,QACvC,MACF,IAAK,IACHkK,KAAK++O,MAAQppP,EAA0BI,MACvC,MACF,IAAK,IACHiK,KAAK++O,MAAQppP,EAA0B9C,UACvC,MACF,QACE,MAEL,CACD,YAAAumU,CAAauB,EAAWG,EAAa,OACnC,GAAIn3T,MAAM2J,QAAQqtT,GAAY,CAC5B,IAAI78C,EAAU,KACd,IAAIi9C,EAAW,KACf,IAAK,MAAMllT,KAAW8kT,EAAW,CAC/B,MAAMK,GAAenlT,GAAW,EAChC,IAAKmlT,EAAa,CAChBl9C,EAAU,MACV,KACV,CAAmBjoQ,EAAU,IACnBklT,EAAW,MAEd,CACD,GAAIJ,EAAUz7T,SAAW,GAAK4+Q,IAAYi9C,EAAU,CAClD/6T,KAAK26T,UAAYA,EACbG,GACF96T,KAAKm5T,SAASltT,KAAK3d,IAAI,KAEjC,MACQ0R,KAAKqZ,MAAQ,CAEhB,MAAUshT,IACT36T,KAAKqZ,MAAQ,EAEhB,CACD,yBAAAggT,CAA0Bx7B,GACpBjgS,OAAOC,UAAUggS,KACnB79R,KAAK46T,uBAAyB/8B,EAEjC,CACD,uBAAAy7B,CAAwBz7B,GAClBjgS,OAAOC,UAAUggS,KACnB79R,KAAK66T,qBAAuBh9B,EAE/B,EAEH,MAAMo9B,yBAAyBnH,WAC7B,WAAA7zT,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,GACE2V,EACJ,GAAI3V,EAAKT,IAAI,OAAQ,CACnB,MAAMstT,EAAS7sT,EAAKd,OAAO,OAC3BvN,KAAK8S,KAAKqoT,UAAYD,aAAkBjuT,IAAMiuT,EAAOp3T,WAAa,KAClE,MAAMs3T,EAAK/sT,EAAK/f,IAAI,MACpB0R,KAAK8S,KAAKuoT,UAAYD,aAAcnvT,KAAOmvT,EAAGr7T,KAAOnM,EAAoBE,KAC1E,CACD,IAAIwnU,EAAW,KACf,GAAIt7T,KAAK8S,KAAKuoT,YAAcznU,EAAoBC,MAAO,CACrD,MAAMmb,EAASX,EAAK/f,IAAI,OACxB0R,KAAKw1T,SAASxmT,EAAO1gB,IAAI,MACzB0R,KAAK8S,KAAKyoT,SAAWv7T,KAAK04T,OAC1B14T,KAAKy1T,YAAYzmT,EAAO1gB,IAAI,aAC5B0R,KAAK8S,KAAK0jT,YAAcx2T,KAAKy2T,UAC7B,GAAKznT,EAAOpB,IAAI,gBAET,CACL5N,KAAKw7T,gBAAgBxsT,EAAO1gB,IAAI,iBAChC0R,KAAK8S,KAAK2oT,aAAez7T,KAAKy7T,YAC/B,MAJCz7T,KAAK8S,KAAK2oT,aAAe,KAK3B,GAAKzsT,EAAOpB,IAAI,KAET,CACL5N,KAAK01T,oBAAoB1mT,EAAO1gB,IAAI,MACpC0R,KAAK8S,KAAK6jT,iBAAmB32T,KAAK22T,gBACnC,MAJC32T,KAAK8S,KAAK6jT,iBAAmB,KAK/B2E,EAAWtsT,EAAOzB,OAAO,SACzB,GAAKyB,EAAOpB,IAAI,KAET,CACL5N,KAAK61T,SAAS7mT,EAAO3B,SAAS,MAC9BrN,KAAK8S,KAAKsV,MAAQpoB,KAAKooB,KACxB,MAJCpoB,KAAK8S,KAAKsV,MAAQ,IAK1B,KAAW,CACLpoB,KAAK8S,KAAKyoT,SAAWv7T,KAAK04T,OAC1B14T,KAAKw7T,gBAAgBntT,EAAK/f,IAAI,iBAC9B0R,KAAK8S,KAAK2oT,aAAez7T,KAAKy7T,aAC9BH,EAAWjtT,EAAKd,OAAO,SAClBc,EAAKT,IAAI,OACZ5N,KAAK8S,KAAKsV,MAAQ,KAErB,CACDpoB,KAAK8S,KAAKwoT,SAAWA,aAAoBruT,IAAMquT,EAASx3T,WAAa,KACjEuK,EAAKT,IAAI,QACX5N,KAAK8S,KAAKg5S,SAAWwE,WAAWgB,kBAAkBjjT,EAAK/f,IAAI,OAE9D,CACD,eAAAktU,CAAgBC,GACdz7T,KAAKy7T,oBAAsBA,IAAiB,SAAWA,EAAe,IACvE,CACD,qBAAAC,EAAsBpvT,KACpBA,EAAI2zO,MACJA,EAAKs6E,YACLA,EAAWC,UACXA,EAASmB,UACTA,EAASvxD,YACTA,EAAWwxD,UACXA,EAASC,eACTA,IAEA,IAAIlhS,EAAO/8B,OAAOk+T,UAClB,IAAIjhS,EAAOj9B,OAAOk+T,UAClB,IAAIlhS,EAAOh9B,OAAOm+T,UAClB,IAAIjsF,EAAOlyO,OAAOm+T,UAClB,MAAMv5T,EAAS,CAAC,KACZy9O,GACFz9O,EAAOb,KAAKs+O,GAEVs6E,GACF/3T,EAAOb,KAAK,GAAG44T,EAAY,MAAMA,EAAY,MAAMA,EAAY,SAE7DC,GACFh4T,EAAOb,KAAK,GAAG64T,EAAU,MAAMA,EAAU,MAAMA,EAAU,SAE3D,IAAIwB,EAAch8T,KAAK8S,KAAK6hT,WACvBqH,IACHA,EAAc32S,aAAazhB,KAAK,CAAC5D,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,GAAIkH,KAAKlH,UAAU,MAEvL,IAAK,IAAIuI,EAAI,EAAGoH,EAAKuzT,EAAY98T,OAAQmC,EAAIoH,EAAIpH,GAAK,EAAG,CACvD,MAAO46T,EAAIC,EAAIC,EAAIC,GAAMP,EAAer5T,EAAQw5T,EAAYt6T,SAASL,EAAGA,EAAI,IAC5Es5B,EAAOp5B,KAAKC,IAAIm5B,EAAMshS,GACtBrhS,EAAOr5B,KAAK+D,IAAIs1B,EAAMshS,GACtBrhS,EAAOt5B,KAAKC,IAAIq5B,EAAMshS,GACtBrsF,EAAOvuO,KAAK+D,IAAIwqO,EAAMssF,EACvB,CACD55T,EAAOb,KAAK,KACZ,MAAM06T,EAAW,IAAIhwT,KAAKC,GAC1B,MAAMs+P,EAAuB,IAAIv+P,KAAKC,GACtCs+P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7C,MAAMguU,EAAmB,IAAI3iT,aAAanX,EAAOZ,KAAK,MACtD06T,EAAiBjuT,KAAOu8P,EACxByxD,EAAS1uT,IAAI,MAAO2uT,GACpB,MAAMC,EAAS,IAAIlwT,KAAKC,GACpBqvT,GACFY,EAAO5uT,IAAI,KAAM1B,KAAK3d,IAAIqtU,WAEjBvxD,IAAgB,UACzBmyD,EAAO5uT,IAAI,KAAMy8P,UAERwxD,IAAc,UACvBW,EAAO5uT,IAAI,KAAMiuT,GAEnB,MAAMY,EAAY,IAAInwT,KAAKC,GAC3BkwT,EAAU7uT,IAAI,MAAO4uT,GACrB,MAAMr5S,EAAY,IAAI7W,KAAKC,GAC3B4W,EAAUvV,IAAI,YAAa6uT,GAC3Bt5S,EAAUvV,IAAI,UAAW0uT,GACzB,MAAMtC,EAAiB,IAAI1tT,KAAKC,GAChCytT,EAAepsT,IAAI,YAAauV,GAChC,MAAMiwM,EAAOnzN,KAAK8S,KAAK5M,KAAO,CAACy0B,EAAME,EAAMD,EAAMk1M,GACjDiqF,EAAepsT,IAAI,OAAQwlN,GAC3BnzN,KAAK2qQ,WAAa,IAAIhxP,aAAa,mBACnC3Z,KAAK2qQ,WAAWt8P,KAAO0rT,EACvB/5T,KAAKo2T,SAASz0T,KAAK3B,KAAK2qQ,WAAY2xD,EACrC,CACD,gCAAa5H,CAAoBpoT,EAAMioT,EAAYphD,EAASnvP,GACrDuwS,EAAW3lT,MACd2lT,EAAW3lT,IAAMtC,EAAKinQ,sBAExB,MAAMkpD,EAAgBlI,EAAW3lT,IACjC,MAAMi8P,QAAW7qQ,KAAK08T,0BAA0BnI,EAAYjoT,EAAM0X,GAClE,IAAI24S,EACJ,GAAI9xD,EAAI,CACN,MAAM+xD,EAAQtwT,EAAKinQ,qBACnBopD,EAAiB38T,KAAK68T,cAActI,EAAYjoT,EAAM,CACpDswT,UAEFzpD,EAAQhkQ,IAAIytT,EAAO,CACjB9pT,KAAM+3P,GAEd,MACM8xD,EAAiB38T,KAAK68T,cAActI,EAAYjoT,EAAM,CAAE,GAEtD1O,OAAOC,UAAU02T,EAAWthD,eAC9B0pD,EAAehvT,IAAI,eAAgB4mT,EAAWthD,cAEhDE,EAAQhkQ,IAAIstT,EAAe,CACzB3pT,KAAM6pT,IAER,MAAO,CACL/tT,IAAK6tT,EAER,CACD,qCAAa1H,CAAyBhD,EAAmBzlT,EAAMioT,EAAYvwS,GACzE,MAAM6mP,QAAW7qQ,KAAK08T,0BAA0BnI,EAAYjoT,EAAM0X,GAClE,MAAM24S,EAAiB38T,KAAK68T,cAActI,EAAYjoT,EAAMu+P,EAAK,CAC/DA,MACE,CAAE,GACN,MAAMiyD,EAAgB,IAAI98T,KAAKvR,UAAUwR,YAAY,CACnDoO,KAAMsuT,EACNrwT,OACAylT,oBACAv8D,iBAAkBxxO,EAAOwxO,mBAEvB++D,EAAW3lT,MACbkuT,EAAcluT,IAAMkuT,EAAcC,aAAexI,EAAW3lT,KAE9D,OAAOkuT,CACR,EAEH,MAAMhK,yBAAyBgB,WAC7B,WAAA7zT,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,EAAIylT,kBACJA,GACE/tS,EACJ,MAAMlR,EAAO9S,KAAK8S,KAClB9S,KAAKs3T,iBAAmBtzS,EAAOsuS,gBAC/Bx/S,EAAK2hT,eAAiBpiU,EAAegB,OACjCyf,EAAKmkT,iBAAcl2T,IACrB+R,EAAKmkT,UAAYj3T,KAAKk3T,oBAAoB7oT,IAExCyE,EAAKmD,eAAYlV,IACnB+R,EAAKmD,QAAUF,eAAezJ,EAAM+B,EAAMrY,IAE5C,IAAIgnU,EAAahqT,uBAAuB,CACtC3E,OACApgB,IAAK,IACLof,SAAU,OAEZyF,EAAKkqT,WAAah9T,KAAKi9T,iBAAiBD,GACxC,MAAME,EAAoBlqT,uBAAuB,CAC/C3E,OACApgB,IAAK,KACLof,SAAU,OAEZyF,EAAKoqT,kBAAoBl9T,KAAKi9T,iBAAiBC,GAC/C,GAAIF,SAAej8T,GAAagxT,EAAkBD,YAAa,CAC7D,MAAM98S,EAAOhV,KAAK04T,OAAO52T,IACzB,GAAIkT,EAAM,CACRhV,KAAKm9T,iBAAmB,KACxBrqT,EAAKkqT,WAAaA,EAAajL,EAAkBD,YAAYsL,SAASpoT,EACvE,CACF,CACGgoT,SAAej8T,GAAa+R,EAAKoqT,oBAAsB,OACzDpqT,EAAKkqT,WAAalqT,EAAKoqT,mBAEzBpqT,EAAKuqT,gBAAkBr1T,kBAAkBqG,EAAK/f,IAAI,OAAS,IAC3D0R,KAAKs4T,qBAAqBt0S,GAC1BlR,EAAK4jT,gBAAkB12T,KAAKs3T,kBAAoBxkT,EAAKkqT,kBAAej8T,GAAa+R,EAAKkqT,aAAe,KACrG,MAAMvK,EAAYz/S,uBAAuB,CACvC3E,OACApgB,IAAK,OAEP6kB,EAAK2/S,UAAYA,aAAqBxmT,KAAOwmT,EAAU1yT,KAAO,KAC9D,MAAMu9T,EAAiBtqT,uBAAuB,CAC5C3E,OACApgB,IAAK,OAEP,MAAMsvU,EAAoBxL,EAAkB15C,SAAS/pR,IAAI,MACzD,MAAMkvU,EAAsBx9T,KAAK2qQ,YAAYt8P,KAAK/f,IAAI,aACtD0R,KAAKy9T,gBAAkB,CACrBH,iBACAC,oBACAC,sBACAE,gBAAiBrxT,KAAK2B,MAAM,CAC1B1B,OACA2B,UAAW,CAACqvT,EAAgBE,EAAqBD,GACjDrvT,cAAe,QAGnB4E,EAAK6qT,WAAa3qT,uBAAuB,CACvC3E,OACApgB,IAAK,SAEF2P,OAAOC,UAAUiV,EAAK6qT,aAAe7qT,EAAK6qT,WAAa,KAC1D7qT,EAAK6qT,WAAa,GAEpB7qT,EAAK8qT,SAAW59T,KAAK69T,aAAarpU,EAAoBJ,UACtD0e,EAAK+tR,SAAW7gS,KAAK69T,aAAarpU,EAAoBC,UACtDqe,EAAKyuR,OAASvhS,KAAKu3T,SAASzkT,EAAKyjT,gBAAiBxiU,EAAeC,SAAWgM,KAAKu3T,SAASzkT,EAAKyjT,gBAAiBxiU,EAAeI,OAChI,CACD,gBAAA8oU,CAAiBa,GACf,OAAIn6T,MAAM2J,QAAQwwT,GACTA,EAAUjvS,QAAO9b,UAAeA,IAAS,WAAUoC,KAAIpC,GAAQ/K,kBAAkB+K,KAC/E+qT,aAAqB7xT,KACvBjE,kBAAkB81T,EAAU/9T,aACnB+9T,IAAc,SACvB91T,kBAAkB81T,GAEpB,IACR,CACD,YAAAD,CAAarzG,GACX,SAAUxqN,KAAK8S,KAAK6qT,WAAanzG,EAClC,CACD,WAAAmtG,CAAY14R,GACV,OAAO,IACR,CACD,YAAA44R,CAAap/S,EAAmBslT,GAC9B,OAAIA,EACK/9T,KAAK+3T,SAEP33T,MAAMy3T,aAAap/S,EAAmBslT,KAAiB/9T,KAAKu3T,SAASv3T,KAAKi/B,MAAOlrC,EAAeI,OACxG,CACD,iBAAAglB,CAAkBV,GAChB,IAAIW,EAAWX,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,KAAK5e,SACjDA,SAAarY,IACfqY,EAAWpZ,KAAKoZ,UAElB,GAAIA,IAAa,EACf,OAAO9pB,EAET,MAAM+pB,EAAQrZ,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GACjD,MAAMoT,EAAStZ,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAClD,OAAOiT,kBAAkBC,EAAUC,EAAOC,EAC3C,CACD,iCAAA0kT,CAAkCvlT,GAChC,IAAIW,EAAWX,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,KAAK5e,SACjDA,SAAarY,IACfqY,EAAWpZ,KAAKoZ,UAElB,IAAKpZ,KAAK2nS,kBAAoB3nS,KAAKk+R,YACjC,MAAO,GAET,MAAM7kR,EAAQrZ,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GACjD,MAAMoT,EAAStZ,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAClD,MAAMA,EAAOkT,IAAa,GAAKA,IAAa,IAAM,OAAOC,KAASC,OAAc,OAAOA,KAAUD,OACjG,IAAIvX,EAAM,GACN9B,KAAK2nS,kBACP7lS,EAAM,GAAGinQ,YAAY/oQ,KAAK2nS,gBAAiB,SAASzhS,QAEtD,GAAIlG,KAAKk+R,YAAa,CACpB,MAAMD,EAAcj+R,KAAKg+R,YAAY3kR,OAAS,EAC9CvX,GAAO,GAAGm8R,OAAiBl1B,YAAY/oQ,KAAKk+R,YAAa,UAAUh4R,MACpE,CACD,OAAOpE,CACR,CACD,qBAAMgxP,CAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GAC7C,GAAIyxO,EAASt6P,EAAoBK,qBAAuB+P,gBAAgB6yT,6BAA+B7yT,KAAK8S,KAAKgkT,SAAW92T,KAAK8S,KAAK8jT,aACpI,MAAO,CACL5rE,OAAQ,IAAIhB,aACZ6vE,aAAc,KACdC,eAAgB,OAGpB,IAAK95T,KAAKi+T,SACR,OAAO79T,MAAM0yP,gBAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GAExD,MAAMmsN,QAAgB5kO,KAAKk+T,eAAe/jF,EAAWiY,EAAMlI,EAAQzxO,GACnE,GAAIzY,KAAK2qQ,YAAc/lC,IAAY,KACjC,OAAOxkO,MAAM0yP,gBAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GAExD,MAAMuyO,EAAS,IAAIhB,aACnB,IAAKhqP,KAAKw4T,oBAAsB5zF,IAAY,KAC1C,MAAO,CACLomB,SACA6uE,aAAc,MACdC,eAAgB,OAGpB,MAAMF,KAAsB55T,KAAK8S,KAAK8jT,cAAgB1sE,EAASt6P,EAAoBE,SACnF,MAAMw0B,EAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/B,MAAM6uM,EAAO,CAAC,EAAG,EAAGnzN,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAAIlG,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,IAC9F,MAAM3N,EAAYg9T,mBAAmBv1T,KAAK8S,KAAK5M,KAAMitN,EAAM7uM,GAC3D,IAAIsmO,EACA5qP,KAAKy5T,KACP7uE,QAAwBzQ,EAAUoY,wBAAwBvyP,KAAKy5T,GAAI,OAEjE7uE,SAAoB7pP,GACtBiqP,EAAOP,MAAM9yP,EAAIsE,wBAAyB,CAAC,KAAM2uP,IAEnDI,EAAOP,MAAM9yP,EAAI8E,gBAAiB,CAACuD,KAAK8S,KAAKklB,GAAIh4B,KAAK8S,KAAK5M,KAAM3N,EAAWyH,KAAKmZ,kBAAkBV,GAAoBmhT,IACvH,MAAMp+S,EAAS,IAAI7B,aAAairN,SAC1BuV,EAAU2Y,gBAAgB,CAC9Bt3O,SACA42O,OACAlvO,UAAWljB,KAAKy9T,gBAAgBC,gBAChCvtF,aAAc6a,IAEhBA,EAAOP,MAAM9yP,EAAI+E,cAAe,IAC5BkuP,SAAoB7pP,GACtBiqP,EAAOP,MAAM9yP,EAAIuE,iBAAkB,IAErC,MAAO,CACL8uP,SACA6uE,aAAc,MACdC,eAAgBF,EAEnB,CACD,UAAAuE,CAAW/kT,GACT,MAAM2/S,EAAK,IAAI1sT,KAAK,MAChB+M,GACF2/S,EAAGprT,IAAI,IAAKyL,GAEVpZ,KAAKk+R,aACP66B,EAAGprT,IAAI,KAAMunT,iBAAiBl1T,KAAKk+R,cAEjCl+R,KAAK2nS,iBACPoxB,EAAGprT,IAAI,KAAMunT,iBAAiBl1T,KAAK2nS,kBAErC,OAAOoxB,EAAGlsT,KAAO,EAAIksT,EAAK,IAC3B,CACD,cAAAqF,CAAe3lT,EAAmBpK,GAAQ,CAC1C,QAAAgwT,CAAShwT,EAAM7O,EAAO8M,EAAM6mQ,GAC1B,MACE9kQ,KAAMgrD,EACNzqD,IAAKonQ,GACH7iQ,kBAAkB9E,EAAMrO,KAAK4O,IAAKtC,GACtC,GAAK+sD,GAEE,IAAK85M,EAAQvlQ,IAAIooQ,GAAY,CAClC,MAAMsoD,EAAgBjlQ,EAAW5qD,QACjC6vT,EAAc3wT,IAAI,IAAKnO,GACvB2zQ,EAAQhkQ,IAAI6mQ,EAAW,CACrBljQ,KAAMwrT,IAER,OAAOA,CACR,OARCjwT,EAAKV,IAAI,IAAKnO,GAShB,OAAO,IACR,CACD,UAAMnH,CAAK8hP,EAAWiY,EAAM35O,EAAmB06P,GAC7C,MAAMijC,EAAe39R,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,IACtD,MAAMiH,EAAQj/B,KAAKw3T,YAAYphB,GAAcqhB,OAAQrhB,GAAcshB,SACnE,IAAIl4T,EAAQ42S,GAAc52S,MACxB4Z,EAAWg9R,GAAch9R,SAC3B,GAAI5Z,IAAUQ,KAAK8S,KAAKkqT,YAAcx9T,SAAUuB,EAAW,CACzD,IAAKf,KAAKm9T,kBAAoB/jT,SAAarY,GAAak+B,SAAUl+B,EAChE,OAEFvB,IAAUQ,KAAK8S,KAAKkqT,UACrB,CACD,GAAI5jT,SAAarY,IAAcf,KAAKm9T,kBAAoBx5T,MAAM2J,QAAQ9N,IAAUmE,MAAM2J,QAAQtN,KAAK8S,KAAKkqT,aAAe/zT,aAAazJ,EAAOQ,KAAK8S,KAAKkqT,aAAe/9R,SAAUl+B,EAC5K,OAEEqY,SAAarY,IACfqY,EAAWpZ,KAAKoZ,UAElB,IAAIuxP,EAAa,KACjB,IAAK3qQ,KAAKs3T,iBAAkB,CAC1B3sD,QAAmB3qQ,KAAKk+T,eAAe/jF,EAAWiY,EAAMxiQ,EAAoBI,KAAMyoB,GAClF,GAAIkyP,IAAe,MAAQ1rO,SAAUl+B,EACnC,MAER,CACI,IAAIuxT,EAAkB,MACtB,GAAI3nD,GAAY2nD,gBAAiB,CAC/BA,EAAkB,KAClB3nD,EAAa,IACd,CACD,MAAMr+P,KACJA,GACE6tO,EACJ,MAAMokF,EAAejyT,EAAKiX,WAAWvjB,KAAK4O,KAC1C,KAAM2vT,aAAwBlyT,MAC5B,OAEF,MAAMgC,EAAO,IAAIhC,KAAKC,GACtB,IAAK,MAAMre,KAAOswU,EAAa/wT,UACzBvf,IAAQ,MACVogB,EAAKV,IAAI1f,EAAKswU,EAAahxT,OAAOtf,IAGtC,GAAIgxC,SAAUl+B,EAAW,CACvBsN,EAAKV,IAAI,IAAKsxB,GACd,GAAI0rO,IAAe,OAAS2nD,EAAiB,CAC3C,MAAMznD,EAAK0zD,EAAahxT,OAAO,MAC3Bs9P,GACFx8P,EAAKV,IAAI,KAAMk9P,EAElB,CACF,CACD,MAAMomB,EAAM,CACVj8Q,KAAMhV,KAAK8S,KAAKmkT,UAChBz3T,SAEF,MAAM8+T,EAAgBt+T,KAAKq+T,SAAShwT,EAAM1K,MAAM2J,QAAQ9N,GAASA,EAAM2V,IAAI0D,wBAA0BA,uBAAuBrZ,GAAQ8M,EAAM6mQ,GAC1InzQ,KAAKo+T,eAAe3lT,EAAmB6lT,GAAiBjwT,GACxD,MAAMmwT,EAAUx+T,KAAKm+T,WAAW/kT,GAC5BolT,GACFnwT,EAAKV,IAAI,KAAM6wT,GAEjBrrD,EAAQhkQ,IAAInP,KAAK4O,IAAK,CACpBkE,KAAMzE,EACN4iR,MACAqhC,oBAEF,GAAI3nD,IAAe,KAAM,CACvB,MAAM8zD,EAASnyT,EAAKinQ,qBACpB,MAAMmrD,EAAK,IAAIryT,KAAKC,GACpB+B,EAAKV,IAAI,KAAM+wT,GACfA,EAAG/wT,IAAI,IAAK8wT,GACZ,MAAMv7S,EAAYljB,KAAK2+T,uBAAuBryT,GAC9C,MAAMgwT,EAAmB,IAAI3iT,aAAagxP,GAC1C,MAAMovD,EAAiBuC,EAAiBjuT,KAAO,IAAIhC,KAAKC,GACxDytT,EAAepsT,IAAI,UAAW1B,KAAK3d,IAAI,SACvCyrU,EAAepsT,IAAI,YAAauV,GAChC62S,EAAepsT,IAAI,OAAQ,CAAC,EAAG,EAAG3N,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAAIlG,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,KAC5G,MAAM04T,EAAiB5+T,KAAKmZ,kBAAkBV,GAC1CmmT,IAAmBtvU,GACrByqU,EAAepsT,IAAI,SAAUixT,GAE/BzrD,EAAQhkQ,IAAIsvT,EAAQ,CAClB3rT,KAAMwpT,EACNrrC,IAAK,KACLqhC,gBAAiB,OAEpB,CACDjkT,EAAKV,IAAI,IAAK,KAAKvE,wBACpB,CACD,oBAAM80T,CAAe/jF,EAAWiY,EAAMlI,EAAQzxO,GAC5C,MAAMomT,EAAa7+T,KAAK69T,aAAarpU,EAAoBI,UACzD,GAAIiqU,EACF,OAAO,KAET,MAAMzoB,EAAe39R,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,IACtD,IAAIx4B,EAAO4Z,EACX,GAAIg9R,EAAc,CAChB52S,EAAQ42S,EAAa0oB,gBAAkB1oB,EAAa52S,MACpD4Z,EAAWg9R,EAAah9R,QACzB,CACD,GAAIA,SAAarY,GAAavB,SAAUuB,IAAcf,KAAKs3T,oBACpDt3T,KAAKm9T,kBAAoBn9T,KAAK2qQ,YACjC,OAAO,KAGX,MAAMjjN,EAAS1nD,KAAKg+T,kCAAkCvlT,GACtD,GAAIjZ,SAAUuB,EAAW,CACvBvB,EAAQQ,KAAK8S,KAAKkqT,WAClB,IAAKx9T,EACH,MAAO,aAAakoD,QAEvB,CACG/jD,MAAM2J,QAAQ9N,IAAUA,EAAMN,SAAW,IAC3CM,EAAQA,EAAM,IAEhBlB,cAAckB,IAAU,SAAU,oCAClCA,EAAQA,EAAM26T,UACd,GAAIn6T,KAAK8S,KAAKisT,MAAO,CACnB,MAAMxsK,EAASvyJ,KAAK8S,KAAKjU,QAAQuqR,MAAK,EACpC41C,iBACIx/T,IAAUw/T,IAChBx/T,EAAQ+yJ,GAAQ0sK,cAAgBz/T,CACjC,CACD,GAAIA,IAAU,GACZ,MAAO,aAAakoD,SAElBtuC,SAAarY,IACfqY,EAAWpZ,KAAKoZ,UAElB,IAAI8lT,GAAa,EACjB,IAAIn1R,EACJ,GAAI/pC,KAAK8S,KAAK+/R,UAAW,CACvB9oQ,EAAQvqC,EAAM0V,MAAM,YAAYC,KAAIm0B,GAAQA,EAAKp/B,UAAU,SAC3Dg1T,EAAYn1R,EAAM7qC,MACxB,MACM6qC,EAAQ,CAACvqC,EAAMq8C,QAAQ,WAAY,IAAI3xC,UAAU,QAEnD,MAAMi1T,EAAiB,EACvB,MAAMC,EAAkB,EACxB,IAAInkE,EAAcj7P,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GACrD,IAAIy3B,EAAa39B,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAChDkT,IAAa,IAAMA,IAAa,OACjCukB,EAAYs9N,GAAe,CAACA,EAAat9N,IAEvC39B,KAAKw4T,qBACRx4T,KAAK8S,KAAK2lT,sBAAwB/vD,uBAAuB1oQ,KAAKw4T,mBAAqB,wBAErF,IAAIp0G,QAAa0uG,iBAAiBuM,aAAallF,EAAWiY,EAAMpyP,KAAK8S,KAAK2lT,sBAAuBz4T,KAAKy9T,gBAAgBC,iBACtH,IAAInF,EAAmB/+D,EAAUp+B,EACjC,MAAMkkG,EAAe,GACrB,IAAIC,EAAgB,MACpB,IAAK,MAAMj2R,KAAQS,EAAO,CACxB,MAAMy1R,EAAgBp7G,EAAKikB,aAAa/+L,GACpCk2R,EAActgU,OAAS,IACzBqgU,EAAgB,MAElBD,EAAa39T,KAAK69T,EAAc59T,KAAK,IACtC,CACD,GAAI29T,GAAiBr1E,EAASt6P,EAAoBI,KAChD,MAAO,CACLsiU,gBAAiB,MAGrB,GAAIiN,GAAiBv/T,KAAKo3T,4BAA6B,CACrD,MAAMtgT,EAAa9W,KAAK8S,KAAKuvR,KAAO,YAAc,aAClD,MAAMo9B,EAAkB,IAAIv2D,gBAAgB/uB,EAAU7tO,KAAMwK,GAC5D,MAAMoM,EAAYu8S,EAAgB31D,oBAAoB//N,EAAMnoC,KAAK,KACjE,MAAM89T,EAAUx8S,EAAU3V,OAAO,QACjC,GAAIvN,KAAKy9T,gBAAgBC,gBAAgB9vT,IAAI,QAAS,CACpD,MAAM+xT,EAAU3/T,KAAKy9T,gBAAgBC,gBAAgBpvU,IAAI,QACzD,IAAK,MAAML,KAAOyxU,EAAQlyT,UACxBmyT,EAAQhyT,IAAI1f,EAAKyxU,EAAQnyT,OAAOtf,GAE1C,MACQ+R,KAAKy9T,gBAAgBC,gBAAgB/vT,IAAI,OAAQ+xT,GAEnD,MAAMn+G,EAAWk+G,EAAgBl+G,SAASxhN,KAC1CqkN,QAAa0uG,iBAAiBuM,aAAallF,EAAWiY,EAAM,CAC1D7wC,WACAi4C,SAAU,GACTt2O,GACH,IAAK,IAAI7hB,EAAI,EAAGoH,EAAK62T,EAAapgU,OAAQmC,EAAIoH,EAAIpH,IAChDi+T,EAAaj+T,GAAK0X,oBAAoBgxB,EAAM1oC,IAE9C,MAAMu+T,EAAyBzxU,OAAOktD,OAAOltD,OAAO0d,OAAO,MAAO7L,KAAK8S,KAAK2lT,uBAC5Ez4T,KAAK8S,KAAK2lT,sBAAsBj/D,SAAW,EAC3Cx5P,KAAK8S,KAAK2lT,sBAAsBl3G,SAAWA,GAC1Cg3G,EAAmB/+D,EAAUp+B,GAAcp7N,KAAK6/T,iBAAiB5kE,EAAc,EAAIkkE,EAAgBxhS,EAAa,EAAIyhS,EAAiB5/T,EAAO4kN,EAAM86G,GACnJl/T,KAAK8S,KAAK2lT,sBAAwBmH,CACxC,KAAW,CACA5/T,KAAKo3T,6BACRj5T,KAAK,2FAENo6T,EAAmB/+D,EAAUp+B,GAAcp7N,KAAK6/T,iBAAiB5kE,EAAc,EAAIkkE,EAAgBxhS,EAAa,EAAIyhS,EAAiB5/T,EAAO4kN,EAAM86G,EACpJ,CACD,IAAIppQ,EAAUsuJ,EAAKtuJ,QAEjBA,EADEh+C,MAAMg+C,GACEnmE,EAAkByrO,EAElB75N,KAAK+D,IAAI3V,EAAkByrO,EAAY75N,KAAKmG,IAAIouD,GAAW0jM,GAEvE,MAAMsmE,EAAkBv+T,KAAKC,IAAID,KAAKkZ,OAAOwgP,EAAczB,GAAY,GAAI2lE,GAC3E,MAAMY,EAAY//T,KAAK8S,KAAKktT,cAC5B,GAAIhgU,KAAK8S,KAAK+/R,UACZ,OAAO7yS,KAAKigU,wBAAwB1H,EAAmB+G,EAAcl7G,EAAMo1C,EAAU77N,EAAYs9N,EAAa8kE,EAAWX,EAAiBU,EAAiBhqQ,EAASslK,EAAY3iN,GAElL,GAAIzY,KAAK8S,KAAKuvR,KACZ,OAAOriS,KAAKkgU,mBAAmB3H,EAAmBn0G,EAAMk7G,EAAa,GAAI9lE,EAAU77N,EAAYs9N,EAAamkE,EAAiBU,EAAiBhqQ,EAASslK,EAAY3iN,GAErK,MAAM0nT,EAAgBL,EAAkBhqQ,EACxC,GAAIiqQ,IAAc,GAAKA,EAAY,EACjC,MAAO,aAAar4Q,OAAc6wQ,EAAoB,YAAYngT,eAAegnT,MAAoBhnT,eAAe+nT,UAAsB3qT,aAAa8pT,EAAa,mBAEtK,MAAMc,EAAW,CACfnxS,MAAO,GAET,MAAMoxS,EAAergU,KAAKsgU,YAAYhB,EAAa,GAAIl7G,EAAMo1C,EAAU77N,EAAYoiS,EAAWK,EAAUhB,EAAiBe,GACzH,MAAO,aAAaz4Q,OAAc6wQ,EAAoB,mBAAmB8H,YAC1E,CACD,yBAAahB,CAAallF,EAAWiY,EAAMmuE,EAAgBr9S,GACzD,MAAMitN,EAAe,IAAI6Z,aACzB,MAAMqI,EAAe,CACnBjuC,KAAM,KACN,KAAA31M,GACE,OAAOzO,IACR,GAEH,MAAMuhN,SACJA,EAAQi4C,SACRA,GACE+mE,QACEpmF,EAAU4a,cAAc7xO,EAAW,CAACq+L,GAAYt1M,KAAK3d,IAAIizN,GAAWi4C,GAAW,KAAMrpB,EAAciiB,EAAMC,EAAc,MAC7H,OAAOA,EAAajuC,IACrB,CACD,aAAAo8G,CAAc1iE,EAAM15C,GAClB,OAAOA,EAAK4jB,cAAc81B,GAAM/0C,QAAO,CAAC1vM,EAAO+hD,IAAU/hD,EAAQ+hD,EAAM/hD,OAAO,GAAK,GACpF,CACD,gBAAAwmT,CAAiBvmT,EAAQD,EAAOykP,EAAM15C,EAAM86G,GAC1C,IAAI1lE,SACFA,GACEx5P,KAAK8S,KAAK2lT,sBACd,IAAIr9F,GAAco+B,GAAY,IAAM/pQ,EAClCgxU,EAAgBl/T,KAAK+W,MAAMgB,EAAS8hN,GACtC,IAAKo+B,EAAU,CACb,MAAMknE,mBAAqBn5T,GAAKhG,KAAKkZ,MAAMlT,EAAI,KAAO,IACtD,GAAI23T,KAAe,EAAG,CACpB,MAAMyB,EAAY3gU,KAAKwgU,cAAc1iE,EAAM15C,GAC3Co1C,EAAWknE,mBAAmBn/T,KAAKC,IAAI8X,EAAS7pB,EAAa4pB,EAAQsnT,IACrEF,EAAgB,CACxB,KAAa,CACL,MAAM12R,EAAQ+zN,EAAK5oP,MAAM,YACzB,MAAM0rT,EAAc,GACpB,IAAK,MAAMt3R,KAAQS,EAAO,CACxB,MAAMgkL,EAAU3J,EAAKikB,aAAa/+L,GAAM1nC,KAAK,IAC7C,MAAM4hN,EAASY,EAAK4jB,cAAcja,GAClC,MAAMoa,EAAY/jB,EAAK8jB,iBAAiBna,GACxC6yG,EAAYj/T,KAAK,CACf2nC,KAAMykL,EACNvK,SACA2kB,aAEH,CACD,MAAM04F,SAAWC,IACf,IAAI7lE,EAAc,EAClB,IAAK,MAAM7iO,KAASwoS,EAAa,CAC/B,MAAMvmT,EAASra,KAAK+gU,WAAW,KAAM38G,EAAM08G,EAAOznT,EAAO+e,GACzD6iO,GAAe5gP,EAAOnb,OAAS4hU,EAC/B,GAAI7lE,EAAc3hP,EAChB,OAAO,IAEV,CACD,OAAO,KAAK,EAEdmnT,EAAgBl/T,KAAK+D,IAAIm7T,EAAevB,GACxC,MAAO,KAAM,CACX9jG,EAAa9hN,EAASmnT,EACtBjnE,EAAWknE,mBAAmBtlG,EAAa3rO,GAC3C,IAAIoxU,SAASrnE,GAIb,MAHEinE,GAIH,CACF,CACD,MAAMl/G,SACJA,EAAQknD,UACRA,GACEzoQ,KAAK8S,KAAK2lT,sBACdz4T,KAAKw4T,mBAAqBvvD,wBAAwB,CAChDzP,WACAj4C,WACAknD,aAEH,CACD,MAAO,CAACzoQ,KAAKw4T,mBAAoBh/D,EAAUlgP,EAASmnT,EACrD,CACD,WAAAH,CAAYxiE,EAAM15C,EAAMo1C,EAAU77N,EAAYoiS,EAAWK,EAAUY,EAAUC,GAC3E,IAAIhyS,EACJ,GAAI8wS,IAAc,EAAG,CACnB,MAAM1mT,EAAQrZ,KAAKwgU,cAAc1iE,EAAM15C,GAAQo1C,EAC/CvqO,GAAS0O,EAAatkB,GAAS,CACrC,MAAW,GAAI0mT,IAAc,EAAG,CAC1B,MAAM1mT,EAAQrZ,KAAKwgU,cAAc1iE,EAAM15C,GAAQo1C,EAC/CvqO,EAAQ0O,EAAatkB,EAAQ2nT,CACnC,MACM/xS,EAAQ+xS,EAEV,MAAME,EAAW9oT,eAAe6W,EAAQmxS,EAASnxS,OACjDmxS,EAASnxS,MAAQA,EACjBgyS,EAAW7oT,eAAe6oT,GAC1B,MAAO,GAAGC,KAAYD,SAAgBzrT,aAAasoP,QACpD,CACD,sBAAA6gE,CAAuBryT,GACrB,MAAMgxT,eACJA,EAAcE,oBACdA,EAAmBD,kBACnBA,GACEv9T,KAAKy9T,gBACT,MAAMl8G,EAAWvhN,KAAK8S,KAAK2lT,uBAAuBl3G,SAClD,IAAKA,EACH,OAAO+7G,GAAkBjxT,KAAKyB,MAEhC,IAAK,MAAMoV,IAAa,CAACo6S,EAAgBE,GACvC,GAAIt6S,aAAqB7W,KAAM,CAC7B,MAAM80T,EAAYj+S,EAAU50B,IAAI,QAChC,GAAI6yU,aAAqB90T,MAAQ80T,EAAUvzT,IAAI2zM,GAC7C,OAAOr+L,CAEV,CAEH,GAAIq6S,aAA6BlxT,KAAM,CACrC,MAAM+0T,EAAe7D,EAAkBjvU,IAAI,QAC3C,GAAI8yU,aAAwB/0T,MAAQ+0T,EAAaxzT,IAAI2zM,GAAW,CAC9D,MAAM8/G,EAAc,IAAIh1T,KAAKC,GAC7B+0T,EAAY1zT,IAAI4zM,EAAU6/G,EAAa7zT,OAAOg0M,IAC9C,MAAM+/G,EAAmB,IAAIj1T,KAAKC,GAClCg1T,EAAiB3zT,IAAI,OAAQ0zT,GAC7B,OAAOh1T,KAAK2B,MAAM,CAChB1B,OACA2B,UAAW,CAACqzT,EAAkBhE,GAC9BpvT,cAAe,MAElB,CACF,CACD,OAAOovT,GAAkBjxT,KAAKyB,KAC/B,CACD,cAAAwsT,GACE,OAAO,IACR,EAEH,MAAM5H,6BAA6BI,iBACjC,WAAA7yT,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,GACE2V,EACJ,GAAI3V,EAAKT,IAAI,OAAQ,CACnB5N,KAAKi/B,OAASlrC,EAAeC,OAC7BgM,KAAK8S,KAAKyuR,OAAS,KACnBpjS,KAAK,6BACN,CACD6B,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK8qT,WAAa59T,KAAK8S,KAAKgkT,OAC1D92T,KAAKi+T,SAAW,YACLj+T,KAAK8S,KAAKkqT,aAAe,WAClCh9T,KAAK8S,KAAKkqT,WAAa,IAEzB,IAAI+C,EAAY/sT,uBAAuB,CACrC3E,OACApgB,IAAK,QAEF2P,OAAOC,UAAUkiU,IAAcA,EAAY,GAAKA,EAAY,KAC/DA,EAAY,MAEd//T,KAAK8S,KAAKktT,cAAgBD,EAC1B,IAAIwB,EAAgBvuT,uBAAuB,CACzC3E,OACApgB,IAAK,aAEF2P,OAAOC,UAAU0jU,IAAkBA,EAAgB,KACtDA,EAAgB,GAElBvhU,KAAK8S,KAAKsiB,OAASmsS,EACnBvhU,KAAK8S,KAAK+/R,UAAY7yS,KAAK69T,aAAarpU,EAAoBG,WAC5DqL,KAAK8S,KAAKuvR,KAAOriS,KAAK69T,aAAarpU,EAAoBe,QAAUyK,KAAK69T,aAAarpU,EAAoBG,aAAeqL,KAAK69T,aAAarpU,EAAoBI,YAAcoL,KAAK69T,aAAarpU,EAAoBW,aAAe6K,KAAK8S,KAAKsiB,SAAW,EACpPp1B,KAAK8S,KAAK0uT,YAAcxhU,KAAK69T,aAAarpU,EAAoBc,YAC/D,CACD,kBAAI0kU,GACF,QAASh6T,KAAK2qQ,aAAe3qQ,KAAKs3T,gBACnC,CACD,kBAAA4I,CAAmB3H,EAAmBn0G,EAAM05C,EAAMtE,EAAUngP,EAAOC,EAAQ0nT,EAAUC,EAAUnrQ,EAASslK,EAAY3iN,GAClH,MAAMgpT,EAAYpoT,EAAQrZ,KAAK8S,KAAKsiB,OACpC,MAAMsyB,EAAS1nD,KAAKg+T,kCAAkCvlT,GACtD,MAAMQ,EAAM,GACZ,MAAMkvN,EAAY/jB,EAAK8jB,iBAAiB41B,GACxC,IAAK,MAAO/rP,EAAON,KAAQ02N,EACzBlvN,EAAItX,KAAK,IAAI6T,aAAasoP,EAAKvoP,UAAUxD,EAAON,WAElD,MAAMiwT,EAAezoT,EAAIrX,KAAK,IAAIwW,eAAeqpT,YACjD,MAAO,aAAa/5Q,OAAc6wQ,EAAoB,YAAYngT,eAAe4oT,MAAa5oT,eAAe6oT,EAAWnrQ,SAAe4rQ,YACxI,CACD,uBAAAzB,CAAwB1H,EAAmBxuR,EAAOq6K,EAAMo1C,EAAUngP,EAAOC,EAAQymT,EAAWiB,EAAUC,EAAUnrQ,EAASslK,EAAY3iN,GACnI,MAAMQ,EAAM,GACZ,MAAM0kB,EAAatkB,EAAQ,EAAI2nT,EAC/B,MAAMZ,EAAW,CACfnxS,MAAO,GAET,IAAK,IAAI5tB,EAAI,EAAGoH,EAAKshC,EAAM7qC,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC9C,MAAMioC,EAAOS,EAAM1oC,GACnB,MAAMgZ,EAASra,KAAK+gU,WAAWz3R,EAAM86K,EAAMo1C,EAAU77N,GACrD,IAAK,IAAIzd,EAAI,EAAGitB,EAAK9yB,EAAOnb,OAAQghB,EAAIitB,EAAIjtB,IAAK,CAC/C,MAAMze,EAAQ4Y,EAAO6F,GACrB,MAAMwqP,EAASrpQ,IAAM,GAAK6e,IAAM,GAAK+gT,GAAY7lG,EAAatlK,IAAYslK,EAC1EniN,EAAItX,KAAK3B,KAAKsgU,YAAY7+T,EAAO2iN,EAAMo1C,EAAUngP,EAAO0mT,EAAWK,EAAUY,EAAUt2D,GACxF,CACF,CACD,MAAMhjN,EAAS1nD,KAAKg+T,kCAAkCvlT,GACtD,MAAM4nT,EAAepnT,EAAIrX,KAAK,MAC9B,MAAO,aAAa8lD,OAAc6wQ,EAAoB,cAAcngT,eAAekB,SAAc+mT,YAClG,CACD,UAAAU,CAAWz3R,EAAM86K,EAAMo1C,EAAUngP,EAAO+e,EAAQ,IAC9CkR,EAAOlR,EAAMkR,MAAQA,EACrB,MAAMk6K,EAASprL,EAAMorL,QAAUY,EAAK4jB,cAAc1+L,GAClD,GAAIk6K,EAAOtkN,QAAU,EACnB,MAAO,CAACoqC,GAEV,MAAM6+L,EAAY/vM,EAAM+vM,WAAa/jB,EAAK8jB,iBAAiB5+L,GAC3D,MAAMhkB,EAAQk0O,EAAW,IACzB,MAAMn/O,EAAS,GACf,IAAIsnT,GAA6B,EAC/BC,GAA2B,EAC3Bj2C,GAAgB,EAChBk2C,EAAa,EACbnkS,EAAe,EACjB,IAAK,IAAIr8B,EAAI,EAAGoH,EAAK+6M,EAAOtkN,OAAQmC,EAAIoH,EAAIpH,IAAK,CAC/C,MAAO0Q,EAAON,GAAO02N,EAAU9mO,GAC/B,MAAM+5D,EAAQooJ,EAAOniN,GACrB,MAAM68P,EAAa9iM,EAAM/hD,MAAQiM,EACjC,GAAI81C,EAAMs8I,UAAY,IACpB,GAAIh6K,EAAewgO,EAAa7kP,EAAO,CACrCgB,EAAO1Y,KAAK2nC,EAAK/zB,UAAUssT,EAAY9vT,IACvC8vT,EAAa9vT,EACb2rB,EAAewgO,EACfyjE,GAA6B,EAC7Bh2C,GAAgB,CAC1B,KAAe,CACLjuP,GAAgBwgO,EAChByjE,EAA4B5vT,EAC5B6vT,EAA0BnwT,EAC1Bk6Q,EAAetqR,CAChB,MACI,GAAIq8B,EAAewgO,EAAa7kP,EACrC,GAAIsoT,KAA+B,EAAG,CACpCtnT,EAAO1Y,KAAK2nC,EAAK/zB,UAAUssT,EAAYD,IACvCC,EAAaD,EACbvgU,EAAIsqR,EAAe,EACnBg2C,GAA6B,EAC7BjkS,EAAe,CACzB,KAAe,CACLrjB,EAAO1Y,KAAK2nC,EAAK/zB,UAAUssT,EAAY9vT,IACvC8vT,EAAa9vT,EACb2rB,EAAewgO,CAChB,MAEDxgO,GAAgBwgO,CAEnB,CACG2jE,EAAav4R,EAAKpqC,QACpBmb,EAAO1Y,KAAK2nC,EAAK/zB,UAAUssT,EAAYv4R,EAAKpqC,SAE9C,OAAOmb,CACR,CACD,wBAAM4/S,CAAmB9/E,EAAWiY,EAAMoI,SAClCp6P,MAAM65T,mBAAmB9/E,EAAWiY,EAAMoI,GAChD,MAAMsD,EAAO99P,KAAK8S,KAAK+nP,YACvB,IAAKiD,EACH,OAEF,MAAMgkE,EAAUhkE,EAAKl8P,KAAK,MAC1B,GAAIkgU,IAAY9hU,KAAK8S,KAAKkqT,WACxB,OAEF,MAAM/kT,EAAQ6pT,EAAQv5T,WAAW,+BAA+B,CAACw5T,EAAI98T,IAAOA,EAAK,KAAKA,IAAO,SACzF,IAAIgS,OAAO,QAAQgB,UAAcf,KAAKlX,KAAK8S,KAAKkqT,cAClDh9T,KAAK8S,KAAK+nP,YAAc76P,KAAK8S,KAAKkqT,WAAW9nT,MAAM,MAEtD,CACD,cAAAolT,GACE,MAAO,CACLtiS,GAAIh4B,KAAK8S,KAAKklB,GACdx4B,MAAOQ,KAAK8S,KAAKkqT,WACjBj2C,aAAc/mR,KAAK8S,KAAKoqT,mBAAqB,GAC7C8E,UAAWhiU,KAAK8S,KAAK+/R,UACrBovB,SAAUjiU,KAAK69T,aAAarpU,EAAoBI,UAChDstU,UAAWliU,KAAK8S,KAAKsiB,OACrBitQ,KAAMriS,KAAK8S,KAAKuvR,KAChB8/B,UAAWniU,KAAK8S,KAAK8qT,SACrBr8B,OAAQvhS,KAAK8S,KAAKyuR,OAClBxhS,KAAMC,KAAK8S,KAAKmkT,UAChB/wT,KAAMlG,KAAK8S,KAAK5M,KAChB+P,QAASjW,KAAK8S,KAAKmD,QACnBu+P,KAAMx0Q,KAAK8S,KAAK8F,UAChB2hT,YAAav6T,KAAK8S,KAAKorR,YACvBs8B,UAAWx6T,KAAK8S,KAAK60R,gBACrBvuR,SAAUpZ,KAAKoZ,SACf/pB,KAAM,OAET,EAEH,MAAMsjU,+BAA+BG,iBACnC,WAAA7yT,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAKoiU,kBAAoB,KACzBpiU,KAAKqiU,oBAAsB,KAC3BriU,KAAK8S,KAAKwvT,UAAYtiU,KAAK69T,aAAarpU,EAAoBM,SAAWkL,KAAK69T,aAAarpU,EAAoBO,YAC7GiL,KAAK8S,KAAKyvT,YAAcviU,KAAK69T,aAAarpU,EAAoBM,SAAWkL,KAAK69T,aAAarpU,EAAoBO,YAC/GiL,KAAK8S,KAAK0vT,WAAaxiU,KAAK69T,aAAarpU,EAAoBO,YAC7DiL,KAAK8S,KAAK2vT,cAAgB,MAC1B,GAAIziU,KAAK8S,KAAKwvT,SACZtiU,KAAK0iU,iBAAiB1+S,QACjB,GAAIhkB,KAAK8S,KAAKyvT,YACnBviU,KAAK2iU,oBAAoB3+S,QACpB,GAAIhkB,KAAK8S,KAAK0vT,WAAY,CAC/BxiU,KAAK8S,KAAK8jT,aAAe,KACzB52T,KAAK8S,KAAKgkT,OAAS,MACnB92T,KAAK4iU,mBAAmB5+S,EAC9B,MACM7lB,KAAK,mDAER,CACD,qBAAM20P,CAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GAC7C,GAAIzY,KAAK8S,KAAK0vT,WACZ,OAAOpiU,MAAM0yP,gBAAgB3Y,EAAWiY,EAAMlI,EAAQ,MAAOzxO,GAE/D,IAAIjZ,EAAQ,KACZ,IAAI4Z,EAAW,KACf,GAAIX,EAAmB,CACrB,MAAM29R,EAAe39R,EAAkBnqB,IAAI0R,KAAK8S,KAAKklB,IACrDx4B,EAAQ42S,EAAeA,EAAa52S,MAAQ,KAC5C4Z,EAAWg9R,EAAeA,EAAah9R,SAAW,IACnD,CACD,GAAI5Z,IAAU,MAAQQ,KAAK2qQ,WACzB,OAAOvqQ,MAAM0yP,gBAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GAEpDjZ,IAAU,MAAQA,SAAUuB,IAC9BvB,EAAQQ,KAAK8S,KAAKwvT,SAAWtiU,KAAK8S,KAAKkqT,aAAeh9T,KAAK8S,KAAKksT,YAAch/T,KAAK8S,KAAKkqT,aAAeh9T,KAAK8S,KAAK+vT,aAEnH,MAAMl4D,EAAanrQ,EAAQQ,KAAKoiU,kBAAoBpiU,KAAKqiU,oBACzD,GAAI13D,EAAY,CACd,MAAMm4D,EAAkB9iU,KAAK2qQ,WAC7B,MAAMo4D,EAAcpuT,aAAag2P,EAAWt8P,KAAKhB,SAAS,UAAW/d,GACjE8pB,GACFuxP,EAAWt8P,KAAKV,IAAI,SAAU3N,KAAKmZ,kBAAkBV,IAEvDzY,KAAK2qQ,WAAaA,EAClB,MAAMx6B,EAAe/vO,MAAM0yP,gBAAgB3Y,EAAWiY,EAAMlI,EAAQzxO,GACpEzY,KAAK2qQ,WAAam4D,EAClBn4D,EAAWt8P,KAAKV,IAAI,SAAUo1T,GAC9B,OAAO5yF,CACR,CACD,MAAO,CACL6a,OAAQ,IAAIhB,aACZ6vE,aAAc,MACdC,eAAgB,MAEnB,CACD,UAAMzhU,CAAK8hP,EAAWiY,EAAM35O,EAAmB06P,GACzCnzQ,KAAK8S,KAAKwvT,SACZtiU,KAAKgjU,cAAc7oF,EAAWiY,EAAM35O,EAAmB06P,GAGrDnzQ,KAAK8S,KAAKyvT,aACZviU,KAAKijU,iBAAiB9oF,EAAWiY,EAAM35O,EAAmB06P,EAE7D,CACD,mBAAM6vD,CAAc7oF,EAAWiY,EAAM35O,EAAmB06P,GACtD,IAAK16P,EACH,OAEF,MAAM29R,EAAe39R,EAAkBnqB,IAAI0R,KAAK8S,KAAKklB,IACrD,MAAMiH,EAAQj/B,KAAKw3T,YAAYphB,GAAcqhB,OAAQrhB,GAAcshB,SACnE,IAAIt+S,EAAWg9R,GAAch9R,SAC3B5Z,EAAQ42S,GAAc52S,MACxB,GAAI4Z,SAAarY,GAAak+B,SAAUl+B,EAAW,CACjD,GAAIvB,SAAUuB,EACZ,OAEF,MAAMgmR,EAAe/mR,KAAK8S,KAAKkqT,aAAeh9T,KAAK8S,KAAKksT,YACxD,GAAIj4C,IAAiBvnR,EACnB,MAEH,CACD,IAAI6O,EAAO8rO,EAAU7tO,KAAKiX,WAAWvjB,KAAK4O,KAC1C,KAAMP,aAAgBhC,MACpB,OAEFgC,EAAOA,EAAKI,QACR2K,SAAarY,IACfqY,EAAWpZ,KAAKoZ,UAEd5Z,SAAUuB,IACZvB,EAAQQ,KAAK8S,KAAKkqT,aAAeh9T,KAAK8S,KAAKksT,aAE7C,MAAM/tC,EAAM,CACVj8Q,KAAMhV,KAAK8S,KAAKmkT,UAChBz3T,MAAOA,EAAQQ,KAAK8S,KAAKksT,YAAc,IAEzC,MAAMj/T,EAAOkM,KAAK3d,IAAIkR,EAAQQ,KAAK8S,KAAKksT,YAAc,OACtDh/T,KAAKq+T,SAAShwT,EAAMtO,EAAMo6O,EAAU7tO,KAAM6mQ,GAC1C9kQ,EAAKV,IAAI,KAAM5N,GACfsO,EAAKV,IAAI,IAAK,KAAKvE,yBACf61B,SAAUl+B,GACZsN,EAAKV,IAAI,IAAKsxB,GAEhB,MAAMu/R,EAAUx+T,KAAKm+T,WAAW/kT,GAC5BolT,GACFnwT,EAAKV,IAAI,KAAM6wT,GAEjBrrD,EAAQhkQ,IAAInP,KAAK4O,IAAK,CACpBkE,KAAMzE,EACN4iR,MACAqhC,gBAAiB,OAEpB,CACD,sBAAM2Q,CAAiB9oF,EAAWiY,EAAM35O,EAAmB06P,GACzD,IAAK16P,EACH,OAEF,MAAM29R,EAAe39R,EAAkBnqB,IAAI0R,KAAK8S,KAAKklB,IACrD,MAAMiH,EAAQj/B,KAAKw3T,YAAYphB,GAAcqhB,OAAQrhB,GAAcshB,SACnE,IAAIt+S,EAAWg9R,GAAch9R,SAC3B5Z,EAAQ42S,GAAc52S,MACxB,GAAI4Z,SAAarY,GAAak+B,SAAUl+B,EAAW,CACjD,GAAIvB,SAAUuB,EACZ,OAEF,MAAMgmR,EAAe/mR,KAAK8S,KAAKkqT,aAAeh9T,KAAK8S,KAAK+vT,YACxD,GAAI97C,IAAiBvnR,EACnB,MAEH,CACD,IAAI6O,EAAO8rO,EAAU7tO,KAAKiX,WAAWvjB,KAAK4O,KAC1C,KAAMP,aAAgBhC,MACpB,OAEFgC,EAAOA,EAAKI,QACRjP,SAAUuB,IACZvB,EAAQQ,KAAK8S,KAAKkqT,aAAeh9T,KAAK8S,KAAK+vT,aAEzCzpT,SAAarY,IACfqY,EAAWpZ,KAAKoZ,UAElB,MAAM63Q,EAAM,CACVj8Q,KAAMhV,KAAK8S,KAAKmkT,UAChBz3T,MAAOA,EAAQQ,KAAK8S,KAAK+vT,YAAc,IAEzC,MAAM9iU,EAAOkM,KAAK3d,IAAIkR,EAAQQ,KAAK8S,KAAK+vT,YAAc,OAClDrjU,GACFQ,KAAKq+T,SAAShwT,EAAMtO,EAAMo6O,EAAU7tO,KAAM6mQ,GAE5C9kQ,EAAKV,IAAI,KAAM5N,GACfsO,EAAKV,IAAI,IAAK,KAAKvE,yBACf61B,SAAUl+B,GACZsN,EAAKV,IAAI,IAAKsxB,GAEhB,MAAMu/R,EAAUx+T,KAAKm+T,WAAW/kT,GAC5BolT,GACFnwT,EAAKV,IAAI,KAAM6wT,GAEjBrrD,EAAQhkQ,IAAInP,KAAK4O,IAAK,CACpBkE,KAAMzE,EACN4iR,MACAqhC,gBAAiB,OAEpB,CACD,4BAAA4Q,CAA6Bl/S,EAAQ30B,GACnC,MAAMgqB,EAAQrZ,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GACjD,MAAMoT,EAAStZ,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAClD,MAAMitN,EAAO,CAAC,EAAG,EAAG95M,EAAOC,GAC3B,MAAM6pT,EAAa,GACnB,MAAM3pE,EAAWj4P,KAAKC,IAAI6X,EAAOC,GAAU6pT,EAC3C,IAAIhnG,EAAS7mN,EACb,GAAIjmB,IAAS,QAAS,CACpB8sO,EAAU,CACR9iN,MAAO,KAAQmgP,EACflgP,OAAQ,KAAQkgP,GAElBlkP,EAAO,GACb,MAAW,GAAIjmB,IAAS,OAAQ,CAC1B8sO,EAAU,CACR9iN,MAAO,KAAQmgP,EACflgP,OAAQ,KAAQkgP,GAElBlkP,EAAO,GACb,MACMlX,YAAY,oDAAoD/O,KAElE,MAAM+zU,EAAShrT,gBAAgBiB,EAAQ8iN,EAAQ9iN,OAAS,GACxD,MAAMgqT,EAASjrT,gBAAgBkB,EAAS6iN,EAAQ7iN,QAAU,GAC1D,MAAMqxP,EAAa,mBAAmBnR,YAAmB4pE,KAAUC,SAAc/tT,aACjF,MAAMs1P,EAAuB,IAAIv+P,KAAK2X,EAAO1X,MAC7Cs+P,EAAqBj9P,IAAI,WAAY,GACrCi9P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQwlN,GACjCy3C,EAAqBj9P,IAAI,SAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACnDi9P,EAAqBj9P,IAAI,SAAUg9P,EAAWzrQ,QAC9C,MAAMgkB,EAAY,IAAI7W,KAAK2X,EAAO1X,MAClC,MAAM83M,EAAO,IAAI/3M,KAAK2X,EAAO1X,MAC7B83M,EAAKz2M,IAAI,YAAa3N,KAAKk1P,kBAC3BhyO,EAAUvV,IAAI,OAAQy2M,GACtBwmD,EAAqBj9P,IAAI,YAAauV,GACtCljB,KAAKoiU,kBAAoB,IAAIzoT,aAAagxP,GAC1C3qQ,KAAKoiU,kBAAkB/zT,KAAOu8P,EAC9B5qQ,KAAKo2T,SAASz0T,KAAK3B,KAAKoiU,kBACzB,CACD,gBAAAM,CAAiB1+S,GACf,MAAMs/S,EAAmBt/S,EAAO3V,KAAK/f,IAAI,MACzC,KAAMg1U,aAA4Bj3T,MAChC,OAEF,MAAMk3T,EAAmBD,EAAiBh1U,IAAI,KAC9C,KAAMi1U,aAA4Bl3T,MAChC,OAEF,MAAMm3T,EAAUxjU,KAAKi9T,iBAAiBj5S,EAAO3V,KAAK/f,IAAI,cAC3Ck1U,IAAY,WACrBxjU,KAAK8S,KAAKkqT,WAAawG,GAEzB,MAAMC,EAAMzjU,KAAK8S,KAAKkqT,aAAe,MAAQh9T,KAAK8S,KAAKkqT,aAAe,MAAQh9T,KAAK8S,KAAKkqT,WAAa,MACrG,MAAM0G,EAAeH,EAAiB/1T,UACtC,GAAIk2T,EAAaxkU,SAAW,EAC1BwkU,EAAa/hU,KAAK,MAAO8hU,QACpB,GAAIC,EAAaxkU,SAAW,EAC7BwkU,EAAa,KAAO,MACtBA,EAAa/hU,KAAK8hU,GAElBC,EAAa1lR,QAAQ,YAElB,GAAI0lR,EAAavgU,SAASsgU,GAAM,CACrCC,EAAaxkU,OAAS,EACtBwkU,EAAa/hU,KAAK,MAAO8hU,EAC/B,KAAW,CACL,MAAME,EAAWD,EAAat6C,MAAKx5Q,GAAKA,IAAM,QAC9C8zT,EAAaxkU,OAAS,EACtBwkU,EAAa/hU,KAAK,MAAOgiU,EAC1B,CACID,EAAavgU,SAASnD,KAAK8S,KAAKkqT,cACnCh9T,KAAK8S,KAAKkqT,WAAa,OAEzBh9T,KAAK8S,KAAKksT,YAAc0E,EAAa,GACrC,MAAMtB,EAAoBmB,EAAiBj1U,IAAI0R,KAAK8S,KAAKksT,aACzDh/T,KAAKoiU,kBAAoBA,aAA6BlyT,WAAakyT,EAAoB,KACvF,MAAMC,EAAsBkB,EAAiBj1U,IAAI,OACjD0R,KAAKqiU,oBAAsBA,aAA+BnyT,WAAamyT,EAAsB,KACzFriU,KAAKoiU,kBACPpiU,KAAKo2T,SAASz0T,KAAK3B,KAAKoiU,mBAExBpiU,KAAKkjU,6BAA6Bl/S,EAAQ,SAExChkB,KAAKqiU,qBACPriU,KAAKo2T,SAASz0T,KAAK3B,KAAKqiU,qBAE1BriU,KAAKq3T,kBAAoBr3T,KAAKk1P,iBAC1Bl1P,KAAK8S,KAAKoqT,oBAAsB,OAClCl9T,KAAK8S,KAAKoqT,kBAAoB,MAEjC,CACD,mBAAAyF,CAAoB3+S,GAClBhkB,KAAK8S,KAAK+vT,YAAc,KACxB,MAAMe,EAAc5/S,EAAO3V,KAAK/f,IAAI,UACpC,GAAIs1U,aAAuBv3T,KAAM,CAC/BrM,KAAKgP,OAASgV,EAAO3V,KAAKd,OAAO,UACjC,MAAMs2T,EAAmBD,EAAYt1U,IAAI,KACrCu1U,aAA4B53T,OAC9BjM,KAAK8S,KAAKkqT,WAAah9T,KAAKi9T,iBAAiB4G,GAEhD,CACD,MAAMtK,EAAmBv1S,EAAO3V,KAAK/f,IAAI,MACzC,KAAMirU,aAA4BltT,MAChC,OAEF,MAAMk3T,EAAmBhK,EAAiBjrU,IAAI,KAC9C,KAAMi1U,aAA4Bl3T,MAChC,OAEF,IAAK,MAAMpe,KAAOs1U,EAAiB/1T,UACjC,GAAIvf,IAAQ,MAAO,CACjB+R,KAAK8S,KAAK+vT,YAAc7iU,KAAKi9T,iBAAiBhvU,GAC9C,KACD,CAEH,MAAMm0U,EAAoBmB,EAAiBj1U,IAAI0R,KAAK8S,KAAK+vT,aACzD7iU,KAAKoiU,kBAAoBA,aAA6BlyT,WAAakyT,EAAoB,KACvF,MAAMC,EAAsBkB,EAAiBj1U,IAAI,OACjD0R,KAAKqiU,oBAAsBA,aAA+BnyT,WAAamyT,EAAsB,KACzFriU,KAAKoiU,kBACPpiU,KAAKo2T,SAASz0T,KAAK3B,KAAKoiU,mBAExBpiU,KAAKkjU,6BAA6Bl/S,EAAQ,QAExChkB,KAAKqiU,qBACPriU,KAAKo2T,SAASz0T,KAAK3B,KAAKqiU,qBAE1BriU,KAAKq3T,kBAAoBr3T,KAAKk1P,iBAC1Bl1P,KAAK8S,KAAKoqT,oBAAsB,OAClCl9T,KAAK8S,KAAKoqT,kBAAoB,MAEjC,CACD,kBAAA0F,CAAmB5+S,GACjB,MAAM3V,KACJA,EAAI0jT,kBACJA,GACE/tS,EACJ,GAAK3V,EAAKT,IAAI,MAASS,EAAKT,IAAI,OAAU5N,KAAK8S,KAAKuqT,gBAApD,CAIAr9T,KAAK8S,KAAK2vT,eAAiBp0T,EAAKT,IAAI,OAASS,EAAKT,IAAI,MACtD+pQ,QAAQ6B,oBAAoB,CAC1BC,SAAUprQ,EACVqrQ,UAAW15Q,KAAK8S,KAChB6mQ,WAAYo4C,EAAkBnzT,QAC9Bg7Q,eAAgBm4C,EAAkBl4C,aANnC,MAFC17Q,KAAK,6DAUR,CACD,cAAAm8T,GACE,IAAIjrU,EAAO,SACX,IAAIq0U,EACJ,GAAI1jU,KAAK8S,KAAKwvT,SAAU,CACtBjzU,EAAO,WACPq0U,EAAe1jU,KAAK8S,KAAKksT,WAC/B,MAAW,GAAIh/T,KAAK8S,KAAKyvT,YAAa,CAChClzU,EAAO,cACPq0U,EAAe1jU,KAAK8S,KAAK+vT,WAC1B,CACD,MAAO,CACL7qS,GAAIh4B,KAAK8S,KAAKklB,GACdx4B,MAAOQ,KAAK8S,KAAKkqT,YAAc,MAC/Bj2C,aAAc/mR,KAAK8S,KAAKoqT,kBACxBwG,eACAvB,UAAWniU,KAAK8S,KAAK8qT,SACrB79T,KAAMC,KAAK8S,KAAKmkT,UAChB/wT,KAAMlG,KAAK8S,KAAK5M,KAChBq7R,OAAQvhS,KAAK8S,KAAKyuR,OAClBtrR,QAASjW,KAAK8S,KAAKmD,QACnBu+P,KAAMx0Q,KAAK8S,KAAK8F,UAChB2hT,YAAav6T,KAAK8S,KAAKorR,YACvBs8B,UAAWx6T,KAAK8S,KAAK60R,gBACrBvuR,SAAUpZ,KAAKoZ,SACf/pB,OAEH,CACD,oBAAI6lQ,GACF,MAAM7mP,EAAO,IAAIhC,KACjBgC,EAAKV,IAAI,WAAY1B,KAAK3d,IAAI,iBAC9B+f,EAAKV,IAAI,OAAQ1B,KAAK3d,IAAI,iBAC1B+f,EAAKV,IAAI,UAAW1B,KAAK3d,IAAI,iBAC7B+f,EAAKV,IAAI,WAAY1B,KAAK3d,IAAI,yBAC9B,OAAOiR,OAAOS,KAAM,mBAAoBqO,EACzC,EAEH,MAAMukT,+BAA+BE,iBACnC,WAAA7yT,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8jU,QAAUz1T,EAAKhB,SAAS,KAC7BrN,KAAK+jU,WAAapgU,MAAM2J,QAAQtN,KAAK8jU,UAAY9jU,KAAK8jU,QAAQ5kU,OAAS,EACvEc,KAAK8S,KAAKjU,QAAU,GACpB,MAAMA,EAAUmU,uBAAuB,CACrC3E,OACApgB,IAAK,QAEP,GAAI0V,MAAM2J,QAAQzO,GAChB,IAAK,IAAIwC,EAAI,EAAGoH,EAAK5J,EAAQK,OAAQmC,EAAIoH,EAAIpH,IAAK,CAChD,MAAMkxJ,EAASjmJ,EAAKiX,WAAW1kB,EAAQwC,IACvC,MAAM2iU,EAAgBrgU,MAAM2J,QAAQilJ,GACpCvyJ,KAAK8S,KAAKjU,QAAQwC,GAAK,CACrB29T,YAAah/T,KAAKi9T,iBAAiB+G,EAAgB13T,EAAKiX,WAAWgvI,EAAO,IAAMA,GAChF0sK,aAAcj/T,KAAKi9T,iBAAiB+G,EAAgB13T,EAAKiX,WAAWgvI,EAAO,IAAMA,GAEpF,CAEH,GAAKvyJ,KAAK+jU,WAMH,CACL/jU,KAAK8S,KAAKkqT,WAAa,GACvB,MAAMv0T,EAAKzI,KAAK8S,KAAKjU,QAAQK,OAC7B,IAAK,MAAMmC,KAAKrB,KAAK8jU,QACflmU,OAAOC,UAAUwD,IAAMA,GAAK,GAAKA,EAAIoH,GACvCzI,KAAK8S,KAAKkqT,WAAWr7T,KAAK3B,KAAK8S,KAAKjU,QAAQwC,GAAG29T,YAGpD,aAbYh/T,KAAK8S,KAAKkqT,aAAe,SAClCh9T,KAAK8S,KAAKkqT,WAAa,CAACh9T,KAAK8S,KAAKkqT,YACxBh9T,KAAK8S,KAAKkqT,aACpBh9T,KAAK8S,KAAKkqT,WAAa,IAWvBh9T,KAAK8S,KAAKjU,QAAQK,SAAW,GAAKc,KAAK8S,KAAKkqT,WAAW99T,OAAS,IAClEc,KAAK8S,KAAKjU,QAAUmB,KAAK8S,KAAKkqT,WAAW7nT,KAAI3V,IAAU,CACrDw/T,YAAax/T,EACby/T,aAAcz/T,OAGlBQ,KAAK8S,KAAKisT,MAAQ/+T,KAAK69T,aAAarpU,EAAoBQ,OACxDgL,KAAK8S,KAAKmxT,YAAcjkU,KAAK69T,aAAarpU,EAAoBY,aAC9D4K,KAAKi+T,SAAW,IACjB,CACD,cAAA3D,GACE,MAAMjrU,EAAO2Q,KAAK8S,KAAKisT,MAAQ,WAAa,UAC5C,MAAMv/T,EAAQQ,KAAK8S,KAAKkqT,WAAW99T,OAAS,EAAIc,KAAK8S,KAAKkqT,WAAW,GAAK,KAC1E,MAAO,CACLhlS,GAAIh4B,KAAK8S,KAAKklB,GACdx4B,QACAunR,aAAc/mR,KAAK8S,KAAKoqT,kBACxBiF,UAAWniU,KAAK8S,KAAK8qT,SACrB79T,KAAMC,KAAK8S,KAAKmkT,UAChB/wT,KAAMlG,KAAK8S,KAAK5M,KAChBg+T,SAAUlkU,KAAK8S,KAAKkqT,WAAW99T,OAC/BilU,kBAAmBnkU,KAAK8S,KAAKmxT,YAC7B1iC,OAAQvhS,KAAK8S,KAAKyuR,OAClBtrR,QAASjW,KAAK8S,KAAKmD,QACnBvG,MAAO1P,KAAK8S,KAAKjU,QACjB21Q,KAAMx0Q,KAAK8S,KAAK8F,UAChB2hT,YAAav6T,KAAK8S,KAAKorR,YACvBs8B,UAAWx6T,KAAK8S,KAAK60R,gBACrBvuR,SAAUpZ,KAAKoZ,SACf/pB,OAEH,CACD,cAAA+uU,CAAe3lT,EAAmBpK,GAChC,IAAKrO,KAAK+jU,WACR,OAEF,IAAIr2T,EAAS+K,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,KAAKx4B,MAC9CmE,MAAM2J,QAAQI,KACjBA,EAAS,CAACA,IAEZ,MAAMo2T,EAAU,GAChB,MAAMjlU,QACJA,GACEmB,KAAK8S,KACT,IAAK,IAAIzR,EAAI,EAAG6e,EAAI,EAAGzX,EAAK5J,EAAQK,OAAQmC,EAAIoH,EAAIpH,IAClD,GAAIxC,EAAQwC,GAAG29T,cAAgBtxT,EAAOwS,GAAI,CACxC4jT,EAAQniU,KAAKN,GACb6e,GAAK,CACN,CAEH7R,EAAKV,IAAI,IAAKm2T,EACf,CACD,oBAAM5F,CAAe/jF,EAAWiY,EAAMlI,EAAQzxO,GAC5C,GAAIzY,KAAK8S,KAAKisT,MACZ,OAAO3+T,MAAM89T,eAAe/jF,EAAWiY,EAAMlI,EAAQzxO,GAEvD,IAAI8nR,EAAennR,EACnB,MAAMg9R,EAAe39R,GAAmBnqB,IAAI0R,KAAK8S,KAAKklB,IACtD,GAAIo+Q,EAAc,CAChBh9R,EAAWg9R,EAAah9R,SACxBmnR,EAAgB6V,EAAa52S,KAC9B,CACD,GAAI4Z,SAAarY,GAAaw/R,SAAkBx/R,IAAcf,KAAKs3T,iBACjE,OAAO,KAEL/2B,SAAkBx/R,EACpBw/R,EAAgBvgS,KAAK8S,KAAKkqT,WAChBr5T,MAAM2J,QAAQizR,KACxBA,EAAgB,CAACA,IAEnB,MAAM4+B,EAAiB,EACvB,MAAMC,EAAkB,EACxB,IAAInkE,EAAcj7P,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GACrD,IAAIy3B,EAAa39B,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAChDkT,IAAa,IAAMA,IAAa,OACjCukB,EAAYs9N,GAAe,CAACA,EAAat9N,IAE5C,MAAMuhS,EAAYl/T,KAAK8S,KAAKjU,QAAQK,OACpC,MAAMklU,EAAe,GACrB,IAAK,IAAI/iU,EAAI,EAAGA,EAAI69T,EAAW79T,IAAK,CAClC,MAAM29T,YACJA,GACEh/T,KAAK8S,KAAKjU,QAAQwC,GAClBk/R,EAAcp9R,SAAS67T,IACzBoF,EAAaziU,KAAKN,EAErB,CACIrB,KAAKw4T,qBACRx4T,KAAK8S,KAAK2lT,sBAAwB/vD,uBAAuB1oQ,KAAKw4T,mBAAqB,wBAErF,MAAMp0G,QAAa0uG,iBAAiBuM,aAAallF,EAAWiY,EAAMpyP,KAAK8S,KAAK2lT,sBAAuBz4T,KAAKy9T,gBAAgBC,iBACxH,IAAInF,EACJ,IAAI/+D,SACFA,GACEx5P,KAAK8S,KAAK2lT,sBACd,GAAKj/D,EAeH++D,EAAoBv4T,KAAKw4T,uBAfZ,CACb,MAAMp9F,GAAc6/B,EAAckkE,GAAkBD,EACpD,IAAI70D,GAAa,EACjB,IAAI7qQ,EACJ,IAAK,MAAMy/T,aACTA,KACGj/T,KAAK8S,KAAKjU,QAAS,CACtB,MAAMwa,EAAQrZ,KAAKwgU,cAAcvB,EAAc76G,GAC/C,GAAI/qM,EAAQgxP,EAAW,CACrBA,EAAYhxP,EACZ7Z,EAAQy/T,CACT,CACF,EACA1G,EAAmB/+D,GAAYx5P,KAAK6/T,iBAAiBzkG,EAAYz9L,EAAa,EAAIyhS,EAAiB5/T,EAAO4kN,GAAO,EACxH,CAGI,MAAMgX,EAAao+B,EAAW/pQ,EAC9B,MAAMwxU,GAAY7lG,EAAao+B,GAAY,EAC3C,MAAM6qE,EAAuB9iU,KAAKkZ,MAAMwgP,EAAc7/B,GACtD,IAAIkpG,EAAa,EACjB,GAAIF,EAAallU,OAAS,EAAG,CAC3B,MAAMqlU,EAAWhjU,KAAKC,OAAO4iU,GAC7B,MAAMI,EAAWjjU,KAAK+D,OAAO8+T,GAC7BE,EAAa/iU,KAAK+D,IAAI,EAAGk/T,EAAWH,EAAuB,GACvDC,EAAaC,IACfD,EAAaC,EAEhB,CACD,MAAM9yT,EAAMlQ,KAAKC,IAAI8iU,EAAaD,EAAuB,EAAGnF,GAC5D,MAAMjmT,EAAM,CAAC,YAAa,OAAO0kB,KAAcs9N,YAC/C,GAAImpE,EAAallU,OAAQ,CACvB+Z,EAAItX,KAAK,iCACT,IAAK,MAAMwpC,KAASi5R,EACdE,GAAcn5R,GAASA,EAAQ15B,GACjCwH,EAAItX,KAAK,KAAKs5P,GAAe9vN,EAAQm5R,EAAa,GAAKlpG,KAAcz9L,KAAcy9L,SAGxF,CACDniN,EAAItX,KAAK,KAAM42T,EAAmB,aAAat9D,QAC/C,MAAMmlE,EAAW,CACfnxS,MAAO,GAET,IAAK,IAAI5tB,EAAIijU,EAAYjjU,EAAIoQ,EAAKpQ,IAAK,CACrC,MAAM49T,aACJA,GACEj/T,KAAK8S,KAAKjU,QAAQwC,GACtB,MAAMojU,EAAWpjU,IAAMijU,EAAarD,EAAW,EAC/ChoT,EAAItX,KAAK3B,KAAKsgU,YAAYrB,EAAc76G,EAAMo1C,EAAU77N,EAAY,EAAGyiS,EAAUhB,GAAkBhkG,EAAaqpG,GACjH,CACDxrT,EAAItX,KAAK,YACT,OAAOsX,EAAIrX,KAAK,KACjB,EAEH,MAAMixT,kCAAkCC,iBACtC,WAAA7yT,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAK8S,KAAKkqT,WAAa,KACvBh9T,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,QAAU92T,KAAK8S,KAAK8jT,YAC/B,CACD,cAAA0D,GACE,MAAO,CACLtiS,GAAIh4B,KAAK8S,KAAKklB,GACdx4B,MAAO,KACPg1Q,KAAMx0Q,KAAK8S,KAAK8F,UAChBvpB,KAAM,YAET,EAEH,MAAMmjU,uBAAuByI,iBAC3B,WAAAh7T,CAAY+jB,GACV,MAAM0gT,EAAoB,GAC1BtkU,MAAM4jB,GACNhkB,KAAK8S,KAAK+jT,SAAW,KACrB72T,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,OAAS,MACnB,MAAMzoT,KACJA,GACE2V,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeC,KAC1C,GAAI0N,KAAK8S,KAAK4jT,cACZ12T,KAAK8S,KAAK/S,KAAO,aACZ,CACLC,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAAKw+T,EACxC1kU,KAAK8S,KAAK5M,KAAK,GAAKlG,KAAK8S,KAAK5M,KAAK,GAAKw+T,EACxC1kU,KAAK8S,KAAK/S,KAAOsO,EAAKT,IAAI,QAAUS,EAAK/f,IAAI,QAAQyR,KAAO,MAC7D,CACD,GAAIsO,EAAKT,IAAI,SAAU,CACrB5N,KAAK8S,KAAK23C,MAAQp8C,EAAK/f,IAAI,UAAY,KACvC0R,KAAK8S,KAAK6xT,WAAat2T,EAAK/f,IAAI,eAAiB,IACvD,KAAW,CACL0R,KAAK8S,KAAK23C,MAAQ,KAClBzqD,KAAK8S,KAAK6xT,WAAa,IACxB,CACF,EAEH,MAAMpS,uBAAuBuB,WAC3B,WAAA7zT,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI0jT,kBACJA,GACE/tS,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeE,KAC1CyN,KAAK8S,KAAKgkT,OAAS,MACnB,MAAMnC,EAAaQ,cAAc9mT,EAAMrO,KAAKlH,WACxC67T,IACF30T,KAAK8S,KAAK6hT,WAAaA,GAEzB30T,KAAK8S,KAAKorR,cAAgBl+R,KAAK8S,KAAKsV,MACpCuvP,QAAQ6B,oBAAoB,CAC1BC,SAAUprQ,EACVqrQ,UAAW15Q,KAAK8S,KAChB6mQ,WAAYo4C,EAAkBnzT,QAC9Bg7Q,eAAgBm4C,EAAkBl4C,aAErC,EAEH,MAAMk5C,wBAAwBe,WAC5B,WAAA7zT,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,GACE2V,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeY,MAC1C+M,KAAK8S,KAAKgkT,OAAS,MACf92T,KAAK8S,KAAK5M,KAAK,KAAOlG,KAAK8S,KAAK5M,KAAK,IAAMlG,KAAK8S,KAAK5M,KAAK,KAAOlG,KAAK8S,KAAK5M,KAAK,KAClFlG,KAAK8S,KAAK5M,KAAO,MAEnB,IAAI0+T,EAAav2T,EAAK/f,IAAI,UAC1B,IAAKs2U,EAAY,CACfzmU,KAAK,gEACL,MACD,CACD6B,KAAK8S,KAAK+xT,WAAa/vT,iBAAiB8vT,EAAWv3T,SAAS,QAAS,MACrE,MAAM+tT,EAAKwJ,EAAWt2U,IAAI,MACtBqhB,OAAOyrT,EAAIxnU,EAAoBC,SACjC+wU,EAAaA,EAAWt2U,IAAI,QAE9B,GAAKs2U,EAAWh3T,IAAI,KAEb,CACL5N,KAAK01T,oBAAoBkP,EAAWt2U,IAAI,MACxC0R,KAAK8S,KAAK6jT,iBAAmB32T,KAAK22T,gBACnC,MAJC32T,KAAK8S,KAAK6jT,iBAAmB,KAK/B,GAAKiO,EAAWh3T,IAAI,KAEb,CACL5N,KAAK61T,SAAS+O,EAAWv3T,SAAS,MAClCrN,KAAK8S,KAAKsV,MAAQpoB,KAAKooB,KACxB,MAJCpoB,KAAK8S,KAAKsV,MAAQ,KAKpB,IAAKpoB,KAAK+3T,SAAU,CAClB,MAAM+M,EAAcF,EAAWt2U,IAAI,KAC/B0R,KAAK23T,YAAYmN,IACnB9kU,KAAK21T,SAASmP,EAEjB,CACD9kU,KAAKw1T,SAASoP,EAAWt2U,IAAI,MAC7B0R,KAAK8S,KAAKyoT,SAAWv7T,KAAK04T,OAC1B14T,KAAKy1T,YAAYmP,EAAWt2U,IAAI,aAChC0R,KAAK8S,KAAK0jT,YAAcx2T,KAAKy2T,UACzBmO,EAAWh3T,IAAI,QACjB5N,KAAK8S,KAAKg5S,SAAWwE,WAAWgB,kBAAkBsT,EAAWt2U,IAAI,QAEnE0R,KAAK8S,KAAKmpC,OAAS5tC,EAAK/f,IAAI,OAC7B,EAEH,MAAM0kU,2BAA2BiI,iBAC/B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKikT,YAAc/2T,KAAK8S,KAAKgkT,OAClC92T,KAAK8S,KAAKgkT,OAAS,MACnB,MAAMthE,iBACJA,EAAgBlpP,KAChBA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAe3B,SAC1CsP,KAAKs4T,qBAAqBt0S,GAC1BhkB,KAAK+kU,iBAAmB/kU,KAAK2qQ,WAC7B,GAAI3qQ,KAAK+kU,eAAgB,CACvB,MAAMt8D,UACJA,EAASjP,SACTA,GACEsP,sBAAsB9oQ,KAAK2qQ,WAAYnV,EAAkBlpP,GAC7DtM,KAAK8S,KAAK2lT,sBAAsBhwD,UAAYA,EAC5CzoQ,KAAK8S,KAAK2lT,sBAAsBj/D,SAAWA,GAAY,EAC7D,KAAW,CACLx5P,KAAK8S,KAAK2lT,sBAAsBj/D,WAAa,GAC7C,MAAMiP,UACJA,EAASjP,SACTA,GACEx5P,KAAK8S,KAAK2lT,sBACd,GAAIz4T,KAAKy2T,UAAU30T,IAAK,CACtB9B,KAAK8S,KAAK+nP,YAAc76P,KAAKy2T,UAAU30T,IAAIoT,MAAM,YAAYC,KAAIm0B,GAAQA,EAAK6wR,YAC9E,MAAM7sF,OACJA,EAAMna,KACNA,EAAI7uM,OACJA,GACE4kP,gBAAgBc,qBAAqBhqQ,KAAKlH,UAAWkH,KAAKoZ,SAAUogP,GACxEx5P,KAAK8S,KAAKsnT,aAAep6T,KAAKq6T,gBAAgB/sF,EAAQna,EAAM7uM,EAC7D,CACD,GAAItkB,KAAKo3T,4BAA6B,CACpC,MAAMhtD,EAAcpmP,EAAO3V,KAAK/f,IAAI,MACpC,MAAMmxU,EAAkB,IAAIv2D,gBAAgB58P,EAAM,cAClDtM,KAAK2qQ,WAAa80D,EAAgBv1D,iBAAiBlqQ,KAAKy2T,UAAU30T,IAAK9B,KAAKlH,UAAWkH,KAAKoZ,SAAUogP,EAAUiP,EAAW2B,GAC3HpqQ,KAAKo2T,SAASz0T,KAAK3B,KAAK2qQ,WAChC,MACQxsQ,KAAK,6FAER,CACF,CACD,kBAAI67T,GACF,OAAOh6T,KAAK+kU,cACb,CACD,oBAAOlI,CAActI,EAAYjoT,GAAMswT,MACrCA,EAAK/xD,GACLA,IAEA,MAAMziP,MACJA,EAAKoxO,SACLA,EAAQwrE,cACRA,EAAa9+T,KACbA,EAAIkT,SACJA,EAAQ6rT,KACRA,EAAIzlU,MACJA,GACE+0T,EACJ,MAAM2Q,EAAWF,GAAiB,IAAI34T,KAAKC,GAC3C44T,EAASv3T,IAAI,OAAQ1B,KAAK3d,IAAI,UAC9B42U,EAASv3T,IAAI,UAAW1B,KAAK3d,IAAI,aACjC,GAAI02U,EAAe,CACjBE,EAASv3T,IAAI,IAAK,KAAKvE,yBACvB87T,EAAS51T,OAAO,KACtB,MACM41T,EAASv3T,IAAI,eAAgB,KAAKvE,yBAEpC87T,EAASv3T,IAAI,OAAQzH,GACrB,MAAMi/T,EAAK,SAAS3rE,QAAeuP,YAAY3gP,EAAO,QACtD88S,EAASv3T,IAAI,KAAMw3T,GACnBD,EAASv3T,IAAI,WAAYkL,uBAAuBrZ,IAChD0lU,EAASv3T,IAAI,IAAK,GAClBu3T,EAASv3T,IAAI,SAAU,CAAC,EAAG,EAAG,IAC9Bu3T,EAASv3T,IAAI,SAAUyL,GACnB6rT,GACFC,EAASv3T,IAAI,IAAKkL,uBAAuBosT,IAE3C,GAAIrI,GAAS/xD,EAAI,CACf,MAAMhnQ,EAAI,IAAIwI,KAAKC,GACnB44T,EAASv3T,IAAI,KAAM9J,GACf+4T,EACF/4T,EAAE8J,IAAI,IAAKivT,GAEX/4T,EAAE8J,IAAI,IAAKk9P,EAEd,CACD,OAAOq6D,CACR,CACD,sCAAaxI,CAA0BnI,EAAYjoT,EAAM0X,GACvD,MAAM4lP,YACJA,EAAWzvB,UACXA,EAASiY,KACTA,GACEpuO,EACJ,MAAMoE,MACJA,EAAKoxO,SACLA,EAAQtzP,KACRA,EAAIkT,SACJA,EAAQ5Z,MACRA,GACE+0T,EACJ,MAAMrxS,EAAY,IAAI7W,KAAKC,GAC3B,MAAM83M,EAAO,IAAI/3M,KAAKC,GACtB,GAAIs9P,EACFxlD,EAAKz2M,IAAI,OAAQi8P,OACZ,CACL,MAAMpG,EAAW,IAAIn3P,KAAKC,GAC1Bk3P,EAAS71P,IAAI,WAAY1B,KAAK3d,IAAI,cAClCk1Q,EAAS71P,IAAI,OAAQ1B,KAAK3d,IAAI,SAC9Bk1Q,EAAS71P,IAAI,UAAW1B,KAAK3d,IAAI,UACjCk1Q,EAAS71P,IAAI,WAAY1B,KAAK3d,IAAI,oBAClC81N,EAAKz2M,IAAI,OAAQ61P,EAClB,CACDtgP,EAAUvV,IAAI,OAAQy2M,GACtB,MAAMghH,QAAatS,iBAAiBuM,aAAallF,EAAWiY,EAAM,CAChE7wC,SAAU,OACVi4C,YACCt2O,GACH,MAAOtc,EAAII,EAAIH,EAAII,GAAMf,EACzB,IAAIkuL,EAAIvtL,EAAKD,EACb,IAAIuqC,EAAIlqC,EAAKD,EACToS,EAAW,MAAQ,KACpBg7K,EAAGjjJ,GAAK,CAACA,EAAGijJ,IAEf,MAAMrqJ,EAAQvqC,EAAM0V,MAAM,MAC1B,MAAMoQ,EAAQk0O,EAAW,IACzB,IAAI77N,GAAcs5N,SAClB,MAAMqoE,EAAe,GACrB,IAAK,IAAIh2R,KAAQS,EAAO,CACtB,MAAMgkL,EAAUq3G,EAAK/8F,aAAa/+L,GAClC,GAAIykL,EAAQ7uN,OAAS,EACnB,OAAO,KAEToqC,EAAOykL,EAAQnsN,KAAK,IACpB09T,EAAa39T,KAAK2nC,GAClB,IAAI+gO,EAAY,EAChB,MAAM7mD,EAAS4hH,EAAKp9F,cAAc1+L,GAClC,IAAK,MAAM8xB,KAASooJ,EAClB6mD,GAAajvM,EAAM/hD,MAAQiM,EAE7BqY,EAAap8B,KAAK+D,IAAIq4B,EAAY0sO,EACnC,CACD,IAAIC,EAAS,EACT3sO,EAAay2J,IACfk2E,EAASl2E,EAAIz2J,GAEf,IAAI4sO,EAAS,EACb,MAAMnvC,EAAa3rO,EAAc+pQ,EACjC,MAAM6rE,GAAc51U,EAAcC,GAAuB8pQ,EACzD,MAAMyB,EAAc7/B,EAAarxL,EAAM7qC,OACnC+7P,EAAc9pN,IAChBo5N,EAASp5N,EAAI8pN,GAEf,MAAMuP,EAASjpQ,KAAKC,IAAI8oQ,EAAQC,GAChC,MAAME,EAAcjR,EAAWgR,EAC/B,IAAI86D,EAAYC,EAASjhT,EACzB,OAAQlL,GACN,KAAK,EACHkL,EAAS,CAAC,EAAG,EAAG,EAAG,GACnBihT,EAAU,CAACr/T,EAAK,GAAIA,EAAK,GAAIkuL,EAAGjjJ,GAChCm0R,EAAa,CAACp/T,EAAK,GAAIA,EAAK,GAAKm/T,GACjC,MACF,KAAK,GACH/gT,EAAS,CAAC,EAAG,GAAI,EAAG,GACpBihT,EAAU,CAACr/T,EAAK,IAAKA,EAAK,GAAIkuL,EAAGjjJ,GACjCm0R,EAAa,CAACp/T,EAAK,IAAKA,EAAK,GAAKm/T,GAClC,MACF,KAAK,IACH/gT,EAAS,EAAE,EAAG,EAAG,GAAI,GACrBihT,EAAU,EAAEr/T,EAAK,IAAKA,EAAK,GAAIkuL,EAAGjjJ,GAClCm0R,EAAa,EAAEp/T,EAAK,IAAKA,EAAK,GAAKm/T,GACnC,MACF,KAAK,IACH/gT,EAAS,CAAC,GAAI,EAAG,EAAG,GACpBihT,EAAU,EAAEr/T,EAAK,GAAIA,EAAK,GAAIkuL,EAAGjjJ,GACjCm0R,EAAa,EAAEp/T,EAAK,GAAIA,EAAK,GAAKm/T,GAClC,MAEJ,MAAM7iU,EAAS,CAAC,IAAK,GAAG8hB,EAAO1iB,KAAK,cAAe,GAAG2jU,EAAQ3jU,KAAK,cAAe,KAAM,GAAGmnQ,YAAY3gP,EAAO,QAAS,cAAchQ,eAAeqyP,SACpJjoQ,EAAOb,KAAK,GAAG2jU,EAAW1jU,KAAK,YAAY4T,aAAa8pT,EAAa,WACrE,MAAM50D,EAAStyP,eAAegjN,GAC9B,IAAK,IAAI/5N,EAAI,EAAGoH,EAAK62T,EAAapgU,OAAQmC,EAAIoH,EAAIpH,IAAK,CACrD,MAAMioC,EAAOg2R,EAAaj+T,GAC1BmB,EAAOb,KAAK,MAAM+oQ,SAAcl1P,aAAa8zB,SAC9C,CACD9mC,EAAOb,KAAK,KAAM,KAClB,MAAMgpQ,EAAanoQ,EAAOZ,KAAK,MAC/B,MAAMgpQ,EAAuB,IAAIv+P,KAAKC,GACtCs+P,EAAqBj9P,IAAI,WAAY,GACrCi9P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQzH,GACjC0kQ,EAAqBj9P,IAAI,YAAauV,GACtC0nP,EAAqBj9P,IAAI,SAAU,CAAC,EAAG,EAAG,EAAG,GAAIzH,EAAK,IAAKA,EAAK,KAChE,MAAM2kQ,EAAK,IAAIlxP,aAAagxP,GAC5BE,EAAGx8P,KAAOu8P,EACV,OAAOC,CACR,EAEH,MAAMooD,uBAAuBgI,iBAC3B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeG,KAC1CwN,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,OAAS,MACnB,MAAM0O,EAAkB3wT,WAAWxG,EAAKhB,SAAS,KAAM,CAAC,EAAG,EAAG,EAAG,IACjErN,KAAK8S,KAAK0yT,gBAAkBxhU,KAAKiC,cAAcu/T,GAC/CxlU,KAAK64T,eAAexqT,EAAKhB,SAAS,OAClCrN,KAAK8S,KAAKgmT,YAAc94T,KAAK84T,YAC7B,IAAK94T,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B,MAAMm3U,EAAgBzQ,YAAY3mT,EAAKhB,SAAS,MAAO,MACvD,MAAMmtT,EAAYiL,EAAgBvQ,iBAAiBuQ,GAAiB,KACpE,MAAM7J,EAAYpB,EAAYpwD,EAAc,KAC5C,MAAM6zB,EAAcj+R,KAAKg+R,YAAY3kR,OAAS,EAC5CqsT,EAAe,EAAIznC,EACrB,MAAM9qE,EAAO,CAACnzN,KAAK8S,KAAK0yT,gBAAgB,GAAKE,EAAc1lU,KAAK8S,KAAK0yT,gBAAgB,GAAKE,EAAc1lU,KAAK8S,KAAK0yT,gBAAgB,GAAKE,EAAc1lU,KAAK8S,KAAK0yT,gBAAgB,GAAKE,GAC/K1hU,KAAKmC,UAAUnG,KAAKlH,UAAWq6N,KAClCnzN,KAAKlH,UAAYq6N,GAEnBnzN,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,GAAGg+C,MACVs8B,cACAC,YACApwD,cACAwxD,YACAC,eAAgB,CAACr5T,EAAQyiN,KACvBziN,EAAOb,KAAK,GAAG6jU,EAAgB,MAAMA,EAAgB,OAAQ,GAAGA,EAAgB,MAAMA,EAAgB,OAAQ,KAC9G,MAAO,CAACvgH,EAAO,GAAKg5E,EAAah5E,EAAO,GAAKg5E,EAAah5E,EAAO,GAAKg5E,EAAah5E,EAAO,GAAKg5E,EAAY,GAGhH,CACF,EAEH,MAAMi1B,yBAAyB+H,iBAC7B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeI,OAC1CuN,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,OAAS,MACnB,IAAK92T,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B,MAAMm3U,EAAgBzQ,YAAY3mT,EAAKhB,SAAS,MAAO,MACvD,MAAMmtT,EAAYiL,EAAgBvQ,iBAAiBuQ,GAAiB,KACpE,MAAM7J,EAAYpB,EAAYpwD,EAAc,KAC5C,GAAIpqQ,KAAKg+R,YAAY3kR,QAAU,IAAMmhT,EACnC,OAEFx6T,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,GAAGjgP,KAAKg+R,YAAY3kR,UAC3BkhT,cACAC,YACApwD,cACAwxD,YACAC,eAAgB,CAACr5T,EAAQyiN,KACvB,MAAM19M,EAAI09M,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MAAQ,EAC/C,MAAM7R,EAAIy9M,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MAAQ,EAC/C,MAAMA,EAAQ4rM,EAAO,GAAKA,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MACvD,MAAMC,EAAS2rM,EAAO,GAAKA,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MACxD7W,EAAOb,KAAK,GAAG4F,KAAKC,KAAK6R,KAASC,QAC9BkhT,EACFh4T,EAAOb,KAAK,KAEZa,EAAOb,KAAK,KAEd,MAAO,CAACsjN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,CACF,EAEH,MAAMkuG,yBAAyB8H,iBAC7B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeK,OAC1C,IAAKsN,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B,MAAMm3U,EAAgBzQ,YAAY3mT,EAAKhB,SAAS,MAAO,MACvD,MAAMmtT,EAAYiL,EAAgBvQ,iBAAiBuQ,GAAiB,KACpE,MAAM7J,EAAYpB,EAAYpwD,EAAc,KAC5C,GAAIpqQ,KAAKg+R,YAAY3kR,QAAU,IAAMmhT,EACnC,OAEF,MAAMmL,EAAwB,EAAI,EAAIpkU,KAAKgmO,IAAIhmO,KAAK7K,GAAM,GAC1DsJ,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,GAAGjgP,KAAKg+R,YAAY3kR,UAC3BkhT,cACAC,YACApwD,cACAwxD,YACAC,eAAgB,CAACr5T,EAAQyiN,KACvB,MAAMt+M,EAAKs+M,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MAAQ,EAChD,MAAMtS,EAAKk+M,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MAAQ,EAChD,MAAMzS,EAAKq+M,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MAAQ,EAChD,MAAMrS,EAAKi+M,EAAO,GAAKjlN,KAAKg+R,YAAY3kR,MAAQ,EAChD,MAAMusT,EAAOj/T,GAAMC,EAAKD,GAAM,EAC9B,MAAMk/T,EAAO9+T,GAAMC,EAAKD,GAAM,EAC9B,MAAM++T,GAAWl/T,EAAKD,GAAM,EAAIg/T,EAChC,MAAMI,GAAW/+T,EAAKD,GAAM,EAAI4+T,EAChCnjU,EAAOb,KAAK,GAAGikU,KAAQ5+T,MAAQ,GAAG4+T,EAAOE,KAAW9+T,KAAMJ,KAAMi/T,EAAOE,KAAWn/T,KAAMi/T,MAAU,GAAGj/T,KAAMi/T,EAAOE,KAAWH,EAAOE,KAAW/+T,KAAM6+T,KAAQ7+T,MAAQ,GAAG6+T,EAAOE,KAAW/+T,KAAMJ,KAAMk/T,EAAOE,KAAWp/T,KAAMk/T,MAAU,GAAGl/T,KAAMk/T,EAAOE,KAAWH,EAAOE,KAAW9+T,KAAM4+T,KAAQ5+T,MAAQ,KACvSwzT,EACFh4T,EAAOb,KAAK,KAEZa,EAAOb,KAAK,KAEd,MAAO,CAACsjN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,CACF,EAEH,MAAMmuG,2BAA2B6H,iBAC/B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeO,SAC1CoN,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,OAAS,MACnB92T,KAAK8S,KAAKkzT,SAAW,KACrB,KAAMhmU,gBAAgBqzT,mBAAoB,CACxCrzT,KAAK64T,eAAexqT,EAAKhB,SAAS,OAClCrN,KAAK8S,KAAKgmT,YAAc94T,KAAK84T,WAC9B,CACD,MAAMmN,EAAc53T,EAAKhB,SAAS,YAClC,IAAKmH,cAAcyxT,EAAa,MAC9B,OAEF,MAAMD,EAAWhmU,KAAK8S,KAAKkzT,SAAW3gT,aAAazhB,KAAKqiU,GACxD,IAAKjmU,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B,MAAM2vS,EAAcj+R,KAAKg+R,YAAY3kR,OAAS,EAC5CqsT,EAAe,EAAIznC,EACrB,MAAM9qE,EAAO,CAAC8jC,SAAUA,UAAWA,UAAWA,UAC9C,IAAK,IAAI51P,EAAI,EAAGoH,EAAKu9T,EAAS9mU,OAAQmC,EAAIoH,EAAIpH,GAAK,EAAG,CACpD8xN,EAAK,GAAK5xN,KAAKC,IAAI2xN,EAAK,GAAI6yG,EAAS3kU,GAAKqkU,GAC1CvyG,EAAK,GAAK5xN,KAAKC,IAAI2xN,EAAK,GAAI6yG,EAAS3kU,EAAI,GAAKqkU,GAC9CvyG,EAAK,GAAK5xN,KAAK+D,IAAI6tN,EAAK,GAAI6yG,EAAS3kU,GAAKqkU,GAC1CvyG,EAAK,GAAK5xN,KAAK+D,IAAI6tN,EAAK,GAAI6yG,EAAS3kU,EAAI,GAAKqkU,EAC/C,CACI1hU,KAAKmC,UAAUnG,KAAKlH,UAAWq6N,KAClCnzN,KAAKlH,UAAYq6N,GAEnBnzN,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,GAAGg+C,MACVs8B,cACAnwD,cACAyxD,eAAgB,CAACr5T,EAAQyiN,KACvB,IAAK,IAAI5jN,EAAI,EAAGoH,EAAKu9T,EAAS9mU,OAAQmC,EAAIoH,EAAIpH,GAAK,EACjDmB,EAAOb,KAAK,GAAGqkU,EAAS3kU,MAAM2kU,EAAS3kU,EAAI,MAAMA,IAAM,EAAI,IAAM,OAEnEmB,EAAOb,KAAK,KACZ,MAAO,CAACsjN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,CACF,EAEH,MAAMouG,0BAA0BD,mBAC9B,WAAAnzT,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeM,OAC3C,EAEH,MAAM2gU,wBAAwB2H,iBAC5B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeW,KAC3C,EAEH,MAAMugU,sBAAsB0H,iBAC1B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,OAAS,MACnB,MAAMzoT,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAexB,IAC1CmP,KAAK8S,KAAKozT,SAAW,GACrBlmU,KAAK8S,KAAKikT,YAAc/2T,KAAK8S,KAAKgkT,OAClC92T,KAAK8S,KAAKgkT,OAAS,MACnB92T,KAAK8S,KAAKwvO,QAAUj0O,EAAK/f,IAAI,OAAS,EACtC,MAAM63U,EAAc93T,EAAKhB,SAAS,WAClC,GAAK1J,MAAM2J,QAAQ64T,GAAnB,CAGA,IAAK,IAAI9kU,EAAI,EAAGoH,EAAK09T,EAAYjnU,OAAQmC,EAAIoH,IAAMpH,EAAG,CACpD,IAAKsC,MAAM2J,QAAQ64T,EAAY9kU,IAC7B,SAEF,MAAM+kU,EAAU,IAAI/gT,aAAa8gT,EAAY9kU,GAAGnC,QAChDc,KAAK8S,KAAKozT,SAASvkU,KAAKykU,GACxB,IAAK,IAAIlmT,EAAI,EAAGitB,EAAKg5R,EAAY9kU,GAAGnC,OAAQghB,EAAIitB,EAAIjtB,GAAK,EAAG,CAC1D,MAAM3Y,EAAI+E,EAAKiX,WAAW4iT,EAAY9kU,GAAG6e,IACvC1Y,EAAI8E,EAAKiX,WAAW4iT,EAAY9kU,GAAG6e,EAAI,IACzC,UAAW3Y,IAAM,iBAAmBC,IAAM,SAAU,CAClD4+T,EAAQlmT,GAAK3Y,EACb6+T,EAAQlmT,EAAI,GAAK1Y,CAClB,CACF,CACF,CACD,IAAKxH,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B,MAAM2vS,EAAcj+R,KAAKg+R,YAAY3kR,OAAS,EAC5CqsT,EAAe,EAAIznC,EACrB,MAAM9qE,EAAO,CAAC8jC,SAAUA,UAAWA,UAAWA,UAC9C,IAAK,MAAMmvE,KAAWpmU,KAAK8S,KAAKozT,SAC9B,IAAK,IAAI7kU,EAAI,EAAGoH,EAAK29T,EAAQlnU,OAAQmC,EAAIoH,EAAIpH,GAAK,EAAG,CACnD8xN,EAAK,GAAK5xN,KAAKC,IAAI2xN,EAAK,GAAIizG,EAAQ/kU,GAAKqkU,GACzCvyG,EAAK,GAAK5xN,KAAKC,IAAI2xN,EAAK,GAAIizG,EAAQ/kU,EAAI,GAAKqkU,GAC7CvyG,EAAK,GAAK5xN,KAAK+D,IAAI6tN,EAAK,GAAIizG,EAAQ/kU,GAAKqkU,GACzCvyG,EAAK,GAAK5xN,KAAK+D,IAAI6tN,EAAK,GAAIizG,EAAQ/kU,EAAI,GAAKqkU,EAC9C,CAEE1hU,KAAKmC,UAAUnG,KAAKlH,UAAWq6N,KAClCnzN,KAAKlH,UAAYq6N,GAEnBnzN,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,GAAGg+C,MACVs8B,cACAnwD,cACAyxD,eAAgB,CAACr5T,EAAQyiN,KACvB,IAAK,MAAMmhH,KAAWpmU,KAAK8S,KAAKozT,SAAU,CACxC,IAAK,IAAI7kU,EAAI,EAAGoH,EAAK29T,EAAQlnU,OAAQmC,EAAIoH,EAAIpH,GAAK,EAChDmB,EAAOb,KAAK,GAAGykU,EAAQ/kU,MAAM+kU,EAAQ/kU,EAAI,MAAMA,IAAM,EAAI,IAAM,OAEjEmB,EAAOb,KAAK,IACb,CACD,MAAO,CAACsjN,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,CAhDA,CAiDF,CACD,oBAAO43G,CAActI,EAAYjoT,GAAMswT,MACrCA,EAAK/xD,GACLA,IAEA,MAAMm6D,cACJA,EAAa58S,MACbA,EAAKk6N,QACLA,EAAOmtB,MACPA,EAAK42D,SACLA,EAAQngU,KACRA,EAAIkT,SACJA,EAAQshR,UACRA,EAASuqC,KACTA,GACE1Q,EACJ,MAAM+R,EAAMtB,GAAiB,IAAI34T,KAAKC,GACtCg6T,EAAI34T,IAAI,OAAQ1B,KAAK3d,IAAI,UACzBg4U,EAAI34T,IAAI,UAAW1B,KAAK3d,IAAI,QAC5Bg4U,EAAI34T,IAAIq3T,EAAgB,IAAM,eAAgB,KAAK57T,yBACnDk9T,EAAI34T,IAAI,OAAQzH,GAChBogU,EAAI34T,IAAI,UAAW04T,GAAUphH,QAAUwqD,EAAMxqD,QAC7CqhH,EAAI34T,IAAI,IAAK,GACb24T,EAAI34T,IAAI,SAAUyL,GACd6rT,GACFqB,EAAI34T,IAAI,IAAKkL,uBAAuBosT,IAElCoB,GACFC,EAAI34T,IAAI,KAAM1B,KAAK3d,IAAI,iBAEzB,MAAMm9B,EAAK,IAAIpf,KAAKC,GACpBg6T,EAAI34T,IAAI,KAAM8d,GACdA,EAAG9d,IAAI,IAAK+sR,GACZ4rC,EAAI34T,IAAI,IAAKhK,MAAMC,KAAKwkB,GAAOziB,GAAKA,EAAI,OACxC2gU,EAAI34T,IAAI,KAAM20O,GACd,MAAMz+O,EAAI,IAAIwI,KAAKC,GACnBg6T,EAAI34T,IAAI,KAAM9J,GACV+4T,EACF/4T,EAAE8J,IAAI,IAAKivT,GAEX/4T,EAAE8J,IAAI,IAAKk9P,GAEb,OAAOy7D,CACR,CACD,sCAAa5J,CAA0BnI,EAAYjoT,EAAM0X,GACvD,GAAIuwS,EAAW8R,SACb,OAAOrmU,KAAKumU,sCAAsChS,EAAYjoT,EAAM0X,GAEtE,MAAMoE,MACJA,EAAKliB,KACLA,EAAIupQ,MACJA,EAAKirB,UACLA,EAASp4C,QACTA,GACEiyE,EACJ,MAAMiS,EAAmB,CAAC,GAAG9rC,cAAuB,GAAG3xB,YAAY3gP,EAAO,UACtEk6N,IAAY,GACdkkF,EAAiB7kU,KAAK,UAExB,IAAK,MAAM8kU,KAAWh3D,EAAM1lO,MAAO,CACjCy8R,EAAiB7kU,KAAK,GAAGyW,eAAequT,EAAQ,OAAOruT,eAAequT,EAAQ,SAC9E,IAAK,IAAIplU,EAAI,EAAGoH,EAAKg+T,EAAQvnU,OAAQmC,EAAIoH,EAAIpH,GAAK,EAChD,GAAIyW,MAAM2uT,EAAQplU,IAChBmlU,EAAiB7kU,KAAK,GAAGyW,eAAequT,EAAQplU,EAAI,OAAO+W,eAAequT,EAAQplU,EAAI,aACjF,CACL,MAAOqlU,EAAKC,EAAKC,EAAKC,EAAKt/T,EAAGC,GAAKi/T,EAAQthU,MAAM9D,EAAGA,EAAI,GACxDmlU,EAAiB7kU,KAAK,CAAC+kU,EAAKC,EAAKC,EAAKC,EAAKt/T,EAAGC,GAAG2N,IAAIiD,gBAAgBxW,KAAK,KAAO,KAClF,CAEC6kU,EAAQvnU,SAAW,GACrBsnU,EAAiB7kU,KAAK,GAAGyW,eAAequT,EAAQ,OAAOruT,eAAequT,EAAQ,QAEjF,CACDD,EAAiB7kU,KAAK,KACtB,MAAMgpQ,EAAa67D,EAAiB5kU,KAAK,MACzC,MAAMgpQ,EAAuB,IAAIv+P,KAAKC,GACtCs+P,EAAqBj9P,IAAI,WAAY,GACrCi9P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQzH,GACjC0kQ,EAAqBj9P,IAAI,SAAUg9P,EAAWzrQ,QAC9C,GAAIojP,IAAY,EAAG,CACjB,MAAMp/N,EAAY,IAAI7W,KAAKC,GAC3B,MAAM6tP,EAAY,IAAI9tP,KAAKC,GAC3B,MAAMy/N,EAAK,IAAI1/N,KAAKC,GACpBy/N,EAAGp+N,IAAI,KAAM20O,GACbvW,EAAGp+N,IAAI,OAAQ1B,KAAK3d,IAAI,cACxB6rQ,EAAUxsP,IAAI,KAAMo+N,GACpB7oN,EAAUvV,IAAI,YAAawsP,GAC3ByQ,EAAqBj9P,IAAI,YAAauV,EACvC,CACD,MAAM2nP,EAAK,IAAIlxP,aAAagxP,GAC5BE,EAAGx8P,KAAOu8P,EACV,OAAOC,CACR,CACD,kDAAa07D,CAAsChS,EAAYjoT,EAAM0X,GACnE,MAAMoE,MACJA,EAAKliB,KACLA,EACAmgU,UAAUI,QACRA,GACDnkF,QACDA,GACEiyE,EACJ,MAAMiS,EAAmB,CAAC,GAAGz9D,YAAY3gP,EAAO,QAAS,UACzDo+S,EAAiB7kU,KAAK,GAAGyW,eAAequT,EAAQ,OAAOruT,eAAequT,EAAQ,SAC9E,IAAK,IAAIplU,EAAI,EAAGoH,EAAKg+T,EAAQvnU,OAAQmC,EAAIoH,EAAIpH,GAAK,EAChD,GAAIyW,MAAM2uT,EAAQplU,IAChBmlU,EAAiB7kU,KAAK,GAAGyW,eAAequT,EAAQplU,EAAI,OAAO+W,eAAequT,EAAQplU,EAAI,aACjF,CACL,MAAOqlU,EAAKC,EAAKC,EAAKC,EAAKt/T,EAAGC,GAAKi/T,EAAQthU,MAAM9D,EAAGA,EAAI,GACxDmlU,EAAiB7kU,KAAK,CAAC+kU,EAAKC,EAAKC,EAAKC,EAAKt/T,EAAGC,GAAG2N,IAAIiD,gBAAgBxW,KAAK,KAAO,KAClF,CAEH4kU,EAAiB7kU,KAAK,OACtB,MAAMgpQ,EAAa67D,EAAiB5kU,KAAK,MACzC,MAAMgpQ,EAAuB,IAAIv+P,KAAKC,GACtCs+P,EAAqBj9P,IAAI,WAAY,GACrCi9P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQzH,GACjC0kQ,EAAqBj9P,IAAI,SAAUg9P,EAAWzrQ,QAC9C,MAAMgkB,EAAY,IAAI7W,KAAKC,GAC3B,MAAM6tP,EAAY,IAAI9tP,KAAKC,GAC3B4W,EAAUvV,IAAI,YAAawsP,GAC3ByQ,EAAqBj9P,IAAI,YAAauV,GACtC,MAAM6oN,EAAK,IAAI1/N,KAAKC,GACpB6tP,EAAUxsP,IAAI,KAAMo+N,GACpBA,EAAGp+N,IAAI,KAAM1B,KAAK3d,IAAI,aACtB,GAAIg0P,IAAY,EAAG,CACjBvW,EAAGp+N,IAAI,KAAM20O,GACbvW,EAAGp+N,IAAI,OAAQ1B,KAAK3d,IAAI,aACzB,CACD,MAAMu8Q,EAAK,IAAIlxP,aAAagxP,GAC5BE,EAAGx8P,KAAOu8P,EACV,OAAOC,CACR,EAEH,MAAM2oD,4BAA4ByH,iBAChC,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAe1B,UAC1CqP,KAAK8S,KAAKikT,YAAc/2T,KAAK8S,KAAKgkT,OAClC92T,KAAK8S,KAAKgkT,OAAS,MACnB92T,KAAK8S,KAAKwvO,QAAUj0O,EAAK/f,IAAI,OAAS,EACtC,MAAMqmU,EAAa30T,KAAK8S,KAAK6hT,WAAaQ,cAAc9mT,EAAM,MAC9D,GAAIsmT,EAAY,CACd,MAAMzxS,EAAYljB,KAAK2qQ,YAAYt8P,KAAK/f,IAAI,aAC5C,IAAK0R,KAAK2qQ,aAAeznP,GAAWtV,IAAI,aAAc,CAChD5N,KAAK2qQ,YACPxsQ,KAAK,8DAEP,MAAMq8T,EAAYx6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACrE,MAAMwzS,EAAYvtT,EAAK/f,IAAI,MAC3B0R,KAAK07T,sBAAsB,CACzBpvT,OACAkuT,YACAmB,UAAW,WACXC,YACAC,eAAgB,CAACr5T,EAAQyiN,KACvBziN,EAAOb,KAAK,GAAGsjN,EAAO,MAAMA,EAAO,OAAQ,GAAGA,EAAO,MAAMA,EAAO,OAAQ,GAAGA,EAAO,MAAMA,EAAO,OAAQ,GAAGA,EAAO,MAAMA,EAAO,OAAQ,KACxI,MAAO,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,CACP,MACMjlN,KAAK8S,KAAKwoT,SAAW,IAExB,CACD,oBAAOuB,CAActI,EAAYjoT,GAAMswT,MACrCA,EAAK/xD,GACLA,IAEA,MAAMziP,MACJA,EAAK48S,cACLA,EAAa1iF,QACbA,EAAOp8O,KACPA,EAAIkT,SACJA,EAAQ6rT,KACRA,EAAItQ,WACJA,GACEJ,EACJ,MAAMx1B,EAAYimC,GAAiB,IAAI34T,KAAKC,GAC5CyyR,EAAUpxR,IAAI,OAAQ1B,KAAK3d,IAAI,UAC/BywS,EAAUpxR,IAAI,UAAW1B,KAAK3d,IAAI,cAClCywS,EAAUpxR,IAAIq3T,EAAgB,IAAM,eAAgB,KAAK57T,yBACzD21R,EAAUpxR,IAAI,eAAgB,KAAKvE,yBACnC21R,EAAUpxR,IAAI,OAAQzH,GACtB64R,EAAUpxR,IAAI,IAAK,GACnBoxR,EAAUpxR,IAAI,SAAU,CAAC,EAAG,EAAG,IAC/BoxR,EAAUpxR,IAAI,SAAUyL,GACxB2lR,EAAUpxR,IAAI,aAAcgnT,GAC5B51B,EAAUpxR,IAAI,IAAKhK,MAAMC,KAAKwkB,GAAOziB,GAAKA,EAAI,OAC9Co5R,EAAUpxR,IAAI,KAAM20O,GAChB2iF,GACFlmC,EAAUpxR,IAAI,IAAKkL,uBAAuBosT,IAE5C,GAAIrI,GAAS/xD,EAAI,CACf,MAAMhnQ,EAAI,IAAIwI,KAAKC,GACnByyR,EAAUpxR,IAAI,KAAM9J,GACpBA,EAAE8J,IAAI,IAAKivT,GAAS/xD,EACrB,CACD,OAAOk0B,CACR,CACD,sCAAa29B,CAA0BnI,EAAYjoT,EAAM0X,GACvD,MAAMoE,MACJA,EAAKliB,KACLA,EAAImgU,SACJA,EAAQ/jF,QACRA,GACEiyE,EACJ,MAAMiS,EAAmB,CAAC,GAAGz9D,YAAY3gP,EAAO,QAAS,UACzD,MAAM5lB,EAAS,GACf,IAAK,MAAMikU,KAAWJ,EAAU,CAC9B7jU,EAAOtD,OAAS,EAChBsD,EAAOb,KAAK,GAAGyW,eAAequT,EAAQ,OAAOruT,eAAequT,EAAQ,SACpE,IAAK,IAAIplU,EAAI,EAAGoH,EAAKg+T,EAAQvnU,OAAQmC,EAAIoH,EAAIpH,GAAK,EAChDmB,EAAOb,KAAK,GAAGyW,eAAequT,EAAQplU,OAAO+W,eAAequT,EAAQplU,EAAI,SAE1EmB,EAAOb,KAAK,KACZ6kU,EAAiB7kU,KAAKa,EAAOZ,KAAK,MACnC,CACD4kU,EAAiB7kU,KAAK,MACtB,MAAMgpQ,EAAa67D,EAAiB5kU,KAAK,MACzC,MAAMgpQ,EAAuB,IAAIv+P,KAAKC,GACtCs+P,EAAqBj9P,IAAI,WAAY,GACrCi9P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQzH,GACjC0kQ,EAAqBj9P,IAAI,SAAUg9P,EAAWzrQ,QAC9C,MAAMgkB,EAAY,IAAI7W,KAAKC,GAC3B,MAAM6tP,EAAY,IAAI9tP,KAAKC,GAC3B4W,EAAUvV,IAAI,YAAawsP,GAC3ByQ,EAAqBj9P,IAAI,YAAauV,GACtC,MAAM6oN,EAAK,IAAI1/N,KAAKC,GACpB6tP,EAAUxsP,IAAI,KAAMo+N,GACpBA,EAAGp+N,IAAI,KAAM1B,KAAK3d,IAAI,aACtB,GAAIg0P,IAAY,EAAG,CACjBvW,EAAGp+N,IAAI,KAAM20O,GACbvW,EAAGp+N,IAAI,OAAQ1B,KAAK3d,IAAI,aACzB,CACD,MAAMu8Q,EAAK,IAAIlxP,aAAagxP,GAC5BE,EAAGx8P,KAAOu8P,EACV,OAAOC,CACR,EAEH,MAAM4oD,4BAA4BwH,iBAChC,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeQ,UAC1C,MAAM8hU,EAAa30T,KAAK8S,KAAK6hT,WAAaQ,cAAc9mT,EAAM,MAC9D,GAAIsmT,GACF,IAAK30T,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B0R,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,iBACPs6E,cACAnwD,cACAyxD,eAAgB,CAACr5T,EAAQyiN,KACvBziN,EAAOb,KAAK,GAAGsjN,EAAO,MAAMA,EAAO,GAAK,QAAS,GAAGA,EAAO,MAAMA,EAAO,GAAK,QAAS,KACtF,MAAO,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,OAEDjlN,KAAK8S,KAAKwoT,SAAW,IAExB,EAEH,MAAM5H,2BAA2BuH,iBAC/B,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeS,SAC1C,MAAM6hU,EAAa30T,KAAK8S,KAAK6hT,WAAaQ,cAAc9mT,EAAM,MAC9D,GAAIsmT,GACF,IAAK30T,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B0R,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,aACPs6E,cACAnwD,cACAyxD,eAAgB,CAACr5T,EAAQyiN,KACvB,MAAMkJ,GAAMlJ,EAAO,GAAKA,EAAO,IAAM,EACrC,IAAIh2L,EAAQk/L,EACZ,IAAI5mN,EAAI09M,EAAO,GACf,MAAMz9M,EAAIy9M,EAAO,GACjB,MAAM6hH,EAAO7hH,EAAO,GACpBziN,EAAOb,KAAK,GAAG4F,KAAKC,EAAIynB,OACxB,EAAG,CACD1nB,GAAK,EACL0nB,EAAQA,IAAU,EAAIk/L,EAAK,EAC3B3rN,EAAOb,KAAK,GAAG4F,KAAKC,EAAIynB,MACtC,OAAqB1nB,EAAIu/T,GACbtkU,EAAOb,KAAK,KACZ,MAAO,CAACsjN,EAAO,GAAI6hH,EAAMt/T,EAAI,EAAI2mN,EAAI3mN,EAAI,EAAI2mN,EAAG,GAGrD,OAEDnuN,KAAK8S,KAAKwoT,SAAW,IAExB,EAEH,MAAM3H,4BAA4BsH,iBAChC,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAeU,UAC1C,MAAM4hU,EAAa30T,KAAK8S,KAAK6hT,WAAaQ,cAAc9mT,EAAM,MAC9D,GAAIsmT,GACF,IAAK30T,KAAK2qQ,WAAY,CACpB,MAAM4vD,EAAcv6T,KAAKooB,MAAQ8sS,iBAAiBl1T,KAAKooB,OAAS,CAAC,EAAG,EAAG,GACvE,MAAMgiP,EAAc/7P,EAAK/f,IAAI,MAC7B0R,KAAK07T,sBAAsB,CACzBpvT,OACA2zO,MAAO,aACPs6E,cACAnwD,cACAyxD,eAAgB,CAACr5T,EAAQyiN,KACvBziN,EAAOb,MAASsjN,EAAO,GAAKA,EAAO,IAAM,EAA7B,KAAwCA,EAAO,GAAKA,EAAO,IAAM,EAA7B,MAAwCA,EAAO,GAAKA,EAAO,IAAM,EAA7B,KAAwCA,EAAO,GAAKA,EAAO,IAAM,EAA7B,KAAoC,KAC5J,MAAO,CAACA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAG,GAGxD,OAEDjlN,KAAK8S,KAAKwoT,SAAW,IAExB,EAEH,MAAM1H,wBAAwBqH,iBAC5B8L,GACA,WAAA9mU,CAAY+jB,GACV5jB,MAAM4jB,GACNhkB,KAAK8S,KAAK2hT,eAAiBpiU,EAAezB,MAC1CoP,MAAK+mU,EAAqB/mU,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SAC7D72T,KAAK8S,KAAKikT,YAAc/2T,KAAK8S,KAAKgkT,OAClC92T,KAAK8S,KAAKgkT,OAAS,KACpB,CACD,uBAAAoB,CAAwBC,EAAWC,EAAc,MAC/C,GAAID,EAAW,CACb,IAAKn4T,KAAK8S,KAAKikT,WACb,OAAO,MAET/2T,MAAK+mU,EAAqB/mU,KAAK8S,KAAK8jT,aACpC52T,KAAK8S,KAAK8jT,aAAe,KACzB,OAAO,IACR,CACD52T,KAAK8S,KAAK8jT,aAAe52T,MAAK+mU,EAC9B,OAAQ3O,GAAaxqT,IAAI5N,KAAK8S,KAAKklB,GACpC,CACD,wBAAa0qN,CAAYppN,EAAQhtB,GAC/B,MAAM+M,MACJA,EAAKC,OACLA,GACEggB,EACJ,MAAM4oN,EAAS,IAAIr/O,gBAAgBwW,EAAOC,GAC1C,MAAM6oO,EAAMD,EAAOE,WAAW,KAAM,CAClC3gJ,MAAO,OAET0gJ,EAAIuB,UAAUpqN,EAAQ,EAAG,GACzB,MAAMxmB,EAAOqvO,EAAI5xO,aAAa,EAAG,EAAG8I,EAAOC,GAAQxG,KACnD,MAAMk0T,EAAQ,IAAIzkU,YAAYuQ,EAAKtQ,QACnC,MAAMykU,EAAWD,EAAMn5C,KAAKlrR,YAAYP,eAAiBmF,GAAKA,IAAM,KAAO,IAAOA,IAAMA,EAAI,OAAU,KACtG,GAAI0/T,EAAU,CACZ9kF,EAAI+kF,UAAY,QAChB/kF,EAAIE,SAAS,EAAG,EAAGhpO,EAAOC,GAC1B6oO,EAAIuB,UAAUpqN,EAAQ,EAAG,EAC1B,CACD,MAAM6tS,EAAoBjlF,EAAOklF,cAAc,CAC7C/3U,KAAM,aACNg4U,QAAS,IACRvqT,MAAKqtR,GAAQA,EAAK1wR,gBACrB,MAAM6tT,EAAcr7T,KAAK3d,IAAI,WAC7B,MAAMi5U,EAAYt7T,KAAK3d,IAAI,SAC3B,MAAMwrD,EAAQ,IAAIztC,KAAKC,GACvBwtC,EAAMnsC,IAAI,OAAQ25T,GAClBxtR,EAAMnsC,IAAI,UAAW45T,GACrBztR,EAAMnsC,IAAI,mBAAoB,GAC9BmsC,EAAMnsC,IAAI,aAAc1B,KAAK3d,IAAI,cACjCwrD,EAAMnsC,IAAI,SAAU1B,KAAK3d,IAAI,cAC7BwrD,EAAMnsC,IAAI,OAAQ,CAAC,EAAG,EAAG0L,EAAOC,IAChCwgC,EAAMnsC,IAAI,QAAS0L,GACnBygC,EAAMnsC,IAAI,SAAU2L,GACpB,IAAIs7S,EAAc,KAClB,GAAIqS,EAAU,CACZ,MAAMO,EAAc,IAAIzlU,WAAWilU,EAAM9nU,QACzC,GAAIyD,YAAYP,eACd,IAAK,IAAIf,EAAI,EAAGoH,EAAKu+T,EAAM9nU,OAAQmC,EAAIoH,EAAIpH,IACzCmmU,EAAYnmU,GAAK2lU,EAAM3lU,KAAO,QAGhC,IAAK,IAAIA,EAAI,EAAGoH,EAAKu+T,EAAM9nU,OAAQmC,EAAIoH,EAAIpH,IACzCmmU,EAAYnmU,GAAK2lU,EAAM3lU,GAAK,IAGhC,MAAMuqP,EAAQ,IAAIv/O,KAAKC,GACvBs/O,EAAMj+O,IAAI,OAAQ25T,GAClB17E,EAAMj+O,IAAI,UAAW45T,GACrB37E,EAAMj+O,IAAI,mBAAoB,GAC9Bi+O,EAAMj+O,IAAI,aAAc1B,KAAK3d,IAAI,eACjCs9P,EAAMj+O,IAAI,QAAS0L,GACnBuyO,EAAMj+O,IAAI,SAAU2L,GACpBs7S,EAAc,IAAIp7S,OAAOguT,EAAa,EAAG,EAAG57E,EAC7C,CACD,MAAMx/L,EAAc,IAAI5yC,aAAa2tT,EAAmB,EAAG,EAAGrtR,GAC9D,MAAO,CACLsS,cACAwoQ,cACAv7S,QACAC,SAEH,CACD,oBAAOujT,CAActI,EAAYjoT,GAAMswT,MACrCA,EAAK/xD,GACLA,IAEA,MAAMm6D,cACJA,EAAa9+T,KACbA,EAAIkT,SACJA,EAAQ6rT,KACRA,GACE1Q,EACJ,MAAMkT,EAAQzC,GAAiB,IAAI34T,KAAKC,GACxCm7T,EAAM95T,IAAI,OAAQ1B,KAAK3d,IAAI,UAC3Bm5U,EAAM95T,IAAI,UAAW1B,KAAK3d,IAAI,UAC9Bm5U,EAAM95T,IAAIq3T,EAAgB,IAAM,eAAgB,KAAK57T,yBACrDq+T,EAAM95T,IAAI,OAAQzH,GAClBuhU,EAAM95T,IAAI,IAAK,GACf85T,EAAM95T,IAAI,SAAU,CAAC,EAAG,EAAG,IAC3B85T,EAAM95T,IAAI,SAAUyL,GAChB6rT,GACFwC,EAAM95T,IAAI,IAAKkL,uBAAuBosT,IAExC,GAAIrI,GAAS/xD,EAAI,CACf,MAAMhnQ,EAAI,IAAIwI,KAAKC,GACnBm7T,EAAM95T,IAAI,KAAM9J,GACZ+4T,EACF/4T,EAAE8J,IAAI,IAAKivT,GAEX/4T,EAAE8J,IAAI,IAAKk9P,EAEd,CACD,OAAO48D,CACR,CACD,sCAAa/K,CAA0BnI,EAAYjoT,EAAM0X,GACvD,GAAIuwS,EAAWyQ,cACb,OAAO,KAET,MAAM5rT,SACJA,GACEm7S,EACJ,MAAMphE,SACJA,EAAQ95O,MACRA,EAAKC,OACLA,GACE0K,EAAO81B,MACX,MAAM52B,EAAY,IAAI7W,KAAKC,GAC3B,MAAMo7T,EAAU,IAAIr7T,KAAKC,GACzB4W,EAAUvV,IAAI,UAAW+5T,GACzBA,EAAQ/5T,IAAI,MAAOwlP,GACnB,MAAMwX,EAAa,KAAKtxP,SAAaC,qBACrC,MAAMsxP,EAAuB,IAAIv+P,KAAKC,GACtCs+P,EAAqBj9P,IAAI,WAAY,GACrCi9P,EAAqBj9P,IAAI,UAAW1B,KAAK3d,IAAI,SAC7Cs8Q,EAAqBj9P,IAAI,OAAQ1B,KAAK3d,IAAI,YAC1Cs8Q,EAAqBj9P,IAAI,OAAQ,CAAC,EAAG,EAAG0L,EAAOC,IAC/CsxP,EAAqBj9P,IAAI,YAAauV,GACtC,GAAI9J,EAAU,CACZ,MAAMkL,EAASnL,kBAAkBC,EAAUC,EAAOC,GAClDsxP,EAAqBj9P,IAAI,SAAU2W,EACpC,CACD,MAAMumP,EAAK,IAAIlxP,aAAagxP,GAC5BE,EAAGx8P,KAAOu8P,EACV,OAAOC,CACR,EAEH,MAAMgpD,iCAAiCoH,iBACrC,WAAAh7T,CAAY+jB,GACV5jB,MAAM4jB,GACN,MAAM3V,KACJA,EAAI/B,KACJA,GACE0X,EACJ,MAAM66B,EAAO,IAAIitN,SAASz9P,EAAK/f,IAAI,MAAOge,GAC1CtM,KAAK8S,KAAK2hT,eAAiBpiU,EAAea,eAC1C8M,KAAK8S,KAAK8jT,aAAe52T,KAAK8S,KAAK+jT,SACnC72T,KAAK8S,KAAKgkT,OAAS,MACnB92T,KAAK8S,KAAK+rC,KAAOA,EAAKytN,aACtB,MAAMvsQ,EAAOsO,EAAK/f,IAAI,QACtB0R,KAAK8S,KAAK/S,KAAOA,aAAgBkM,KAAOjE,kBAAkBjI,EAAKA,MAAQ,UACvE,MAAM67T,EAAYvtT,EAAK/f,IAAI,MAC3B0R,KAAK8S,KAAK8oT,iBAAmBA,IAAc,UAAYA,GAAa,GAAKA,GAAa,EAAIA,EAAY,IACvG,EAKH,MAAM9hT,GAAY,IAClB,MAAM6tT,sBAAsB55S,aAC1B,WAAA9tB,CAAY6B,EAAKitB,EAAakgM,GAC5B7uN,MAAM2uB,GACN/uB,KAAK8B,IAAMA,EACX9B,KAAKqO,KAAOvM,EAAIuM,KAChBrO,KAAKivN,QAAUA,EACfjvN,KAAK4nU,UAAY,KACjB5nU,KAAKg7P,YAAc,KACpB,CACD,SAAA3sO,GACE,IAAI5sB,EACJ,GAAIzB,KAAKg7P,YACPv5P,EAAQzB,KAAK4nU,cACR,CACLnmU,EAAQzB,KAAK8B,IAAIwO,SAASwJ,IAC1B9Z,KAAKg7P,YAAc,IACpB,CACD,IAAKv5P,GAASA,EAAMvC,SAAW,EAAG,CAChCc,KAAKmuB,IAAM,KACX,MACD,CACDnuB,KAAK4nU,UAAY5nU,KAAK8B,IAAIwO,SAASwJ,IACnC,MAAM+tT,EAAc7nU,KAAK4nU,WAAW1oU,OAAS,EAC7C,MAAM+vN,EAAUjvN,KAAKivN,QACrBxtN,EAAQwtN,EAAQxtN,GAAQomU,GACxB,MAAM35S,EAAeluB,KAAKkuB,aACxBgB,EAAYhB,EAAezsB,EAAMvC,OACjCsD,EAASxC,KAAKsuB,aAAaY,GAC7B1sB,EAAOmL,IAAIlM,EAAOysB,GAClBluB,KAAKkuB,aAAegB,CACrB,EAOH,MAAM44S,cACJ,WAAA7nU,CAAYhS,GACV+R,KAAK0F,EAAI,EACT1F,KAAKoE,EAAI,EACT,MAAM0qB,EAAI,IAAI/sB,WAAW,KACzB,MAAMgmU,EAAY95U,EAAIiR,OACtB,IAAK,IAAImC,EAAI,EAAGA,EAAI,MAAOA,EACzBytB,EAAEztB,GAAKA,EAET,IAAK,IAAIA,EAAI,EAAG6e,EAAI,EAAG7e,EAAI,MAAOA,EAAG,CACnC,MAAMgsB,EAAMyB,EAAEztB,GACd6e,EAAIA,EAAImN,EAAMp/B,EAAIoT,EAAI0mU,GAAa,IACnCj5S,EAAEztB,GAAKytB,EAAE5O,GACT4O,EAAE5O,GAAKmN,CACR,CACDrtB,KAAK8uB,EAAIA,CACV,CACD,YAAAk5S,CAAal1T,GACX,IAAIpN,EAAI1F,KAAK0F,EACXtB,EAAIpE,KAAKoE,EACX,MAAM0qB,EAAI9uB,KAAK8uB,EACf,MAAMjrB,EAAIiP,EAAK5T,OACf,MAAMm4C,EAAS,IAAIt1C,WAAW8B,GAC9B,IAAK,IAAIxC,EAAI,EAAGA,EAAIwC,IAAKxC,EAAG,CAC1BqE,EAAIA,EAAI,EAAI,IACZ,MAAM2nB,EAAMyB,EAAEppB,GACdtB,EAAIA,EAAIipB,EAAM,IACd,MAAMkhN,EAAOz/M,EAAE1qB,GACf0qB,EAAEppB,GAAK6oO,EACPz/M,EAAE1qB,GAAKipB,EACPgqB,EAAOh2C,GAAKyR,EAAKzR,GAAKytB,EAAEzB,EAAMkhN,EAAO,IACtC,CACDvuO,KAAK0F,EAAIA,EACT1F,KAAKoE,EAAIA,EACT,OAAOizC,CACR,CACD,YAAA4wR,CAAan1T,GACX,OAAO9S,KAAKgoU,aAAal1T,EAC1B,CACD,OAAA2lQ,CAAQ3lQ,GACN,OAAO9S,KAAKgoU,aAAal1T,EAC1B,EAEH,MAAMo1T,GAAe,SAASC,sBAC5B,MAAMjkU,EAAI,IAAInC,WAAW,CAAC,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,KAClQ,MAAMmkB,EAAI,IAAI2N,WAAW,EAAE,WAAY,UAAW,WAAY,YAAa,UAAW,YAAa,YAAa,SAAU,YAAa,YAAa,OAAQ,WAAY,YAAa,UAAW,WAAY,YAAa,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,UAAW,WAAY,YAAa,UAAW,YAAa,YAAa,SAAU,YAAa,YAAa,QAAS,WAAY,YAAa,UAAW,WAAY,YAAa,WAAY,WAAY,WAAY,WAAY,UAAW,UAAW,WAAY,UAAW,WAAY,WAAY,UAAW,YAAa,YAAa,SAAU,YAAa,YAAa,SAAU,WAAY,YAAa,UAAW,WAAY,YAAa,WAAY,WAAY,WAAY,YACvwB,SAAS2iO,KAAK1jP,EAAMkB,EAAQ9U,GAC1B,IAAIkpU,EAAK,WACP/oT,GAAM,UACNE,GAAM,WACN8oT,EAAK,UACP,MAAMh8G,EAAentN,EAAS,IAAK,GACnC,MAAMopU,EAAS,IAAIvmU,WAAWsqN,GAC9B,IAAIhrN,EAAG6e,EACP,IAAK7e,EAAI,EAAGA,EAAInC,IAAUmC,EACxBinU,EAAOjnU,GAAKyR,EAAKkB,KAEnBs0T,EAAOjnU,KAAO,IACd,MAAMwC,EAAIwoN,EAAe,EACzB,MAAOhrN,EAAIwC,EACTykU,EAAOjnU,KAAO,EAEhBinU,EAAOjnU,KAAOnC,GAAU,EAAI,IAC5BopU,EAAOjnU,KAAOnC,GAAU,EAAI,IAC5BopU,EAAOjnU,KAAOnC,GAAU,GAAK,IAC7BopU,EAAOjnU,KAAOnC,GAAU,GAAK,IAC7BopU,EAAOjnU,KAAOnC,IAAW,GAAK,IAC9BopU,EAAOjnU,KAAO,EACdinU,EAAOjnU,KAAO,EACdinU,EAAOjnU,KAAO,EACd,MAAM+yL,EAAI,IAAIvgK,WAAW,IACzB,IAAKxyB,EAAI,EAAGA,EAAIgrN,GAAe,CAC7B,IAAKnsM,EAAI,EAAGA,EAAI,KAAMA,EAAG7e,GAAK,EAC5B+yL,EAAEl0K,GAAKooT,EAAOjnU,GAAKinU,EAAOjnU,EAAI,IAAM,EAAIinU,EAAOjnU,EAAI,IAAM,GAAKinU,EAAOjnU,EAAI,IAAM,GAEjF,IAIEq9C,EACAv6C,EALEuB,EAAI0iU,EACNhkU,EAAIib,EACJ1Z,EAAI4Z,EACJzxB,EAAIu6U,EAGN,IAAKnoT,EAAI,EAAGA,EAAI,KAAMA,EAAG,CACvB,GAAIA,EAAI,GAAI,CACVw+B,EAAIt6C,EAAIuB,GAAKvB,EAAItW,EACjBqW,EAAI+b,CACd,MAAe,GAAIA,EAAI,GAAI,CACjBw+B,EAAI5wD,EAAIsW,GAAKtW,EAAI6X,EACjBxB,EAAI,EAAI+b,EAAI,EAAI,EAC1B,MAAe,GAAIA,EAAI,GAAI,CACjBw+B,EAAIt6C,EAAIuB,EAAI7X,EACZqW,EAAI,EAAI+b,EAAI,EAAI,EAC1B,KAAe,CACLw+B,EAAI/4C,GAAKvB,GAAKtW,GACdqW,EAAI,EAAI+b,EAAI,EACb,CACD,MAAMmN,EAAMv/B,EACVy6U,EAAY7iU,EAAIg5C,EAAIx4B,EAAEhG,GAAKk0K,EAAEjwL,GAAK,EAClCq6P,EAASt6P,EAAEgc,GACbpyB,EAAI6X,EACJA,EAAIvB,EACJA,EAAIA,GAAKmkU,GAAa/pE,EAAS+pE,IAAc,GAAK/pE,GAAU,EAC5D94P,EAAI2nB,CACL,CACD+6S,EAAKA,EAAK1iU,EAAI,EACd2Z,EAAKA,EAAKjb,EAAI,EACdmb,EAAKA,EAAK5Z,EAAI,EACd0iU,EAAKA,EAAKv6U,EAAI,CACf,CACD,OAAO,IAAIiU,WAAW,CAACqmU,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAM/oT,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAME,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,IAAM8oT,EAAK,IAAMA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,IAAO,GAAK,KAC1Q,CACD,OAAO7xE,IACT,CApEqB,GAqErB,MAAMgyE,OACJ,WAAAvoU,CAAYwoU,EAAaC,GACvB1oU,KAAKswD,KAAOm4Q,EAAc,EAC1BzoU,KAAKqwD,IAAMq4Q,EAAa,CACzB,CACD,GAAAC,CAAIC,GACF5oU,KAAKswD,MAAQs4Q,EAAKt4Q,KAClBtwD,KAAKqwD,KAAOu4Q,EAAKv4Q,GAClB,CACD,GAAAw4Q,CAAID,GACF5oU,KAAKswD,MAAQs4Q,EAAKt4Q,KAClBtwD,KAAKqwD,KAAOu4Q,EAAKv4Q,GAClB,CACD,EAAAy4Q,CAAGF,GACD5oU,KAAKswD,MAAQs4Q,EAAKt4Q,KAClBtwD,KAAKqwD,KAAOu4Q,EAAKv4Q,GAClB,CACD,UAAA04Q,CAAWC,GACT,GAAIA,GAAU,GAAI,CAChBhpU,KAAKqwD,IAAMrwD,KAAKswD,OAAS04Q,EAAS,GAAK,EACvChpU,KAAKswD,KAAO,CAClB,KAAW,CACLtwD,KAAKqwD,IAAMrwD,KAAKqwD,MAAQ24Q,EAAShpU,KAAKswD,MAAQ,GAAK04Q,EACnDhpU,KAAKswD,KAAOtwD,KAAKswD,OAAS04Q,EAAS,CACpC,CACF,CACD,SAAAC,CAAUD,GACR,GAAIA,GAAU,GAAI,CAChBhpU,KAAKswD,KAAOtwD,KAAKqwD,KAAO24Q,EAAS,GACjChpU,KAAKqwD,IAAM,CACjB,KAAW,CACLrwD,KAAKswD,KAAOtwD,KAAKswD,MAAQ04Q,EAAShpU,KAAKqwD,MAAQ,GAAK24Q,EACpDhpU,KAAKqwD,MAAQ24Q,CACd,CACF,CACD,WAAAE,CAAYF,GACV,IAAI34Q,EAAKC,EACT,GAAI04Q,EAAS,GAAI,CACf14Q,EAAOtwD,KAAKqwD,IACZA,EAAMrwD,KAAKswD,IACjB,KAAW,CACLD,EAAMrwD,KAAKqwD,IACXC,EAAOtwD,KAAKswD,IACb,CACD04Q,GAAU,GACVhpU,KAAKqwD,IAAMA,IAAQ24Q,EAAS14Q,GAAQ,GAAK04Q,EACzChpU,KAAKswD,KAAOA,IAAS04Q,EAAS34Q,GAAO,GAAK24Q,CAC3C,CACD,GAAAG,GACEnpU,KAAKswD,MAAQtwD,KAAKswD,KAClBtwD,KAAKqwD,KAAOrwD,KAAKqwD,GAClB,CACD,GAAAjhD,CAAIw5T,GACF,MAAMQ,GAAUppU,KAAKqwD,MAAQ,IAAMu4Q,EAAKv4Q,MAAQ,GAChD,IAAIg5Q,GAAWrpU,KAAKswD,OAAS,IAAMs4Q,EAAKt4Q,OAAS,GAC7C84Q,EAAS,aACXC,GAAW,GAEbrpU,KAAKqwD,IAAM+4Q,EAAS,EACpBppU,KAAKswD,KAAO+4Q,EAAU,CACvB,CACD,MAAAC,CAAOxoU,EAAOkT,GACZlT,EAAMkT,GAAUhU,KAAKswD,OAAS,GAAK,IACnCxvD,EAAMkT,EAAS,GAAKhU,KAAKswD,MAAQ,GAAK,IACtCxvD,EAAMkT,EAAS,GAAKhU,KAAKswD,MAAQ,EAAI,IACrCxvD,EAAMkT,EAAS,GAAKhU,KAAKswD,KAAO,IAChCxvD,EAAMkT,EAAS,GAAKhU,KAAKqwD,MAAQ,GAAK,IACtCvvD,EAAMkT,EAAS,GAAKhU,KAAKqwD,KAAO,GAAK,IACrCvvD,EAAMkT,EAAS,GAAKhU,KAAKqwD,KAAO,EAAI,IACpCvvD,EAAMkT,EAAS,GAAKhU,KAAKqwD,IAAM,GAChC,CACD,MAAAhV,CAAOutR,GACL5oU,KAAKswD,KAAOs4Q,EAAKt4Q,KACjBtwD,KAAKqwD,IAAMu4Q,EAAKv4Q,GACjB,EAEH,MAAMk5Q,GAAkB,SAASC,yBAC/B,SAASC,KAAKliU,EAAG1D,GACf,OAAO0D,IAAM1D,EAAI0D,GAAK,GAAK1D,CAC5B,CACD,SAASuQ,GAAG7M,EAAGC,EAAG6oC,GAChB,OAAO9oC,EAAIC,GAAKD,EAAI8oC,CACrB,CACD,SAASq5R,IAAIniU,EAAGC,EAAG6oC,GACjB,OAAO9oC,EAAIC,EAAID,EAAI8oC,EAAI7oC,EAAI6oC,CAC5B,CACD,SAAS6jI,MAAM3sK,GACb,OAAOkiU,KAAKliU,EAAG,GAAKkiU,KAAKliU,EAAG,IAAMkiU,KAAKliU,EAAG,GAC3C,CACD,SAASoiU,WAAWpiU,GAClB,OAAOkiU,KAAKliU,EAAG,GAAKkiU,KAAKliU,EAAG,IAAMkiU,KAAKliU,EAAG,GAC3C,CACD,SAASqiU,YAAYriU,GACnB,OAAOkiU,KAAKliU,EAAG,GAAKkiU,KAAKliU,EAAG,IAAMA,IAAM,CACzC,CACD,SAASsiU,iBAAiBtiU,GACxB,OAAOkiU,KAAKliU,EAAG,IAAMkiU,KAAKliU,EAAG,IAAMA,IAAM,EAC1C,CACD,MAAM2e,EAAI,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC/vB,SAASswO,KAAK1jP,EAAMkB,EAAQ9U,GAC1B,IAAIkpU,EAAK,WACP/oT,EAAK,WACLE,EAAK,WACL8oT,EAAK,WACLyB,EAAK,WACLC,EAAK,WACLC,EAAK,UACLC,EAAK,WACP,MAAM59G,EAAe9qN,KAAKuS,MAAM5U,EAAS,GAAK,IAAM,GACpD,MAAMopU,EAAS,IAAIvmU,WAAWsqN,GAC9B,IAAIhrN,EAAG6e,EACP,IAAK7e,EAAI,EAAGA,EAAInC,IAAUmC,EACxBinU,EAAOjnU,GAAKyR,EAAKkB,KAEnBs0T,EAAOjnU,KAAO,IACd,MAAMwC,EAAIwoN,EAAe,EACzB,MAAOhrN,EAAIwC,EACTykU,EAAOjnU,KAAO,EAEhBinU,EAAOjnU,KAAO,EACdinU,EAAOjnU,KAAO,EACdinU,EAAOjnU,KAAO,EACdinU,EAAOjnU,KAAOnC,IAAW,GAAK,IAC9BopU,EAAOjnU,KAAOnC,GAAU,GAAK,IAC7BopU,EAAOjnU,KAAOnC,GAAU,GAAK,IAC7BopU,EAAOjnU,KAAOnC,GAAU,EAAI,IAC5BopU,EAAOjnU,KAAOnC,GAAU,EAAI,IAC5B,MAAMk1L,EAAI,IAAI7xL,YAAY,IAC1B,IAAKlB,EAAI,EAAGA,EAAIgrN,GAAe,CAC7B,IAAKnsM,EAAI,EAAGA,EAAI,KAAMA,EAAG,CACvBk0K,EAAEl0K,GAAKooT,EAAOjnU,IAAM,GAAKinU,EAAOjnU,EAAI,IAAM,GAAKinU,EAAOjnU,EAAI,IAAM,EAAIinU,EAAOjnU,EAAI,GAC/EA,GAAK,CACN,CACD,IAAK6e,EAAI,GAAIA,EAAI,KAAMA,EACrBk0K,EAAEl0K,GAAK2pT,iBAAiBz1I,EAAEl0K,EAAI,IAAMk0K,EAAEl0K,EAAI,GAAK0pT,YAAYx1I,EAAEl0K,EAAI,KAAOk0K,EAAEl0K,EAAI,IAAM,EAEtF,IAQE+pN,EACAjpM,EATEt7B,EAAI0iU,EACNhkU,EAAIib,EACJ1Z,EAAI4Z,EACJzxB,EAAIu6U,EACJtrT,EAAI+sT,EACJprR,EAAIqrR,EACJ5lU,EAAI6lU,EACJ74R,EAAI84R,EAGN,IAAK/pT,EAAI,EAAGA,EAAI,KAAMA,EAAG,CACvB+pN,EAAK94L,EAAIw4R,WAAW5sT,GAAK3I,GAAG2I,EAAG2hC,EAAGv6C,GAAK+hB,EAAEhG,GAAKk0K,EAAEl0K,GAChD8gB,EAAKkzI,MAAMxuK,GAAKgkU,IAAIhkU,EAAGtB,EAAGuB,GAC1BwrC,EAAIhtC,EACJA,EAAIu6C,EACJA,EAAI3hC,EACJA,EAAIjvB,EAAIm8O,EAAK,EACbn8O,EAAI6X,EACJA,EAAIvB,EACJA,EAAIsB,EACJA,EAAIukO,EAAKjpM,EAAK,CACf,CACDonS,EAAKA,EAAK1iU,EAAI,EACd2Z,EAAKA,EAAKjb,EAAI,EACdmb,EAAKA,EAAK5Z,EAAI,EACd0iU,EAAKA,EAAKv6U,EAAI,EACdg8U,EAAKA,EAAK/sT,EAAI,EACdgtT,EAAKA,EAAKrrR,EAAI,EACdsrR,EAAKA,EAAK7lU,EAAI,EACd8lU,EAAKA,EAAK94R,EAAI,CACf,CACD,OAAO,IAAIpvC,WAAW,CAACqmU,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAM/oT,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAME,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAM8oT,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAMyB,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAMC,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAMC,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,IAAMC,GAAM,GAAK,IAAMA,GAAM,GAAK,IAAMA,GAAM,EAAI,IAAMA,EAAK,KAC1f,CACD,OAAOzzE,IACT,CA9FwB,GA+FxB,MAAM0zE,GAAkB,SAASC,yBAC/B,SAAS/1T,GAAGf,EAAQ9L,EAAGC,EAAG6oC,EAAGhjB,GAC3Bha,EAAOgoC,OAAO9zC,GACd8L,EAAOs1T,IAAInhU,GACX6lB,EAAIguB,OAAO9zC,GACX8lB,EAAI87S,MACJ97S,EAAIs7S,IAAIt4R,GACRh9B,EAAOw1T,IAAIx7S,EACZ,CACD,SAASq8S,IAAIr2T,EAAQ9L,EAAGC,EAAG6oC,EAAGhjB,GAC5Bha,EAAOgoC,OAAO9zC,GACd8L,EAAOs1T,IAAInhU,GACX6lB,EAAIguB,OAAO9zC,GACX8lB,EAAIs7S,IAAIt4R,GACRh9B,EAAOw1T,IAAIx7S,GACXA,EAAIguB,OAAO7zC,GACX6lB,EAAIs7S,IAAIt4R,GACRh9B,EAAOw1T,IAAIx7S,EACZ,CACD,SAAS6mJ,MAAM7gK,EAAQ9L,EAAG8lB,GACxBha,EAAOgoC,OAAO9zC,GACd8L,EAAO61T,YAAY,IACnB77S,EAAIguB,OAAO9zC,GACX8lB,EAAI67S,YAAY,IAChB71T,EAAOw1T,IAAIx7S,GACXA,EAAIguB,OAAO9zC,GACX8lB,EAAI67S,YAAY,IAChB71T,EAAOw1T,IAAIx7S,EACZ,CACD,SAASs8S,WAAWt2T,EAAQ9L,EAAG8lB,GAC7Bha,EAAOgoC,OAAO9zC,GACd8L,EAAO61T,YAAY,IACnB77S,EAAIguB,OAAO9zC,GACX8lB,EAAI67S,YAAY,IAChB71T,EAAOw1T,IAAIx7S,GACXA,EAAIguB,OAAO9zC,GACX8lB,EAAI67S,YAAY,IAChB71T,EAAOw1T,IAAIx7S,EACZ,CACD,SAASu8S,YAAYv2T,EAAQ9L,EAAG8lB,GAC9Bha,EAAOgoC,OAAO9zC,GACd8L,EAAO61T,YAAY,GACnB77S,EAAIguB,OAAO9zC,GACX8lB,EAAI67S,YAAY,GAChB71T,EAAOw1T,IAAIx7S,GACXA,EAAIguB,OAAO9zC,GACX8lB,EAAI07S,WAAW,GACf11T,EAAOw1T,IAAIx7S,EACZ,CACD,SAASw8S,iBAAiBx2T,EAAQ9L,EAAG8lB,GACnCha,EAAOgoC,OAAO9zC,GACd8L,EAAO61T,YAAY,IACnB77S,EAAIguB,OAAO9zC,GACX8lB,EAAI67S,YAAY,IAChB71T,EAAOw1T,IAAIx7S,GACXA,EAAIguB,OAAO9zC,GACX8lB,EAAI07S,WAAW,GACf11T,EAAOw1T,IAAIx7S,EACZ,CACD,MAAMnH,EAAI,CAAC,IAAIsiT,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,WAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,UAAY,WAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,UAAY,WAAa,IAAIA,OAAO,UAAY,WAAa,IAAIA,OAAO,UAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,YAAa,IAAIA,OAAO,WAAY,WAAa,IAAIA,OAAO,WAAY,aAC9zF,SAAShyE,KAAK1jP,EAA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GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,KACphD/B,KAAKyqU,OAAS,IAAI1oU,WAAW,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,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"}