{"version":3,"file":"larscom-ng-qrcode-svg.mjs","sources":["../../../projects/ng-qrcode-svg/src/lib/qrcode-generator.ts","../../../projects/ng-qrcode-svg/src/lib/qrcode-svg.component.ts","../../../projects/ng-qrcode-svg/src/larscom-ng-qrcode-svg.ts"],"sourcesContent":["/*\n * QR Code generator library (TypeScript)\n *\n * Copyright (c) Project Nayuki. (MIT License)\n * https://www.nayuki.io/page/qr-code-generator-library\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n * - The above copyright notice and this permission notice shall be included in\n *   all copies or substantial portions of the Software.\n * - The Software is provided \"as is\", without warranty of any kind, express or\n *   implied, including but not limited to the warranties of merchantability,\n *   fitness for a particular purpose and noninfringement. In no event shall the\n *   authors or copyright holders be liable for any claim, damages or other\n *   liability, whether in an action of contract, tort or otherwise, arising from,\n *   out of or in connection with the Software or the use or other dealings in the\n *   Software.\n */\n\ntype bit = number\ntype byte = number\ntype int = number\n\nclass QrCode {\n  public static encodeText(text: string, ecl: Ecc): QrCode {\n    const segs: Array<QrSegment> = QrSegment.makeSegments(text)\n    return QrCode.encodeSegments(segs, ecl)\n  }\n\n  public static encodeBinary(data: Readonly<Array<byte>>, ecl: Ecc): QrCode {\n    const seg: QrSegment = QrSegment.makeBytes(data)\n    return QrCode.encodeSegments([seg], ecl)\n  }\n\n  public static encodeSegments(\n    segs: Readonly<Array<QrSegment>>,\n    ecl: Ecc,\n    minVersion: int = 1,\n    maxVersion: int = 40,\n    mask: int = -1,\n    boostEcl: boolean = true\n  ): QrCode {\n    if (\n      !(QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= QrCode.MAX_VERSION) ||\n      mask < -1 ||\n      mask > 7\n    )\n      throw new RangeError('Invalid value')\n\n    let version: int\n    let dataUsedBits: int\n    for (version = minVersion; ; version++) {\n      const dataCapacityBits: int = QrCode.getNumDataCodewords(version, ecl) * 8\n      const usedBits: number = QrSegment.getTotalBits(segs, version)\n      if (usedBits <= dataCapacityBits) {\n        dataUsedBits = usedBits\n        break\n      }\n      if (version >= maxVersion) throw new RangeError('Data too long')\n    }\n\n    for (const newEcl of [Ecc.MEDIUM, Ecc.QUARTILE, Ecc.HIGH]) {\n      if (boostEcl && dataUsedBits <= QrCode.getNumDataCodewords(version, newEcl) * 8) ecl = newEcl\n    }\n\n    let bb: Array<bit> = []\n    for (const seg of segs) {\n      appendBits(seg.mode.modeBits, 4, bb)\n      appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb)\n      for (const b of seg.getData()) bb.push(b)\n    }\n    assert(bb.length == dataUsedBits)\n\n    const dataCapacityBits: int = QrCode.getNumDataCodewords(version, ecl) * 8\n    assert(bb.length <= dataCapacityBits)\n    appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb)\n    appendBits(0, (8 - (bb.length % 8)) % 8, bb)\n    assert(bb.length % 8 == 0)\n\n    for (let padByte = 0xec; bb.length < dataCapacityBits; padByte ^= 0xec ^ 0x11) appendBits(padByte, 8, bb)\n\n    let dataCodewords: Array<byte> = []\n    while (dataCodewords.length * 8 < bb.length) dataCodewords.push(0)\n    bb.forEach((b: bit, i: int) => (dataCodewords[i >>> 3] |= b << (7 - (i & 7))))\n\n    return new QrCode(version, ecl, dataCodewords, mask)\n  }\n\n  public readonly size: int\n  public readonly mask: int\n\n  private readonly modules: Array<Array<boolean>> = []\n  private readonly isFunction: Array<Array<boolean>> = []\n\n  public constructor(\n    public readonly version: int,\n    public readonly errorCorrectionLevel: Ecc,\n    dataCodewords: Readonly<Array<byte>>,\n    msk: int\n  ) {\n    if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION) throw new RangeError('Version value out of range')\n    if (msk < -1 || msk > 7) throw new RangeError('Mask value out of range')\n    this.size = version * 4 + 17\n\n    let row: Array<boolean> = []\n    for (let i = 0; i < this.size; i++) row.push(false)\n    for (let i = 0; i < this.size; i++) {\n      this.modules.push(row.slice())\n      this.isFunction.push(row.slice())\n    }\n\n    this.drawFunctionPatterns()\n    const allCodewords: Array<byte> = this.addEccAndInterleave(dataCodewords)\n    this.drawCodewords(allCodewords)\n\n    if (msk == -1) {\n      let minPenalty: int = 1000000000\n      for (let i = 0; i < 8; i++) {\n        this.applyMask(i)\n        this.drawFormatBits(i)\n        const penalty: int = this.getPenaltyScore()\n        if (penalty < minPenalty) {\n          msk = i\n          minPenalty = penalty\n        }\n        this.applyMask(i)\n      }\n    }\n    assert(0 <= msk && msk <= 7)\n    this.mask = msk\n    this.applyMask(msk)\n    this.drawFormatBits(msk)\n\n    this.isFunction = []\n  }\n\n  public getModule(x: int, y: int): boolean {\n    return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x]\n  }\n\n  private drawFunctionPatterns(): void {\n    for (let i = 0; i < this.size; i++) {\n      this.setFunctionModule(6, i, i % 2 == 0)\n      this.setFunctionModule(i, 6, i % 2 == 0)\n    }\n\n    this.drawFinderPattern(3, 3)\n    this.drawFinderPattern(this.size - 4, 3)\n    this.drawFinderPattern(3, this.size - 4)\n\n    const alignPatPos: Array<int> = this.getAlignmentPatternPositions()\n    const numAlign: int = alignPatPos.length\n    for (let i = 0; i < numAlign; i++) {\n      for (let j = 0; j < numAlign; j++) {\n        if (!((i == 0 && j == 0) || (i == 0 && j == numAlign - 1) || (i == numAlign - 1 && j == 0)))\n          this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j])\n      }\n    }\n\n    this.drawFormatBits(0)\n    this.drawVersion()\n  }\n\n  private drawFormatBits(mask: int): void {\n    const data: int = (this.errorCorrectionLevel.formatBits << 3) | mask\n    let rem: int = data\n    for (let i = 0; i < 10; i++) rem = (rem << 1) ^ ((rem >>> 9) * 0x537)\n    const bits = ((data << 10) | rem) ^ 0x5412\n    assert(bits >>> 15 == 0)\n\n    for (let i = 0; i <= 5; i++) this.setFunctionModule(8, i, getBit(bits, i))\n    this.setFunctionModule(8, 7, getBit(bits, 6))\n    this.setFunctionModule(8, 8, getBit(bits, 7))\n    this.setFunctionModule(7, 8, getBit(bits, 8))\n    for (let i = 9; i < 15; i++) this.setFunctionModule(14 - i, 8, getBit(bits, i))\n\n    for (let i = 0; i < 8; i++) this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i))\n    for (let i = 8; i < 15; i++) this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i))\n    this.setFunctionModule(8, this.size - 8, true)\n  }\n\n  private drawVersion(): void {\n    if (this.version < 7) return\n\n    let rem: int = this.version\n    for (let i = 0; i < 12; i++) rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25)\n    const bits: int = (this.version << 12) | rem // uint18\n    assert(bits >>> 18 == 0)\n\n    for (let i = 0; i < 18; i++) {\n      const color: boolean = getBit(bits, i)\n      const a: int = this.size - 11 + (i % 3)\n      const b: int = Math.floor(i / 3)\n      this.setFunctionModule(a, b, color)\n      this.setFunctionModule(b, a, color)\n    }\n  }\n\n  private drawFinderPattern(x: int, y: int): void {\n    for (let dy = -4; dy <= 4; dy++) {\n      for (let dx = -4; dx <= 4; dx++) {\n        const dist: int = Math.max(Math.abs(dx), Math.abs(dy))\n        const xx: int = x + dx\n        const yy: int = y + dy\n        if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n          this.setFunctionModule(xx, yy, dist != 2 && dist != 4)\n      }\n    }\n  }\n\n  private drawAlignmentPattern(x: int, y: int): void {\n    for (let dy = -2; dy <= 2; dy++) {\n      for (let dx = -2; dx <= 2; dx++) this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1)\n    }\n  }\n\n  private setFunctionModule(x: int, y: int, isDark: boolean): void {\n    this.modules[y][x] = isDark\n    this.isFunction[y][x] = true\n  }\n\n  private addEccAndInterleave(data: Readonly<Array<byte>>): Array<byte> {\n    const ver: int = this.version\n    const ecl: Ecc = this.errorCorrectionLevel\n    if (data.length != QrCode.getNumDataCodewords(ver, ecl)) throw new RangeError('Invalid argument')\n\n    const numBlocks: int = QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]\n    const blockEccLen: int = QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver]\n    const rawCodewords: int = Math.floor(QrCode.getNumRawDataModules(ver) / 8)\n    const numShortBlocks: int = numBlocks - (rawCodewords % numBlocks)\n    const shortBlockLen: int = Math.floor(rawCodewords / numBlocks)\n\n    let blocks: Array<Array<byte>> = []\n    const rsDiv: Array<byte> = QrCode.reedSolomonComputeDivisor(blockEccLen)\n    for (let i = 0, k = 0; i < numBlocks; i++) {\n      let dat: Array<byte> = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1))\n      k += dat.length\n      const ecc: Array<byte> = QrCode.reedSolomonComputeRemainder(dat, rsDiv)\n      if (i < numShortBlocks) dat.push(0)\n      blocks.push(dat.concat(ecc))\n    }\n\n    let result: Array<byte> = []\n    for (let i = 0; i < blocks[0].length; i++) {\n      blocks.forEach((block, j) => {\n        if (i != shortBlockLen - blockEccLen || j >= numShortBlocks) result.push(block[i])\n      })\n    }\n    assert(result.length == rawCodewords)\n    return result\n  }\n\n  private drawCodewords(data: Readonly<Array<byte>>): void {\n    if (data.length != Math.floor(QrCode.getNumRawDataModules(this.version) / 8))\n      throw new RangeError('Invalid argument')\n    let i: int = 0\n    for (let right = this.size - 1; right >= 1; right -= 2) {\n      if (right == 6) right = 5\n      for (let vert = 0; vert < this.size; vert++) {\n        for (let j = 0; j < 2; j++) {\n          const x: int = right - j\n          const upward: boolean = ((right + 1) & 2) == 0\n          const y: int = upward ? this.size - 1 - vert : vert\n          if (!this.isFunction[y][x] && i < data.length * 8) {\n            this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7))\n            i++\n          }\n        }\n      }\n    }\n    assert(i == data.length * 8)\n  }\n\n  private applyMask(mask: int): void {\n    if (mask < 0 || mask > 7) throw new RangeError('Mask value out of range')\n    for (let y = 0; y < this.size; y++) {\n      for (let x = 0; x < this.size; x++) {\n        let invert: boolean\n        switch (mask) {\n          case 0:\n            invert = (x + y) % 2 == 0\n            break\n          case 1:\n            invert = y % 2 == 0\n            break\n          case 2:\n            invert = x % 3 == 0\n            break\n          case 3:\n            invert = (x + y) % 3 == 0\n            break\n          case 4:\n            invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0\n            break\n          case 5:\n            invert = ((x * y) % 2) + ((x * y) % 3) == 0\n            break\n          case 6:\n            invert = (((x * y) % 2) + ((x * y) % 3)) % 2 == 0\n            break\n          case 7:\n            invert = (((x + y) % 2) + ((x * y) % 3)) % 2 == 0\n            break\n          default:\n            throw new Error('Unreachable')\n        }\n        if (!this.isFunction[y][x] && invert) this.modules[y][x] = !this.modules[y][x]\n      }\n    }\n  }\n\n  private getPenaltyScore(): int {\n    let result: int = 0\n\n    for (let y = 0; y < this.size; y++) {\n      let runColor = false\n      let runX = 0\n      let runHistory = [0, 0, 0, 0, 0, 0, 0]\n      for (let x = 0; x < this.size; x++) {\n        if (this.modules[y][x] == runColor) {\n          runX++\n          if (runX == 5) result += QrCode.PENALTY_N1\n          else if (runX > 5) result++\n        } else {\n          this.finderPenaltyAddHistory(runX, runHistory)\n          if (!runColor) result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3\n          runColor = this.modules[y][x]\n          runX = 1\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * QrCode.PENALTY_N3\n    }\n\n    for (let x = 0; x < this.size; x++) {\n      let runColor = false\n      let runY = 0\n      let runHistory = [0, 0, 0, 0, 0, 0, 0]\n      for (let y = 0; y < this.size; y++) {\n        if (this.modules[y][x] == runColor) {\n          runY++\n          if (runY == 5) result += QrCode.PENALTY_N1\n          else if (runY > 5) result++\n        } else {\n          this.finderPenaltyAddHistory(runY, runHistory)\n          if (!runColor) result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3\n          runColor = this.modules[y][x]\n          runY = 1\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * QrCode.PENALTY_N3\n    }\n\n    for (let y = 0; y < this.size - 1; y++) {\n      for (let x = 0; x < this.size - 1; x++) {\n        const color: boolean = this.modules[y][x]\n        if (color == this.modules[y][x + 1] && color == this.modules[y + 1][x] && color == this.modules[y + 1][x + 1])\n          result += QrCode.PENALTY_N2\n      }\n    }\n\n    let dark: int = 0\n    for (const row of this.modules) dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark)\n    const total: int = this.size * this.size\n    const k: int = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1\n    assert(0 <= k && k <= 9)\n    result += k * QrCode.PENALTY_N4\n    assert(0 <= result && result <= 2568888)\n    return result\n  }\n\n  private getAlignmentPatternPositions(): Array<int> {\n    if (this.version == 1) return []\n    else {\n      const numAlign: int = Math.floor(this.version / 7) + 2\n      const step: int = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2\n      let result: Array<int> = [6]\n      for (let pos = this.size - 7; result.length < numAlign; pos -= step) result.splice(1, 0, pos)\n      return result\n    }\n  }\n\n  private static getNumRawDataModules(ver: int): int {\n    if (ver < QrCode.MIN_VERSION || ver > QrCode.MAX_VERSION) throw new RangeError('Version number out of range')\n    let result: int = (16 * ver + 128) * ver + 64\n    if (ver >= 2) {\n      const numAlign: int = Math.floor(ver / 7) + 2\n      result -= (25 * numAlign - 10) * numAlign - 55\n      if (ver >= 7) result -= 36\n    }\n    assert(208 <= result && result <= 29648)\n    return result\n  }\n\n  private static getNumDataCodewords(ver: int, ecl: Ecc): int {\n    return (\n      Math.floor(QrCode.getNumRawDataModules(ver) / 8) -\n      QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]\n    )\n  }\n\n  private static reedSolomonComputeDivisor(degree: int): Array<byte> {\n    if (degree < 1 || degree > 255) throw new RangeError('Degree out of range')\n    let result: Array<byte> = []\n    for (let i = 0; i < degree - 1; i++) result.push(0)\n    result.push(1)\n\n    let root = 1\n    for (let i = 0; i < degree; i++) {\n      for (let j = 0; j < result.length; j++) {\n        result[j] = QrCode.reedSolomonMultiply(result[j], root)\n        if (j + 1 < result.length) result[j] ^= result[j + 1]\n      }\n      root = QrCode.reedSolomonMultiply(root, 0x02)\n    }\n    return result\n  }\n\n  private static reedSolomonComputeRemainder(data: Readonly<Array<byte>>, divisor: Readonly<Array<byte>>): Array<byte> {\n    let result: Array<byte> = divisor.map((_) => 0)\n    for (const b of data) {\n      const factor: byte = b ^ (result.shift() as byte)\n      result.push(0)\n      divisor.forEach((coef, i) => (result[i] ^= QrCode.reedSolomonMultiply(coef, factor)))\n    }\n    return result\n  }\n\n  private static reedSolomonMultiply(x: byte, y: byte): byte {\n    if (x >>> 8 != 0 || y >>> 8 != 0) throw new RangeError('Byte out of range')\n    let z: int = 0\n    for (let i = 7; i >= 0; i--) {\n      z = (z << 1) ^ ((z >>> 7) * 0x11d)\n      z ^= ((y >>> i) & 1) * x\n    }\n    assert(z >>> 8 == 0)\n    return z as byte\n  }\n\n  private finderPenaltyCountPatterns(runHistory: Readonly<Array<int>>): int {\n    const n: int = runHistory[1]\n    assert(n <= this.size * 3)\n    const core: boolean =\n      n > 0 && runHistory[2] == n && runHistory[3] == n * 3 && runHistory[4] == n && runHistory[5] == n\n    return (\n      (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) +\n      (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0)\n    )\n  }\n\n  private finderPenaltyTerminateAndCount(currentRunColor: boolean, currentRunLength: int, runHistory: Array<int>): int {\n    if (currentRunColor) {\n      this.finderPenaltyAddHistory(currentRunLength, runHistory)\n      currentRunLength = 0\n    }\n    currentRunLength += this.size\n    this.finderPenaltyAddHistory(currentRunLength, runHistory)\n    return this.finderPenaltyCountPatterns(runHistory)\n  }\n\n  private finderPenaltyAddHistory(currentRunLength: int, runHistory: Array<int>): void {\n    if (runHistory[0] == 0) currentRunLength += this.size // Add light border to initial run\n    runHistory.pop()\n    runHistory.unshift(currentRunLength)\n  }\n\n  public static readonly MIN_VERSION: int = 1\n  public static readonly MAX_VERSION: int = 40\n\n  private static readonly PENALTY_N1: int = 3\n  private static readonly PENALTY_N2: int = 3\n  private static readonly PENALTY_N3: int = 40\n  private static readonly PENALTY_N4: int = 10\n\n  private static readonly ECC_CODEWORDS_PER_BLOCK: Array<Array<int>> = [\n    // Version: (note that index 0 is for padding, and is set to an illegal value)\n    //0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n    [\n      -1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30,\n      30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30\n    ], // Low\n    [\n      -1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28,\n      28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28\n    ], // Medium\n    [\n      -1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30,\n      30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30\n    ], // Quartile\n    [\n      -1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30,\n      30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30\n    ] // High\n  ]\n\n  private static readonly NUM_ERROR_CORRECTION_BLOCKS: Array<Array<int>> = [\n    // Version: (note that index 0 is for padding, and is set to an illegal value)\n    //0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n    [\n      -1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18,\n      19, 19, 20, 21, 22, 24, 25\n    ], // Low\n    [\n      -1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31,\n      33, 35, 37, 38, 40, 43, 45, 47, 49\n    ], // Medium\n    [\n      -1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40,\n      43, 45, 48, 51, 53, 56, 59, 62, 65, 68\n    ], // Quartile\n    [\n      -1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48,\n      51, 54, 57, 60, 63, 66, 70, 74, 77, 81\n    ] // High\n  ]\n}\n\nfunction appendBits(val: int, len: int, bb: Array<bit>): void {\n  if (len < 0 || len > 31 || val >>> len != 0) throw new RangeError('Value out of range')\n  for (let i = len - 1; i >= 0; i--) bb.push((val >>> i) & 1)\n}\n\nfunction getBit(x: int, i: int): boolean {\n  return ((x >>> i) & 1) != 0\n}\n\nfunction assert(cond: boolean): void {\n  if (!cond) throw new Error('Assertion error')\n}\n\nclass QrSegment {\n  public static makeBytes(data: Readonly<Array<byte>>): QrSegment {\n    let bb: Array<bit> = []\n    for (const b of data) appendBits(b, 8, bb)\n    return new QrSegment(Mode.BYTE, data.length, bb)\n  }\n\n  public static makeNumeric(digits: string): QrSegment {\n    if (!QrSegment.isNumeric(digits)) throw new RangeError('String contains non-numeric characters')\n    let bb: Array<bit> = []\n    for (let i = 0; i < digits.length; ) {\n      const n: int = Math.min(digits.length - i, 3)\n      appendBits(parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb)\n      i += n\n    }\n    return new QrSegment(Mode.NUMERIC, digits.length, bb)\n  }\n\n  public static makeAlphanumeric(text: string): QrSegment {\n    if (!QrSegment.isAlphanumeric(text))\n      throw new RangeError('String contains unencodable characters in alphanumeric mode')\n    let bb: Array<bit> = []\n    let i: int\n    for (i = 0; i + 2 <= text.length; i += 2) {\n      let temp: int = QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45\n      temp += QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1))\n      appendBits(temp, 11, bb)\n    }\n    if (i < text.length) appendBits(QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb)\n    return new QrSegment(Mode.ALPHANUMERIC, text.length, bb)\n  }\n\n  public static makeSegments(text: string): Array<QrSegment> {\n    if (text == '') return []\n    else if (QrSegment.isNumeric(text)) return [QrSegment.makeNumeric(text)]\n    else if (QrSegment.isAlphanumeric(text)) return [QrSegment.makeAlphanumeric(text)]\n    else return [QrSegment.makeBytes(QrSegment.toUtf8ByteArray(text))]\n  }\n\n  public static makeEci(assignVal: int): QrSegment {\n    let bb: Array<bit> = []\n    if (assignVal < 0) throw new RangeError('ECI assignment value out of range')\n    else if (assignVal < 1 << 7) appendBits(assignVal, 8, bb)\n    else if (assignVal < 1 << 14) {\n      appendBits(0b10, 2, bb)\n      appendBits(assignVal, 14, bb)\n    } else if (assignVal < 1000000) {\n      appendBits(0b110, 3, bb)\n      appendBits(assignVal, 21, bb)\n    } else throw new RangeError('ECI assignment value out of range')\n    return new QrSegment(Mode.ECI, 0, bb)\n  }\n\n  public static isNumeric(text: string): boolean {\n    return QrSegment.NUMERIC_REGEX.test(text)\n  }\n\n  public static isAlphanumeric(text: string): boolean {\n    return QrSegment.ALPHANUMERIC_REGEX.test(text)\n  }\n\n  public constructor(public readonly mode: Mode, public readonly numChars: int, private readonly bitData: Array<bit>) {\n    if (numChars < 0) throw new RangeError('Invalid argument')\n    this.bitData = bitData.slice()\n  }\n\n  public getData(): Array<bit> {\n    return this.bitData.slice()\n  }\n\n  public static getTotalBits(segs: Readonly<Array<QrSegment>>, version: int): number {\n    let result: number = 0\n    for (const seg of segs) {\n      const ccbits: int = seg.mode.numCharCountBits(version)\n      if (seg.numChars >= 1 << ccbits) return Infinity\n      result += 4 + ccbits + seg.bitData.length\n    }\n    return result\n  }\n\n  private static toUtf8ByteArray(str: string): Array<byte> {\n    str = encodeURI(str)\n    let result: Array<byte> = []\n    for (let i = 0; i < str.length; i++) {\n      if (str.charAt(i) != '%') result.push(str.charCodeAt(i))\n      else {\n        result.push(parseInt(str.substring(i + 1, i + 3), 16))\n        i += 2\n      }\n    }\n    return result\n  }\n\n  private static readonly NUMERIC_REGEX: RegExp = /^[0-9]*$/\n  private static readonly ALPHANUMERIC_REGEX: RegExp = /^[A-Z0-9 $%*+.\\/:-]*$/\n  private static readonly ALPHANUMERIC_CHARSET: string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'\n}\n\nclass Ecc {\n  public static readonly LOW = new Ecc(0, 1) // The QR Code can tolerate about  7% erroneous codewords\n  public static readonly MEDIUM = new Ecc(1, 0) // The QR Code can tolerate about 15% erroneous codewords\n  public static readonly QUARTILE = new Ecc(2, 3) // The QR Code can tolerate about 25% erroneous codewords\n  public static readonly HIGH = new Ecc(3, 2) // The QR Code can tolerate about 30% erroneous codewords\n\n  public static readonly low = this.LOW\n  public static readonly medium = this.MEDIUM\n  public static readonly quartile = this.QUARTILE\n  public static readonly high = this.HIGH\n\n  private constructor(public readonly ordinal: int, public readonly formatBits: int) {}\n}\n\nclass Mode {\n  public static readonly NUMERIC = new Mode(0x1, [10, 12, 14])\n  public static readonly ALPHANUMERIC = new Mode(0x2, [9, 11, 13])\n  public static readonly BYTE = new Mode(0x4, [8, 16, 16])\n  public static readonly KANJI = new Mode(0x8, [8, 10, 12])\n  public static readonly ECI = new Mode(0x7, [0, 0, 0])\n\n  private constructor(public readonly modeBits: int, private readonly numBitsCharCount: [int, int, int]) {}\n\n  public numCharCountBits(ver: int): int {\n    return this.numBitsCharCount[Math.floor((ver + 7) / 17)]\n  }\n}\n\nexport { QrCode, Ecc }\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core'\nimport { Ecc, QrCode } from './qrcode-generator'\n\nconst VALID_COLOR_REGEX = /^#(?:[0-9a-fA-F]{3,4}){1,2}$/\n\n@Component({\n  selector: 'qrcode-svg',\n  standalone: true,\n  template: `\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      version=\"1.1\"\n      stroke=\"none\"\n      [attr.alt]=\"alt\"\n      [attr.aria-label]=\"ariaLabel\"\n      [attr.width]=\"size\"\n      [attr.height]=\"size\"\n      [attr.viewBox]=\"viewBox\"\n    >\n      <rect width=\"100%\" height=\"100%\" [attr.fill]=\"backgroundColor\" />\n      <path [attr.d]=\"d\" [attr.fill]=\"foregroundColor\" />\n    </svg>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QrcodeSvgComponent implements OnChanges {\n  @Input() value!: string\n  @Input() ecl: 'low' | 'medium' | 'quartile' | 'high' = 'medium'\n  @Input() borderSize = 2\n\n  @Input() size: string | number = 250\n  @Input() backgroundColor = '#FFFFFF'\n  @Input() foregroundColor = '#000000'\n\n  @Input() alt: string | undefined\n  @Input() ariaLabel: string | undefined\n\n  private qr!: QrCode\n\n  viewBox!: string\n  d!: string\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.validateInputs()\n\n    if (this.skipUpdate(changes)) return\n\n    this.qr = QrCode.encodeText(this.value, Ecc[this.ecl])\n    const s = this.qr.size + this.borderSize * 2\n    this.viewBox = `0 0 ${s} ${s}`\n    this.d = this.createD(this.borderSize)\n  }\n\n  private validateInputs(): void {\n    if (!this.value) throw Error('[@larscom/ng-qrcode-svg] You must provide a value!')\n\n    if (!VALID_COLOR_REGEX.test(this.backgroundColor))\n      throw Error('[@larscom/ng-qrcode-svg] You must provide a valid backgroundColor (HEX RGB) eg: #FFFFFF')\n\n    if (!VALID_COLOR_REGEX.test(this.foregroundColor))\n      throw Error('[@larscom/ng-qrcode-svg] You must provide a valid foregroundColor (HEX RGB) eg: #000000')\n  }\n\n  private skipUpdate({ backgroundColor, foregroundColor, size }: SimpleChanges): boolean {\n    const bgColorChanged = backgroundColor?.currentValue && !backgroundColor?.firstChange\n    const fgColorChanged = foregroundColor?.currentValue && !foregroundColor.firstChange\n    const sizeChanged = size?.currentValue && !size.firstChange\n\n    return bgColorChanged || fgColorChanged || sizeChanged\n  }\n\n  private createD(borderSize: number): string {\n    const parts: string[] = []\n    for (let y = 0; y < this.qr.size; y++) {\n      for (let x = 0; x < this.qr.size; x++) {\n        if (this.qr.getModule(x, y)) parts.push(`M${x + borderSize},${y + borderSize}h1v1h-1z`)\n      }\n    }\n    return parts.join(' ')\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;AAqBG;AAMH,MAAM,MAAM,CAAA;AACH,IAAA,OAAO,UAAU,CAAC,IAAY,EAAE,GAAQ,EAAA;QAC7C,MAAM,IAAI,GAAqB,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KACxC;AAEM,IAAA,OAAO,YAAY,CAAC,IAA2B,EAAE,GAAQ,EAAA;QAC9D,MAAM,GAAG,GAAc,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAChD,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;KACzC;AAEM,IAAA,OAAO,cAAc,CAC1B,IAAgC,EAChC,GAAQ,EACR,UAAkB,GAAA,CAAC,EACnB,UAAA,GAAkB,EAAE,EACpB,IAAA,GAAY,CAAC,CAAC,EACd,WAAoB,IAAI,EAAA;AAExB,QAAA,IACE,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC;YACnG,IAAI,GAAG,CAAC,CAAC;AACT,YAAA,IAAI,GAAG,CAAC;AAER,YAAA,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,CAAA;AAEvC,QAAA,IAAI,OAAY,CAAA;AAChB,QAAA,IAAI,YAAiB,CAAA;AACrB,QAAA,KAAK,OAAO,GAAG,UAAU,GAAI,OAAO,EAAE,EAAE;AACtC,YAAA,MAAM,gBAAgB,GAAQ,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YAC1E,MAAM,QAAQ,GAAW,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC9D,YAAA,IAAI,QAAQ,IAAI,gBAAgB,EAAE;gBAChC,YAAY,GAAG,QAAQ,CAAA;gBACvB,MAAK;aACN;YACD,IAAI,OAAO,IAAI,UAAU;AAAE,gBAAA,MAAM,IAAI,UAAU,CAAC,eAAe,CAAC,CAAA;SACjE;AAED,QAAA,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;AACzD,YAAA,IAAI,QAAQ,IAAI,YAAY,IAAI,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;gBAAE,GAAG,GAAG,MAAM,CAAA;SAC9F;QAED,IAAI,EAAE,GAAe,EAAE,CAAA;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AACpC,YAAA,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;AAChE,YAAA,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;AAAE,gBAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAC1C;AACD,QAAA,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,YAAY,CAAC,CAAA;AAEjC,QAAA,MAAM,gBAAgB,GAAQ,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;AAC1E,QAAA,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAA;AACrC,QAAA,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5D,QAAA,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AAE1B,QAAA,KAAK,IAAI,OAAO,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,gBAAgB,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI;AAAE,YAAA,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAEzG,IAAI,aAAa,GAAgB,EAAE,CAAA;QACnC,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM;AAAE,YAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAClE,QAAA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAM,MAAM,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9E,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;KACrD;AAQD,IAAA,WAAA,CACkB,OAAY,EACZ,oBAAyB,EACzC,aAAoC,EACpC,GAAQ,EAAA;QAHQ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;QACZ,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAK;QAL1B,IAAO,CAAA,OAAA,GAA0B,EAAE,CAAA;QACnC,IAAU,CAAA,UAAA,GAA0B,EAAE,CAAA;QAQrD,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAA;AACpH,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,CAAA;QACxE,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,GAAG,GAAmB,EAAE,CAAA;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAAE,YAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,MAAM,YAAY,GAAgB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;AACzE,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;AAEhC,QAAA,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;YACb,IAAI,UAAU,GAAQ,UAAU,CAAA;AAChC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;AACtB,gBAAA,MAAM,OAAO,GAAQ,IAAI,CAAC,eAAe,EAAE,CAAA;AAC3C,gBAAA,IAAI,OAAO,GAAG,UAAU,EAAE;oBACxB,GAAG,GAAG,CAAC,CAAA;oBACP,UAAU,GAAG,OAAO,CAAA;iBACrB;AACD,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;aAClB;SACF;QACD,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;AAExB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;KACrB;IAEM,SAAS,CAAC,CAAM,EAAE,CAAM,EAAA;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAChF;IAEO,oBAAoB,GAAA;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;SACzC;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;AAExC,QAAA,MAAM,WAAW,GAAe,IAAI,CAAC,4BAA4B,EAAE,CAAA;AACnE,QAAA,MAAM,QAAQ,GAAQ,WAAW,CAAC,MAAM,CAAA;AACxC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACjC,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,oBAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5D;SACF;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,CAAC,WAAW,EAAE,CAAA;KACnB;AAEO,IAAA,cAAc,CAAC,IAAS,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAA;QACpE,IAAI,GAAG,GAAQ,IAAI,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAAE,YAAA,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;AACrE,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,GAAG,IAAI,MAAM,CAAA;AAC1C,QAAA,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC1E,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAE/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC3F,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;KAC/C;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;YAAE,OAAM;AAE5B,QAAA,IAAI,GAAG,GAAQ,IAAI,CAAC,OAAO,CAAA;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAAE,YAAA,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,MAAM,CAAC,CAAA;AACvE,QAAA,MAAM,IAAI,GAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,IAAI,GAAG,CAAA;AAC5C,QAAA,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAExB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAY,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACtC,YAAA,MAAM,CAAC,GAAQ,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACvC,MAAM,CAAC,GAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAChC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;SACpC;KACF;IAEO,iBAAiB,CAAC,CAAM,EAAE,CAAM,EAAA;AACtC,QAAA,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;AAC/B,YAAA,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC/B,MAAM,IAAI,GAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACtD,gBAAA,MAAM,EAAE,GAAQ,CAAC,GAAG,EAAE,CAAA;AACtB,gBAAA,MAAM,EAAE,GAAQ,CAAC,GAAG,EAAE,CAAA;AACtB,gBAAA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;AACxD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAA;aACzD;SACF;KACF;IAEO,oBAAoB,CAAC,CAAM,EAAE,CAAM,EAAA;AACzC,QAAA,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;YAC/B,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;AAAE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;SACnH;KACF;AAEO,IAAA,iBAAiB,CAAC,CAAM,EAAE,CAAM,EAAE,MAAe,EAAA;QACvD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;KAC7B;AAEO,IAAA,mBAAmB,CAAC,IAA2B,EAAA;AACrD,QAAA,MAAM,GAAG,GAAQ,IAAI,CAAC,OAAO,CAAA;AAC7B,QAAA,MAAM,GAAG,GAAQ,IAAI,CAAC,oBAAoB,CAAA;QAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAEjG,QAAA,MAAM,SAAS,GAAQ,MAAM,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;AAC3E,QAAA,MAAM,WAAW,GAAQ,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;AACzE,QAAA,MAAM,YAAY,GAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1E,MAAM,cAAc,GAAQ,SAAS,IAAI,YAAY,GAAG,SAAS,CAAC,CAAA;QAClE,MAAM,aAAa,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;QAE/D,IAAI,MAAM,GAAuB,EAAE,CAAA;QACnC,MAAM,KAAK,GAAgB,MAAM,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAA;AACxE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,IAAI,GAAG,GAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,GAAG,WAAW,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACpG,YAAA,CAAC,IAAI,GAAG,CAAC,MAAM,CAAA;YACf,MAAM,GAAG,GAAgB,MAAM,CAAC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACvE,IAAI,CAAC,GAAG,cAAc;AAAE,gBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;SAC7B;QAED,IAAI,MAAM,GAAgB,EAAE,CAAA;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;gBAC1B,IAAI,CAAC,IAAI,aAAa,GAAG,WAAW,IAAI,CAAC,IAAI,cAAc;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpF,aAAC,CAAC,CAAA;SACH;AACD,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,CAAA;AACrC,QAAA,OAAO,MAAM,CAAA;KACd;AAEO,IAAA,aAAa,CAAC,IAA2B,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1E,YAAA,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;QAC1C,IAAI,CAAC,GAAQ,CAAC,CAAA;AACd,QAAA,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;YACtD,IAAI,KAAK,IAAI,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAA;AACzB,YAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;AAC3C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,oBAAA,MAAM,CAAC,GAAQ,KAAK,GAAG,CAAC,CAAA;AACxB,oBAAA,MAAM,MAAM,GAAY,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9C,oBAAA,MAAM,CAAC,GAAQ,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACnD,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACvD,wBAAA,CAAC,EAAE,CAAA;qBACJ;iBACF;aACF;SACF;QACD,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;KAC7B;AAEO,IAAA,SAAS,CAAC,IAAS,EAAA;AACzB,QAAA,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,CAAA;AACzE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,IAAI,MAAe,CAAA;gBACnB,QAAQ,IAAI;AACV,oBAAA,KAAK,CAAC;wBACJ,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACzB,MAAK;AACP,oBAAA,KAAK,CAAC;AACJ,wBAAA,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBACnB,MAAK;AACP,oBAAA,KAAK,CAAC;AACJ,wBAAA,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBACnB,MAAK;AACP,oBAAA,KAAK,CAAC;wBACJ,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACzB,MAAK;AACP,oBAAA,KAAK,CAAC;wBACJ,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACzD,MAAK;AACP,oBAAA,KAAK,CAAC;wBACJ,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;wBAC3C,MAAK;AACP,oBAAA,KAAK,CAAC;wBACJ,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACjD,MAAK;AACP,oBAAA,KAAK,CAAC;wBACJ,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACjD,MAAK;AACP,oBAAA;AACE,wBAAA,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;iBACjC;gBACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM;AAAE,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC/E;SACF;KACF;IAEO,eAAe,GAAA;QACrB,IAAI,MAAM,GAAQ,CAAC,CAAA;AAEnB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,IAAI,IAAI,GAAG,CAAC,CAAA;AACZ,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACtC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AAClC,oBAAA,IAAI,EAAE,CAAA;oBACN,IAAI,IAAI,IAAI,CAAC;AAAE,wBAAA,MAAM,IAAI,MAAM,CAAC,UAAU,CAAA;yBACrC,IAAI,IAAI,GAAG,CAAC;AAAE,wBAAA,MAAM,EAAE,CAAA;iBAC5B;qBAAM;AACL,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC9C,oBAAA,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;oBACxF,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC7B,IAAI,GAAG,CAAC,CAAA;iBACT;aACF;AACD,YAAA,MAAM,IAAI,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;SAC9F;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,IAAI,IAAI,GAAG,CAAC,CAAA;AACZ,YAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACtC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AAClC,oBAAA,IAAI,EAAE,CAAA;oBACN,IAAI,IAAI,IAAI,CAAC;AAAE,wBAAA,MAAM,IAAI,MAAM,CAAC,UAAU,CAAA;yBACrC,IAAI,IAAI,GAAG,CAAC;AAAE,wBAAA,MAAM,EAAE,CAAA;iBAC5B;qBAAM;AACL,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC9C,oBAAA,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;oBACxF,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC7B,IAAI,GAAG,CAAC,CAAA;iBACT;aACF;AACD,YAAA,MAAM,IAAI,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;SAC9F;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,gBAAA,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3G,oBAAA,MAAM,IAAI,MAAM,CAAC,UAAU,CAAA;aAC9B;SACF;QAED,IAAI,IAAI,GAAQ,CAAC,CAAA;AACjB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9F,MAAM,KAAK,GAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACxC,MAAM,CAAC,GAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACtE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACxB,QAAA,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;QAC/B,MAAM,CAAC,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,CAAC,CAAA;AACxC,QAAA,OAAO,MAAM,CAAA;KACd;IAEO,4BAA4B,GAAA;AAClC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAA;aAC3B;AACH,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACtD,YAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACtG,YAAA,IAAI,MAAM,GAAe,CAAC,CAAC,CAAC,CAAA;AAC5B,YAAA,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,IAAI;gBAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;AAC7F,YAAA,OAAO,MAAM,CAAA;SACd;KACF;IAEO,OAAO,oBAAoB,CAAC,GAAQ,EAAA;QAC1C,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAA;AAC7G,QAAA,IAAI,MAAM,GAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;AAC7C,QAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACZ,YAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AAC7C,YAAA,MAAM,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAA;YAC9C,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,IAAI,EAAE,CAAA;SAC3B;QACD,MAAM,CAAC,GAAG,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,CAAA;AACxC,QAAA,OAAO,MAAM,CAAA;KACd;AAEO,IAAA,OAAO,mBAAmB,CAAC,GAAQ,EAAE,GAAQ,EAAA;AACnD,QAAA,QACE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EACxG;KACF;IAEO,OAAO,yBAAyB,CAAC,MAAW,EAAA;AAClD,QAAA,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAA;QAC3E,IAAI,MAAM,GAAgB,EAAE,CAAA;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnD,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEd,IAAI,IAAI,GAAG,CAAC,CAAA;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,gBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM;oBAAE,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;aACtD;YACD,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAC9C;AACD,QAAA,OAAO,MAAM,CAAA;KACd;AAEO,IAAA,OAAO,2BAA2B,CAAC,IAA2B,EAAE,OAA8B,EAAA;AACpG,QAAA,IAAI,MAAM,GAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC/C,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,MAAM,MAAM,GAAS,CAAC,GAAI,MAAM,CAAC,KAAK,EAAW,CAAA;AACjD,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;SACtF;AACD,QAAA,OAAO,MAAM,CAAA;KACd;AAEO,IAAA,OAAO,mBAAmB,CAAC,CAAO,EAAE,CAAO,EAAA;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAAE,YAAA,MAAM,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAA;QAC3E,IAAI,CAAC,GAAQ,CAAC,CAAA;AACd,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3B,YAAA,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;AAClC,YAAA,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACzB;AACD,QAAA,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AACpB,QAAA,OAAO,CAAS,CAAA;KACjB;AAEO,IAAA,0BAA0B,CAAC,UAAgC,EAAA;AACjE,QAAA,MAAM,CAAC,GAAQ,UAAU,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;AAC1B,QAAA,MAAM,IAAI,GACR,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACnG,QACE,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;aAC5D,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAC/D;KACF;AAEO,IAAA,8BAA8B,CAAC,eAAwB,EAAE,gBAAqB,EAAE,UAAsB,EAAA;QAC5G,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;YAC1D,gBAAgB,GAAG,CAAC,CAAA;SACrB;AACD,QAAA,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAA;AAC7B,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAA;KACnD;IAEO,uBAAuB,CAAC,gBAAqB,EAAE,UAAsB,EAAA;AAC3E,QAAA,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAAE,YAAA,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAA;QACrD,UAAU,CAAC,GAAG,EAAE,CAAA;AAChB,QAAA,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;KACrC;aAEsB,IAAW,CAAA,WAAA,GAAQ,CAAR,CAAS,EAAA;aACpB,IAAW,CAAA,WAAA,GAAQ,EAAR,CAAU,EAAA;aAEpB,IAAU,CAAA,UAAA,GAAQ,CAAR,CAAS,EAAA;aACnB,IAAU,CAAA,UAAA,GAAQ,CAAR,CAAS,EAAA;aACnB,IAAU,CAAA,UAAA,GAAQ,EAAR,CAAU,EAAA;aACpB,IAAU,CAAA,UAAA,GAAQ,EAAR,CAAU,EAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,uBAAuB,GAAsB;;;AAGnE,QAAA;YACE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACjH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC/C,SAAA;AACD,QAAA;YACE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9G,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACnD,SAAA;AACD,QAAA;YACE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9G,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACnD,SAAA;AACD,QAAA;YACE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EA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"}