text: !(function (t, e) {
    "object" == typeof exports && "undefined" != typeof module
      ? e(exports)
      : "function" == typeof define && define.amd
      ? define(["exports"], e)
      : e(
          ((t = "undefined" != typeof globalThis ? globalThis : t || self).ZXing =
            {})
        );
  })(this, function (t) {
    "use strict";
    var e =
      Object.setPrototypeOf ||
      ({ __proto__: [] } instanceof Array &&
        function (t, e) {
          t.__proto__ = e;
        }) ||
      function (t, e) {
        for (var r in e) e.hasOwnProperty(r) && (t[r] = e[r]);
      };
    var r,
      n = (function (t) {
        function r(e) {
          var r,
            n,
            i,
            s = this.constructor,
            o = t.call(this, e) || this;
          return (
            Object.defineProperty(o, "name", { value: s.name, enumerable: !1 }),
            (r = o),
            (n = s.prototype),
            (i = Object.setPrototypeOf) ? i(r, n) : (r.__proto__ = n),
            (function (t, e) {
              void 0 === e && (e = t.constructor);
              var r = Error.captureStackTrace;
              r && r(t, e);
            })(o),
            o
          );
        }
        return (
          (function (t, r) {
            function n() {
              this.constructor = t;
            }
            e(t, r),
              (t.prototype =
                null === r
                  ? Object.create(r)
                  : ((n.prototype = r.prototype), new n()));
          })(r, t),
          r
        );
      })(Error);
    class i extends n {
      constructor(t) {
        super(t), (this.message = t);
      }
      getKind() {
        return this.constructor.kind;
      }
    }
    i.kind = "Exception";
    class s extends i {}
    s.kind = "ArgumentException";
    class o extends i {}
    o.kind = "IllegalArgumentException";
    class a {
      constructor(t) {
        if (((this.binarizer = t), null === t))
          throw new o("Binarizer must be non-null.");
      }
      getWidth() {
        return this.binarizer.getWidth();
      }
      getHeight() {
        return this.binarizer.getHeight();
      }
      getBlackRow(t, e) {
        return this.binarizer.getBlackRow(t, e);
      }
      getBlackMatrix() {
        return (
          (null !== this.matrix && void 0 !== this.matrix) ||
            (this.matrix = this.binarizer.getBlackMatrix()),
          this.matrix
        );
      }
      isCropSupported() {
        return this.binarizer.getLuminanceSource().isCropSupported();
      }
      crop(t, e, r, n) {
        const i = this.binarizer.getLuminanceSource().crop(t, e, r, n);
        return new a(this.binarizer.createBinarizer(i));
      }
      isRotateSupported() {
        return this.binarizer.getLuminanceSource().isRotateSupported();
      }
      rotateCounterClockwise() {
        const t = this.binarizer.getLuminanceSource().rotateCounterClockwise();
        return new a(this.binarizer.createBinarizer(t));
      }
      rotateCounterClockwise45() {
        const t = this.binarizer.getLuminanceSource().rotateCounterClockwise45();
        return new a(this.binarizer.createBinarizer(t));
      }
      toString() {
        try {
          return this.getBlackMatrix().toString();
        } catch (t) {
          return "";
        }
      }
    }
    class l extends i {
      static getChecksumInstance() {
        return new l();
      }
    }
    l.kind = "ChecksumException";
    class h {
      constructor(t) {
        this.source = t;
      }
      getLuminanceSource() {
        return this.source;
      }
      getWidth() {
        return this.source.getWidth();
      }
      getHeight() {
        return this.source.getHeight();
      }
    }
    class c {
      static arraycopy(t, e, r, n, i) {
        for (; i--; ) r[n++] = t[e++];
      }
      static currentTimeMillis() {
        return Date.now();
      }
    }
    class u extends i {}
    u.kind = "IndexOutOfBoundsException";
    class d extends u {
      constructor(t, e) {
        super(e), (this.index = t), (this.message = e);
      }
    }
    d.kind = "ArrayIndexOutOfBoundsException";
    class g {
      static fill(t, e) {
        for (let r = 0, n = t.length; r < n; r++) t[r] = e;
      }
      static fillWithin(t, e, r, n) {
        g.rangeCheck(t.length, e, r);
        for (let i = e; i < r; i++) t[i] = n;
      }
      static rangeCheck(t, e, r) {
        if (e > r) throw new o("fromIndex(" + e + ") > toIndex(" + r + ")");
        if (e < 0) throw new d(e);
        if (r > t) throw new d(r);
      }
      static asList(...t) {
        return t;
      }
      static create(t, e, r) {
        return Array.from({ length: t }).map((t) =>
          Array.from({ length: e }).fill(r)
        );
      }
      static createInt32Array(t, e, r) {
        return Array.from({ length: t }).map((t) =>
          Int32Array.from({ length: e }).fill(r)
        );
      }
      static equals(t, e) {
        if (!t) return !1;
        if (!e) return !1;
        if (!t.length) return !1;
        if (!e.length) return !1;
        if (t.length !== e.length) return !1;
        for (let r = 0, n = t.length; r < n; r++) if (t[r] !== e[r]) return !1;
        return !0;
      }
      static hashCode(t) {
        if (null === t) return 0;
        let e = 1;
        for (const r of t) e = 31 * e + r;
        return e;
      }
      static fillUint8Array(t, e) {
        for (let r = 0; r !== t.length; r++) t[r] = e;
      }
      static copyOf(t, e) {
        return t.slice(0, e);
      }
      static copyOfUint8Array(t, e) {
        if (t.length <= e) {
          const r = new Uint8Array(e);
          return r.set(t), r;
        }
        return t.slice(0, e);
      }
      static copyOfRange(t, e, r) {
        const n = r - e,
          i = new Int32Array(n);
        return c.arraycopy(t, e, i, 0, n), i;
      }
      static binarySearch(t, e, r) {
        void 0 === r && (r = g.numberComparator);
        let n = 0,
          i = t.length - 1;
        for (; n <= i; ) {
          const s = (i + n) >> 1,
            o = r(e, t[s]);
          if (o > 0) n = s + 1;
          else {
            if (!(o < 0)) return s;
            i = s - 1;
          }
        }
        return -n - 1;
      }
      static numberComparator(t, e) {
        return t - e;
      }
    }
    class f {
      static numberOfTrailingZeros(t) {
        let e;
        if (0 === t) return 32;
        let r = 31;
        return (
          0 !== (e = t << 16) && ((r -= 16), (t = e)),
          0 !== (e = t << 8) && ((r -= 8), (t = e)),
          0 !== (e = t << 4) && ((r -= 4), (t = e)),
          0 !== (e = t << 2) && ((r -= 2), (t = e)),
          r - ((t << 1) >>> 31)
        );
      }
      static numberOfLeadingZeros(t) {
        if (0 === t) return 32;
        let e = 1;
        return (
          t >>> 16 == 0 && ((e += 16), (t <<= 16)),
          t >>> 24 == 0 && ((e += 8), (t <<= 8)),
          t >>> 28 == 0 && ((e += 4), (t <<= 4)),
          t >>> 30 == 0 && ((e += 2), (t <<= 2)),
          (e -= t >>> 31)
        );
      }
      static toHexString(t) {
        return t.toString(16);
      }
      static toBinaryString(t) {
        return String(parseInt(String(t), 2));
      }
      static bitCount(t) {
        return (
          (t =
            ((t =
              (858993459 & (t -= (t >>> 1) & 1431655765)) +
              ((t >>> 2) & 858993459)) +
              (t >>> 4)) &
            252645135),
          (t += t >>> 8),
          63 & (t += t >>> 16)
        );
      }
      static truncDivision(t, e) {
        return Math.trunc(t / e);
      }
      static parseInt(t, e) {
        return parseInt(t, e);
      }
    }
    (f.MIN_VALUE_32_BITS = -2147483648), (f.MAX_VALUE = Number.MAX_SAFE_INTEGER);
    class w {
      constructor(t, e) {
        void 0 === t
          ? ((this.size = 0), (this.bits = new Int32Array(1)))
          : ((this.size = t), (this.bits = null == e ? w.makeArray(t) : e));
      }
      getSize() {
        return this.size;
      }
      getSizeInBytes() {
        return Math.floor((this.size + 7) / 8);
      }
      ensureCapacity(t) {
        if (t > 32 * this.bits.length) {
          const e = w.makeArray(t);
          c.arraycopy(this.bits, 0, e, 0, this.bits.length), (this.bits = e);
        }
      }
      get(t) {
        return 0 != (this.bits[Math.floor(t / 32)] & (1 << (31 & t)));
      }
      set(t) {
        this.bits[Math.floor(t / 32)] |= 1 << (31 & t);
      }
      flip(t) {
        this.bits[Math.floor(t / 32)] ^= 1 << (31 & t);
      }
      getNextSet(t) {
        const e = this.size;
        if (t >= e) return e;
        const r = this.bits;
        let n = Math.floor(t / 32),
          i = r[n];
        i &= ~((1 << (31 & t)) - 1);
        const s = r.length;
        for (; 0 === i; ) {
          if (++n === s) return e;
          i = r[n];
        }
        const o = 32 * n + f.numberOfTrailingZeros(i);
        return o > e ? e : o;
      }
      getNextUnset(t) {
        const e = this.size;
        if (t >= e) return e;
        const r = this.bits;
        let n = Math.floor(t / 32),
          i = ~r[n];
        i &= ~((1 << (31 & t)) - 1);
        const s = r.length;
        for (; 0 === i; ) {
          if (++n === s) return e;
          i = ~r[n];
        }
        const o = 32 * n + f.numberOfTrailingZeros(i);
        return o > e ? e : o;
      }
      setBulk(t, e) {
        this.bits[Math.floor(t / 32)] = e;
      }
      setRange(t, e) {
        if (e < t || t < 0 || e > this.size) throw new o();
        if (e === t) return;
        e--;
        const r = Math.floor(t / 32),
          n = Math.floor(e / 32),
          i = this.bits;
        for (let s = r; s <= n; s++) {
          const o = (2 << (s < n ? 31 : 31 & e)) - (1 << (s > r ? 0 : 31 & t));
          i[s] |= o;
        }
      }
      clear() {
        const t = this.bits.length,
          e = this.bits;
        for (let r = 0; r < t; r++) e[r] = 0;
      }
      isRange(t, e, r) {
        if (e < t || t < 0 || e > this.size) throw new o();
        if (e === t) return !0;
        e--;
        const n = Math.floor(t / 32),
          i = Math.floor(e / 32),
          s = this.bits;
        for (let o = n; o <= i; o++) {
          const a =
            ((2 << (o < i ? 31 : 31 & e)) - (1 << (o > n ? 0 : 31 & t))) &
            4294967295;
          if ((s[o] & a) !== (r ? a : 0)) return !1;
        }
        return !0;
      }
      appendBit(t) {
        this.ensureCapacity(this.size + 1),
          t && (this.bits[Math.floor(this.size / 32)] |= 1 << (31 & this.size)),
          this.size++;
      }
      appendBits(t, e) {
        if (e < 0 || e > 32) throw new o("Num bits must be between 0 and 32");
        this.ensureCapacity(this.size + e);
        for (let r = e; r > 0; r--) this.appendBit(1 == ((t >> (r - 1)) & 1));
      }
      appendBitArray(t) {
        const e = t.size;
        this.ensureCapacity(this.size + e);
        for (let r = 0; r < e; r++) this.appendBit(t.get(r));
      }
      xor(t) {
        if (this.size !== t.size) throw new o("Sizes don't match");
        const e = this.bits;
        for (let r = 0, n = e.length; r < n; r++) e[r] ^= t.bits[r];
      }
      toBytes(t, e, r, n) {
        for (let i = 0; i < n; i++) {
          let n = 0;
          for (let e = 0; e < 8; e++) this.get(t) && (n |= 1 << (7 - e)), t++;
          e[r + i] = n;
        }
      }
      getBitArray() {
        return this.bits;
      }
      reverse() {
        const t = new Int32Array(this.bits.length),
          e = Math.floor((this.size - 1) / 32),
          r = e + 1,
          n = this.bits;
        for (let i = 0; i < r; i++) {
          let r = n[i];
          (r =
            (((r =
              (((r =
                (((r =
                  (((r = ((r >> 1) & 1431655765) | ((1431655765 & r) << 1)) >>
                    2) &
                    858993459) |
                  ((858993459 & r) << 2)) >>
                  4) &
                  252645135) |
                ((252645135 & r) << 4)) >>
                8) &
                16711935) |
              ((16711935 & r) << 8)) >>
              16) &
              65535) |
            ((65535 & r) << 16)),
            (t[e - i] = r);
        }
        if (this.size !== 32 * r) {
          const e = 32 * r - this.size;
          let n = t[0] >>> e;
          for (let i = 1; i < r; i++) {
            const r = t[i];
            (n |= r << (32 - e)), (t[i - 1] = n), (n = r >>> e);
          }
          t[r - 1] = n;
        }
        this.bits = t;
      }
      static makeArray(t) {
        return new Int32Array(Math.floor((t + 31) / 32));
      }
      equals(t) {
        if (!(t instanceof w)) return !1;
        const e = t;
        return this.size === e.size && g.equals(this.bits, e.bits);
      }
      hashCode() {
        return 31 * this.size + g.hashCode(this.bits);
      }
      toString() {
        let t = "";
        for (let e = 0, r = this.size; e < r; e++)
          0 == (7 & e) && (t += " "), (t += this.get(e) ? "X" : ".");
        return t;
      }
      clone() {
        return new w(this.size, this.bits.slice());
      }
    }
    !(function (t) {
      (t[(t.OTHER = 0)] = "OTHER"),
        (t[(t.PURE_BARCODE = 1)] = "PURE_BARCODE"),
        (t[(t.POSSIBLE_FORMATS = 2)] = "POSSIBLE_FORMATS"),
        (t[(t.TRY_HARDER = 3)] = "TRY_HARDER"),
        (t[(t.CHARACTER_SET = 4)] = "CHARACTER_SET"),
        (t[(t.ALLOWED_LENGTHS = 5)] = "ALLOWED_LENGTHS"),
        (t[(t.ASSUME_CODE_39_CHECK_DIGIT = 6)] = "ASSUME_CODE_39_CHECK_DIGIT"),
        (t[(t.ASSUME_GS1 = 7)] = "ASSUME_GS1"),
        (t[(t.RETURN_CODABAR_START_END = 8)] = "RETURN_CODABAR_START_END"),
        (t[(t.NEED_RESULT_POINT_CALLBACK = 9)] = "NEED_RESULT_POINT_CALLBACK"),
        (t[(t.ALLOWED_EAN_EXTENSIONS = 10)] = "ALLOWED_EAN_EXTENSIONS");
    })(r || (r = {}));
    var A,
      C = r;
    class E extends i {
      static getFormatInstance() {
        return new E();
      }
    }
    (E.kind = "FormatException"),
      (function (t) {
        (t[(t.Cp437 = 0)] = "Cp437"),
          (t[(t.ISO8859_1 = 1)] = "ISO8859_1"),
          (t[(t.ISO8859_2 = 2)] = "ISO8859_2"),
          (t[(t.ISO8859_3 = 3)] = "ISO8859_3"),
          (t[(t.ISO8859_4 = 4)] = "ISO8859_4"),
          (t[(t.ISO8859_5 = 5)] = "ISO8859_5"),
          (t[(t.ISO8859_6 = 6)] = "ISO8859_6"),
          (t[(t.ISO8859_7 = 7)] = "ISO8859_7"),
          (t[(t.ISO8859_8 = 8)] = "ISO8859_8"),
          (t[(t.ISO8859_9 = 9)] = "ISO8859_9"),
          (t[(t.ISO8859_10 = 10)] = "ISO8859_10"),
          (t[(t.ISO8859_11 = 11)] = "ISO8859_11"),
          (t[(t.ISO8859_13 = 12)] = "ISO8859_13"),
          (t[(t.ISO8859_14 = 13)] = "ISO8859_14"),
          (t[(t.ISO8859_15 = 14)] = "ISO8859_15"),
          (t[(t.ISO8859_16 = 15)] = "ISO8859_16"),
          (t[(t.SJIS = 16)] = "SJIS"),
          (t[(t.Cp1250 = 17)] = "Cp1250"),
          (t[(t.Cp1251 = 18)] = "Cp1251"),
          (t[(t.Cp1252 = 19)] = "Cp1252"),
          (t[(t.Cp1256 = 20)] = "Cp1256"),
          (t[(t.UnicodeBigUnmarked = 21)] = "UnicodeBigUnmarked"),
          (t[(t.UTF8 = 22)] = "UTF8"),
          (t[(t.ASCII = 23)] = "ASCII"),
          (t[(t.Big5 = 24)] = "Big5"),
          (t[(t.GB18030 = 25)] = "GB18030"),
          (t[(t.EUC_KR = 26)] = "EUC_KR");
      })(A || (A = {}));
    class m {
      constructor(t, e, r, ...n) {
        (this.valueIdentifier = t),
          (this.name = r),
          (this.values = "number" == typeof e ? Int32Array.from([e]) : e),
          (this.otherEncodingNames = n),
          m.VALUE_IDENTIFIER_TO_ECI.set(t, this),
          m.NAME_TO_ECI.set(r, this);
        const i = this.values;
        for (let t = 0, e = i.length; t !== e; t++) {
          const e = i[t];
          m.VALUES_TO_ECI.set(e, this);
        }
        for (const t of n) m.NAME_TO_ECI.set(t, this);
      }
      getValueIdentifier() {
        return this.valueIdentifier;
      }
      getName() {
        return this.name;
      }
      getValue() {
        return this.values[0];
      }
      static getCharacterSetECIByValue(t) {
        if (t < 0 || t >= 900) throw new E("incorect value");
        const e = m.VALUES_TO_ECI.get(t);
        if (void 0 === e) throw new E("incorect value");
        return e;
      }
      static getCharacterSetECIByName(t) {
        const e = m.NAME_TO_ECI.get(t);
        if (void 0 === e) throw new E("incorect value");
        return e;
      }
      equals(t) {
        if (!(t instanceof m)) return !1;
        const e = t;
        return this.getName() === e.getName();
      }
    }
    (m.VALUE_IDENTIFIER_TO_ECI = new Map()),
      (m.VALUES_TO_ECI = new Map()),
      (m.NAME_TO_ECI = new Map()),
      (m.Cp437 = new m(A.Cp437, Int32Array.from([0, 2]), "Cp437")),
      (m.ISO8859_1 = new m(
        A.ISO8859_1,
        Int32Array.from([1, 3]),
        "ISO-8859-1",
        "ISO88591",
        "ISO8859_1"
      )),
      (m.ISO8859_2 = new m(
        A.ISO8859_2,
        4,
        "ISO-8859-2",
        "ISO88592",
        "ISO8859_2"
      )),
      (m.ISO8859_3 = new m(
        A.ISO8859_3,
        5,
        "ISO-8859-3",
        "ISO88593",
        "ISO8859_3"
      )),
      (m.ISO8859_4 = new m(
        A.ISO8859_4,
        6,
        "ISO-8859-4",
        "ISO88594",
        "ISO8859_4"
      )),
      (m.ISO8859_5 = new m(
        A.ISO8859_5,
        7,
        "ISO-8859-5",
        "ISO88595",
        "ISO8859_5"
      )),
      (m.ISO8859_6 = new m(
        A.ISO8859_6,
        8,
        "ISO-8859-6",
        "ISO88596",
        "ISO8859_6"
      )),
      (m.ISO8859_7 = new m(
        A.ISO8859_7,
        9,
        "ISO-8859-7",
        "ISO88597",
        "ISO8859_7"
      )),
      (m.ISO8859_8 = new m(
        A.ISO8859_8,
        10,
        "ISO-8859-8",
        "ISO88598",
        "ISO8859_8"
      )),
      (m.ISO8859_9 = new m(
        A.ISO8859_9,
        11,
        "ISO-8859-9",
        "ISO88599",
        "ISO8859_9"
      )),
      (m.ISO8859_10 = new m(
        A.ISO8859_10,
        12,
        "ISO-8859-10",
        "ISO885910",
        "ISO8859_10"
      )),
      (m.ISO8859_11 = new m(
        A.ISO8859_11,
        13,
        "ISO-8859-11",
        "ISO885911",
        "ISO8859_11"
      )),
      (m.ISO8859_13 = new m(
        A.ISO8859_13,
        15,
        "ISO-8859-13",
        "ISO885913",
        "ISO8859_13"
      )),
      (m.ISO8859_14 = new m(
        A.ISO8859_14,
        16,
        "ISO-8859-14",
        "ISO885914",
        "ISO8859_14"
      )),
      (m.ISO8859_15 = new m(
        A.ISO8859_15,
        17,
        "ISO-8859-15",
        "ISO885915",
        "ISO8859_15"
      )),
      (m.ISO8859_16 = new m(
        A.ISO8859_16,
        18,
        "ISO-8859-16",
        "ISO885916",
        "ISO8859_16"
      )),
      (m.SJIS = new m(A.SJIS, 20, "SJIS", "Shift_JIS")),
      (m.Cp1250 = new m(A.Cp1250, 21, "Cp1250", "windows-1250")),
      (m.Cp1251 = new m(A.Cp1251, 22, "Cp1251", "windows-1251")),
      (m.Cp1252 = new m(A.Cp1252, 23, "Cp1252", "windows-1252")),
      (m.Cp1256 = new m(A.Cp1256, 24, "Cp1256", "windows-1256")),
      (m.UnicodeBigUnmarked = new m(
        A.UnicodeBigUnmarked,
        25,
        "UnicodeBigUnmarked",
        "UTF-16BE",
        "UnicodeBig"
      )),
      (m.UTF8 = new m(A.UTF8, 26, "UTF8", "UTF-8")),
      (m.ASCII = new m(A.ASCII, Int32Array.from([27, 170]), "ASCII", "US-ASCII")),
      (m.Big5 = new m(A.Big5, 28, "Big5")),
      (m.GB18030 = new m(A.GB18030, 29, "GB18030", "GB2312", "EUC_CN", "GBK")),
      (m.EUC_KR = new m(A.EUC_KR, 30, "EUC_KR", "EUC-KR"));
    class _ extends i {}
    _.kind = "UnsupportedOperationException";
    class I {
      static decode(t, e) {
        const r = this.encodingName(e);
        return this.customDecoder
          ? this.customDecoder(t, r)
          : "undefined" == typeof TextDecoder || this.shouldDecodeOnFallback(r)
          ? this.decodeFallback(t, r)
          : new TextDecoder(r).decode(t);
      }
      static shouldDecodeOnFallback(t) {
        return !I.isBrowser() && "ISO-8859-1" === t;
      }
      static encode(t, e) {
        const r = this.encodingName(e);
        return this.customEncoder
          ? this.customEncoder(t, r)
          : "undefined" == typeof TextEncoder
          ? this.encodeFallback(t)
          : new TextEncoder().encode(t);
      }
      static isBrowser() {
        return (
          "undefined" != typeof window &&
          "[object Window]" === {}.toString.call(window)
        );
      }
      static encodingName(t) {
        return "string" == typeof t ? t : t.getName();
      }
      static encodingCharacterSet(t) {
        return t instanceof m ? t : m.getCharacterSetECIByName(t);
      }
      static decodeFallback(t, e) {
        const r = this.encodingCharacterSet(e);
        if (I.isDecodeFallbackSupported(r)) {
          let e = "";
          for (let r = 0, n = t.length; r < n; r++) {
            let n = t[r].toString(16);
            n.length < 2 && (n = "0" + n), (e += "%" + n);
          }
          return decodeURIComponent(e);
        }
        if (r.equals(m.UnicodeBigUnmarked))
          return String.fromCharCode.apply(null, new Uint16Array(t.buffer));
        throw new _(
          `Encoding ${this.encodingName(e)} not supported by fallback.`
        );
      }
      static isDecodeFallbackSupported(t) {
        return t.equals(m.UTF8) || t.equals(m.ISO8859_1) || t.equals(m.ASCII);
      }
      static encodeFallback(t) {
        const e = btoa(unescape(encodeURIComponent(t))).split(""),
          r = [];
        for (let t = 0; t < e.length; t++) r.push(e[t].charCodeAt(0));
        return new Uint8Array(r);
      }
    }
    class S {
      static castAsNonUtf8Char(t, e = null) {
        const r = e ? e.getName() : this.ISO88591;
        return I.decode(new Uint8Array([t]), r);
      }
      static guessEncoding(t, e) {
        if (null != e && void 0 !== e.get(C.CHARACTER_SET))
          return e.get(C.CHARACTER_SET).toString();
        const r = t.length;
        let n = !0,
          i = !0,
          s = !0,
          o = 0,
          a = 0,
          l = 0,
          h = 0,
          c = 0,
          u = 0,
          d = 0,
          g = 0,
          f = 0,
          w = 0,
          A = 0;
        const E = t.length > 3 && 239 === t[0] && 187 === t[1] && 191 === t[2];
        for (let e = 0; e < r && (n || i || s); e++) {
          const r = 255 & t[e];
          s &&
            (o > 0
              ? 0 == (128 & r)
                ? (s = !1)
                : o--
              : 0 != (128 & r) &&
                (0 == (64 & r)
                  ? (s = !1)
                  : (o++,
                    0 == (32 & r)
                      ? a++
                      : (o++,
                        0 == (16 & r)
                          ? l++
                          : (o++, 0 == (8 & r) ? h++ : (s = !1)))))),
            n &&
              (r > 127 && r < 160
                ? (n = !1)
                : r > 159 && (r < 192 || 215 === r || 247 === r) && A++),
            i &&
              (c > 0
                ? r < 64 || 127 === r || r > 252
                  ? (i = !1)
                  : c--
                : 128 === r || 160 === r || r > 239
                ? (i = !1)
                : r > 160 && r < 224
                ? (u++, (g = 0), ++d > f && (f = d))
                : r > 127
                ? (c++, (d = 0), ++g > w && (w = g))
                : ((d = 0), (g = 0)));
        }
        return (
          s && o > 0 && (s = !1),
          i && c > 0 && (i = !1),
          s && (E || a + l + h > 0)
            ? S.UTF8
            : i && (S.ASSUME_SHIFT_JIS || f >= 3 || w >= 3)
            ? S.SHIFT_JIS
            : n && i
            ? (2 === f && 2 === u) || 10 * A >= r
              ? S.SHIFT_JIS
              : S.ISO88591
            : n
            ? S.ISO88591
            : i
            ? S.SHIFT_JIS
            : s
            ? S.UTF8
            : S.PLATFORM_DEFAULT_ENCODING
        );
      }
      static format(t, ...e) {
        let r = -1;
        return t.replace(
          /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g,
          function (t, n, i, s, o, a) {
            if ("%%" === t) return "%";
            if (void 0 === e[++r]) return;
            t = s ? parseInt(s.substr(1)) : void 0;
            let l,
              h = o ? parseInt(o.substr(1)) : void 0;
            switch (a) {
              case "s":
                l = e[r];
                break;
              case "c":
                l = e[r][0];
                break;
              case "f":
                l = parseFloat(e[r]).toFixed(t);
                break;
              case "p":
                l = parseFloat(e[r]).toPrecision(t);
                break;
              case "e":
                l = parseFloat(e[r]).toExponential(t);
                break;
              case "x":
                l = parseInt(e[r]).toString(h || 16);
                break;
              case "d":
                l = parseFloat(parseInt(e[r], h || 10).toPrecision(t)).toFixed(0);
            }
            l = "object" == typeof l ? JSON.stringify(l) : (+l).toString(h);
            let c = parseInt(i),
              u = i && i[0] + "" == "0" ? "0" : " ";
            for (; l.length < c; ) l = void 0 !== n ? l + u : u + l;
            return l;
          }
        );
      }
      static getBytes(t, e) {
        return I.encode(t, e);
      }
      static getCharCode(t, e = 0) {
        return t.charCodeAt(e);
      }
      static getCharAt(t) {
        return String.fromCharCode(t);
      }
    }
    (S.SHIFT_JIS = m.SJIS.getName()),
      (S.GB2312 = "GB2312"),
      (S.ISO88591 = m.ISO8859_1.getName()),
      (S.EUC_JP = "EUC_JP"),
      (S.UTF8 = m.UTF8.getName()),
      (S.PLATFORM_DEFAULT_ENCODING = S.UTF8),
      (S.ASSUME_SHIFT_JIS = !1);
    class p {
      constructor(t = "") {
        this.value = t;
      }
      enableDecoding(t) {
        return (this.encoding = t), this;
      }
      append(t) {
        return (
          "string" == typeof t
            ? (this.value += t.toString())
            : this.encoding
            ? (this.value += S.castAsNonUtf8Char(t, this.encoding))
            : (this.value += String.fromCharCode(t)),
          this
        );
      }
      appendChars(t, e, r) {
        for (let n = e; e < e + r; n++) this.append(t[n]);
        return this;
      }
      length() {
        return this.value.length;
      }
      charAt(t) {
        return this.value.charAt(t);
      }
      deleteCharAt(t) {
        this.value = this.value.substr(0, t) + this.value.substring(t + 1);
      }
      setCharAt(t, e) {
        this.value = this.value.substr(0, t) + e + this.value.substr(t + 1);
      }
      substring(t, e) {
        return this.value.substring(t, e);
      }
      setLengthToZero() {
        this.value = "";
      }
      toString() {
        return this.value;
      }
      insert(t, e) {
        this.value =
          this.value.substr(0, t) + e + this.value.substr(t + e.length);
      }
    }
    class T {
      constructor(t, e, r, n) {
        if (
          ((this.width = t),
          (this.height = e),
          (this.rowSize = r),
          (this.bits = n),
          null == e && (e = t),
          (this.height = e),
          t < 1 || e < 1)
        )
          throw new o("Both dimensions must be greater than 0");
        null == r && (r = Math.floor((t + 31) / 32)),
          (this.rowSize = r),
          null == n && (this.bits = new Int32Array(this.rowSize * this.height));
      }
      static parseFromBooleanArray(t) {
        const e = t.length,
          r = t[0].length,
          n = new T(r, e);
        for (let i = 0; i < e; i++) {
          const e = t[i];
          for (let t = 0; t < r; t++) e[t] && n.set(t, i);
        }
        return n;
      }
      static parseFromString(t, e, r) {
        if (null === t) throw new o("stringRepresentation cannot be null");
        const n = new Array(t.length);
        let i = 0,
          s = 0,
          a = -1,
          l = 0,
          h = 0;
        for (; h < t.length; )
          if ("\n" === t.charAt(h) || "\r" === t.charAt(h)) {
            if (i > s) {
              if (-1 === a) a = i - s;
              else if (i - s !== a) throw new o("row lengths do not match");
              (s = i), l++;
            }
            h++;
          } else if (t.substring(h, h + e.length) === e)
            (h += e.length), (n[i] = !0), i++;
          else {
            if (t.substring(h, h + r.length) !== r)
              throw new o("illegal character encountered: " + t.substring(h));
            (h += r.length), (n[i] = !1), i++;
          }
        if (i > s) {
          if (-1 === a) a = i - s;
          else if (i - s !== a) throw new o("row lengths do not match");
          l++;
        }
        const c = new T(a, l);
        for (let t = 0; t < i; t++)
          n[t] && c.set(Math.floor(t % a), Math.floor(t / a));
        return c;
      }
      get(t, e) {
        const r = e * this.rowSize + Math.floor(t / 32);
        return 0 != ((this.bits[r] >>> (31 & t)) & 1);
      }
      set(t, e) {
        const r = e * this.rowSize + Math.floor(t / 32);
        this.bits[r] |= (1 << (31 & t)) & 4294967295;
      }
      unset(t, e) {
        const r = e * this.rowSize + Math.floor(t / 32);
        this.bits[r] &= ~((1 << (31 & t)) & 4294967295);
      }
      flip(t, e) {
        const r = e * this.rowSize + Math.floor(t / 32);
        this.bits[r] ^= (1 << (31 & t)) & 4294967295;
      }
      xor(t) {
        if (
          this.width !== t.getWidth() ||
          this.height !== t.getHeight() ||
          this.rowSize !== t.getRowSize()
        )
          throw new o("input matrix dimensions do not match");
        const e = new w(Math.floor(this.width / 32) + 1),
          r = this.rowSize,
          n = this.bits;
        for (let i = 0, s = this.height; i < s; i++) {
          const s = i * r,
            o = t.getRow(i, e).getBitArray();
          for (let t = 0; t < r; t++) n[s + t] ^= o[t];
        }
      }
      clear() {
        const t = this.bits,
          e = t.length;
        for (let r = 0; r < e; r++) t[r] = 0;
      }
      setRegion(t, e, r, n) {
        if (e < 0 || t < 0) throw new o("Left and top must be nonnegative");
        if (n < 1 || r < 1) throw new o("Height and width must be at least 1");
        const i = t + r,
          s = e + n;
        if (s > this.height || i > this.width)
          throw new o("The region must fit inside the matrix");
        const a = this.rowSize,
          l = this.bits;
        for (let r = e; r < s; r++) {
          const e = r * a;
          for (let r = t; r < i; r++)
            l[e + Math.floor(r / 32)] |= (1 << (31 & r)) & 4294967295;
        }
      }
      getRow(t, e) {
        null == e || e.getSize() < this.width
          ? (e = new w(this.width))
          : e.clear();
        const r = this.rowSize,
          n = this.bits,
          i = t * r;
        for (let t = 0; t < r; t++) e.setBulk(32 * t, n[i + t]);
        return e;
      }
      setRow(t, e) {
        c.arraycopy(
          e.getBitArray(),
          0,
          this.bits,
          t * this.rowSize,
          this.rowSize
        );
      }
      rotate180() {
        const t = this.getWidth(),
          e = this.getHeight();
        let r = new w(t),
          n = new w(t);
        for (let t = 0, i = Math.floor((e + 1) / 2); t < i; t++)
          (r = this.getRow(t, r)),
            (n = this.getRow(e - 1 - t, n)),
            r.reverse(),
            n.reverse(),
            this.setRow(t, n),
            this.setRow(e - 1 - t, r);
      }
      getEnclosingRectangle() {
        const t = this.width,
          e = this.height,
          r = this.rowSize,
          n = this.bits;
        let i = t,
          s = e,
          o = -1,
          a = -1;
        for (let t = 0; t < e; t++)
          for (let e = 0; e < r; e++) {
            const l = n[t * r + e];
            if (0 !== l) {
              if ((t < s && (s = t), t > a && (a = t), 32 * e < i)) {
                let t = 0;
                for (; 0 == ((l << (31 - t)) & 4294967295); ) t++;
                32 * e + t < i && (i = 32 * e + t);
              }
              if (32 * e + 31 > o) {
                let t = 31;
                for (; l >>> t == 0; ) t--;
                32 * e + t > o && (o = 32 * e + t);
              }
            }
          }
        return o < i || a < s
          ? null
          : Int32Array.from([i, s, o - i + 1, a - s + 1]);
      }
      getTopLeftOnBit() {
        const t = this.rowSize,
          e = this.bits;
        let r = 0;
        for (; r < e.length && 0 === e[r]; ) r++;
        if (r === e.length) return null;
        const n = r / t;
        let i = (r % t) * 32;
        const s = e[r];
        let o = 0;
        for (; 0 == ((s << (31 - o)) & 4294967295); ) o++;
        return (i += o), Int32Array.from([i, n]);
      }
      getBottomRightOnBit() {
        const t = this.rowSize,
          e = this.bits;
        let r = e.length - 1;
        for (; r >= 0 && 0 === e[r]; ) r--;
        if (r < 0) return null;
        const n = Math.floor(r / t);
        let i = 32 * Math.floor(r % t);
        const s = e[r];
        let o = 31;
        for (; s >>> o == 0; ) o--;
        return (i += o), Int32Array.from([i, n]);
      }
      getWidth() {
        return this.width;
      }
      getHeight() {
        return this.height;
      }
      getRowSize() {
        return this.rowSize;
      }
      equals(t) {
        if (!(t instanceof T)) return !1;
        const e = t;
        return (
          this.width === e.width &&
          this.height === e.height &&
          this.rowSize === e.rowSize &&
          g.equals(this.bits, e.bits)
        );
      }
      hashCode() {
        let t = this.width;
        return (t =
          31 *
            (t =
              31 * (t = 31 * (t = 31 * t + this.width) + this.height) +
              this.rowSize) +
          g.hashCode(this.bits));
      }
      toString(t = "X ", e = "  ", r = "\n") {
        return this.buildToString(t, e, r);
      }
      buildToString(t, e, r) {
        let n = new p();
        for (let i = 0, s = this.height; i < s; i++) {
          for (let r = 0, s = this.width; r < s; r++)
            n.append(this.get(r, i) ? t : e);
          n.append(r);
        }
        return n.toString();
      }
      clone() {
        return new T(this.width, this.height, this.rowSize, this.bits.slice());
      }
    }
    class R extends i {
      static getNotFoundInstance() {
        return new R();
      }
    }
    R.kind = "NotFoundException";
    class N extends h {
      constructor(t) {
        super(t),
          (this.luminances = N.EMPTY),
          (this.buckets = new Int32Array(N.LUMINANCE_BUCKETS));
      }
      getBlackRow(t, e) {
        const r = this.getLuminanceSource(),
          n = r.getWidth();
        null == e || e.getSize() < n ? (e = new w(n)) : e.clear(),
          this.initArrays(n);
        const i = r.getRow(t, this.luminances),
          s = this.buckets;
        for (let t = 0; t < n; t++) s[(255 & i[t]) >> N.LUMINANCE_SHIFT]++;
        const o = N.estimateBlackPoint(s);
        if (n < 3) for (let t = 0; t < n; t++) (255 & i[t]) < o && e.set(t);
        else {
          let t = 255 & i[0],
            r = 255 & i[1];
          for (let s = 1; s < n - 1; s++) {
            const n = 255 & i[s + 1];
            (4 * r - t - n) / 2 < o && e.set(s), (t = r), (r = n);
          }
        }
        return e;
      }
      getBlackMatrix() {
        const t = this.getLuminanceSource(),
          e = t.getWidth(),
          r = t.getHeight(),
          n = new T(e, r);
        this.initArrays(e);
        const i = this.buckets;
        for (let n = 1; n < 5; n++) {
          const s = Math.floor((r * n) / 5),
            o = t.getRow(s, this.luminances),
            a = Math.floor((4 * e) / 5);
          for (let t = Math.floor(e / 5); t < a; t++) {
            i[(255 & o[t]) >> N.LUMINANCE_SHIFT]++;
          }
        }
        const s = N.estimateBlackPoint(i),
          o = t.getMatrix();
        for (let t = 0; t < r; t++) {
          const r = t * e;
          for (let i = 0; i < e; i++) {
            (255 & o[r + i]) < s && n.set(i, t);
          }
        }
        return n;
      }
      createBinarizer(t) {
        return new N(t);
      }
      initArrays(t) {
        this.luminances.length < t &&
          (this.luminances = new Uint8ClampedArray(t));
        const e = this.buckets;
        for (let t = 0; t < N.LUMINANCE_BUCKETS; t++) e[t] = 0;
      }
      static estimateBlackPoint(t) {
        const e = t.length;
        let r = 0,
          n = 0,
          i = 0;
        for (let s = 0; s < e; s++)
          t[s] > i && ((n = s), (i = t[s])), t[s] > r && (r = t[s]);
        let s = 0,
          o = 0;
        for (let r = 0; r < e; r++) {
          const e = r - n,
            i = t[r] * e * e;
          i > o && ((s = r), (o = i));
        }
        if (n > s) {
          const t = n;
          (n = s), (s = t);
        }
        if (s - n <= e / 16) throw new R();
        let a = s - 1,
          l = -1;
        for (let e = s - 1; e > n; e--) {
          const i = e - n,
            o = i * i * (s - e) * (r - t[e]);
          o > l && ((a = e), (l = o));
        }
        return a << N.LUMINANCE_SHIFT;
      }
    }
    (N.LUMINANCE_BITS = 5),
      (N.LUMINANCE_SHIFT = 8 - N.LUMINANCE_BITS),
      (N.LUMINANCE_BUCKETS = 1 << N.LUMINANCE_BITS),
      (N.EMPTY = Uint8ClampedArray.from([0]));
    class D extends N {
      constructor(t) {
        super(t), (this.matrix = null);
      }
      getBlackMatrix() {
        if (null !== this.matrix) return this.matrix;
        const t = this.getLuminanceSource(),
          e = t.getWidth(),
          r = t.getHeight();
        if (e >= D.MINIMUM_DIMENSION && r >= D.MINIMUM_DIMENSION) {
          const n = t.getMatrix();
          let i = e >> D.BLOCK_SIZE_POWER;
          0 != (e & D.BLOCK_SIZE_MASK) && i++;
          let s = r >> D.BLOCK_SIZE_POWER;
          0 != (r & D.BLOCK_SIZE_MASK) && s++;
          const o = D.calculateBlackPoints(n, i, s, e, r),
            a = new T(e, r);
          D.calculateThresholdForBlock(n, i, s, e, r, o, a), (this.matrix = a);
        } else this.matrix = super.getBlackMatrix();
        return this.matrix;
      }
      createBinarizer(t) {
        return new D(t);
      }
      static calculateThresholdForBlock(t, e, r, n, i, s, o) {
        const a = i - D.BLOCK_SIZE,
          l = n - D.BLOCK_SIZE;
        for (let i = 0; i < r; i++) {
          let h = i << D.BLOCK_SIZE_POWER;
          h > a && (h = a);
          const c = D.cap(i, 2, r - 3);
          for (let r = 0; r < e; r++) {
            let i = r << D.BLOCK_SIZE_POWER;
            i > l && (i = l);
            const a = D.cap(r, 2, e - 3);
            let u = 0;
            for (let t = -2; t <= 2; t++) {
              const e = s[c + t];
              u += e[a - 2] + e[a - 1] + e[a] + e[a + 1] + e[a + 2];
            }
            const d = u / 25;
            D.thresholdBlock(t, i, h, d, n, o);
          }
        }
      }
      static cap(t, e, r) {
        return t < e ? e : t > r ? r : t;
      }
      static thresholdBlock(t, e, r, n, i, s) {
        for (let o = 0, a = r * i + e; o < D.BLOCK_SIZE; o++, a += i)
          for (let i = 0; i < D.BLOCK_SIZE; i++)
            (255 & t[a + i]) <= n && s.set(e + i, r + o);
      }
      static calculateBlackPoints(t, e, r, n, i) {
        const s = i - D.BLOCK_SIZE,
          o = n - D.BLOCK_SIZE,
          a = new Array(r);
        for (let i = 0; i < r; i++) {
          a[i] = new Int32Array(e);
          let r = i << D.BLOCK_SIZE_POWER;
          r > s && (r = s);
          for (let s = 0; s < e; s++) {
            let e = s << D.BLOCK_SIZE_POWER;
            e > o && (e = o);
            let l = 0,
              h = 255,
              c = 0;
            for (let i = 0, s = r * n + e; i < D.BLOCK_SIZE; i++, s += n) {
              for (let e = 0; e < D.BLOCK_SIZE; e++) {
                const r = 255 & t[s + e];
                (l += r), r < h && (h = r), r > c && (c = r);
              }
              if (c - h > D.MIN_DYNAMIC_RANGE)
                for (i++, s += n; i < D.BLOCK_SIZE; i++, s += n)
                  for (let e = 0; e < D.BLOCK_SIZE; e++) l += 255 & t[s + e];
            }
            let u = l >> (2 * D.BLOCK_SIZE_POWER);
            if (c - h <= D.MIN_DYNAMIC_RANGE && ((u = h / 2), i > 0 && s > 0)) {
              const t = (a[i - 1][s] + 2 * a[i][s - 1] + a[i - 1][s - 1]) / 4;
              h < t && (u = t);
            }
            a[i][s] = u;
          }
        }
        return a;
      }
    }
    (D.BLOCK_SIZE_POWER = 3),
      (D.BLOCK_SIZE = 1 << D.BLOCK_SIZE_POWER),
      (D.BLOCK_SIZE_MASK = D.BLOCK_SIZE - 1),
      (D.MINIMUM_DIMENSION = 5 * D.BLOCK_SIZE),
      (D.MIN_DYNAMIC_RANGE = 24);
    class y {
      constructor(t, e) {
        (this.width = t), (this.height = e);
      }
      getWidth() {
        return this.width;
      }
      getHeight() {
        return this.height;
      }
      isCropSupported() {
        return !1;
      }
      crop(t, e, r, n) {
        throw new _("This luminance source does not support cropping.");
      }
      isRotateSupported() {
        return !1;
      }
      rotateCounterClockwise() {
        throw new _(
          "This luminance source does not support rotation by 90 degrees."
        );
      }
      rotateCounterClockwise45() {
        throw new _(
          "This luminance source does not support rotation by 45 degrees."
        );
      }
      toString() {
        const t = new Uint8ClampedArray(this.width);
        let e = new p();
        for (let r = 0; r < this.height; r++) {
          const n = this.getRow(r, t);
          for (let t = 0; t < this.width; t++) {
            const r = 255 & n[t];
            let i;
            (i = r < 64 ? "#" : r < 128 ? "+" : r < 192 ? "." : " "), e.append(i);
          }
          e.append("\n");
        }
        return e.toString();
      }
    }
    class O extends y {
      constructor(t) {
        super(t.getWidth(), t.getHeight()), (this.delegate = t);
      }
      getRow(t, e) {
        const r = this.delegate.getRow(t, e),
          n = this.getWidth();
        for (let t = 0; t < n; t++) r[t] = 255 - (255 & r[t]);
        return r;
      }
      getMatrix() {
        const t = this.delegate.getMatrix(),
          e = this.getWidth() * this.getHeight(),
          r = new Uint8ClampedArray(e);
        for (let n = 0; n < e; n++) r[n] = 255 - (255 & t[n]);
        return r;
      }
      isCropSupported() {
        return this.delegate.isCropSupported();
      }
      crop(t, e, r, n) {
        return new O(this.delegate.crop(t, e, r, n));
      }
      isRotateSupported() {
        return this.delegate.isRotateSupported();
      }
      invert() {
        return this.delegate;
      }
      rotateCounterClockwise() {
        return new O(this.delegate.rotateCounterClockwise());
      }
      rotateCounterClockwise45() {
        return new O(this.delegate.rotateCounterClockwise45());
      }
    }
    class M extends y {
      constructor(t) {
        super(t.width, t.height),
          (this.canvas = t),
          (this.tempCanvasElement = null),
          (this.buffer = M.makeBufferFromCanvasImageData(t));
      }
      static makeBufferFromCanvasImageData(t) {
        const e = t.getContext("2d").getImageData(0, 0, t.width, t.height);
        return M.toGrayscaleBuffer(e.data, t.width, t.height);
      }
      static toGrayscaleBuffer(t, e, r) {
        const n = new Uint8ClampedArray(e * r);
        for (let e = 0, r = 0, i = t.length; e < i; e += 4, r++) {
          let i;
          if (0 === t[e + 3]) i = 255;
          else {
            i = (306 * t[e] + 601 * t[e + 1] + 117 * t[e + 2] + 512) >> 10;
          }
          n[r] = i;
        }
        return n;
      }
      getRow(t, e) {
        if (t < 0 || t >= this.getHeight())
          throw new o("Requested row is outside the image: " + t);
        const r = this.getWidth(),
          n = t * r;
        return (
          null === e
            ? (e = this.buffer.slice(n, n + r))
            : (e.length < r && (e = new Uint8ClampedArray(r)),
              e.set(this.buffer.slice(n, n + r))),
          e
        );
      }
      getMatrix() {
        return this.buffer;
      }
      isCropSupported() {
        return !0;
      }
      crop(t, e, r, n) {
        return super.crop(t, e, r, n), this;
      }
      isRotateSupported() {
        return !0;
      }
      rotateCounterClockwise() {
        return this.rotate(-90), this;
      }
      rotateCounterClockwise45() {
        return this.rotate(-45), this;
      }
      getTempCanvasElement() {
        if (null === this.tempCanvasElement) {
          const t = this.canvas.ownerDocument.createElement("canvas");
          (t.width = this.canvas.width),
            (t.height = this.canvas.height),
            (this.tempCanvasElement = t);
        }
        return this.tempCanvasElement;
      }
      rotate(t) {
        const e = this.getTempCanvasElement(),
          r = e.getContext("2d"),
          n = t * M.DEGREE_TO_RADIANS,
          i = this.canvas.width,
          s = this.canvas.height,
          o = Math.ceil(Math.abs(Math.cos(n)) * i + Math.abs(Math.sin(n)) * s),
          a = Math.ceil(Math.abs(Math.sin(n)) * i + Math.abs(Math.cos(n)) * s);
        return (
          (e.width = o),
          (e.height = a),
          r.translate(o / 2, a / 2),
          r.rotate(n),
          r.drawImage(this.canvas, i / -2, s / -2),
          (this.buffer = M.makeBufferFromCanvasImageData(e)),
          this
        );
      }
      invert() {
        return new O(this);
      }
    }
    M.DEGREE_TO_RADIANS = Math.PI / 180;
    class b {
      constructor(t, e, r) {
        (this.deviceId = t),
          (this.label = e),
          (this.kind = "videoinput"),
          (this.groupId = r || void 0);
      }
      toJSON() {
        return {
          kind: this.kind,
          groupId: this.groupId,
          deviceId: this.deviceId,
          label: this.label,
        };
      }
    }
    var B,
      P =
        (globalThis || global || self || window
          ? (globalThis || global || self || window || void 0).__awaiter
          : void 0) ||
        function (t, e, r, n) {
          return new (r || (r = Promise))(function (i, s) {
            function o(t) {
              try {
                l(n.next(t));
              } catch (t) {
                s(t);
              }
            }
            function a(t) {
              try {
                l(n.throw(t));
              } catch (t) {
                s(t);
              }
            }
            function l(t) {
              var e;
              t.done
                ? i(t.value)
                : ((e = t.value),
                  e instanceof r
                    ? e
                    : new r(function (t) {
                        t(e);
                      })).then(o, a);
            }
            l((n = n.apply(t, e || [])).next());
          });
        };
    class L {
      constructor(t, e = 500, r) {
        (this.reader = t),
          (this.timeBetweenScansMillis = e),
          (this._hints = r),
          (this._stopContinuousDecode = !1),
          (this._stopAsyncDecode = !1),
          (this._timeBetweenDecodingAttempts = 0);
      }
      get hasNavigator() {
        return "undefined" != typeof navigator;
      }
      get isMediaDevicesSuported() {
        return this.hasNavigator && !!navigator.mediaDevices;
      }
      get canEnumerateDevices() {
        return !(
          !this.isMediaDevicesSuported || !navigator.mediaDevices.enumerateDevices
        );
      }
      get timeBetweenDecodingAttempts() {
        return this._timeBetweenDecodingAttempts;
      }
      set timeBetweenDecodingAttempts(t) {
        this._timeBetweenDecodingAttempts = t < 0 ? 0 : t;
      }
      set hints(t) {
        this._hints = t || null;
      }
      get hints() {
        return this._hints;
      }
      listVideoInputDevices() {
        return P(this, void 0, void 0, function* () {
          if (!this.hasNavigator)
            throw new Error("Can't enumerate devices, navigator is not present.");
          if (!this.canEnumerateDevices)
            throw new Error("Can't enumerate devices, method not supported.");
          const t = yield navigator.mediaDevices.enumerateDevices(),
            e = [];
          for (const r of t) {
            const t = "video" === r.kind ? "videoinput" : r.kind;
            if ("videoinput" !== t) continue;
            const n = {
              deviceId: r.deviceId || r.id,
              label: r.label || `Video device ${e.length + 1}`,
              kind: t,
              groupId: r.groupId,
            };
            e.push(n);
          }
          return e;
        });
      }
      getVideoInputDevices() {
        return P(this, void 0, void 0, function* () {
          return (yield this.listVideoInputDevices()).map(
            (t) => new b(t.deviceId, t.label)
          );
        });
      }
      findDeviceById(t) {
        return P(this, void 0, void 0, function* () {
          const e = yield this.listVideoInputDevices();
          return e ? e.find((e) => e.deviceId === t) : null;
        });
      }
      decodeFromInputVideoDevice(t, e) {
        return P(this, void 0, void 0, function* () {
          return yield this.decodeOnceFromVideoDevice(t, e);
        });
      }
      decodeOnceFromVideoDevice(t, e) {
        return P(this, void 0, void 0, function* () {
          let r;
          this.reset();
          const n = {
            video: (r = t
              ? { deviceId: { exact: t } }
              : { facingMode: "environment" }),
          };
          return yield this.decodeOnceFromConstraints(n, e);
        });
      }
      decodeOnceFromConstraints(t, e) {
        return P(this, void 0, void 0, function* () {
          const r = yield navigator.mediaDevices.getUserMedia(t);
          return yield this.decodeOnceFromStream(r, e);
        });
      }
      decodeOnceFromStream(t, e) {
        return P(this, void 0, void 0, function* () {
          this.reset();
          const r = yield this.attachStreamToVideo(t, e);
          return yield this.decodeOnce(r);
        });
      }
      decodeFromInputVideoDeviceContinuously(t, e, r) {
        return P(this, void 0, void 0, function* () {
          return yield this.decodeFromVideoDevice(t, e, r);
        });
      }
      decodeFromVideoDevice(t, e, r) {
        return P(this, void 0, void 0, function* () {
          let n;
          const i = {
            video: (n = t
              ? { deviceId: { exact: t } }
              : { facingMode: "environment" }),
          };
          return yield this.decodeFromConstraints(i, e, r);
        });
      }
      decodeFromConstraints(t, e, r) {
        return P(this, void 0, void 0, function* () {
          const n = yield navigator.mediaDevices.getUserMedia(t);
          return yield this.decodeFromStream(n, e, r);
        });
      }
      decodeFromStream(t, e, r) {
        return P(this, void 0, void 0, function* () {
          this.reset();
          const n = yield this.attachStreamToVideo(t, e);
          return yield this.decodeContinuously(n, r);
        });
      }
      stopAsyncDecode() {
        this._stopAsyncDecode = !0;
      }
      stopContinuousDecode() {
        this._stopContinuousDecode = !0;
      }
      attachStreamToVideo(t, e) {
        return P(this, void 0, void 0, function* () {
          const r = this.prepareVideoElement(e);
          return (
            this.addVideoSource(r, t),
            (this.videoElement = r),
            (this.stream = t),
            yield this.playVideoOnLoadAsync(r),
            r
          );
        });
      }
      playVideoOnLoadAsync(t) {
        return new Promise((e, r) => this.playVideoOnLoad(t, () => e()));
      }
      playVideoOnLoad(t, e) {
        (this.videoEndedListener = () => this.stopStreams()),
          (this.videoCanPlayListener = () => this.tryPlayVideo(t)),
          t.addEventListener("ended", this.videoEndedListener),
          t.addEventListener("canplay", this.videoCanPlayListener),
          t.addEventListener("playing", e),
          this.tryPlayVideo(t);
      }
      isVideoPlaying(t) {
        return t.currentTime > 0 && !t.paused && !t.ended && t.readyState > 2;
      }
      tryPlayVideo(t) {
        return P(this, void 0, void 0, function* () {
          if (this.isVideoPlaying(t))
            console.warn("Trying to play video that is already playing.");
          else
            try {
              yield t.play();
            } catch (t) {
              console.warn("It was not possible to play the video.");
            }
        });
      }
      getMediaElement(t, e) {
        const r = document.getElementById(t);
        if (!r) throw new s(`element with id '${t}' not found`);
        if (r.nodeName.toLowerCase() !== e.toLowerCase())
          throw new s(`element with id '${t}' must be an ${e} element`);
        return r;
      }
      decodeFromImage(t, e) {
        if (!t && !e)
          throw new s(
            "either imageElement with a src set or an url must be provided"
          );
        return e && !t
          ? this.decodeFromImageUrl(e)
          : this.decodeFromImageElement(t);
      }
      decodeFromVideo(t, e) {
        if (!t && !e)
          throw new s(
            "Either an element with a src set or an URL must be provided"
          );
        return e && !t
          ? this.decodeFromVideoUrl(e)
          : this.decodeFromVideoElement(t);
      }
      decodeFromVideoContinuously(t, e, r) {
        if (void 0 === t && void 0 === e)
          throw new s(
            "Either an element with a src set or an URL must be provided"
          );
        return e && !t
          ? this.decodeFromVideoUrlContinuously(e, r)
          : this.decodeFromVideoElementContinuously(t, r);
      }
      decodeFromImageElement(t) {
        if (!t) throw new s("An image element must be provided.");
        this.reset();
        const e = this.prepareImageElement(t);
        let r;
        return (
          (this.imageElement = e),
          (r = this.isImageLoaded(e)
            ? this.decodeOnce(e, !1, !0)
            : this._decodeOnLoadImage(e))
        );
      }
      decodeFromVideoElement(t) {
        const e = this._decodeFromVideoElementSetup(t);
        return this._decodeOnLoadVideo(e);
      }
      decodeFromVideoElementContinuously(t, e) {
        const r = this._decodeFromVideoElementSetup(t);
        return this._decodeOnLoadVideoContinuously(r, e);
      }
      _decodeFromVideoElementSetup(t) {
        if (!t) throw new s("A video element must be provided.");
        this.reset();
        const e = this.prepareVideoElement(t);
        return (this.videoElement = e), e;
      }
      decodeFromImageUrl(t) {
        if (!t) throw new s("An URL must be provided.");
        this.reset();
        const e = this.prepareImageElement();
        this.imageElement = e;
        const r = this._decodeOnLoadImage(e);
        return (e.src = t), r;
      }
      decodeFromVideoUrl(t) {
        if (!t) throw new s("An URL must be provided.");
        this.reset();
        const e = this.prepareVideoElement(),
          r = this.decodeFromVideoElement(e);
        return (e.src = t), r;
      }
      decodeFromVideoUrlContinuously(t, e) {
        if (!t) throw new s("An URL must be provided.");
        this.reset();
        const r = this.prepareVideoElement(),
          n = this.decodeFromVideoElementContinuously(r, e);
        return (r.src = t), n;
      }
      _decodeOnLoadImage(t) {
        return new Promise((e, r) => {
          (this.imageLoadedListener = () =>
            this.decodeOnce(t, !1, !0).then(e, r)),
            t.addEventListener("load", this.imageLoadedListener);
        });
      }
      _decodeOnLoadVideo(t) {
        return P(this, void 0, void 0, function* () {
          return yield this.playVideoOnLoadAsync(t), yield this.decodeOnce(t);
        });
      }
      _decodeOnLoadVideoContinuously(t, e) {
        return P(this, void 0, void 0, function* () {
          yield this.playVideoOnLoadAsync(t), this.decodeContinuously(t, e);
        });
      }
      isImageLoaded(t) {
        return !!t.complete && 0 !== t.naturalWidth;
      }
      prepareImageElement(t) {
        let e;
        return (
          void 0 === t &&
            (((e = document.createElement("img")).width = 200), (e.height = 200)),
          "string" == typeof t && (e = this.getMediaElement(t, "img")),
          t instanceof HTMLImageElement && (e = t),
          e
        );
      }
      prepareVideoElement(t) {
        let e;
        return (
          t ||
            "undefined" == typeof document ||
            (((e = document.createElement("video")).width = 200),
            (e.height = 200)),
          "string" == typeof t && (e = this.getMediaElement(t, "video")),
          t instanceof HTMLVideoElement && (e = t),
          e.setAttribute("autoplay", "true"),
          e.setAttribute("muted", "true"),
          e.setAttribute("playsinline", "true"),
          e
        );
      }
      decodeOnce(t, e = !0, r = !0) {
        this._stopAsyncDecode = !1;
        const n = (i, s) => {
          if (this._stopAsyncDecode)
            return (
              s(
                new R("Video stream has ended before any code could be detected.")
              ),
              void (this._stopAsyncDecode = void 0)
            );
          try {
            i(this.decode(t));
          } catch (t) {
            const o = (t instanceof l || t instanceof E) && r;
            if ((e && t instanceof R) || o)
              return setTimeout(n, this._timeBetweenDecodingAttempts, i, s);
            s(t);
          }
        };
        return new Promise((t, e) => n(t, e));
      }
      decodeContinuously(t, e) {
        this._stopContinuousDecode = !1;
        const r = () => {
          if (this._stopContinuousDecode) this._stopContinuousDecode = void 0;
          else
            try {
              const n = this.decode(t);
              e(n, null), setTimeout(r, this.timeBetweenScansMillis);
            } catch (t) {
              e(null, t);
              const n = t instanceof R;
              (t instanceof l || t instanceof E || n) &&
                setTimeout(r, this._timeBetweenDecodingAttempts);
            }
        };
        r();
      }
      decode(t) {
        const e = this.createBinaryBitmap(t);
        return this.decodeBitmap(e);
      }
      createBinaryBitmap(t) {
        const e = this.getCaptureCanvasContext(t);
        this.drawImageOnCanvas(e, t);
        const r = this.getCaptureCanvas(t),
          n = new M(r),
          i = new D(n);
        return new a(i);
      }
      getCaptureCanvasContext(t) {
        if (!this.captureCanvasContext) {
          const e = this.getCaptureCanvas(t).getContext("2d");
          this.captureCanvasContext = e;
        }
        return this.captureCanvasContext;
      }
      getCaptureCanvas(t) {
        if (!this.captureCanvas) {
          const e = this.createCaptureCanvas(t);
          this.captureCanvas = e;
        }
        return this.captureCanvas;
      }
      drawImageOnCanvas(t, e) {
        t.drawImage(e, 0, 0);
      }
      decodeBitmap(t) {
        return this.reader.decode(t, this._hints);
      }
      createCaptureCanvas(t) {
        if ("undefined" == typeof document)
          return this._destroyCaptureCanvas(), null;
        const e = document.createElement("canvas");
        let r, n;
        return (
          void 0 !== t &&
            (t instanceof HTMLVideoElement
              ? ((r = t.videoWidth), (n = t.videoHeight))
              : t instanceof HTMLImageElement &&
                ((r = t.naturalWidth || t.width),
                (n = t.naturalHeight || t.height))),
          (e.style.width = r + "px"),
          (e.style.height = n + "px"),
          (e.width = r),
          (e.height = n),
          e
        );
      }
      stopStreams() {
        this.stream &&
          (this.stream.getVideoTracks().forEach((t) => t.stop()),
          (this.stream = void 0)),
          !1 === this._stopAsyncDecode && this.stopAsyncDecode(),
          !1 === this._stopContinuousDecode && this.stopContinuousDecode();
      }
      reset() {
        this.stopStreams(),
          this._destroyVideoElement(),
          this._destroyImageElement(),
          this._destroyCaptureCanvas();
      }
      _destroyVideoElement() {
        this.videoElement &&
          (void 0 !== this.videoEndedListener &&
            this.videoElement.removeEventListener(
              "ended",
              this.videoEndedListener
            ),
          void 0 !== this.videoPlayingEventListener &&
            this.videoElement.removeEventListener(
              "playing",
              this.videoPlayingEventListener
            ),
          void 0 !== this.videoCanPlayListener &&
            this.videoElement.removeEventListener(
              "loadedmetadata",
              this.videoCanPlayListener
            ),
          this.cleanVideoSource(this.videoElement),
          (this.videoElement = void 0));
      }
      _destroyImageElement() {
        this.imageElement &&
          (void 0 !== this.imageLoadedListener &&
            this.imageElement.removeEventListener(
              "load",
              this.imageLoadedListener
            ),
          (this.imageElement.src = void 0),
          this.imageElement.removeAttribute("src"),
          (this.imageElement = void 0));
      }
      _destroyCaptureCanvas() {
        (this.captureCanvasContext = void 0), (this.captureCanvas = void 0);
      }
      addVideoSource(t, e) {
        try {
          t.srcObject = e;
        } catch (r) {
          t.src = URL.createObjectURL(e);
        }
      }
      cleanVideoSource(t) {
        try {
          t.srcObject = null;
        } catch (e) {
          t.src = "";
        }
        this.videoElement.removeAttribute("src");
      }
    }
    class F {
      constructor(
        t,
        e,
        r = null == e ? 0 : 8 * e.length,
        n,
        i,
        s = c.currentTimeMillis()
      ) {
        (this.text = t),
          (this.rawBytes = e),
          (this.numBits = r),
          (this.resultPoints = n),
          (this.format = i),
          (this.timestamp = s),
          (this.text = t),
          (this.rawBytes = e),
          (this.numBits = null == r ? (null == e ? 0 : 8 * e.length) : r),
          (this.resultPoints = n),
          (this.format = i),
          (this.resultMetadata = null),
          (this.timestamp = null == s ? c.currentTimeMillis() : s);
      }
      getText() {
        return this.text;
      }
      getRawBytes() {
        return this.rawBytes;
      }
      getNumBits() {
        return this.numBits;
      }
      getResultPoints() {
        return this.resultPoints;
      }
      getBarcodeFormat() {
        return this.format;
      }
      getResultMetadata() {
        return this.resultMetadata;
      }
      putMetadata(t, e) {
        null === this.resultMetadata && (this.resultMetadata = new Map()),
          this.resultMetadata.set(t, e);
      }
      putAllMetadata(t) {
        null !== t &&
          (null === this.resultMetadata
            ? (this.resultMetadata = t)
            : (this.resultMetadata = new Map(t)));
      }
      addResultPoints(t) {
        const e = this.resultPoints;
        if (null === e) this.resultPoints = t;
        else if (null !== t && t.length > 0) {
          const r = new Array(e.length + t.length);
          c.arraycopy(e, 0, r, 0, e.length),
            c.arraycopy(t, 0, r, e.length, t.length),
            (this.resultPoints = r);
        }
      }
      getTimestamp() {
        return this.timestamp;
      }
      toString() {
        return this.text;
      }
    }
    !(function (t) {
      (t[(t.AZTEC = 0)] = "AZTEC"),
        (t[(t.CODABAR = 1)] = "CODABAR"),
        (t[(t.CODE_39 = 2)] = "CODE_39"),
        (t[(t.CODE_93 = 3)] = "CODE_93"),
        (t[(t.CODE_128 = 4)] = "CODE_128"),
        (t[(t.DATA_MATRIX = 5)] = "DATA_MATRIX"),
        (t[(t.EAN_8 = 6)] = "EAN_8"),
        (t[(t.EAN_13 = 7)] = "EAN_13"),
        (t[(t.ITF = 8)] = "ITF"),
        (t[(t.MAXICODE = 9)] = "MAXICODE"),
        (t[(t.PDF_417 = 10)] = "PDF_417"),
        (t[(t.QR_CODE = 11)] = "QR_CODE"),
        (t[(t.RSS_14 = 12)] = "RSS_14"),
        (t[(t.RSS_EXPANDED = 13)] = "RSS_EXPANDED"),
        (t[(t.UPC_A = 14)] = "UPC_A"),
        (t[(t.UPC_E = 15)] = "UPC_E"),
        (t[(t.UPC_EAN_EXTENSION = 16)] = "UPC_EAN_EXTENSION");
    })(B || (B = {}));
    var v,
      k = B;
    !(function (t) {
      (t[(t.OTHER = 0)] = "OTHER"),
        (t[(t.ORIENTATION = 1)] = "ORIENTATION"),
        (t[(t.BYTE_SEGMENTS = 2)] = "BYTE_SEGMENTS"),
        (t[(t.ERROR_CORRECTION_LEVEL = 3)] = "ERROR_CORRECTION_LEVEL"),
        (t[(t.ISSUE_NUMBER = 4)] = "ISSUE_NUMBER"),
        (t[(t.SUGGESTED_PRICE = 5)] = "SUGGESTED_PRICE"),
        (t[(t.POSSIBLE_COUNTRY = 6)] = "POSSIBLE_COUNTRY"),
        (t[(t.UPC_EAN_EXTENSION = 7)] = "UPC_EAN_EXTENSION"),
        (t[(t.PDF417_EXTRA_METADATA = 8)] = "PDF417_EXTRA_METADATA"),
        (t[(t.STRUCTURED_APPEND_SEQUENCE = 9)] = "STRUCTURED_APPEND_SEQUENCE"),
        (t[(t.STRUCTURED_APPEND_PARITY = 10)] = "STRUCTURED_APPEND_PARITY");
    })(v || (v = {}));
    var x,
      V,
      U,
      H,
      G,
      X,
      W = v;
    class z {
      constructor(t, e, r, n, i = -1, s = -1) {
        (this.rawBytes = t),
          (this.text = e),
          (this.byteSegments = r),
          (this.ecLevel = n),
          (this.structuredAppendSequenceNumber = i),
          (this.structuredAppendParity = s),
          (this.numBits = null == t ? 0 : 8 * t.length);
      }
      getRawBytes() {
        return this.rawBytes;
      }
      getNumBits() {
        return this.numBits;
      }
      setNumBits(t) {
        this.numBits = t;
      }
      getText() {
        return this.text;
      }
      getByteSegments() {
        return this.byteSegments;
      }
      getECLevel() {
        return this.ecLevel;
      }
      getErrorsCorrected() {
        return this.errorsCorrected;
      }
      setErrorsCorrected(t) {
        this.errorsCorrected = t;
      }
      getErasures() {
        return this.erasures;
      }
      setErasures(t) {
        this.erasures = t;
      }
      getOther() {
        return this.other;
      }
      setOther(t) {
        this.other = t;
      }
      hasStructuredAppend() {
        return (
          this.structuredAppendParity >= 0 &&
          this.structuredAppendSequenceNumber >= 0
        );
      }
      getStructuredAppendParity() {
        return this.structuredAppendParity;
      }
      getStructuredAppendSequenceNumber() {
        return this.structuredAppendSequenceNumber;
      }
    }
    class Y {
      exp(t) {
        return this.expTable[t];
      }
      log(t) {
        if (0 === t) throw new o();
        return this.logTable[t];
      }
      static addOrSubtract(t, e) {
        return t ^ e;
      }
    }
    class Z {
      constructor(t, e) {
        if (0 === e.length) throw new o();
        this.field = t;
        const r = e.length;
        if (r > 1 && 0 === e[0]) {
          let t = 1;
          for (; t < r && 0 === e[t]; ) t++;
          t === r
            ? (this.coefficients = Int32Array.from([0]))
            : ((this.coefficients = new Int32Array(r - t)),
              c.arraycopy(e, t, this.coefficients, 0, this.coefficients.length));
        } else this.coefficients = e;
      }
      getCoefficients() {
        return this.coefficients;
      }
      getDegree() {
        return this.coefficients.length - 1;
      }
      isZero() {
        return 0 === this.coefficients[0];
      }
      getCoefficient(t) {
        return this.coefficients[this.coefficients.length - 1 - t];
      }
      evaluateAt(t) {
        if (0 === t) return this.getCoefficient(0);
        const e = this.coefficients;
        let r;
        if (1 === t) {
          r = 0;
          for (let t = 0, n = e.length; t !== n; t++) {
            const n = e[t];
            r = Y.addOrSubtract(r, n);
          }
          return r;
        }
        r = e[0];
        const n = e.length,
          i = this.field;
        for (let s = 1; s < n; s++) r = Y.addOrSubtract(i.multiply(t, r), e[s]);
        return r;
      }
      addOrSubtract(t) {
        if (!this.field.equals(t.field))
          throw new o("GenericGFPolys do not have same GenericGF field");
        if (this.isZero()) return t;
        if (t.isZero()) return this;
        let e = this.coefficients,
          r = t.coefficients;
        if (e.length > r.length) {
          const t = e;
          (e = r), (r = t);
        }
        let n = new Int32Array(r.length);
        const i = r.length - e.length;
        c.arraycopy(r, 0, n, 0, i);
        for (let t = i; t < r.length; t++) n[t] = Y.addOrSubtract(e[t - i], r[t]);
        return new Z(this.field, n);
      }
      multiply(t) {
        if (!this.field.equals(t.field))
          throw new o("GenericGFPolys do not have same GenericGF field");
        if (this.isZero() || t.isZero()) return this.field.getZero();
        const e = this.coefficients,
          r = e.length,
          n = t.coefficients,
          i = n.length,
          s = new Int32Array(r + i - 1),
          a = this.field;
        for (let t = 0; t < r; t++) {
          const r = e[t];
          for (let e = 0; e < i; e++)
            s[t + e] = Y.addOrSubtract(s[t + e], a.multiply(r, n[e]));
        }
        return new Z(a, s);
      }
      multiplyScalar(t) {
        if (0 === t) return this.field.getZero();
        if (1 === t) return this;
        const e = this.coefficients.length,
          r = this.field,
          n = new Int32Array(e),
          i = this.coefficients;
        for (let s = 0; s < e; s++) n[s] = r.multiply(i[s], t);
        return new Z(r, n);
      }
      multiplyByMonomial(t, e) {
        if (t < 0) throw new o();
        if (0 === e) return this.field.getZero();
        const r = this.coefficients,
          n = r.length,
          i = new Int32Array(n + t),
          s = this.field;
        for (let t = 0; t < n; t++) i[t] = s.multiply(r[t], e);
        return new Z(s, i);
      }
      divide(t) {
        if (!this.field.equals(t.field))
          throw new o("GenericGFPolys do not have same GenericGF field");
        if (t.isZero()) throw new o("Divide by 0");
        const e = this.field;
        let r = e.getZero(),
          n = this;
        const i = t.getCoefficient(t.getDegree()),
          s = e.inverse(i);
        for (; n.getDegree() >= t.getDegree() && !n.isZero(); ) {
          const i = n.getDegree() - t.getDegree(),
            o = e.multiply(n.getCoefficient(n.getDegree()), s),
            a = t.multiplyByMonomial(i, o),
            l = e.buildMonomial(i, o);
          (r = r.addOrSubtract(l)), (n = n.addOrSubtract(a));
        }
        return [r, n];
      }
      toString() {
        let t = "";
        for (let e = this.getDegree(); e >= 0; e--) {
          let r = this.getCoefficient(e);
          if (0 !== r) {
            if (
              (r < 0 ? ((t += " - "), (r = -r)) : t.length > 0 && (t += " + "),
              0 === e || 1 !== r)
            ) {
              const e = this.field.log(r);
              0 === e
                ? (t += "1")
                : 1 === e
                ? (t += "a")
                : ((t += "a^"), (t += e));
            }
            0 !== e && (1 === e ? (t += "x") : ((t += "x^"), (t += e)));
          }
        }
        return t;
      }
    }
    class K extends i {}
    K.kind = "ArithmeticException";
    class q extends Y {
      constructor(t, e, r) {
        super(), (this.primitive = t), (this.size = e), (this.generatorBase = r);
        const n = new Int32Array(e);
        let i = 1;
        for (let r = 0; r < e; r++)
          (n[r] = i), (i *= 2) >= e && ((i ^= t), (i &= e - 1));
        this.expTable = n;
        const s = new Int32Array(e);
        for (let t = 0; t < e - 1; t++) s[n[t]] = t;
        (this.logTable = s),
          (this.zero = new Z(this, Int32Array.from([0]))),
          (this.one = new Z(this, Int32Array.from([1])));
      }
      getZero() {
        return this.zero;
      }
      getOne() {
        return this.one;
      }
      buildMonomial(t, e) {
        if (t < 0) throw new o();
        if (0 === e) return this.zero;
        const r = new Int32Array(t + 1);
        return (r[0] = e), new Z(this, r);
      }
      inverse(t) {
        if (0 === t) throw new K();
        return this.expTable[this.size - this.logTable[t] - 1];
      }
      multiply(t, e) {
        return 0 === t || 0 === e
          ? 0
          : this.expTable[
              (this.logTable[t] + this.logTable[e]) % (this.size - 1)
            ];
      }
      getSize() {
        return this.size;
      }
      getGeneratorBase() {
        return this.generatorBase;
      }
      toString() {
        return "GF(0x" + f.toHexString(this.primitive) + "," + this.size + ")";
      }
      equals(t) {
        return t === this;
      }
    }
    (q.AZTEC_DATA_12 = new q(4201, 4096, 1)),
      (q.AZTEC_DATA_10 = new q(1033, 1024, 1)),
      (q.AZTEC_DATA_6 = new q(67, 64, 1)),
      (q.AZTEC_PARAM = new q(19, 16, 1)),
      (q.QR_CODE_FIELD_256 = new q(285, 256, 0)),
      (q.DATA_MATRIX_FIELD_256 = new q(301, 256, 1)),
      (q.AZTEC_DATA_8 = q.DATA_MATRIX_FIELD_256),
      (q.MAXICODE_FIELD_64 = q.AZTEC_DATA_6);
    class Q extends i {}
    Q.kind = "ReedSolomonException";
    class j extends i {}
    j.kind = "IllegalStateException";
    class J {
      constructor(t) {
        this.field = t;
      }
      decode(t, e) {
        const r = this.field,
          n = new Z(r, t),
          i = new Int32Array(e);
        let s = !0;
        for (let t = 0; t < e; t++) {
          const e = n.evaluateAt(r.exp(t + r.getGeneratorBase()));
          (i[i.length - 1 - t] = e), 0 !== e && (s = !1);
        }
        if (s) return;
        const o = new Z(r, i),
          a = this.runEuclideanAlgorithm(r.buildMonomial(e, 1), o, e),
          l = a[0],
          h = a[1],
          c = this.findErrorLocations(l),
          u = this.findErrorMagnitudes(h, c);
        for (let e = 0; e < c.length; e++) {
          const n = t.length - 1 - r.log(c[e]);
          if (n < 0) throw new Q("Bad error location");
          t[n] = q.addOrSubtract(t[n], u[e]);
        }
      }
      runEuclideanAlgorithm(t, e, r) {
        if (t.getDegree() < e.getDegree()) {
          const r = t;
          (t = e), (e = r);
        }
        const n = this.field;
        let i = t,
          s = e,
          o = n.getZero(),
          a = n.getOne();
        for (; s.getDegree() >= ((r / 2) | 0); ) {
          let t = i,
            e = o;
          if (((o = a), (i = s).isZero())) throw new Q("r_{i-1} was zero");
          s = t;
          let r = n.getZero();
          const l = i.getCoefficient(i.getDegree()),
            h = n.inverse(l);
          for (; s.getDegree() >= i.getDegree() && !s.isZero(); ) {
            const t = s.getDegree() - i.getDegree(),
              e = n.multiply(s.getCoefficient(s.getDegree()), h);
            (r = r.addOrSubtract(n.buildMonomial(t, e))),
              (s = s.addOrSubtract(i.multiplyByMonomial(t, e)));
          }
          if (
            ((a = r.multiply(o).addOrSubtract(e)), s.getDegree() >= i.getDegree())
          )
            throw new j("Division algorithm failed to reduce polynomial?");
        }
        const l = a.getCoefficient(0);
        if (0 === l) throw new Q("sigmaTilde(0) was zero");
        const h = n.inverse(l);
        return [a.multiplyScalar(h), s.multiplyScalar(h)];
      }
      findErrorLocations(t) {
        const e = t.getDegree();
        if (1 === e) return Int32Array.from([t.getCoefficient(1)]);
        const r = new Int32Array(e);
        let n = 0;
        const i = this.field;
        for (let s = 1; s < i.getSize() && n < e; s++)
          0 === t.evaluateAt(s) && ((r[n] = i.inverse(s)), n++);
        if (n !== e)
          throw new Q("Error locator degree does not match number of roots");
        return r;
      }
      findErrorMagnitudes(t, e) {
        const r = e.length,
          n = new Int32Array(r),
          i = this.field;
        for (let s = 0; s < r; s++) {
          const o = i.inverse(e[s]);
          let a = 1;
          for (let t = 0; t < r; t++)
            if (s !== t) {
              const r = i.multiply(e[t], o),
                n = 0 == (1 & r) ? 1 | r : -2 & r;
              a = i.multiply(a, n);
            }
          (n[s] = i.multiply(t.evaluateAt(o), i.inverse(a))),
            0 !== i.getGeneratorBase() && (n[s] = i.multiply(n[s], o));
        }
        return n;
      }
    }
    !(function (t) {
      (t[(t.UPPER = 0)] = "UPPER"),
        (t[(t.LOWER = 1)] = "LOWER"),
        (t[(t.MIXED = 2)] = "MIXED"),
        (t[(t.DIGIT = 3)] = "DIGIT"),
        (t[(t.PUNCT = 4)] = "PUNCT"),
        (t[(t.BINARY = 5)] = "BINARY");
    })(x || (x = {}));
    class $ {
      decode(t) {
        this.ddata = t;
        let e = t.getBits(),
          r = this.extractBits(e),
          n = this.correctBits(r),
          i = $.convertBoolArrayToByteArray(n),
          s = $.getEncodedData(n),
          o = new z(i, s, null, null);
        return o.setNumBits(n.length), o;
      }
      static highLevelDecode(t) {
        return this.getEncodedData(t);
      }
      static getEncodedData(t) {
        let e = t.length,
          r = x.UPPER,
          n = x.UPPER,
          i = "",
          s = 0;
        for (; s < e; )
          if (n === x.BINARY) {
            if (e - s < 5) break;
            let o = $.readCode(t, s, 5);
            if (((s += 5), 0 === o)) {
              if (e - s < 11) break;
              (o = $.readCode(t, s, 11) + 31), (s += 11);
            }
            for (let r = 0; r < o; r++) {
              if (e - s < 8) {
                s = e;
                break;
              }
              const r = $.readCode(t, s, 8);
              (i += S.castAsNonUtf8Char(r)), (s += 8);
            }
            n = r;
          } else {
            let o = n === x.DIGIT ? 4 : 5;
            if (e - s < o) break;
            let a = $.readCode(t, s, o);
            s += o;
            let l = $.getCharacter(n, a);
            l.startsWith("CTRL_")
              ? ((r = n),
                (n = $.getTable(l.charAt(5))),
                "L" === l.charAt(6) && (r = n))
              : ((i += l), (n = r));
          }
        return i;
      }
      static getTable(t) {
        switch (t) {
          case "L":
            return x.LOWER;
          case "P":
            return x.PUNCT;
          case "M":
            return x.MIXED;
          case "D":
            return x.DIGIT;
          case "B":
            return x.BINARY;
          case "U":
          default:
            return x.UPPER;
        }
      }
      static getCharacter(t, e) {
        switch (t) {
          case x.UPPER:
            return $.UPPER_TABLE[e];
          case x.LOWER:
            return $.LOWER_TABLE[e];
          case x.MIXED:
            return $.MIXED_TABLE[e];
          case x.PUNCT:
            return $.PUNCT_TABLE[e];
          case x.DIGIT:
            return $.DIGIT_TABLE[e];
          default:
            throw new j("Bad table");
        }
      }
      correctBits(t) {
        let e, r;
        this.ddata.getNbLayers() <= 2
          ? ((r = 6), (e = q.AZTEC_DATA_6))
          : this.ddata.getNbLayers() <= 8
          ? ((r = 8), (e = q.AZTEC_DATA_8))
          : this.ddata.getNbLayers() <= 22
          ? ((r = 10), (e = q.AZTEC_DATA_10))
          : ((r = 12), (e = q.AZTEC_DATA_12));
        let n = this.ddata.getNbDatablocks(),
          i = t.length / r;
        if (i < n) throw new E();
        let s = t.length % r,
          o = new Int32Array(i);
        for (let e = 0; e < i; e++, s += r) o[e] = $.readCode(t, s, r);
        try {
          new J(e).decode(o, i - n);
        } catch (t) {
          throw new E(t);
        }
        let a = (1 << r) - 1,
          l = 0;
        for (let t = 0; t < n; t++) {
          let e = o[t];
          if (0 === e || e === a) throw new E();
          (1 !== e && e !== a - 1) || l++;
        }
        let h = new Array(n * r - l),
          c = 0;
        for (let t = 0; t < n; t++) {
          let e = o[t];
          if (1 === e || e === a - 1) h.fill(e > 1, c, c + r - 1), (c += r - 1);
          else for (let t = r - 1; t >= 0; --t) h[c++] = 0 != (e & (1 << t));
        }
        return h;
      }
      extractBits(t) {
        let e = this.ddata.isCompact(),
          r = this.ddata.getNbLayers(),
          n = (e ? 11 : 14) + 4 * r,
          i = new Int32Array(n),
          s = new Array(this.totalBitsInLayer(r, e));
        if (e) for (let t = 0; t < i.length; t++) i[t] = t;
        else {
          let t = n + 1 + 2 * f.truncDivision(f.truncDivision(n, 2) - 1, 15),
            e = n / 2,
            r = f.truncDivision(t, 2);
          for (let t = 0; t < e; t++) {
            let n = t + f.truncDivision(t, 15);
            (i[e - t - 1] = r - n - 1), (i[e + t] = r + n + 1);
          }
        }
        for (let o = 0, a = 0; o < r; o++) {
          let l = 4 * (r - o) + (e ? 9 : 12),
            h = 2 * o,
            c = n - 1 - h;
          for (let e = 0; e < l; e++) {
            let r = 2 * e;
            for (let n = 0; n < 2; n++)
              (s[a + r + n] = t.get(i[h + n], i[h + e])),
                (s[a + 2 * l + r + n] = t.get(i[h + e], i[c - n])),
                (s[a + 4 * l + r + n] = t.get(i[c - n], i[c - e])),
                (s[a + 6 * l + r + n] = t.get(i[c - e], i[h + n]));
          }
          a += 8 * l;
        }
        return s;
      }
      static readCode(t, e, r) {
        let n = 0;
        for (let i = e; i < e + r; i++) (n <<= 1), t[i] && (n |= 1);
        return n;
      }
      static readByte(t, e) {
        let r = t.length - e;
        return r >= 8 ? $.readCode(t, e, 8) : $.readCode(t, e, r) << (8 - r);
      }
      static convertBoolArrayToByteArray(t) {
        let e = new Uint8Array((t.length + 7) / 8);
        for (let r = 0; r < e.length; r++) e[r] = $.readByte(t, 8 * r);
        return e;
      }
      totalBitsInLayer(t, e) {
        return ((e ? 88 : 112) + 16 * t) * t;
      }
    }
    ($.UPPER_TABLE = [
      "CTRL_PS",
      " ",
      "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",
      "CTRL_LL",
      "CTRL_ML",
      "CTRL_DL",
      "CTRL_BS",
    ]),
      ($.LOWER_TABLE = [
        "CTRL_PS",
        " ",
        "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",
        "CTRL_US",
        "CTRL_ML",
        "CTRL_DL",
        "CTRL_BS",
      ]),
      ($.MIXED_TABLE = [
        "CTRL_PS",
        " ",
        "\\1",
        "\\2",
        "\\3",
        "\\4",
        "\\5",
        "\\6",
        "\\7",
        "\b",
        "\t",
        "\n",
        "\\13",
        "\f",
        "\r",
        "\\33",
        "\\34",
        "\\35",
        "\\36",
        "\\37",
        "@",
        "\\",
        "^",
        "_",
        "`",
        "|",
        "~",
        "\\177",
        "CTRL_LL",
        "CTRL_UL",
        "CTRL_PL",
        "CTRL_BS",
      ]),
      ($.PUNCT_TABLE = [
        "",
        "\r",
        "\r\n",
        ". ",
        ", ",
        ": ",
        "!",
        '"',
        "#",
        "$",
        "%",
        "&",
        "'",
        "(",
        ")",
        "*",
        "+",
        ",",
        "-",
        ".",
        "/",
        ":",
        ";",
        "<",
        "=",
        ">",
        "?",
        "[",
        "]",
        "{",
        "}",
        "CTRL_UL",
      ]),
      ($.DIGIT_TABLE = [
        "CTRL_PS",
        " ",
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        ",",
        ".",
        "CTRL_UL",
        "CTRL_US",
      ]);
    class tt {
      constructor() {}
      static round(t) {
        return NaN === t
          ? 0
          : t <= Number.MIN_SAFE_INTEGER
          ? Number.MIN_SAFE_INTEGER
          : t >= Number.MAX_SAFE_INTEGER
          ? Number.MAX_SAFE_INTEGER
          : (t + (t < 0 ? -0.5 : 0.5)) | 0;
      }
      static distance(t, e, r, n) {
        const i = t - r,
          s = e - n;
        return Math.sqrt(i * i + s * s);
      }
      static sum(t) {
        let e = 0;
        for (let r = 0, n = t.length; r !== n; r++) {
          e += t[r];
        }
        return e;
      }
    }
    class et {
      static floatToIntBits(t) {
        return t;
      }
    }
    et.MAX_VALUE = Number.MAX_SAFE_INTEGER;
    class rt {
      constructor(t, e) {
        (this.x = t), (this.y = e);
      }
      getX() {
        return this.x;
      }
      getY() {
        return this.y;
      }
      equals(t) {
        if (t instanceof rt) {
          const e = t;
          return this.x === e.x && this.y === e.y;
        }
        return !1;
      }
      hashCode() {
        return 31 * et.floatToIntBits(this.x) + et.floatToIntBits(this.y);
      }
      toString() {
        return "(" + this.x + "," + this.y + ")";
      }
      static orderBestPatterns(t) {
        const e = this.distance(t[0], t[1]),
          r = this.distance(t[1], t[2]),
          n = this.distance(t[0], t[2]);
        let i, s, o;
        if (
          (r >= e && r >= n
            ? ((s = t[0]), (i = t[1]), (o = t[2]))
            : n >= r && n >= e
            ? ((s = t[1]), (i = t[0]), (o = t[2]))
            : ((s = t[2]), (i = t[0]), (o = t[1])),
          this.crossProductZ(i, s, o) < 0)
        ) {
          const t = i;
          (i = o), (o = t);
        }
        (t[0] = i), (t[1] = s), (t[2] = o);
      }
      static distance(t, e) {
        return tt.distance(t.x, t.y, e.x, e.y);
      }
      static crossProductZ(t, e, r) {
        const n = e.x,
          i = e.y;
        return (r.x - n) * (t.y - i) - (r.y - i) * (t.x - n);
      }
    }
    class nt {
      constructor(t, e) {
        (this.bits = t), (this.points = e);
      }
      getBits() {
        return this.bits;
      }
      getPoints() {
        return this.points;
      }
    }
    class it extends nt {
      constructor(t, e, r, n, i) {
        super(t, e),
          (this.compact = r),
          (this.nbDatablocks = n),
          (this.nbLayers = i);
      }
      getNbLayers() {
        return this.nbLayers;
      }
      getNbDatablocks() {
        return this.nbDatablocks;
      }
      isCompact() {
        return this.compact;
      }
    }
    class st {
      constructor(t, e, r, n) {
        (this.image = t),
          (this.height = t.getHeight()),
          (this.width = t.getWidth()),
          null == e && (e = st.INIT_SIZE),
          null == r && (r = (t.getWidth() / 2) | 0),
          null == n && (n = (t.getHeight() / 2) | 0);
        const i = (e / 2) | 0;
        if (
          ((this.leftInit = r - i),
          (this.rightInit = r + i),
          (this.upInit = n - i),
          (this.downInit = n + i),
          this.upInit < 0 ||
            this.leftInit < 0 ||
            this.downInit >= this.height ||
            this.rightInit >= this.width)
        )
          throw new R();
      }
      detect() {
        let t = this.leftInit,
          e = this.rightInit,
          r = this.upInit,
          n = this.downInit,
          i = !1,
          s = !0,
          o = !1,
          a = !1,
          l = !1,
          h = !1,
          c = !1;
        const u = this.width,
          d = this.height;
        for (; s; ) {
          s = !1;
          let g = !0;
          for (; (g || !a) && e < u; )
            (g = this.containsBlackPoint(r, n, e, !1))
              ? (e++, (s = !0), (a = !0))
              : a || e++;
          if (e >= u) {
            i = !0;
            break;
          }
          let f = !0;
          for (; (f || !l) && n < d; )
            (f = this.containsBlackPoint(t, e, n, !0))
              ? (n++, (s = !0), (l = !0))
              : l || n++;
          if (n >= d) {
            i = !0;
            break;
          }
          let w = !0;
          for (; (w || !h) && t >= 0; )
            (w = this.containsBlackPoint(r, n, t, !1))
              ? (t--, (s = !0), (h = !0))
              : h || t--;
          if (t < 0) {
            i = !0;
            break;
          }
          let A = !0;
          for (; (A || !c) && r >= 0; )
            (A = this.containsBlackPoint(t, e, r, !0))
              ? (r--, (s = !0), (c = !0))
              : c || r--;
          if (r < 0) {
            i = !0;
            break;
          }
          s && (o = !0);
        }
        if (!i && o) {
          const i = e - t;
          let s = null;
          for (let e = 1; null === s && e < i; e++)
            s = this.getBlackPointOnSegment(t, n - e, t + e, n);
          if (null == s) throw new R();
          let o = null;
          for (let e = 1; null === o && e < i; e++)
            o = this.getBlackPointOnSegment(t, r + e, t + e, r);
          if (null == o) throw new R();
          let a = null;
          for (let t = 1; null === a && t < i; t++)
            a = this.getBlackPointOnSegment(e, r + t, e - t, r);
          if (null == a) throw new R();
          let l = null;
          for (let t = 1; null === l && t < i; t++)
            l = this.getBlackPointOnSegment(e, n - t, e - t, n);
          if (null == l) throw new R();
          return this.centerEdges(l, s, a, o);
        }
        throw new R();
      }
      getBlackPointOnSegment(t, e, r, n) {
        const i = tt.round(tt.distance(t, e, r, n)),
          s = (r - t) / i,
          o = (n - e) / i,
          a = this.image;
        for (let r = 0; r < i; r++) {
          const n = tt.round(t + r * s),
            i = tt.round(e + r * o);
          if (a.get(n, i)) return new rt(n, i);
        }
        return null;
      }
      centerEdges(t, e, r, n) {
        const i = t.getX(),
          s = t.getY(),
          o = e.getX(),
          a = e.getY(),
          l = r.getX(),
          h = r.getY(),
          c = n.getX(),
          u = n.getY(),
          d = st.CORR;
        return i < this.width / 2
          ? [
              new rt(c - d, u + d),
              new rt(o + d, a + d),
              new rt(l - d, h - d),
              new rt(i + d, s - d),
            ]
          : [
              new rt(c + d, u + d),
              new rt(o + d, a - d),
              new rt(l - d, h + d),
              new rt(i - d, s - d),
            ];
      }
      containsBlackPoint(t, e, r, n) {
        const i = this.image;
        if (n) {
          for (let n = t; n <= e; n++) if (i.get(n, r)) return !0;
        } else for (let n = t; n <= e; n++) if (i.get(r, n)) return !0;
        return !1;
      }
    }
    (st.INIT_SIZE = 10), (st.CORR = 1);
    class ot {
      static checkAndNudgePoints(t, e) {
        const r = t.getWidth(),
          n = t.getHeight();
        let i = !0;
        for (let t = 0; t < e.length && i; t += 2) {
          const s = Math.floor(e[t]),
            o = Math.floor(e[t + 1]);
          if (s < -1 || s > r || o < -1 || o > n) throw new R();
          (i = !1),
            -1 === s
              ? ((e[t] = 0), (i = !0))
              : s === r && ((e[t] = r - 1), (i = !0)),
            -1 === o
              ? ((e[t + 1] = 0), (i = !0))
              : o === n && ((e[t + 1] = n - 1), (i = !0));
        }
        i = !0;
        for (let t = e.length - 2; t >= 0 && i; t -= 2) {
          const s = Math.floor(e[t]),
            o = Math.floor(e[t + 1]);
          if (s < -1 || s > r || o < -1 || o > n) throw new R();
          (i = !1),
            -1 === s
              ? ((e[t] = 0), (i = !0))
              : s === r && ((e[t] = r - 1), (i = !0)),
            -1 === o
              ? ((e[t + 1] = 0), (i = !0))
              : o === n && ((e[t + 1] = n - 1), (i = !0));
        }
      }
    }
    class at {
      constructor(t, e, r, n, i, s, o, a, l) {
        (this.a11 = t),
          (this.a21 = e),
          (this.a31 = r),
          (this.a12 = n),
          (this.a22 = i),
          (this.a32 = s),
          (this.a13 = o),
          (this.a23 = a),
          (this.a33 = l);
      }
      static quadrilateralToQuadrilateral(
        t,
        e,
        r,
        n,
        i,
        s,
        o,
        a,
        l,
        h,
        c,
        u,
        d,
        g,
        f,
        w
      ) {
        const A = at.quadrilateralToSquare(t, e, r, n, i, s, o, a);
        return at.squareToQuadrilateral(l, h, c, u, d, g, f, w).times(A);
      }
      transformPoints(t) {
        const e = t.length,
          r = this.a11,
          n = this.a12,
          i = this.a13,
          s = this.a21,
          o = this.a22,
          a = this.a23,
          l = this.a31,
          h = this.a32,
          c = this.a33;
        for (let u = 0; u < e; u += 2) {
          const e = t[u],
            d = t[u + 1],
            g = i * e + a * d + c;
          (t[u] = (r * e + s * d + l) / g), (t[u + 1] = (n * e + o * d + h) / g);
        }
      }
      transformPointsWithValues(t, e) {
        const r = this.a11,
          n = this.a12,
          i = this.a13,
          s = this.a21,
          o = this.a22,
          a = this.a23,
          l = this.a31,
          h = this.a32,
          c = this.a33,
          u = t.length;
        for (let d = 0; d < u; d++) {
          const u = t[d],
            g = e[d],
            f = i * u + a * g + c;
          (t[d] = (r * u + s * g + l) / f), (e[d] = (n * u + o * g + h) / f);
        }
      }
      static squareToQuadrilateral(t, e, r, n, i, s, o, a) {
        const l = t - r + i - o,
          h = e - n + s - a;
        if (0 === l && 0 === h)
          return new at(r - t, i - r, t, n - e, s - n, e, 0, 0, 1);
        {
          const c = r - i,
            u = o - i,
            d = n - s,
            g = a - s,
            f = c * g - u * d,
            w = (l * g - u * h) / f,
            A = (c * h - l * d) / f;
          return new at(
            r - t + w * r,
            o - t + A * o,
            t,
            n - e + w * n,
            a - e + A * a,
            e,
            w,
            A,
            1
          );
        }
      }
      static quadrilateralToSquare(t, e, r, n, i, s, o, a) {
        return at.squareToQuadrilateral(t, e, r, n, i, s, o, a).buildAdjoint();
      }
      buildAdjoint() {
        return new at(
          this.a22 * this.a33 - this.a23 * this.a32,
          this.a23 * this.a31 - this.a21 * this.a33,
          this.a21 * this.a32 - this.a22 * this.a31,
          this.a13 * this.a32 - this.a12 * this.a33,
          this.a11 * this.a33 - this.a13 * this.a31,
          this.a12 * this.a31 - this.a11 * this.a32,
          this.a12 * this.a23 - this.a13 * this.a22,
          this.a13 * this.a21 - this.a11 * this.a23,
          this.a11 * this.a22 - this.a12 * this.a21
        );
      }
      times(t) {
        return new at(
          this.a11 * t.a11 + this.a21 * t.a12 + this.a31 * t.a13,
          this.a11 * t.a21 + this.a21 * t.a22 + this.a31 * t.a23,
          this.a11 * t.a31 + this.a21 * t.a32 + this.a31 * t.a33,
          this.a12 * t.a11 + this.a22 * t.a12 + this.a32 * t.a13,
          this.a12 * t.a21 + this.a22 * t.a22 + this.a32 * t.a23,
          this.a12 * t.a31 + this.a22 * t.a32 + this.a32 * t.a33,
          this.a13 * t.a11 + this.a23 * t.a12 + this.a33 * t.a13,
          this.a13 * t.a21 + this.a23 * t.a22 + this.a33 * t.a23,
          this.a13 * t.a31 + this.a23 * t.a32 + this.a33 * t.a33
        );
      }
    }
    class lt extends ot {
      sampleGrid(t, e, r, n, i, s, o, a, l, h, c, u, d, g, f, w, A, C, E) {
        const m = at.quadrilateralToQuadrilateral(
          n,
          i,
          s,
          o,
          a,
          l,
          h,
          c,
          u,
          d,
          g,
          f,
          w,
          A,
          C,
          E
        );
        return this.sampleGridWithTransform(t, e, r, m);
      }
      sampleGridWithTransform(t, e, r, n) {
        if (e <= 0 || r <= 0) throw new R();
        const i = new T(e, r),
          s = new Float32Array(2 * e);
        for (let e = 0; e < r; e++) {
          const r = s.length,
            o = e + 0.5;
          for (let t = 0; t < r; t += 2) (s[t] = t / 2 + 0.5), (s[t + 1] = o);
          n.transformPoints(s), ot.checkAndNudgePoints(t, s);
          try {
            for (let n = 0; n < r; n += 2)
              t.get(Math.floor(s[n]), Math.floor(s[n + 1])) && i.set(n / 2, e);
          } catch (t) {
            throw new R();
          }
        }
        return i;
      }
    }
    class ht {
      static setGridSampler(t) {
        ht.gridSampler = t;
      }
      static getInstance() {
        return ht.gridSampler;
      }
    }
    ht.gridSampler = new lt();
    class ct {
      constructor(t, e) {
        (this.x = t), (this.y = e);
      }
      toResultPoint() {
        return new rt(this.getX(), this.getY());
      }
      getX() {
        return this.x;
      }
      getY() {
        return this.y;
      }
    }
    class ut {
      constructor(t) {
        (this.EXPECTED_CORNER_BITS = new Int32Array([3808, 476, 2107, 1799])),
          (this.image = t);
      }
      detect() {
        return this.detectMirror(!1);
      }
      detectMirror(t) {
        let e = this.getMatrixCenter(),
          r = this.getBullsEyeCorners(e);
        if (t) {
          let t = r[0];
          (r[0] = r[2]), (r[2] = t);
        }
        this.extractParameters(r);
        let n = this.sampleGrid(
            this.image,
            r[this.shift % 4],
            r[(this.shift + 1) % 4],
            r[(this.shift + 2) % 4],
            r[(this.shift + 3) % 4]
          ),
          i = this.getMatrixCornerPoints(r);
        return new it(n, i, this.compact, this.nbDataBlocks, this.nbLayers);
      }
      extractParameters(t) {
        if (
          !(
            this.isValidPoint(t[0]) &&
            this.isValidPoint(t[1]) &&
            this.isValidPoint(t[2]) &&
            this.isValidPoint(t[3])
          )
        )
          throw new R();
        let e = 2 * this.nbCenterLayers,
          r = new Int32Array([
            this.sampleLine(t[0], t[1], e),
            this.sampleLine(t[1], t[2], e),
            this.sampleLine(t[2], t[3], e),
            this.sampleLine(t[3], t[0], e),
          ]);
        this.shift = this.getRotation(r, e);
        let n = 0;
        for (let t = 0; t < 4; t++) {
          let e = r[(this.shift + t) % 4];
          this.compact
            ? ((n <<= 7), (n += (e >> 1) & 127))
            : ((n <<= 10), (n += ((e >> 2) & 992) + ((e >> 1) & 31)));
        }
        let i = this.getCorrectedParameterData(n, this.compact);
        this.compact
          ? ((this.nbLayers = 1 + (i >> 6)), (this.nbDataBlocks = 1 + (63 & i)))
          : ((this.nbLayers = 1 + (i >> 11)),
            (this.nbDataBlocks = 1 + (2047 & i)));
      }
      getRotation(t, e) {
        let r = 0;
        t.forEach((t, n, i) => {
          r = (r << 3) + (((t >> (e - 2)) << 1) + (1 & t));
        }),
          (r = ((1 & r) << 11) + (r >> 1));
        for (let t = 0; t < 4; t++)
          if (f.bitCount(r ^ this.EXPECTED_CORNER_BITS[t]) <= 2) return t;
        throw new R();
      }
      getCorrectedParameterData(t, e) {
        let r, n;
        e ? ((r = 7), (n = 2)) : ((r = 10), (n = 4));
        let i = r - n,
          s = new Int32Array(r);
        for (let e = r - 1; e >= 0; --e) (s[e] = 15 & t), (t >>= 4);
        try {
          new J(q.AZTEC_PARAM).decode(s, i);
        } catch (t) {
          throw new R();
        }
        let o = 0;
        for (let t = 0; t < n; t++) o = (o << 4) + s[t];
        return o;
      }
      getBullsEyeCorners(t) {
        let e = t,
          r = t,
          n = t,
          i = t,
          s = !0;
        for (
          this.nbCenterLayers = 1;
          this.nbCenterLayers < 9;
          this.nbCenterLayers++
        ) {
          let t = this.getFirstDifferent(e, s, 1, -1),
            o = this.getFirstDifferent(r, s, 1, 1),
            a = this.getFirstDifferent(n, s, -1, 1),
            l = this.getFirstDifferent(i, s, -1, -1);
          if (this.nbCenterLayers > 2) {
            let r =
              (this.distancePoint(l, t) * this.nbCenterLayers) /
              (this.distancePoint(i, e) * (this.nbCenterLayers + 2));
            if (r < 0.75 || r > 1.25 || !this.isWhiteOrBlackRectangle(t, o, a, l))
              break;
          }
          (e = t), (r = o), (n = a), (i = l), (s = !s);
        }
        if (5 !== this.nbCenterLayers && 7 !== this.nbCenterLayers) throw new R();
        this.compact = 5 === this.nbCenterLayers;
        let o = new rt(e.getX() + 0.5, e.getY() - 0.5),
          a = new rt(r.getX() + 0.5, r.getY() + 0.5),
          l = new rt(n.getX() - 0.5, n.getY() + 0.5),
          h = new rt(i.getX() - 0.5, i.getY() - 0.5);
        return this.expandSquare(
          [o, a, l, h],
          2 * this.nbCenterLayers - 3,
          2 * this.nbCenterLayers
        );
      }
      getMatrixCenter() {
        let t, e, r, n;
        try {
          let i = new st(this.image).detect();
          (t = i[0]), (e = i[1]), (r = i[2]), (n = i[3]);
        } catch (i) {
          let s = this.image.getWidth() / 2,
            o = this.image.getHeight() / 2;
          (t = this.getFirstDifferent(
            new ct(s + 7, o - 7),
            !1,
            1,
            -1
          ).toResultPoint()),
            (e = this.getFirstDifferent(
              new ct(s + 7, o + 7),
              !1,
              1,
              1
            ).toResultPoint()),
            (r = this.getFirstDifferent(
              new ct(s - 7, o + 7),
              !1,
              -1,
              1
            ).toResultPoint()),
            (n = this.getFirstDifferent(
              new ct(s - 7, o - 7),
              !1,
              -1,
              -1
            ).toResultPoint());
        }
        let i = tt.round((t.getX() + n.getX() + e.getX() + r.getX()) / 4),
          s = tt.round((t.getY() + n.getY() + e.getY() + r.getY()) / 4);
        try {
          let o = new st(this.image, 15, i, s).detect();
          (t = o[0]), (e = o[1]), (r = o[2]), (n = o[3]);
        } catch (o) {
          (t = this.getFirstDifferent(
            new ct(i + 7, s - 7),
            !1,
            1,
            -1
          ).toResultPoint()),
            (e = this.getFirstDifferent(
              new ct(i + 7, s + 7),
              !1,
              1,
              1
            ).toResultPoint()),
            (r = this.getFirstDifferent(
              new ct(i - 7, s + 7),
              !1,
              -1,
              1
            ).toResultPoint()),
            (n = this.getFirstDifferent(
              new ct(i - 7, s - 7),
              !1,
              -1,
              -1
            ).toResultPoint());
        }
        return (
          (i = tt.round((t.getX() + n.getX() + e.getX() + r.getX()) / 4)),
          (s = tt.round((t.getY() + n.getY() + e.getY() + r.getY()) / 4)),
          new ct(i, s)
        );
      }
      getMatrixCornerPoints(t) {
        return this.expandSquare(t, 2 * this.nbCenterLayers, this.getDimension());
      }
      sampleGrid(t, e, r, n, i) {
        let s = ht.getInstance(),
          o = this.getDimension(),
          a = o / 2 - this.nbCenterLayers,
          l = o / 2 + this.nbCenterLayers;
        return s.sampleGrid(
          t,
          o,
          o,
          a,
          a,
          l,
          a,
          l,
          l,
          a,
          l,
          e.getX(),
          e.getY(),
          r.getX(),
          r.getY(),
          n.getX(),
          n.getY(),
          i.getX(),
          i.getY()
        );
      }
      sampleLine(t, e, r) {
        let n = 0,
          i = this.distanceResultPoint(t, e),
          s = i / r,
          o = t.getX(),
          a = t.getY(),
          l = (s * (e.getX() - t.getX())) / i,
          h = (s * (e.getY() - t.getY())) / i;
        for (let t = 0; t < r; t++)
          this.image.get(tt.round(o + t * l), tt.round(a + t * h)) &&
            (n |= 1 << (r - t - 1));
        return n;
      }
      isWhiteOrBlackRectangle(t, e, r, n) {
        (t = new ct(t.getX() - 3, t.getY() + 3)),
          (e = new ct(e.getX() - 3, e.getY() - 3)),
          (r = new ct(r.getX() + 3, r.getY() - 3)),
          (n = new ct(n.getX() + 3, n.getY() + 3));
        let i = this.getColor(n, t);
        if (0 === i) return !1;
        let s = this.getColor(t, e);
        return (
          s === i &&
          (s = this.getColor(e, r)) === i &&
          (s = this.getColor(r, n)) === i
        );
      }
      getColor(t, e) {
        let r = this.distancePoint(t, e),
          n = (e.getX() - t.getX()) / r,
          i = (e.getY() - t.getY()) / r,
          s = 0,
          o = t.getX(),
          a = t.getY(),
          l = this.image.get(t.getX(), t.getY()),
          h = Math.ceil(r);
        for (let t = 0; t < h; t++)
          (o += n),
            (a += i),
            this.image.get(tt.round(o), tt.round(a)) !== l && s++;
        let c = s / r;
        return c > 0.1 && c < 0.9 ? 0 : c <= 0.1 === l ? 1 : -1;
      }
      getFirstDifferent(t, e, r, n) {
        let i = t.getX() + r,
          s = t.getY() + n;
        for (; this.isValid(i, s) && this.image.get(i, s) === e; )
          (i += r), (s += n);
        for (i -= r, s -= n; this.isValid(i, s) && this.image.get(i, s) === e; )
          i += r;
        for (i -= r; this.isValid(i, s) && this.image.get(i, s) === e; ) s += n;
        return new ct(i, (s -= n));
      }
      expandSquare(t, e, r) {
        let n = r / (2 * e),
          i = t[0].getX() - t[2].getX(),
          s = t[0].getY() - t[2].getY(),
          o = (t[0].getX() + t[2].getX()) / 2,
          a = (t[0].getY() + t[2].getY()) / 2,
          l = new rt(o + n * i, a + n * s),
          h = new rt(o - n * i, a - n * s);
        return (
          (i = t[1].getX() - t[3].getX()),
          (s = t[1].getY() - t[3].getY()),
          (o = (t[1].getX() + t[3].getX()) / 2),
          (a = (t[1].getY() + t[3].getY()) / 2),
          [l, new rt(o + n * i, a + n * s), h, new rt(o - n * i, a - n * s)]
        );
      }
      isValid(t, e) {
        return (
          t >= 0 &&
          t < this.image.getWidth() &&
          e > 0 &&
          e < this.image.getHeight()
        );
      }
      isValidPoint(t) {
        let e = tt.round(t.getX()),
          r = tt.round(t.getY());
        return this.isValid(e, r);
      }
      distancePoint(t, e) {
        return tt.distance(t.getX(), t.getY(), e.getX(), e.getY());
      }
      distanceResultPoint(t, e) {
        return tt.distance(t.getX(), t.getY(), e.getX(), e.getY());
      }
      getDimension() {
        return this.compact
          ? 4 * this.nbLayers + 11
          : this.nbLayers <= 4
          ? 4 * this.nbLayers + 15
          : 4 * this.nbLayers +
            2 * (f.truncDivision(this.nbLayers - 4, 8) + 1) +
            15;
      }
    }
    class dt {
      decode(t, e = null) {
        let r = null,
          n = new ut(t.getBlackMatrix()),
          i = null,
          s = null;
        try {
          let t = n.detectMirror(!1);
          (i = t.getPoints()),
            this.reportFoundResultPoints(e, i),
            (s = new $().decode(t));
        } catch (t) {
          r = t;
        }
        if (null == s)
          try {
            let t = n.detectMirror(!0);
            (i = t.getPoints()),
              this.reportFoundResultPoints(e, i),
              (s = new $().decode(t));
          } catch (t) {
            if (null != r) throw r;
            throw t;
          }
        let o = new F(
            s.getText(),
            s.getRawBytes(),
            s.getNumBits(),
            i,
            k.AZTEC,
            c.currentTimeMillis()
          ),
          a = s.getByteSegments();
        null != a && o.putMetadata(W.BYTE_SEGMENTS, a);
        let l = s.getECLevel();
        return null != l && o.putMetadata(W.ERROR_CORRECTION_LEVEL, l), o;
      }
      reportFoundResultPoints(t, e) {
        if (null != t) {
          let r = t.get(C.NEED_RESULT_POINT_CALLBACK);
          null != r &&
            e.forEach((t, e, n) => {
              r.foundPossibleResultPoint(t);
            });
        }
      }
      reset() {}
    }
    class gt {
      decode(t, e) {
        try {
          return this.doDecode(t, e);
        } catch (r) {
          if (e && !0 === e.get(C.TRY_HARDER) && t.isRotateSupported()) {
            const r = t.rotateCounterClockwise(),
              n = this.doDecode(r, e),
              i = n.getResultMetadata();
            let s = 270;
            null !== i &&
              !0 === i.get(W.ORIENTATION) &&
              (s += i.get(W.ORIENTATION) % 360),
              n.putMetadata(W.ORIENTATION, s);
            const o = n.getResultPoints();
            if (null !== o) {
              const t = r.getHeight();
              for (let e = 0; e < o.length; e++)
                o[e] = new rt(t - o[e].getY() - 1, o[e].getX());
            }
            return n;
          }
          throw new R();
        }
      }
      reset() {}
      doDecode(t, e) {
        const r = t.getWidth(),
          n = t.getHeight();
        let i = new w(r);
        const s = e && !0 === e.get(C.TRY_HARDER),
          o = Math.max(1, n >> (s ? 8 : 5));
        let a;
        a = s ? n : 15;
        const l = Math.trunc(n / 2);
        for (let s = 0; s < a; s++) {
          const a = Math.trunc((s + 1) / 2),
            h = l + o * (0 == (1 & s) ? a : -a);
          if (h < 0 || h >= n) break;
          try {
            i = t.getBlackRow(h, i);
          } catch (t) {
            continue;
          }
          for (let t = 0; t < 2; t++) {
            if (
              1 === t &&
              (i.reverse(), e && !0 === e.get(C.NEED_RESULT_POINT_CALLBACK))
            ) {
              const t = new Map();
              e.forEach((e, r) => t.set(r, e)),
                t.delete(C.NEED_RESULT_POINT_CALLBACK),
                (e = t);
            }
            try {
              const n = this.decodeRow(h, i, e);
              if (1 === t) {
                n.putMetadata(W.ORIENTATION, 180);
                const t = n.getResultPoints();
                null !== t &&
                  ((t[0] = new rt(r - t[0].getX() - 1, t[0].getY())),
                  (t[1] = new rt(r - t[1].getX() - 1, t[1].getY())));
              }
              return n;
            } catch (t) {}
          }
        }
        throw new R();
      }
      static recordPattern(t, e, r) {
        const n = r.length;
        for (let t = 0; t < n; t++) r[t] = 0;
        const i = t.getSize();
        if (e >= i) throw new R();
        let s = !t.get(e),
          o = 0,
          a = e;
        for (; a < i; ) {
          if (t.get(a) !== s) r[o]++;
          else {
            if (++o === n) break;
            (r[o] = 1), (s = !s);
          }
          a++;
        }
        if (o !== n && (o !== n - 1 || a !== i)) throw new R();
      }
      static recordPatternInReverse(t, e, r) {
        let n = r.length,
          i = t.get(e);
        for (; e > 0 && n >= 0; ) t.get(--e) !== i && (n--, (i = !i));
        if (n >= 0) throw new R();
        gt.recordPattern(t, e + 1, r);
      }
      static patternMatchVariance(t, e, r) {
        const n = t.length;
        let i = 0,
          s = 0;
        for (let r = 0; r < n; r++) (i += t[r]), (s += e[r]);
        if (i < s) return Number.POSITIVE_INFINITY;
        const o = i / s;
        r *= o;
        let a = 0;
        for (let i = 0; i < n; i++) {
          const n = t[i],
            s = e[i] * o,
            l = n > s ? n - s : s - n;
          if (l > r) return Number.POSITIVE_INFINITY;
          a += l;
        }
        return a / i;
      }
    }
    class ft extends gt {
      static findStartPattern(t) {
        const e = t.getSize(),
          r = t.getNextSet(0);
        let n = 0,
          i = Int32Array.from([0, 0, 0, 0, 0, 0]),
          s = r,
          o = !1;
        for (let a = r; a < e; a++)
          if (t.get(a) !== o) i[n]++;
          else {
            if (5 === n) {
              let e = ft.MAX_AVG_VARIANCE,
                r = -1;
              for (let t = ft.CODE_START_A; t <= ft.CODE_START_C; t++) {
                const n = gt.patternMatchVariance(
                  i,
                  ft.CODE_PATTERNS[t],
                  ft.MAX_INDIVIDUAL_VARIANCE
                );
                n < e && ((e = n), (r = t));
              }
              if (r >= 0 && t.isRange(Math.max(0, s - (a - s) / 2), s, !1))
                return Int32Array.from([s, a, r]);
              (s += i[0] + i[1]),
                ((i = i.slice(2, i.length - 1))[n - 1] = 0),
                (i[n] = 0),
                n--;
            } else n++;
            (i[n] = 1), (o = !o);
          }
        throw new R();
      }
      static decodeCode(t, e, r) {
        gt.recordPattern(t, r, e);
        let n = ft.MAX_AVG_VARIANCE,
          i = -1;
        for (let t = 0; t < ft.CODE_PATTERNS.length; t++) {
          const r = ft.CODE_PATTERNS[t],
            s = this.patternMatchVariance(e, r, ft.MAX_INDIVIDUAL_VARIANCE);
          s < n && ((n = s), (i = t));
        }
        if (i >= 0) return i;
        throw new R();
      }
      decodeRow(t, e, r) {
        const n = r && !0 === r.get(C.ASSUME_GS1),
          i = ft.findStartPattern(e),
          s = i[2];
        let o = 0;
        const a = new Uint8Array(20);
        let h;
        switch (((a[o++] = s), s)) {
          case ft.CODE_START_A:
            h = ft.CODE_CODE_A;
            break;
          case ft.CODE_START_B:
            h = ft.CODE_CODE_B;
            break;
          case ft.CODE_START_C:
            h = ft.CODE_CODE_C;
            break;
          default:
            throw new E();
        }
        let c = !1,
          u = !1,
          d = "",
          g = i[0],
          f = i[1];
        const w = Int32Array.from([0, 0, 0, 0, 0, 0]);
        let A = 0,
          m = 0,
          _ = s,
          I = 0,
          S = !0,
          p = !1,
          T = !1;
        for (; !c; ) {
          const t = u;
          switch (
            ((u = !1),
            (A = m),
            (m = ft.decodeCode(e, w, f)),
            (a[o++] = m),
            m !== ft.CODE_STOP && (S = !0),
            m !== ft.CODE_STOP && (_ += ++I * m),
            (g = f),
            (f += w.reduce((t, e) => t + e, 0)),
            m)
          ) {
            case ft.CODE_START_A:
            case ft.CODE_START_B:
            case ft.CODE_START_C:
              throw new E();
          }
          switch (h) {
            case ft.CODE_CODE_A:
              if (m < 64)
                (d +=
                  T === p
                    ? String.fromCharCode(" ".charCodeAt(0) + m)
                    : String.fromCharCode(" ".charCodeAt(0) + m + 128)),
                  (T = !1);
              else if (m < 96)
                (d +=
                  T === p
                    ? String.fromCharCode(m - 64)
                    : String.fromCharCode(m + 64)),
                  (T = !1);
              else
                switch ((m !== ft.CODE_STOP && (S = !1), m)) {
                  case ft.CODE_FNC_1:
                    n &&
                      (0 === d.length
                        ? (d += "]C1")
                        : (d += String.fromCharCode(29)));
                    break;
                  case ft.CODE_FNC_2:
                  case ft.CODE_FNC_3:
                    break;
                  case ft.CODE_FNC_4_A:
                    !p && T
                      ? ((p = !0), (T = !1))
                      : p && T
                      ? ((p = !1), (T = !1))
                      : (T = !0);
                    break;
                  case ft.CODE_SHIFT:
                    (u = !0), (h = ft.CODE_CODE_B);
                    break;
                  case ft.CODE_CODE_B:
                    h = ft.CODE_CODE_B;
                    break;
                  case ft.CODE_CODE_C:
                    h = ft.CODE_CODE_C;
                    break;
                  case ft.CODE_STOP:
                    c = !0;
                }
              break;
            case ft.CODE_CODE_B:
              if (m < 96)
                (d +=
                  T === p
                    ? String.fromCharCode(" ".charCodeAt(0) + m)
                    : String.fromCharCode(" ".charCodeAt(0) + m + 128)),
                  (T = !1);
              else
                switch ((m !== ft.CODE_STOP && (S = !1), m)) {
                  case ft.CODE_FNC_1:
                    n &&
                      (0 === d.length
                        ? (d += "]C1")
                        : (d += String.fromCharCode(29)));
                    break;
                  case ft.CODE_FNC_2:
                  case ft.CODE_FNC_3:
                    break;
                  case ft.CODE_FNC_4_B:
                    !p && T
                      ? ((p = !0), (T = !1))
                      : p && T
                      ? ((p = !1), (T = !1))
                      : (T = !0);
                    break;
                  case ft.CODE_SHIFT:
                    (u = !0), (h = ft.CODE_CODE_A);
                    break;
                  case ft.CODE_CODE_A:
                    h = ft.CODE_CODE_A;
                    break;
                  case ft.CODE_CODE_C:
                    h = ft.CODE_CODE_C;
                    break;
                  case ft.CODE_STOP:
                    c = !0;
                }
              break;
            case ft.CODE_CODE_C:
              if (m < 100) m < 10 && (d += "0"), (d += m);
              else
                switch ((m !== ft.CODE_STOP && (S = !1), m)) {
                  case ft.CODE_FNC_1:
                    n &&
                      (0 === d.length
                        ? (d += "]C1")
                        : (d += String.fromCharCode(29)));
                    break;
                  case ft.CODE_CODE_A:
                    h = ft.CODE_CODE_A;
                    break;
                  case ft.CODE_CODE_B:
                    h = ft.CODE_CODE_B;
                    break;
                  case ft.CODE_STOP:
                    c = !0;
                }
          }
          t && (h = h === ft.CODE_CODE_A ? ft.CODE_CODE_B : ft.CODE_CODE_A);
        }
        const N = f - g;
        if (
          ((f = e.getNextUnset(f)),
          !e.isRange(f, Math.min(e.getSize(), f + (f - g) / 2), !1))
        )
          throw new R();
        if ((_ -= I * A) % 103 !== A) throw new l();
        const D = d.length;
        if (0 === D) throw new R();
        D > 0 &&
          S &&
          (d =
            h === ft.CODE_CODE_C ? d.substring(0, D - 2) : d.substring(0, D - 1));
        const y = (i[1] + i[0]) / 2,
          O = g + N / 2,
          M = a.length,
          b = new Uint8Array(M);
        for (let t = 0; t < M; t++) b[t] = a[t];
        const B = [new rt(y, t), new rt(O, t)];
        return new F(d, b, 0, B, k.CODE_128, new Date().getTime());
      }
    }
    (ft.CODE_PATTERNS = [
      Int32Array.from([2, 1, 2, 2, 2, 2]),
      Int32Array.from([2, 2, 2, 1, 2, 2]),
      Int32Array.from([2, 2, 2, 2, 2, 1]),
      Int32Array.from([1, 2, 1, 2, 2, 3]),
      Int32Array.from([1, 2, 1, 3, 2, 2]),
      Int32Array.from([1, 3, 1, 2, 2, 2]),
      Int32Array.from([1, 2, 2, 2, 1, 3]),
      Int32Array.from([1, 2, 2, 3, 1, 2]),
      Int32Array.from([1, 3, 2, 2, 1, 2]),
      Int32Array.from([2, 2, 1, 2, 1, 3]),
      Int32Array.from([2, 2, 1, 3, 1, 2]),
      Int32Array.from([2, 3, 1, 2, 1, 2]),
      Int32Array.from([1, 1, 2, 2, 3, 2]),
      Int32Array.from([1, 2, 2, 1, 3, 2]),
      Int32Array.from([1, 2, 2, 2, 3, 1]),
      Int32Array.from([1, 1, 3, 2, 2, 2]),
      Int32Array.from([1, 2, 3, 1, 2, 2]),
      Int32Array.from([1, 2, 3, 2, 2, 1]),
      Int32Array.from([2, 2, 3, 2, 1, 1]),
      Int32Array.from([2, 2, 1, 1, 3, 2]),
      Int32Array.from([2, 2, 1, 2, 3, 1]),
      Int32Array.from([2, 1, 3, 2, 1, 2]),
      Int32Array.from([2, 2, 3, 1, 1, 2]),
      Int32Array.from([3, 1, 2, 1, 3, 1]),
      Int32Array.from([3, 1, 1, 2, 2, 2]),
      Int32Array.from([3, 2, 1, 1, 2, 2]),
      Int32Array.from([3, 2, 1, 2, 2, 1]),
      Int32Array.from([3, 1, 2, 2, 1, 2]),
      Int32Array.from([3, 2, 2, 1, 1, 2]),
      Int32Array.from([3, 2, 2, 2, 1, 1]),
      Int32Array.from([2, 1, 2, 1, 2, 3]),
      Int32Array.from([2, 1, 2, 3, 2, 1]),
      Int32Array.from([2, 3, 2, 1, 2, 1]),
      Int32Array.from([1, 1, 1, 3, 2, 3]),
      Int32Array.from([1, 3, 1, 1, 2, 3]),
      Int32Array.from([1, 3, 1, 3, 2, 1]),
      Int32Array.from([1, 1, 2, 3, 1, 3]),
      Int32Array.from([1, 3, 2, 1, 1, 3]),
      Int32Array.from([1, 3, 2, 3, 1, 1]),
      Int32Array.from([2, 1, 1, 3, 1, 3]),
      Int32Array.from([2, 3, 1, 1, 1, 3]),
      Int32Array.from([2, 3, 1, 3, 1, 1]),
      Int32Array.from([1, 1, 2, 1, 3, 3]),
      Int32Array.from([1, 1, 2, 3, 3, 1]),
      Int32Array.from([1, 3, 2, 1, 3, 1]),
      Int32Array.from([1, 1, 3, 1, 2, 3]),
      Int32Array.from([1, 1, 3, 3, 2, 1]),
      Int32Array.from([1, 3, 3, 1, 2, 1]),
      Int32Array.from([3, 1, 3, 1, 2, 1]),
      Int32Array.from([2, 1, 1, 3, 3, 1]),
      Int32Array.from([2, 3, 1, 1, 3, 1]),
      Int32Array.from([2, 1, 3, 1, 1, 3]),
      Int32Array.from([2, 1, 3, 3, 1, 1]),
      Int32Array.from([2, 1, 3, 1, 3, 1]),
      Int32Array.from([3, 1, 1, 1, 2, 3]),
      Int32Array.from([3, 1, 1, 3, 2, 1]),
      Int32Array.from([3, 3, 1, 1, 2, 1]),
      Int32Array.from([3, 1, 2, 1, 1, 3]),
      Int32Array.from([3, 1, 2, 3, 1, 1]),
      Int32Array.from([3, 3, 2, 1, 1, 1]),
      Int32Array.from([3, 1, 4, 1, 1, 1]),
      Int32Array.from([2, 2, 1, 4, 1, 1]),
      Int32Array.from([4, 3, 1, 1, 1, 1]),
      Int32Array.from([1, 1, 1, 2, 2, 4]),
      Int32Array.from([1, 1, 1, 4, 2, 2]),
      Int32Array.from([1, 2, 1, 1, 2, 4]),
      Int32Array.from([1, 2, 1, 4, 2, 1]),
      Int32Array.from([1, 4, 1, 1, 2, 2]),
      Int32Array.from([1, 4, 1, 2, 2, 1]),
      Int32Array.from([1, 1, 2, 2, 1, 4]),
      Int32Array.from([1, 1, 2, 4, 1, 2]),
      Int32Array.from([1, 2, 2, 1, 1, 4]),
      Int32Array.from([1, 2, 2, 4, 1, 1]),
      Int32Array.from([1, 4, 2, 1, 1, 2]),
      Int32Array.from([1, 4, 2, 2, 1, 1]),
      Int32Array.from([2, 4, 1, 2, 1, 1]),
      Int32Array.from([2, 2, 1, 1, 1, 4]),
      Int32Array.from([4, 1, 3, 1, 1, 1]),
      Int32Array.from([2, 4, 1, 1, 1, 2]),
      Int32Array.from([1, 3, 4, 1, 1, 1]),
      Int32Array.from([1, 1, 1, 2, 4, 2]),
      Int32Array.from([1, 2, 1, 1, 4, 2]),
      Int32Array.from([1, 2, 1, 2, 4, 1]),
      Int32Array.from([1, 1, 4, 2, 1, 2]),
      Int32Array.from([1, 2, 4, 1, 1, 2]),
      Int32Array.from([1, 2, 4, 2, 1, 1]),
      Int32Array.from([4, 1, 1, 2, 1, 2]),
      Int32Array.from([4, 2, 1, 1, 1, 2]),
      Int32Array.from([4, 2, 1, 2, 1, 1]),
      Int32Array.from([2, 1, 2, 1, 4, 1]),
      Int32Array.from([2, 1, 4, 1, 2, 1]),
      Int32Array.from([4, 1, 2, 1, 2, 1]),
      Int32Array.from([1, 1, 1, 1, 4, 3]),
      Int32Array.from([1, 1, 1, 3, 4, 1]),
      Int32Array.from([1, 3, 1, 1, 4, 1]),
      Int32Array.from([1, 1, 4, 1, 1, 3]),
      Int32Array.from([1, 1, 4, 3, 1, 1]),
      Int32Array.from([4, 1, 1, 1, 1, 3]),
      Int32Array.from([4, 1, 1, 3, 1, 1]),
      Int32Array.from([1, 1, 3, 1, 4, 1]),
      Int32Array.from([1, 1, 4, 1, 3, 1]),
      Int32Array.from([3, 1, 1, 1, 4, 1]),
      Int32Array.from([4, 1, 1, 1, 3, 1]),
      Int32Array.from([2, 1, 1, 4, 1, 2]),
      Int32Array.from([2, 1, 1, 2, 1, 4]),
      Int32Array.from([2, 1, 1, 2, 3, 2]),
      Int32Array.from([2, 3, 3, 1, 1, 1, 2]),
    ]),
      (ft.MAX_AVG_VARIANCE = 0.25),
      (ft.MAX_INDIVIDUAL_VARIANCE = 0.7),
      (ft.CODE_SHIFT = 98),
      (ft.CODE_CODE_C = 99),
      (ft.CODE_CODE_B = 100),
      (ft.CODE_CODE_A = 101),
      (ft.CODE_FNC_1 = 102),
      (ft.CODE_FNC_2 = 97),
      (ft.CODE_FNC_3 = 96),
      (ft.CODE_FNC_4_A = 101),
      (ft.CODE_FNC_4_B = 100),
      (ft.CODE_START_A = 103),
      (ft.CODE_START_B = 104),
      (ft.CODE_START_C = 105),
      (ft.CODE_STOP = 106);
    class wt extends gt {
      constructor(t = !1, e = !1) {
        super(),
          (this.usingCheckDigit = t),
          (this.extendedMode = e),
          (this.decodeRowResult = ""),
          (this.counters = new Int32Array(9));
      }
      decodeRow(t, e, r) {
        let n = this.counters;
        n.fill(0), (this.decodeRowResult = "");
        let i,
          s,
          o = wt.findAsteriskPattern(e, n),
          a = e.getNextSet(o[1]),
          h = e.getSize();
        do {
          wt.recordPattern(e, a, n);
          let t = wt.toNarrowWidePattern(n);
          if (t < 0) throw new R();
          (i = wt.patternToChar(t)), (this.decodeRowResult += i), (s = a);
          for (let t of n) a += t;
          a = e.getNextSet(a);
        } while ("*" !== i);
        this.decodeRowResult = this.decodeRowResult.substring(
          0,
          this.decodeRowResult.length - 1
        );
        let c,
          u = 0;
        for (let t of n) u += t;
        if (a !== h && 2 * (a - s - u) < u) throw new R();
        if (this.usingCheckDigit) {
          let t = this.decodeRowResult.length - 1,
            e = 0;
          for (let r = 0; r < t; r++)
            e += wt.ALPHABET_STRING.indexOf(this.decodeRowResult.charAt(r));
          if (
            this.decodeRowResult.charAt(t) !== wt.ALPHABET_STRING.charAt(e % 43)
          )
            throw new l();
          this.decodeRowResult = this.decodeRowResult.substring(0, t);
        }
        if (0 === this.decodeRowResult.length) throw new R();
        c = this.extendedMode
          ? wt.decodeExtended(this.decodeRowResult)
          : this.decodeRowResult;
        let d = (o[1] + o[0]) / 2,
          g = s + u / 2;
        return new F(
          c,
          null,
          0,
          [new rt(d, t), new rt(g, t)],
          k.CODE_39,
          new Date().getTime()
        );
      }
      static findAsteriskPattern(t, e) {
        let r = t.getSize(),
          n = t.getNextSet(0),
          i = 0,
          s = n,
          o = !1,
          a = e.length;
        for (let l = n; l < r; l++)
          if (t.get(l) !== o) e[i]++;
          else {
            if (i === a - 1) {
              if (
                this.toNarrowWidePattern(e) === wt.ASTERISK_ENCODING &&
                t.isRange(Math.max(0, s - Math.floor((l - s) / 2)), s, !1)
              )
                return [s, l];
              (s += e[0] + e[1]),
                e.copyWithin(0, 2, 2 + i - 1),
                (e[i - 1] = 0),
                (e[i] = 0),
                i--;
            } else i++;
            (e[i] = 1), (o = !o);
          }
        throw new R();
      }
      static toNarrowWidePattern(t) {
        let e,
          r = t.length,
          n = 0;
        do {
          let i = 2147483647;
          for (let e of t) e < i && e > n && (i = e);
          (n = i), (e = 0);
          let s = 0,
            o = 0;
          for (let i = 0; i < r; i++) {
            let a = t[i];
            a > n && ((o |= 1 << (r - 1 - i)), e++, (s += a));
          }
          if (3 === e) {
            for (let i = 0; i < r && e > 0; i++) {
              let r = t[i];
              if (r > n && (e--, 2 * r >= s)) return -1;
            }
            return o;
          }
        } while (e > 3);
        return -1;
      }
      static patternToChar(t) {
        for (let e = 0; e < wt.CHARACTER_ENCODINGS.length; e++)
          if (wt.CHARACTER_ENCODINGS[e] === t)
            return wt.ALPHABET_STRING.charAt(e);
        if (t === wt.ASTERISK_ENCODING) return "*";
        throw new R();
      }
      static decodeExtended(t) {
        let e = t.length,
          r = "";
        for (let n = 0; n < e; n++) {
          let e = t.charAt(n);
          if ("+" === e || "$" === e || "%" === e || "/" === e) {
            let i = t.charAt(n + 1),
              s = "\0";
            switch (e) {
              case "+":
                if (!(i >= "A" && i <= "Z")) throw new E();
                s = String.fromCharCode(i.charCodeAt(0) + 32);
                break;
              case "$":
                if (!(i >= "A" && i <= "Z")) throw new E();
                s = String.fromCharCode(i.charCodeAt(0) - 64);
                break;
              case "%":
                if (i >= "A" && i <= "E")
                  s = String.fromCharCode(i.charCodeAt(0) - 38);
                else if (i >= "F" && i <= "J")
                  s = String.fromCharCode(i.charCodeAt(0) - 11);
                else if (i >= "K" && i <= "O")
                  s = String.fromCharCode(i.charCodeAt(0) + 16);
                else if (i >= "P" && i <= "T")
                  s = String.fromCharCode(i.charCodeAt(0) + 43);
                else if ("U" === i) s = "\0";
                else if ("V" === i) s = "@";
                else if ("W" === i) s = "`";
                else {
                  if ("X" !== i && "Y" !== i && "Z" !== i) throw new E();
                  s = "";
                }
                break;
              case "/":
                if (i >= "A" && i <= "O")
                  s = String.fromCharCode(i.charCodeAt(0) - 32);
                else {
                  if ("Z" !== i) throw new E();
                  s = ":";
                }
            }
            (r += s), n++;
          } else r += e;
        }
        return r;
      }
    }
    (wt.ALPHABET_STRING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"),
      (wt.CHARACTER_ENCODINGS = [
        52, 289, 97, 352, 49, 304, 112, 37, 292, 100, 265, 73, 328, 25, 280, 88,
        13, 268, 76, 28, 259, 67, 322, 19, 274, 82, 7, 262, 70, 22, 385, 193, 448,
        145, 400, 208, 133, 388, 196, 168, 162, 138, 42,
      ]),
      (wt.ASTERISK_ENCODING = 148);
    class At extends gt {
      constructor() {
        super(...arguments), (this.narrowLineWidth = -1);
      }
      decodeRow(t, e, r) {
        let n = this.decodeStart(e),
          i = this.decodeEnd(e),
          s = new p();
        At.decodeMiddle(e, n[1], i[0], s);
        let o = s.toString(),
          a = null;
        null != r && (a = r.get(C.ALLOWED_LENGTHS)),
          null == a && (a = At.DEFAULT_ALLOWED_LENGTHS);
        let l = o.length,
          h = !1,
          c = 0;
        for (let t of a) {
          if (l === t) {
            h = !0;
            break;
          }
          t > c && (c = t);
        }
        if ((!h && l > c && (h = !0), !h)) throw new E();
        const u = [new rt(n[1], t), new rt(i[0], t)];
        return new F(o, null, 0, u, k.ITF, new Date().getTime());
      }
      static decodeMiddle(t, e, r, n) {
        let i = new Int32Array(10),
          s = new Int32Array(5),
          o = new Int32Array(5);
        for (i.fill(0), s.fill(0), o.fill(0); e < r; ) {
          gt.recordPattern(t, e, i);
          for (let t = 0; t < 5; t++) {
            let e = 2 * t;
            (s[t] = i[e]), (o[t] = i[e + 1]);
          }
          let r = At.decodeDigit(s);
          n.append(r.toString()),
            (r = this.decodeDigit(o)),
            n.append(r.toString()),
            i.forEach(function (t) {
              e += t;
            });
        }
      }
      decodeStart(t) {
        let e = At.skipWhiteSpace(t),
          r = At.findGuardPattern(t, e, At.START_PATTERN);
        return (
          (this.narrowLineWidth = (r[1] - r[0]) / 4),
          this.validateQuietZone(t, r[0]),
          r
        );
      }
      validateQuietZone(t, e) {
        let r = 10 * this.narrowLineWidth;
        r = r < e ? r : e;
        for (let n = e - 1; r > 0 && n >= 0 && !t.get(n); n--) r--;
        if (0 !== r) throw new R();
      }
      static skipWhiteSpace(t) {
        const e = t.getSize(),
          r = t.getNextSet(0);
        if (r === e) throw new R();
        return r;
      }
      decodeEnd(t) {
        t.reverse();
        try {
          let e,
            r = At.skipWhiteSpace(t);
          try {
            e = At.findGuardPattern(t, r, At.END_PATTERN_REVERSED[0]);
          } catch (n) {
            n instanceof R &&
              (e = At.findGuardPattern(t, r, At.END_PATTERN_REVERSED[1]));
          }
          this.validateQuietZone(t, e[0]);
          let n = e[0];
          return (e[0] = t.getSize() - e[1]), (e[1] = t.getSize() - n), e;
        } finally {
          t.reverse();
        }
      }
      static findGuardPattern(t, e, r) {
        let n = r.length,
          i = new Int32Array(n),
          s = t.getSize(),
          o = !1,
          a = 0,
          l = e;
        i.fill(0);
        for (let h = e; h < s; h++)
          if (t.get(h) !== o) i[a]++;
          else {
            if (a === n - 1) {
              if (
                gt.patternMatchVariance(i, r, At.MAX_INDIVIDUAL_VARIANCE) <
                At.MAX_AVG_VARIANCE
              )
                return [l, h];
              (l += i[0] + i[1]),
                c.arraycopy(i, 2, i, 0, a - 1),
                (i[a - 1] = 0),
                (i[a] = 0),
                a--;
            } else a++;
            (i[a] = 1), (o = !o);
          }
        throw new R();
      }
      static decodeDigit(t) {
        let e = At.MAX_AVG_VARIANCE,
          r = -1,
          n = At.PATTERNS.length;
        for (let i = 0; i < n; i++) {
          let n = At.PATTERNS[i],
            s = gt.patternMatchVariance(t, n, At.MAX_INDIVIDUAL_VARIANCE);
          s < e ? ((e = s), (r = i)) : s === e && (r = -1);
        }
        if (r >= 0) return r % 10;
        throw new R();
      }
    }
    (At.PATTERNS = [
      Int32Array.from([1, 1, 2, 2, 1]),
      Int32Array.from([2, 1, 1, 1, 2]),
      Int32Array.from([1, 2, 1, 1, 2]),
      Int32Array.from([2, 2, 1, 1, 1]),
      Int32Array.from([1, 1, 2, 1, 2]),
      Int32Array.from([2, 1, 2, 1, 1]),
      Int32Array.from([1, 2, 2, 1, 1]),
      Int32Array.from([1, 1, 1, 2, 2]),
      Int32Array.from([2, 1, 1, 2, 1]),
      Int32Array.from([1, 2, 1, 2, 1]),
      Int32Array.from([1, 1, 3, 3, 1]),
      Int32Array.from([3, 1, 1, 1, 3]),
      Int32Array.from([1, 3, 1, 1, 3]),
      Int32Array.from([3, 3, 1, 1, 1]),
      Int32Array.from([1, 1, 3, 1, 3]),
      Int32Array.from([3, 1, 3, 1, 1]),
      Int32Array.from([1, 3, 3, 1, 1]),
      Int32Array.from([1, 1, 1, 3, 3]),
      Int32Array.from([3, 1, 1, 3, 1]),
      Int32Array.from([1, 3, 1, 3, 1]),
    ]),
      (At.MAX_AVG_VARIANCE = 0.38),
      (At.MAX_INDIVIDUAL_VARIANCE = 0.5),
      (At.DEFAULT_ALLOWED_LENGTHS = [6, 8, 10, 12, 14]),
      (At.START_PATTERN = Int32Array.from([1, 1, 1, 1])),
      (At.END_PATTERN_REVERSED = [
        Int32Array.from([1, 1, 2]),
        Int32Array.from([1, 1, 3]),
      ]);
    class Ct extends gt {
      constructor() {
        super(...arguments), (this.decodeRowStringBuffer = "");
      }
      static findStartGuardPattern(t) {
        let e,
          r = !1,
          n = 0,
          i = Int32Array.from([0, 0, 0]);
        for (; !r; ) {
          i = Int32Array.from([0, 0, 0]);
          let s = (e = Ct.findGuardPattern(
              t,
              n,
              !1,
              this.START_END_PATTERN,
              i
            ))[0],
            o = s - ((n = e[1]) - s);
          o >= 0 && (r = t.isRange(o, s, !1));
        }
        return e;
      }
      static checkChecksum(t) {
        return Ct.checkStandardUPCEANChecksum(t);
      }
      static checkStandardUPCEANChecksum(t) {
        let e = t.length;
        if (0 === e) return !1;
        let r = parseInt(t.charAt(e - 1), 10);
        return Ct.getStandardUPCEANChecksum(t.substring(0, e - 1)) === r;
      }
      static getStandardUPCEANChecksum(t) {
        let e = t.length,
          r = 0;
        for (let n = e - 1; n >= 0; n -= 2) {
          let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
          if (e < 0 || e > 9) throw new E();
          r += e;
        }
        r *= 3;
        for (let n = e - 2; n >= 0; n -= 2) {
          let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
          if (e < 0 || e > 9) throw new E();
          r += e;
        }
        return (1e3 - r) % 10;
      }
      static decodeEnd(t, e) {
        return Ct.findGuardPattern(
          t,
          e,
          !1,
          Ct.START_END_PATTERN,
          new Int32Array(Ct.START_END_PATTERN.length).fill(0)
        );
      }
      static findGuardPatternWithoutCounters(t, e, r, n) {
        return this.findGuardPattern(t, e, r, n, new Int32Array(n.length));
      }
      static findGuardPattern(t, e, r, n, i) {
        let s = t.getSize(),
          o = 0,
          a = (e = r ? t.getNextUnset(e) : t.getNextSet(e)),
          l = n.length,
          h = r;
        for (let r = e; r < s; r++)
          if (t.get(r) !== h) i[o]++;
          else {
            if (o === l - 1) {
              if (
                gt.patternMatchVariance(i, n, Ct.MAX_INDIVIDUAL_VARIANCE) <
                Ct.MAX_AVG_VARIANCE
              )
                return Int32Array.from([a, r]);
              a += i[0] + i[1];
              let t = i.slice(2, i.length - 1);
              for (let e = 0; e < o - 1; e++) i[e] = t[e];
              (i[o - 1] = 0), (i[o] = 0), o--;
            } else o++;
            (i[o] = 1), (h = !h);
          }
        throw new R();
      }
      static decodeDigit(t, e, r, n) {
        this.recordPattern(t, r, e);
        let i = this.MAX_AVG_VARIANCE,
          s = -1,
          o = n.length;
        for (let t = 0; t < o; t++) {
          let r = n[t],
            o = gt.patternMatchVariance(e, r, Ct.MAX_INDIVIDUAL_VARIANCE);
          o < i && ((i = o), (s = t));
        }
        if (s >= 0) return s;
        throw new R();
      }
    }
    (Ct.MAX_AVG_VARIANCE = 0.48),
      (Ct.MAX_INDIVIDUAL_VARIANCE = 0.7),
      (Ct.START_END_PATTERN = Int32Array.from([1, 1, 1])),
      (Ct.MIDDLE_PATTERN = Int32Array.from([1, 1, 1, 1, 1])),
      (Ct.END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1])),
      (Ct.L_PATTERNS = [
        Int32Array.from([3, 2, 1, 1]),
        Int32Array.from([2, 2, 2, 1]),
        Int32Array.from([2, 1, 2, 2]),
        Int32Array.from([1, 4, 1, 1]),
        Int32Array.from([1, 1, 3, 2]),
        Int32Array.from([1, 2, 3, 1]),
        Int32Array.from([1, 1, 1, 4]),
        Int32Array.from([1, 3, 1, 2]),
        Int32Array.from([1, 2, 1, 3]),
        Int32Array.from([3, 1, 1, 2]),
      ]);
    class Et {
      constructor() {
        (this.CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5]),
          (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])),
          (this.decodeRowStringBuffer = "");
      }
      decodeRow(t, e, r) {
        let n = this.decodeRowStringBuffer,
          i = this.decodeMiddle(e, r, n),
          s = n.toString(),
          o = Et.parseExtensionString(s),
          a = [new rt((r[0] + r[1]) / 2, t), new rt(i, t)],
          l = new F(s, null, 0, a, k.UPC_EAN_EXTENSION, new Date().getTime());
        return null != o && l.putAllMetadata(o), l;
      }
      decodeMiddle(t, e, r) {
        let n = this.decodeMiddleCounters;
        (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0);
        let i = t.getSize(),
          s = e[1],
          o = 0;
        for (let e = 0; e < 5 && s < i; e++) {
          let i = Ct.decodeDigit(t, n, s, Ct.L_AND_G_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + (i % 10));
          for (let t of n) s += t;
          i >= 10 && (o |= 1 << (4 - e)),
            4 !== e && ((s = t.getNextSet(s)), (s = t.getNextUnset(s)));
        }
        if (5 !== r.length) throw new R();
        let a = this.determineCheckDigit(o);
        if (Et.extensionChecksum(r.toString()) !== a) throw new R();
        return s;
      }
      static extensionChecksum(t) {
        let e = t.length,
          r = 0;
        for (let n = e - 2; n >= 0; n -= 2)
          r += t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
        r *= 3;
        for (let n = e - 1; n >= 0; n -= 2)
          r += t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
        return (r *= 3) % 10;
      }
      determineCheckDigit(t) {
        for (let e = 0; e < 10; e++)
          if (t === this.CHECK_DIGIT_ENCODINGS[e]) return e;
        throw new R();
      }
      static parseExtensionString(t) {
        if (5 !== t.length) return null;
        let e = Et.parseExtension5String(t);
        return null == e ? null : new Map([[W.SUGGESTED_PRICE, e]]);
      }
      static parseExtension5String(t) {
        let e;
        switch (t.charAt(0)) {
          case "0":
            e = "Â£";
            break;
          case "5":
            e = "$";
            break;
          case "9":
            switch (t) {
              case "90000":
                return null;
              case "99991":
                return "0.00";
              case "99990":
                return "Used";
            }
            e = "";
            break;
          default:
            e = "";
        }
        let r = parseInt(t.substring(1)),
          n = r % 100;
        return e + (r / 100).toString() + "." + (n < 10 ? "0" + n : n.toString());
      }
    }
    class mt {
      constructor() {
        (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])),
          (this.decodeRowStringBuffer = "");
      }
      decodeRow(t, e, r) {
        let n = this.decodeRowStringBuffer,
          i = this.decodeMiddle(e, r, n),
          s = n.toString(),
          o = mt.parseExtensionString(s),
          a = [new rt((r[0] + r[1]) / 2, t), new rt(i, t)],
          l = new F(s, null, 0, a, k.UPC_EAN_EXTENSION, new Date().getTime());
        return null != o && l.putAllMetadata(o), l;
      }
      decodeMiddle(t, e, r) {
        let n = this.decodeMiddleCounters;
        (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0);
        let i = t.getSize(),
          s = e[1],
          o = 0;
        for (let e = 0; e < 2 && s < i; e++) {
          let i = Ct.decodeDigit(t, n, s, Ct.L_AND_G_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + (i % 10));
          for (let t of n) s += t;
          i >= 10 && (o |= 1 << (1 - e)),
            1 !== e && ((s = t.getNextSet(s)), (s = t.getNextUnset(s)));
        }
        if (2 !== r.length) throw new R();
        if (parseInt(r.toString()) % 4 !== o) throw new R();
        return s;
      }
      static parseExtensionString(t) {
        return 2 !== t.length ? null : new Map([[W.ISSUE_NUMBER, parseInt(t)]]);
      }
    }
    class _t {
      static decodeRow(t, e, r) {
        let n = Ct.findGuardPattern(
          e,
          r,
          !1,
          this.EXTENSION_START_PATTERN,
          new Int32Array(this.EXTENSION_START_PATTERN.length).fill(0)
        );
        try {
          return new Et().decodeRow(t, e, n);
        } catch (r) {
          return new mt().decodeRow(t, e, n);
        }
      }
    }
    _t.EXTENSION_START_PATTERN = Int32Array.from([1, 1, 2]);
    class It extends Ct {
      constructor() {
        super(),
          (this.decodeRowStringBuffer = ""),
          (It.L_AND_G_PATTERNS = It.L_PATTERNS.map((t) => Int32Array.from(t)));
        for (let t = 10; t < 20; t++) {
          let e = It.L_PATTERNS[t - 10],
            r = new Int32Array(e.length);
          for (let t = 0; t < e.length; t++) r[t] = e[e.length - t - 1];
          It.L_AND_G_PATTERNS[t] = r;
        }
      }
      decodeRow(t, e, r) {
        let n = It.findStartGuardPattern(e),
          i = null == r ? null : r.get(C.NEED_RESULT_POINT_CALLBACK);
        if (null != i) {
          const e = new rt((n[0] + n[1]) / 2, t);
          i.foundPossibleResultPoint(e);
        }
        let s = this.decodeMiddle(e, n, this.decodeRowStringBuffer),
          o = s.rowOffset,
          a = s.resultString;
        if (null != i) {
          const e = new rt(o, t);
          i.foundPossibleResultPoint(e);
        }
        let h = It.decodeEnd(e, o);
        if (null != i) {
          const e = new rt((h[0] + h[1]) / 2, t);
          i.foundPossibleResultPoint(e);
        }
        let c = h[1],
          u = c + (c - h[0]);
        if (u >= e.getSize() || !e.isRange(c, u, !1)) throw new R();
        let d = a.toString();
        if (d.length < 8) throw new E();
        if (!It.checkChecksum(d)) throw new l();
        let g = (n[1] + n[0]) / 2,
          f = (h[1] + h[0]) / 2,
          w = this.getBarcodeFormat(),
          A = [new rt(g, t), new rt(f, t)],
          m = new F(d, null, 0, A, w, new Date().getTime()),
          _ = 0;
        try {
          let r = _t.decodeRow(t, e, h[1]);
          m.putMetadata(W.UPC_EAN_EXTENSION, r.getText()),
            m.putAllMetadata(r.getResultMetadata()),
            m.addResultPoints(r.getResultPoints()),
            (_ = r.getText().length);
        } catch (t) {}
        let I = null == r ? null : r.get(C.ALLOWED_EAN_EXTENSIONS);
        if (null != I) {
          let t = !1;
          for (let e in I)
            if (_.toString() === e) {
              t = !0;
              break;
            }
          if (!t) throw new R();
        }
        return w === k.EAN_13 || k.UPC_A, m;
      }
      static checkChecksum(t) {
        return It.checkStandardUPCEANChecksum(t);
      }
      static checkStandardUPCEANChecksum(t) {
        let e = t.length;
        if (0 === e) return !1;
        let r = parseInt(t.charAt(e - 1), 10);
        return It.getStandardUPCEANChecksum(t.substring(0, e - 1)) === r;
      }
      static getStandardUPCEANChecksum(t) {
        let e = t.length,
          r = 0;
        for (let n = e - 1; n >= 0; n -= 2) {
          let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
          if (e < 0 || e > 9) throw new E();
          r += e;
        }
        r *= 3;
        for (let n = e - 2; n >= 0; n -= 2) {
          let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0);
          if (e < 0 || e > 9) throw new E();
          r += e;
        }
        return (1e3 - r) % 10;
      }
      static decodeEnd(t, e) {
        return It.findGuardPattern(
          t,
          e,
          !1,
          It.START_END_PATTERN,
          new Int32Array(It.START_END_PATTERN.length).fill(0)
        );
      }
    }
    class St extends It {
      constructor() {
        super(), (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]));
      }
      decodeMiddle(t, e, r) {
        let n = this.decodeMiddleCounters;
        (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0);
        let i = t.getSize(),
          s = e[1],
          o = 0;
        for (let e = 0; e < 6 && s < i; e++) {
          let i = It.decodeDigit(t, n, s, It.L_AND_G_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + (i % 10));
          for (let t of n) s += t;
          i >= 10 && (o |= 1 << (5 - e));
        }
        (r = St.determineFirstDigit(r, o)),
          (s = It.findGuardPattern(
            t,
            s,
            !0,
            It.MIDDLE_PATTERN,
            new Int32Array(It.MIDDLE_PATTERN.length).fill(0)
          )[1]);
        for (let e = 0; e < 6 && s < i; e++) {
          let e = It.decodeDigit(t, n, s, It.L_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + e);
          for (let t of n) s += t;
        }
        return { rowOffset: s, resultString: r };
      }
      getBarcodeFormat() {
        return k.EAN_13;
      }
      static determineFirstDigit(t, e) {
        for (let r = 0; r < 10; r++)
          if (e === this.FIRST_DIGIT_ENCODINGS[r])
            return (t = String.fromCharCode("0".charCodeAt(0) + r) + t);
        throw new R();
      }
    }
    St.FIRST_DIGIT_ENCODINGS = [0, 11, 13, 14, 19, 25, 28, 21, 22, 26];
    class pt extends It {
      constructor() {
        super(), (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0]));
      }
      decodeMiddle(t, e, r) {
        const n = this.decodeMiddleCounters;
        (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0);
        let i = t.getSize(),
          s = e[1];
        for (let e = 0; e < 4 && s < i; e++) {
          let e = It.decodeDigit(t, n, s, It.L_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + e);
          for (let t of n) s += t;
        }
        s = It.findGuardPattern(
          t,
          s,
          !0,
          It.MIDDLE_PATTERN,
          new Int32Array(It.MIDDLE_PATTERN.length).fill(0)
        )[1];
        for (let e = 0; e < 4 && s < i; e++) {
          let e = It.decodeDigit(t, n, s, It.L_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + e);
          for (let t of n) s += t;
        }
        return { rowOffset: s, resultString: r };
      }
      getBarcodeFormat() {
        return k.EAN_8;
      }
    }
    class Tt extends It {
      constructor() {
        super(...arguments), (this.ean13Reader = new St());
      }
      getBarcodeFormat() {
        return k.UPC_A;
      }
      decode(t, e) {
        return this.maybeReturnResult(this.ean13Reader.decode(t));
      }
      decodeRow(t, e, r) {
        return this.maybeReturnResult(this.ean13Reader.decodeRow(t, e, r));
      }
      decodeMiddle(t, e, r) {
        return this.ean13Reader.decodeMiddle(t, e, r);
      }
      maybeReturnResult(t) {
        let e = t.getText();
        if ("0" === e.charAt(0)) {
          let r = new F(e.substring(1), null, null, t.getResultPoints(), k.UPC_A);
          return (
            null != t.getResultMetadata() &&
              r.putAllMetadata(t.getResultMetadata()),
            r
          );
        }
        throw new R();
      }
      reset() {
        this.ean13Reader.reset();
      }
    }
    class Rt extends It {
      constructor() {
        super(), (this.decodeMiddleCounters = new Int32Array(4));
      }
      decodeMiddle(t, e, r) {
        const n = this.decodeMiddleCounters.map((t) => t);
        (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0);
        const i = t.getSize();
        let s = e[1],
          o = 0;
        for (let e = 0; e < 6 && s < i; e++) {
          const i = Rt.decodeDigit(t, n, s, Rt.L_AND_G_PATTERNS);
          r += String.fromCharCode("0".charCodeAt(0) + (i % 10));
          for (let t of n) s += t;
          i >= 10 && (o |= 1 << (5 - e));
        }
        return Rt.determineNumSysAndCheckDigit(new p(r), o), s;
      }
      decodeEnd(t, e) {
        return Rt.findGuardPatternWithoutCounters(
          t,
          e,
          !0,
          Rt.MIDDLE_END_PATTERN
        );
      }
      checkChecksum(t) {
        return It.checkChecksum(Rt.convertUPCEtoUPCA(t));
      }
      static determineNumSysAndCheckDigit(t, e) {
        for (let r = 0; r <= 1; r++)
          for (let n = 0; n < 10; n++)
            if (e === this.NUMSYS_AND_CHECK_DIGIT_PATTERNS[r][n])
              return t.insert(0, "0" + r), void t.append("0" + n);
        throw R.getNotFoundInstance();
      }
      getBarcodeFormat() {
        return k.UPC_E;
      }
      static convertUPCEtoUPCA(t) {
        const e = t
            .slice(1, 7)
            .split("")
            .map((t) => t.charCodeAt(0)),
          r = new p();
        r.append(t.charAt(0));
        let n = e[5];
        switch (n) {
          case 0:
          case 1:
          case 2:
            r.appendChars(e, 0, 2),
              r.append(n),
              r.append("0000"),
              r.appendChars(e, 2, 3);
            break;
          case 3:
            r.appendChars(e, 0, 3), r.append("00000"), r.appendChars(e, 3, 2);
            break;
          case 4:
            r.appendChars(e, 0, 4), r.append("00000"), r.append(e[4]);
            break;
          default:
            r.appendChars(e, 0, 5), r.append("0000"), r.append(n);
        }
        return t.length >= 8 && r.append(t.charAt(7)), r.toString();
      }
    }
    (Rt.MIDDLE_END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1])),
      (Rt.NUMSYS_AND_CHECK_DIGIT_PATTERNS = [
        Int32Array.from([56, 52, 50, 49, 44, 38, 35, 42, 41, 37]),
        Int32Array.from([7, 11, 13, 14, 19, 25, 28, 21, 22, 1]),
      ]);
    class Nt extends gt {
      constructor(t) {
        super();
        let e = null == t ? null : t.get(C.POSSIBLE_FORMATS),
          r = [];
        null != e &&
          (e.indexOf(k.EAN_13) > -1
            ? r.push(new St())
            : e.indexOf(k.UPC_A) > -1 && r.push(new Tt()),
          e.indexOf(k.EAN_8) > -1 && r.push(new pt()),
          e.indexOf(k.UPC_E) > -1 && r.push(new Rt())),
          0 === r.length &&
            (r.push(new St()), r.push(new pt()), r.push(new Rt())),
          (this.readers = r);
      }
      decodeRow(t, e, r) {
        for (let n of this.readers)
          try {
            const i = n.decodeRow(t, e, r),
              s =
                i.getBarcodeFormat() === k.EAN_13 &&
                "0" === i.getText().charAt(0),
              o = null == r ? null : r.get(C.POSSIBLE_FORMATS),
              a = null == o || o.includes(k.UPC_A);
            if (s && a) {
              const t = i.getRawBytes(),
                e = new F(
                  i.getText().substring(1),
                  t,
                  t.length,
                  i.getResultPoints(),
                  k.UPC_A
                );
              return e.putAllMetadata(i.getResultMetadata()), e;
            }
            return i;
          } catch (t) {}
        throw new R();
      }
      reset() {
        for (let t of this.readers) t.reset();
      }
    }
    class Dt extends gt {
      constructor() {
        super(),
          (this.decodeFinderCounters = new Int32Array(4)),
          (this.dataCharacterCounters = new Int32Array(8)),
          (this.oddRoundingErrors = new Array(4)),
          (this.evenRoundingErrors = new Array(4)),
          (this.oddCounts = new Array(this.dataCharacterCounters.length / 2)),
          (this.evenCounts = new Array(this.dataCharacterCounters.length / 2));
      }
      getDecodeFinderCounters() {
        return this.decodeFinderCounters;
      }
      getDataCharacterCounters() {
        return this.dataCharacterCounters;
      }
      getOddRoundingErrors() {
        return this.oddRoundingErrors;
      }
      getEvenRoundingErrors() {
        return this.evenRoundingErrors;
      }
      getOddCounts() {
        return this.oddCounts;
      }
      getEvenCounts() {
        return this.evenCounts;
      }
      parseFinderValue(t, e) {
        for (let r = 0; r < e.length; r++)
          if (
            gt.patternMatchVariance(t, e[r], Dt.MAX_INDIVIDUAL_VARIANCE) <
            Dt.MAX_AVG_VARIANCE
          )
            return r;
        throw new R();
      }
      static count(t) {
        return tt.sum(new Int32Array(t));
      }
      static increment(t, e) {
        let r = 0,
          n = e[0];
        for (let i = 1; i < t.length; i++) e[i] > n && ((n = e[i]), (r = i));
        t[r]++;
      }
      static decrement(t, e) {
        let r = 0,
          n = e[0];
        for (let i = 1; i < t.length; i++) e[i] < n && ((n = e[i]), (r = i));
        t[r]--;
      }
      static isFinderPattern(t) {
        let e = t[0] + t[1],
          r = e / (e + t[2] + t[3]);
        if (
          r >= Dt.MIN_FINDER_PATTERN_RATIO &&
          r <= Dt.MAX_FINDER_PATTERN_RATIO
        ) {
          let e = Number.MAX_SAFE_INTEGER,
            r = Number.MIN_SAFE_INTEGER;
          for (let n of t) n > r && (r = n), n < e && (e = n);
          return r < 10 * e;
        }
        return !1;
      }
    }
    (Dt.MAX_AVG_VARIANCE = 0.2),
      (Dt.MAX_INDIVIDUAL_VARIANCE = 0.45),
      (Dt.MIN_FINDER_PATTERN_RATIO = 9.5 / 12),
      (Dt.MAX_FINDER_PATTERN_RATIO = 12.5 / 14);
    class yt {
      constructor(t, e) {
        (this.value = t), (this.checksumPortion = e);
      }
      getValue() {
        return this.value;
      }
      getChecksumPortion() {
        return this.checksumPortion;
      }
      toString() {
        return this.value + "(" + this.checksumPortion + ")";
      }
      equals(t) {
        if (!(t instanceof yt)) return !1;
        const e = t;
        return (
          this.value === e.value && this.checksumPortion === e.checksumPortion
        );
      }
      hashCode() {
        return this.value ^ this.checksumPortion;
      }
    }
    class Ot {
      constructor(t, e, r, n, i) {
        (this.value = t),
          (this.startEnd = e),
          (this.value = t),
          (this.startEnd = e),
          (this.resultPoints = new Array()),
          this.resultPoints.push(new rt(r, i)),
          this.resultPoints.push(new rt(n, i));
      }
      getValue() {
        return this.value;
      }
      getStartEnd() {
        return this.startEnd;
      }
      getResultPoints() {
        return this.resultPoints;
      }
      equals(t) {
        if (!(t instanceof Ot)) return !1;
        const e = t;
        return this.value === e.value;
      }
      hashCode() {
        return this.value;
      }
    }
    class Mt {
      constructor() {}
      static getRSSvalue(t, e, r) {
        let n = 0;
        for (let e of t) n += e;
        let i = 0,
          s = 0,
          o = t.length;
        for (let a = 0; a < o - 1; a++) {
          let l;
          for (l = 1, s |= 1 << a; l < t[a]; l++, s &= ~(1 << a)) {
            let t = Mt.combins(n - l - 1, o - a - 2);
            if (
              (r &&
                0 === s &&
                n - l - (o - a - 1) >= o - a - 1 &&
                (t -= Mt.combins(n - l - (o - a), o - a - 2)),
              o - a - 1 > 1)
            ) {
              let r = 0;
              for (let t = n - l - (o - a - 2); t > e; t--)
                r += Mt.combins(n - l - t - 1, o - a - 3);
              t -= r * (o - 1 - a);
            } else n - l > e && t--;
            i += t;
          }
          n -= l;
        }
        return i;
      }
      static combins(t, e) {
        let r, n;
        t - e > e ? ((n = e), (r = t - e)) : ((n = t - e), (r = e));
        let i = 1,
          s = 1;
        for (let e = t; e > r; e--) (i *= e), s <= n && ((i /= s), s++);
        for (; s <= n; ) (i /= s), s++;
        return i;
      }
    }
    class bt {
      static buildBitArray(t) {
        let e = 2 * t.length - 1;
        null == t[t.length - 1].getRightChar() && (e -= 1);
        let r = new w(12 * e),
          n = 0,
          i = t[0].getRightChar().getValue();
        for (let t = 11; t >= 0; --t) 0 != (i & (1 << t)) && r.set(n), n++;
        for (let e = 1; e < t.length; ++e) {
          let i = t[e],
            s = i.getLeftChar().getValue();
          for (let t = 11; t >= 0; --t) 0 != (s & (1 << t)) && r.set(n), n++;
          if (null != i.getRightChar()) {
            let t = i.getRightChar().getValue();
            for (let e = 11; e >= 0; --e) 0 != (t & (1 << e)) && r.set(n), n++;
          }
        }
        return r;
      }
    }
    class Bt {
      constructor(t, e) {
        e
          ? (this.decodedInformation = null)
          : ((this.finished = t), (this.decodedInformation = e));
      }
      getDecodedInformation() {
        return this.decodedInformation;
      }
      isFinished() {
        return this.finished;
      }
    }
    class Pt {
      constructor(t) {
        this.newPosition = t;
      }
      getNewPosition() {
        return this.newPosition;
      }
    }
    class Lt extends Pt {
      constructor(t, e) {
        super(t), (this.value = e);
      }
      getValue() {
        return this.value;
      }
      isFNC1() {
        return this.value === Lt.FNC1;
      }
    }
    Lt.FNC1 = "$";
    class Ft extends Pt {
      constructor(t, e, r) {
        super(t),
          r
            ? ((this.remaining = !0), (this.remainingValue = this.remainingValue))
            : ((this.remaining = !1), (this.remainingValue = 0)),
          (this.newString = e);
      }
      getNewString() {
        return this.newString;
      }
      isRemaining() {
        return this.remaining;
      }
      getRemainingValue() {
        return this.remainingValue;
      }
    }
    class vt extends Pt {
      constructor(t, e, r) {
        if ((super(t), e < 0 || e > 10 || r < 0 || r > 10)) throw new E();
        (this.firstDigit = e), (this.secondDigit = r);
      }
      getFirstDigit() {
        return this.firstDigit;
      }
      getSecondDigit() {
        return this.secondDigit;
      }
      getValue() {
        return 10 * this.firstDigit + this.secondDigit;
      }
      isFirstDigitFNC1() {
        return this.firstDigit === vt.FNC1;
      }
      isSecondDigitFNC1() {
        return this.secondDigit === vt.FNC1;
      }
      isAnyFNC1() {
        return this.firstDigit === vt.FNC1 || this.secondDigit === vt.FNC1;
      }
    }
    vt.FNC1 = 10;
    class kt {
      constructor() {}
      static parseFieldsInGeneralPurpose(t) {
        if (!t) return null;
        if (t.length < 2) throw new R();
        let e = t.substring(0, 2);
        for (let r of kt.TWO_DIGIT_DATA_LENGTH)
          if (r[0] === e)
            return r[1] === kt.VARIABLE_LENGTH
              ? kt.processVariableAI(2, r[2], t)
              : kt.processFixedAI(2, r[1], t);
        if (t.length < 3) throw new R();
        let r = t.substring(0, 3);
        for (let e of kt.THREE_DIGIT_DATA_LENGTH)
          if (e[0] === r)
            return e[1] === kt.VARIABLE_LENGTH
              ? kt.processVariableAI(3, e[2], t)
              : kt.processFixedAI(3, e[1], t);
        for (let e of kt.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH)
          if (e[0] === r)
            return e[1] === kt.VARIABLE_LENGTH
              ? kt.processVariableAI(4, e[2], t)
              : kt.processFixedAI(4, e[1], t);
        if (t.length < 4) throw new R();
        let n = t.substring(0, 4);
        for (let e of kt.FOUR_DIGIT_DATA_LENGTH)
          if (e[0] === n)
            return e[1] === kt.VARIABLE_LENGTH
              ? kt.processVariableAI(4, e[2], t)
              : kt.processFixedAI(4, e[1], t);
        throw new R();
      }
      static processFixedAI(t, e, r) {
        if (r.length < t) throw new R();
        let n = r.substring(0, t);
        if (r.length < t + e) throw new R();
        let i = r.substring(t, t + e),
          s = r.substring(t + e),
          o = "(" + n + ")" + i,
          a = kt.parseFieldsInGeneralPurpose(s);
        return null == a ? o : o + a;
      }
      static processVariableAI(t, e, r) {
        let n,
          i = r.substring(0, t);
        n = r.length < t + e ? r.length : t + e;
        let s = r.substring(t, n),
          o = r.substring(n),
          a = "(" + i + ")" + s,
          l = kt.parseFieldsInGeneralPurpose(o);
        return null == l ? a : a + l;
      }
    }
    (kt.VARIABLE_LENGTH = []),
      (kt.TWO_DIGIT_DATA_LENGTH = [
        ["00", 18],
        ["01", 14],
        ["02", 14],
        ["10", kt.VARIABLE_LENGTH, 20],
        ["11", 6],
        ["12", 6],
        ["13", 6],
        ["15", 6],
        ["17", 6],
        ["20", 2],
        ["21", kt.VARIABLE_LENGTH, 20],
        ["22", kt.VARIABLE_LENGTH, 29],
        ["30", kt.VARIABLE_LENGTH, 8],
        ["37", kt.VARIABLE_LENGTH, 8],
        ["90", kt.VARIABLE_LENGTH, 30],
        ["91", kt.VARIABLE_LENGTH, 30],
        ["92", kt.VARIABLE_LENGTH, 30],
        ["93", kt.VARIABLE_LENGTH, 30],
        ["94", kt.VARIABLE_LENGTH, 30],
        ["95", kt.VARIABLE_LENGTH, 30],
        ["96", kt.VARIABLE_LENGTH, 30],
        ["97", kt.VARIABLE_LENGTH, 3],
        ["98", kt.VARIABLE_LENGTH, 30],
        ["99", kt.VARIABLE_LENGTH, 30],
      ]),
      (kt.THREE_DIGIT_DATA_LENGTH = [
        ["240", kt.VARIABLE_LENGTH, 30],
        ["241", kt.VARIABLE_LENGTH, 30],
        ["242", kt.VARIABLE_LENGTH, 6],
        ["250", kt.VARIABLE_LENGTH, 30],
        ["251", kt.VARIABLE_LENGTH, 30],
        ["253", kt.VARIABLE_LENGTH, 17],
        ["254", kt.VARIABLE_LENGTH, 20],
        ["400", kt.VARIABLE_LENGTH, 30],
        ["401", kt.VARIABLE_LENGTH, 30],
        ["402", 17],
        ["403", kt.VARIABLE_LENGTH, 30],
        ["410", 13],
        ["411", 13],
        ["412", 13],
        ["413", 13],
        ["414", 13],
        ["420", kt.VARIABLE_LENGTH, 20],
        ["421", kt.VARIABLE_LENGTH, 15],
        ["422", 3],
        ["423", kt.VARIABLE_LENGTH, 15],
        ["424", 3],
        ["425", 3],
        ["426", 3],
      ]),
      (kt.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH = [
        ["310", 6],
        ["311", 6],
        ["312", 6],
        ["313", 6],
        ["314", 6],
        ["315", 6],
        ["316", 6],
        ["320", 6],
        ["321", 6],
        ["322", 6],
        ["323", 6],
        ["324", 6],
        ["325", 6],
        ["326", 6],
        ["327", 6],
        ["328", 6],
        ["329", 6],
        ["330", 6],
        ["331", 6],
        ["332", 6],
        ["333", 6],
        ["334", 6],
        ["335", 6],
        ["336", 6],
        ["340", 6],
        ["341", 6],
        ["342", 6],
        ["343", 6],
        ["344", 6],
        ["345", 6],
        ["346", 6],
        ["347", 6],
        ["348", 6],
        ["349", 6],
        ["350", 6],
        ["351", 6],
        ["352", 6],
        ["353", 6],
        ["354", 6],
        ["355", 6],
        ["356", 6],
        ["357", 6],
        ["360", 6],
        ["361", 6],
        ["362", 6],
        ["363", 6],
        ["364", 6],
        ["365", 6],
        ["366", 6],
        ["367", 6],
        ["368", 6],
        ["369", 6],
        ["390", kt.VARIABLE_LENGTH, 15],
        ["391", kt.VARIABLE_LENGTH, 18],
        ["392", kt.VARIABLE_LENGTH, 15],
        ["393", kt.VARIABLE_LENGTH, 18],
        ["703", kt.VARIABLE_LENGTH, 30],
      ]),
      (kt.FOUR_DIGIT_DATA_LENGTH = [
        ["7001", 13],
        ["7002", kt.VARIABLE_LENGTH, 30],
        ["7003", 10],
        ["8001", 14],
        ["8002", kt.VARIABLE_LENGTH, 20],
        ["8003", kt.VARIABLE_LENGTH, 30],
        ["8004", kt.VARIABLE_LENGTH, 30],
        ["8005", 6],
        ["8006", 18],
        ["8007", kt.VARIABLE_LENGTH, 30],
        ["8008", kt.VARIABLE_LENGTH, 12],
        ["8018", 18],
        ["8020", kt.VARIABLE_LENGTH, 25],
        ["8100", 6],
        ["8101", 10],
        ["8102", 2],
        ["8110", kt.VARIABLE_LENGTH, 70],
        ["8200", kt.VARIABLE_LENGTH, 70],
      ]);
    class xt {
      constructor(t) {
        (this.buffer = new p()), (this.information = t);
      }
      decodeAllCodes(t, e) {
        let r = e,
          n = null;
        for (;;) {
          let e = this.decodeGeneralPurposeField(r, n),
            i = kt.parseFieldsInGeneralPurpose(e.getNewString());
          if (
            (null != i && t.append(i),
            (n = e.isRemaining() ? "" + e.getRemainingValue() : null),
            r === e.getNewPosition())
          )
            break;
          r = e.getNewPosition();
        }
        return t.toString();
      }
      isStillNumeric(t) {
        if (t + 7 > this.information.getSize())
          return t + 4 <= this.information.getSize();
        for (let e = t; e < t + 3; ++e) if (this.information.get(e)) return !0;
        return this.information.get(t + 3);
      }
      decodeNumeric(t) {
        if (t + 7 > this.information.getSize()) {
          let e = this.extractNumericValueFromBitArray(t, 4);
          return new vt(
            this.information.getSize(),
            0 === e ? vt.FNC1 : e - 1,
            vt.FNC1
          );
        }
        let e = this.extractNumericValueFromBitArray(t, 7);
        return new vt(t + 7, (e - 8) / 11, (e - 8) % 11);
      }
      extractNumericValueFromBitArray(t, e) {
        return xt.extractNumericValueFromBitArray(this.information, t, e);
      }
      static extractNumericValueFromBitArray(t, e, r) {
        let n = 0;
        for (let i = 0; i < r; ++i) t.get(e + i) && (n |= 1 << (r - i - 1));
        return n;
      }
      decodeGeneralPurposeField(t, e) {
        this.buffer.setLengthToZero(),
          null != e && this.buffer.append(e),
          this.current.setPosition(t);
        let r = this.parseBlocks();
        return null != r && r.isRemaining()
          ? new Ft(
              this.current.getPosition(),
              this.buffer.toString(),
              r.getRemainingValue()
            )
          : new Ft(this.current.getPosition(), this.buffer.toString());
      }
      parseBlocks() {
        let t, e;
        do {
          let r = this.current.getPosition();
          if (
            ((t = this.current.isAlpha()
              ? (e = this.parseAlphaBlock()).isFinished()
              : this.current.isIsoIec646()
              ? (e = this.parseIsoIec646Block()).isFinished()
              : (e = this.parseNumericBlock()).isFinished()),
            !(r !== this.current.getPosition()) && !t)
          )
            break;
        } while (!t);
        return e.getDecodedInformation();
      }
      parseNumericBlock() {
        for (; this.isStillNumeric(this.current.getPosition()); ) {
          let t = this.decodeNumeric(this.current.getPosition());
          if (
            (this.current.setPosition(t.getNewPosition()), t.isFirstDigitFNC1())
          ) {
            let e;
            return (
              (e = t.isSecondDigitFNC1()
                ? new Ft(this.current.getPosition(), this.buffer.toString())
                : new Ft(
                    this.current.getPosition(),
                    this.buffer.toString(),
                    t.getSecondDigit()
                  )),
              new Bt(!0, e)
            );
          }
          if ((this.buffer.append(t.getFirstDigit()), t.isSecondDigitFNC1())) {
            let t = new Ft(this.current.getPosition(), this.buffer.toString());
            return new Bt(!0, t);
          }
          this.buffer.append(t.getSecondDigit());
        }
        return (
          this.isNumericToAlphaNumericLatch(this.current.getPosition()) &&
            (this.current.setAlpha(), this.current.incrementPosition(4)),
          new Bt(!1)
        );
      }
      parseIsoIec646Block() {
        for (; this.isStillIsoIec646(this.current.getPosition()); ) {
          let t = this.decodeIsoIec646(this.current.getPosition());
          if ((this.current.setPosition(t.getNewPosition()), t.isFNC1())) {
            let t = new Ft(this.current.getPosition(), this.buffer.toString());
            return new Bt(!0, t);
          }
          this.buffer.append(t.getValue());
        }
        return (
          this.isAlphaOr646ToNumericLatch(this.current.getPosition())
            ? (this.current.incrementPosition(3), this.current.setNumeric())
            : this.isAlphaTo646ToAlphaLatch(this.current.getPosition()) &&
              (this.current.getPosition() + 5 < this.information.getSize()
                ? this.current.incrementPosition(5)
                : this.current.setPosition(this.information.getSize()),
              this.current.setAlpha()),
          new Bt(!1)
        );
      }
      parseAlphaBlock() {
        for (; this.isStillAlpha(this.current.getPosition()); ) {
          let t = this.decodeAlphanumeric(this.current.getPosition());
          if ((this.current.setPosition(t.getNewPosition()), t.isFNC1())) {
            let t = new Ft(this.current.getPosition(), this.buffer.toString());
            return new Bt(!0, t);
          }
          this.buffer.append(t.getValue());
        }
        return (
          this.isAlphaOr646ToNumericLatch(this.current.getPosition())
            ? (this.current.incrementPosition(3), this.current.setNumeric())
            : this.isAlphaTo646ToAlphaLatch(this.current.getPosition()) &&
              (this.current.getPosition() + 5 < this.information.getSize()
                ? this.current.incrementPosition(5)
                : this.current.setPosition(this.information.getSize()),
              this.current.setIsoIec646()),
          new Bt(!1)
        );
      }
      isStillIsoIec646(t) {
        if (t + 5 > this.information.getSize()) return !1;
        let e = this.extractNumericValueFromBitArray(t, 5);
        if (e >= 5 && e < 16) return !0;
        if (t + 7 > this.information.getSize()) return !1;
        let r = this.extractNumericValueFromBitArray(t, 7);
        if (r >= 64 && r < 116) return !0;
        if (t + 8 > this.information.getSize()) return !1;
        let n = this.extractNumericValueFromBitArray(t, 8);
        return n >= 232 && n < 253;
      }
      decodeIsoIec646(t) {
        let e = this.extractNumericValueFromBitArray(t, 5);
        if (15 === e) return new Lt(t + 5, Lt.FNC1);
        if (e >= 5 && e < 15) return new Lt(t + 5, "0" + (e - 5));
        let r,
          n = this.extractNumericValueFromBitArray(t, 7);
        if (n >= 64 && n < 90) return new Lt(t + 7, "" + (n + 1));
        if (n >= 90 && n < 116) return new Lt(t + 7, "" + (n + 7));
        switch (this.extractNumericValueFromBitArray(t, 8)) {
          case 232:
            r = "!";
            break;
          case 233:
            r = '"';
            break;
          case 234:
            r = "%";
            break;
          case 235:
            r = "&";
            break;
          case 236:
            r = "'";
            break;
          case 237:
            r = "(";
            break;
          case 238:
            r = ")";
            break;
          case 239:
            r = "*";
            break;
          case 240:
            r = "+";
            break;
          case 241:
            r = ",";
            break;
          case 242:
            r = "-";
            break;
          case 243:
            r = ".";
            break;
          case 244:
            r = "/";
            break;
          case 245:
            r = ":";
            break;
          case 246:
            r = ";";
            break;
          case 247:
            r = "<";
            break;
          case 248:
            r = "=";
            break;
          case 249:
            r = ">";
            break;
          case 250:
            r = "?";
            break;
          case 251:
            r = "_";
            break;
          case 252:
            r = " ";
            break;
          default:
            throw new E();
        }
        return new Lt(t + 8, r);
      }
      isStillAlpha(t) {
        if (t + 5 > this.information.getSize()) return !1;
        let e = this.extractNumericValueFromBitArray(t, 5);
        if (e >= 5 && e < 16) return !0;
        if (t + 6 > this.information.getSize()) return !1;
        let r = this.extractNumericValueFromBitArray(t, 6);
        return r >= 16 && r < 63;
      }
      decodeAlphanumeric(t) {
        let e = this.extractNumericValueFromBitArray(t, 5);
        if (15 === e) return new Lt(t + 5, Lt.FNC1);
        if (e >= 5 && e < 15) return new Lt(t + 5, "0" + (e - 5));
        let r,
          n = this.extractNumericValueFromBitArray(t, 6);
        if (n >= 32 && n < 58) return new Lt(t + 6, "" + (n + 33));
        switch (n) {
          case 58:
            r = "*";
            break;
          case 59:
            r = ",";
            break;
          case 60:
            r = "-";
            break;
          case 61:
            r = ".";
            break;
          case 62:
            r = "/";
            break;
          default:
            throw new j("Decoding invalid alphanumeric value: " + n);
        }
        return new Lt(t + 6, r);
      }
      isAlphaTo646ToAlphaLatch(t) {
        if (t + 1 > this.information.getSize()) return !1;
        for (let e = 0; e < 5 && e + t < this.information.getSize(); ++e)
          if (2 === e) {
            if (!this.information.get(t + 2)) return !1;
          } else if (this.information.get(t + e)) return !1;
        return !0;
      }
      isAlphaOr646ToNumericLatch(t) {
        if (t + 3 > this.information.getSize()) return !1;
        for (let e = t; e < t + 3; ++e) if (this.information.get(e)) return !1;
        return !0;
      }
      isNumericToAlphaNumericLatch(t) {
        if (t + 1 > this.information.getSize()) return !1;
        for (let e = 0; e < 4 && e + t < this.information.getSize(); ++e)
          if (this.information.get(t + e)) return !1;
        return !0;
      }
    }
    class Vt {
      constructor(t) {
        (this.information = t), (this.generalDecoder = new xt(t));
      }
      getInformation() {
        return this.information;
      }
      getGeneralDecoder() {
        return this.generalDecoder;
      }
    }
    class Ut extends Vt {
      constructor(t) {
        super(t);
      }
      encodeCompressedGtin(t, e) {
        t.append("(01)");
        let r = t.length();
        t.append("9"), this.encodeCompressedGtinWithoutAI(t, e, r);
      }
      encodeCompressedGtinWithoutAI(t, e, r) {
        for (let r = 0; r < 4; ++r) {
          let n = this.getGeneralDecoder().extractNumericValueFromBitArray(
            e + 10 * r,
            10
          );
          n / 100 == 0 && t.append("0"),
            n / 10 == 0 && t.append("0"),
            t.append(n);
        }
        Ut.appendCheckDigit(t, r);
      }
      static appendCheckDigit(t, e) {
        let r = 0;
        for (let n = 0; n < 13; n++) {
          let i = t.charAt(n + e).charCodeAt(0) - "0".charCodeAt(0);
          r += 0 == (1 & n) ? 3 * i : i;
        }
        10 === (r = 10 - (r % 10)) && (r = 0), t.append(r);
      }
    }
    Ut.GTIN_SIZE = 40;
    class Ht extends Ut {
      constructor(t) {
        super(t);
      }
      parseInformation() {
        let t = new p();
        t.append("(01)");
        let e = t.length(),
          r = this.getGeneralDecoder().extractNumericValueFromBitArray(
            Ht.HEADER_SIZE,
            4
          );
        return (
          t.append(r),
          this.encodeCompressedGtinWithoutAI(t, Ht.HEADER_SIZE + 4, e),
          this.getGeneralDecoder().decodeAllCodes(t, Ht.HEADER_SIZE + 44)
        );
      }
    }
    Ht.HEADER_SIZE = 4;
    class Gt extends Vt {
      constructor(t) {
        super(t);
      }
      parseInformation() {
        let t = new p();
        return this.getGeneralDecoder().decodeAllCodes(t, Gt.HEADER_SIZE);
      }
    }
    Gt.HEADER_SIZE = 5;
    class Xt extends Ut {
      constructor(t) {
        super(t);
      }
      encodeCompressedWeight(t, e, r) {
        let n = this.getGeneralDecoder().extractNumericValueFromBitArray(e, r);
        this.addWeightCode(t, n);
        let i = this.checkWeight(n),
          s = 1e5;
        for (let e = 0; e < 5; ++e) i / s == 0 && t.append("0"), (s /= 10);
        t.append(i);
      }
    }
    class Wt extends Xt {
      constructor(t) {
        super(t);
      }
      parseInformation() {
        if (
          this.getInformation().getSize() !=
          Wt.HEADER_SIZE + Xt.GTIN_SIZE + Wt.WEIGHT_SIZE
        )
          throw new R();
        let t = new p();
        return (
          this.encodeCompressedGtin(t, Wt.HEADER_SIZE),
          this.encodeCompressedWeight(
            t,
            Wt.HEADER_SIZE + Xt.GTIN_SIZE,
            Wt.WEIGHT_SIZE
          ),
          t.toString()
        );
      }
    }
    (Wt.HEADER_SIZE = 5), (Wt.WEIGHT_SIZE = 15);
    class zt extends Wt {
      constructor(t) {
        super(t);
      }
      addWeightCode(t, e) {
        t.append("(3103)");
      }
      checkWeight(t) {
        return t;
      }
    }
    class Yt extends Wt {
      constructor(t) {
        super(t);
      }
      addWeightCode(t, e) {
        e < 1e4 ? t.append("(3202)") : t.append("(3203)");
      }
      checkWeight(t) {
        return t < 1e4 ? t : t - 1e4;
      }
    }
    class Zt extends Ut {
      constructor(t) {
        super(t);
      }
      parseInformation() {
        if (this.getInformation().getSize() < Zt.HEADER_SIZE + Ut.GTIN_SIZE)
          throw new R();
        let t = new p();
        this.encodeCompressedGtin(t, Zt.HEADER_SIZE);
        let e = this.getGeneralDecoder().extractNumericValueFromBitArray(
          Zt.HEADER_SIZE + Ut.GTIN_SIZE,
          Zt.LAST_DIGIT_SIZE
        );
        t.append("(392"), t.append(e), t.append(")");
        let r = this.getGeneralDecoder().decodeGeneralPurposeField(
          Zt.HEADER_SIZE + Ut.GTIN_SIZE + Zt.LAST_DIGIT_SIZE,
          null
        );
        return t.append(r.getNewString()), t.toString();
      }
    }
    (Zt.HEADER_SIZE = 8), (Zt.LAST_DIGIT_SIZE = 2);
    class Kt extends Ut {
      constructor(t) {
        super(t);
      }
      parseInformation() {
        if (this.getInformation().getSize() < Kt.HEADER_SIZE + Ut.GTIN_SIZE)
          throw new R();
        let t = new p();
        this.encodeCompressedGtin(t, Kt.HEADER_SIZE);
        let e = this.getGeneralDecoder().extractNumericValueFromBitArray(
          Kt.HEADER_SIZE + Ut.GTIN_SIZE,
          Kt.LAST_DIGIT_SIZE
        );
        t.append("(393"), t.append(e), t.append(")");
        let r = this.getGeneralDecoder().extractNumericValueFromBitArray(
          Kt.HEADER_SIZE + Ut.GTIN_SIZE + Kt.LAST_DIGIT_SIZE,
          Kt.FIRST_THREE_DIGITS_SIZE
        );
        r / 100 == 0 && t.append("0"), r / 10 == 0 && t.append("0"), t.append(r);
        let n = this.getGeneralDecoder().decodeGeneralPurposeField(
          Kt.HEADER_SIZE +
            Ut.GTIN_SIZE +
            Kt.LAST_DIGIT_SIZE +
            Kt.FIRST_THREE_DIGITS_SIZE,
          null
        );
        return t.append(n.getNewString()), t.toString();
      }
    }
    (Kt.HEADER_SIZE = 8),
      (Kt.LAST_DIGIT_SIZE = 2),
      (Kt.FIRST_THREE_DIGITS_SIZE = 10);
    class qt extends Xt {
      constructor(t, e, r) {
        super(t), (this.dateCode = r), (this.firstAIdigits = e);
      }
      parseInformation() {
        if (
          this.getInformation().getSize() !=
          qt.HEADER_SIZE + qt.GTIN_SIZE + qt.WEIGHT_SIZE + qt.DATE_SIZE
        )
          throw new R();
        let t = new p();
        return (
          this.encodeCompressedGtin(t, qt.HEADER_SIZE),
          this.encodeCompressedWeight(
            t,
            qt.HEADER_SIZE + qt.GTIN_SIZE,
            qt.WEIGHT_SIZE
          ),
          this.encodeCompressedDate(
            t,
            qt.HEADER_SIZE + qt.GTIN_SIZE + qt.WEIGHT_SIZE
          ),
          t.toString()
        );
      }
      encodeCompressedDate(t, e) {
        let r = this.getGeneralDecoder().extractNumericValueFromBitArray(
          e,
          qt.DATE_SIZE
        );
        if (38400 == r) return;
        t.append("("), t.append(this.dateCode), t.append(")");
        let n = r % 32,
          i = ((r /= 32) % 12) + 1,
          s = (r /= 12);
        s / 10 == 0 && t.append("0"),
          t.append(s),
          i / 10 == 0 && t.append("0"),
          t.append(i),
          n / 10 == 0 && t.append("0"),
          t.append(n);
      }
      addWeightCode(t, e) {
        t.append("("),
          t.append(this.firstAIdigits),
          t.append(e / 1e5),
          t.append(")");
      }
      checkWeight(t) {
        return t % 1e5;
      }
    }
    (qt.HEADER_SIZE = 8), (qt.WEIGHT_SIZE = 20), (qt.DATE_SIZE = 16);
    class Qt {
      constructor(t, e, r, n) {
        (this.leftchar = t),
          (this.rightchar = e),
          (this.finderpattern = r),
          (this.maybeLast = n);
      }
      mayBeLast() {
        return this.maybeLast;
      }
      getLeftChar() {
        return this.leftchar;
      }
      getRightChar() {
        return this.rightchar;
      }
      getFinderPattern() {
        return this.finderpattern;
      }
      mustBeLast() {
        return null == this.rightchar;
      }
      toString() {
        return (
          "[ " +
          this.leftchar +
          ", " +
          this.rightchar +
          " : " +
          (null == this.finderpattern ? "null" : this.finderpattern.getValue()) +
          " ]"
        );
      }
      static equals(t, e) {
        return (
          t instanceof Qt &&
          Qt.equalsOrNull(t.leftchar, e.leftchar) &&
          Qt.equalsOrNull(t.rightchar, e.rightchar) &&
          Qt.equalsOrNull(t.finderpattern, e.finderpattern)
        );
      }
      static equalsOrNull(t, e) {
        return null === t ? null === e : Qt.equals(t, e);
      }
      hashCode() {
        return (
          this.leftchar.getValue() ^
          this.rightchar.getValue() ^
          this.finderpattern.getValue()
        );
      }
    }
    class jt {
      constructor(t, e, r) {
        (this.pairs = t), (this.rowNumber = e), (this.wasReversed = r);
      }
      getPairs() {
        return this.pairs;
      }
      getRowNumber() {
        return this.rowNumber;
      }
      isReversed() {
        return this.wasReversed;
      }
      isEquivalent(t) {
        return this.checkEqualitity(this, t);
      }
      toString() {
        return "{ " + this.pairs + " }";
      }
      equals(t, e) {
        return (
          t instanceof jt &&
          this.checkEqualitity(t, e) &&
          t.wasReversed === e.wasReversed
        );
      }
      checkEqualitity(t, e) {
        if (!t || !e) return;
        let r;
        return (
          t.forEach((t, n) => {
            e.forEach((e) => {
              t.getLeftChar().getValue() === e.getLeftChar().getValue() &&
                t.getRightChar().getValue() === e.getRightChar().getValue() &&
                t.getFinderPatter().getValue() ===
                  e.getFinderPatter().getValue() &&
                (r = !0);
            });
          }),
          r
        );
      }
    }
    class Jt extends Dt {
      constructor(t) {
        super(...arguments),
          (this.pairs = new Array(Jt.MAX_PAIRS)),
          (this.rows = new Array()),
          (this.startEnd = [2]),
          (this.verbose = !0 === t);
      }
      decodeRow(t, e, r) {
        (this.pairs.length = 0), (this.startFromEven = !1);
        try {
          return Jt.constructResult(this.decodeRow2pairs(t, e));
        } catch (t) {
          this.verbose && console.log(t);
        }
        return (
          (this.pairs.length = 0),
          (this.startFromEven = !0),
          Jt.constructResult(this.decodeRow2pairs(t, e))
        );
      }
      reset() {
        (this.pairs.length = 0), (this.rows.length = 0);
      }
      decodeRow2pairs(t, e) {
        let r,
          n = !1;
        for (; !n; )
          try {
            this.pairs.push(this.retrieveNextPair(e, this.pairs, t));
          } catch (t) {
            if (t instanceof R) {
              if (!this.pairs.length) throw new R();
              n = !0;
            }
          }
        if (this.checkChecksum()) return this.pairs;
        if (((r = !!this.rows.length), this.storeRow(t, !1), r)) {
          let t = this.checkRowsBoolean(!1);
          if (null != t) return t;
          if (null != (t = this.checkRowsBoolean(!0))) return t;
        }
        throw new R();
      }
      checkRowsBoolean(t) {
        if (this.rows.length > 25) return (this.rows.length = 0), null;
        (this.pairs.length = 0), t && (this.rows = this.rows.reverse());
        let e = null;
        try {
          e = this.checkRows(new Array(), 0);
        } catch (t) {
          this.verbose && console.log(t);
        }
        return t && (this.rows = this.rows.reverse()), e;
      }
      checkRows(t, e) {
        for (let r = e; r < this.rows.length; r++) {
          let e = this.rows[r];
          this.pairs.length = 0;
          for (let e of t) this.pairs.push(e.getPairs());
          if ((this.pairs.push(e.getPairs()), !Jt.isValidSequence(this.pairs)))
            continue;
          if (this.checkChecksum()) return this.pairs;
          let n = new Array(t);
          n.push(e);
          try {
            return this.checkRows(n, r + 1);
          } catch (t) {
            this.verbose && console.log(t);
          }
        }
        throw new R();
      }
      static isValidSequence(t) {
        for (let e of Jt.FINDER_PATTERN_SEQUENCES) {
          if (t.length > e.length) continue;
          let r = !0;
          for (let n = 0; n < t.length; n++)
            if (t[n].getFinderPattern().getValue() != e[n]) {
              r = !1;
              break;
            }
          if (r) return !0;
        }
        return !1;
      }
      storeRow(t, e) {
        let r = 0,
          n = !1,
          i = !1;
        for (; r < this.rows.length; ) {
          let e = this.rows[r];
          if (e.getRowNumber() > t) {
            i = e.isEquivalent(this.pairs);
            break;
          }
          (n = e.isEquivalent(this.pairs)), r++;
        }
        i ||
          n ||
          Jt.isPartialRow(this.pairs, this.rows) ||
          (this.rows.push(r, new jt(this.pairs, t, e)),
          this.removePartialRows(this.pairs, this.rows));
      }
      removePartialRows(t, e) {
        for (let r of e)
          if (r.getPairs().length !== t.length)
            for (let e of r.getPairs())
              for (let r of t) if (Qt.equals(e, r)) break;
      }
      static isPartialRow(t, e) {
        for (let r of e) {
          let e = !0;
          for (let n of t) {
            let t = !1;
            for (let e of r.getPairs())
              if (n.equals(e)) {
                t = !0;
                break;
              }
            if (!t) {
              e = !1;
              break;
            }
          }
          if (e) return !0;
        }
        return !1;
      }
      getRows() {
        return this.rows;
      }
      static constructResult(t) {
        let e = (function (t) {
            try {
              if (t.get(1)) return new Ht(t);
              if (!t.get(2)) return new Gt(t);
              switch (xt.extractNumericValueFromBitArray(t, 1, 4)) {
                case 4:
                  return new zt(t);
                case 5:
                  return new Yt(t);
              }
              switch (xt.extractNumericValueFromBitArray(t, 1, 5)) {
                case 12:
                  return new Zt(t);
                case 13:
                  return new Kt(t);
              }
              switch (xt.extractNumericValueFromBitArray(t, 1, 7)) {
                case 56:
                  return new qt(t, "310", "11");
                case 57:
                  return new qt(t, "320", "11");
                case 58:
                  return new qt(t, "310", "13");
                case 59:
                  return new qt(t, "320", "13");
                case 60:
                  return new qt(t, "310", "15");
                case 61:
                  return new qt(t, "320", "15");
                case 62:
                  return new qt(t, "310", "17");
                case 63:
                  return new qt(t, "320", "17");
              }
            } catch (e) {
              throw (console.log(e), new j("unknown decoder: " + t));
            }
          })(bt.buildBitArray(t)).parseInformation(),
          r = t[0].getFinderPattern().getResultPoints(),
          n = t[t.length - 1].getFinderPattern().getResultPoints(),
          i = [r[0], r[1], n[0], n[1]];
        return new F(e, null, null, i, k.RSS_EXPANDED, null);
      }
      checkChecksum() {
        let t = this.pairs.get(0),
          e = t.getLeftChar(),
          r = t.getRightChar();
        if (null == r) return !1;
        let n = r.getChecksumPortion(),
          i = 2;
        for (let t = 1; t < this.pairs.size(); ++t) {
          let e = this.pairs.get(t);
          (n += e.getLeftChar().getChecksumPortion()), i++;
          let r = e.getRightChar();
          null != r && ((n += r.getChecksumPortion()), i++);
        }
        return 211 * (i - 4) + (n %= 211) == e.getValue();
      }
      static getNextSecondBar(t, e) {
        let r;
        return (
          t.get(e)
            ? ((r = t.getNextUnset(e)), (r = t.getNextSet(r)))
            : ((r = t.getNextSet(e)), (r = t.getNextUnset(r))),
          r
        );
      }
      retrieveNextPair(t, e, r) {
        let n,
          i = e.length % 2 == 0;
        this.startFromEven && (i = !i);
        let s = !0,
          o = -1;
        do {
          this.findNextPair(t, e, o),
            null == (n = this.parseFoundFinderPattern(t, r, i))
              ? (o = Jt.getNextSecondBar(t, this.startEnd[0]))
              : (s = !1);
        } while (s);
        let a,
          l = this.decodeDataCharacter(t, n, i, !0);
        if (!this.isEmptyPair(e) && e[e.length - 1].mustBeLast()) throw new R();
        try {
          a = this.decodeDataCharacter(t, n, i, !1);
        } catch (t) {
          (a = null), this.verbose && console.log(t);
        }
        return new Qt(l, a, n, !0);
      }
      isEmptyPair(t) {
        return 0 === t.length;
      }
      findNextPair(t, e, r) {
        let n = this.getDecodeFinderCounters();
        (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0);
        let i,
          s = t.getSize();
        if (r >= 0) i = r;
        else if (this.isEmptyPair(e)) i = 0;
        else {
          i = e[e.length - 1].getFinderPattern().getStartEnd()[1];
        }
        let o = e.length % 2 != 0;
        this.startFromEven && (o = !o);
        let a = !1;
        for (; i < s && (a = !t.get(i)); ) i++;
        let l = 0,
          h = i;
        for (let e = i; e < s; e++)
          if (t.get(e) != a) n[l]++;
          else {
            if (3 == l) {
              if ((o && Jt.reverseCounters(n), Jt.isFinderPattern(n)))
                return (this.startEnd[0] = h), void (this.startEnd[1] = e);
              o && Jt.reverseCounters(n),
                (h += n[0] + n[1]),
                (n[0] = n[2]),
                (n[1] = n[3]),
                (n[2] = 0),
                (n[3] = 0),
                l--;
            } else l++;
            (n[l] = 1), (a = !a);
          }
        throw new R();
      }
      static reverseCounters(t) {
        let e = t.length;
        for (let r = 0; r < e / 2; ++r) {
          let n = t[r];
          (t[r] = t[e - r - 1]), (t[e - r - 1] = n);
        }
      }
      parseFoundFinderPattern(t, e, r) {
        let n, i, s;
        if (r) {
          let e = this.startEnd[0] - 1;
          for (; e >= 0 && !t.get(e); ) e--;
          e++, (n = this.startEnd[0] - e), (i = e), (s = this.startEnd[1]);
        } else (i = this.startEnd[0]), (n = (s = t.getNextUnset(this.startEnd[1] + 1)) - this.startEnd[1]);
        let o,
          a = this.getDecodeFinderCounters();
        c.arraycopy(a, 0, a, 1, a.length - 1), (a[0] = n);
        try {
          o = this.parseFinderValue(a, Jt.FINDER_PATTERNS);
        } catch (t) {
          return null;
        }
        return new Ot(o, [i, s], i, s, e);
      }
      decodeDataCharacter(t, e, r, n) {
        let i = this.getDataCharacterCounters();
        for (let t = 0; t < i.length; t++) i[t] = 0;
        if (n) Jt.recordPatternInReverse(t, e.getStartEnd()[0], i);
        else {
          Jt.recordPattern(t, e.getStartEnd()[1], i);
          for (let t = 0, e = i.length - 1; t < e; t++, e--) {
            let r = i[t];
            (i[t] = i[e]), (i[e] = r);
          }
        }
        let s = tt.sum(new Int32Array(i)) / 17,
          o = (e.getStartEnd()[1] - e.getStartEnd()[0]) / 15;
        if (Math.abs(s - o) / o > 0.3) throw new R();
        let a = this.getOddCounts(),
          l = this.getEvenCounts(),
          h = this.getOddRoundingErrors(),
          c = this.getEvenRoundingErrors();
        for (let t = 0; t < i.length; t++) {
          let e = (1 * i[t]) / s,
            r = e + 0.5;
          if (r < 1) {
            if (e < 0.3) throw new R();
            r = 1;
          } else if (r > 8) {
            if (e > 8.7) throw new R();
            r = 8;
          }
          let n = t / 2;
          0 == (1 & t)
            ? ((a[n] = r), (h[n] = e - r))
            : ((l[n] = r), (c[n] = e - r));
        }
        this.adjustOddEvenCounts(17);
        let u = 4 * e.getValue() + (r ? 0 : 2) + (n ? 0 : 1) - 1,
          d = 0,
          g = 0;
        for (let t = a.length - 1; t >= 0; t--) {
          if (Jt.isNotA1left(e, r, n)) {
            let e = Jt.WEIGHTS[u][2 * t];
            g += a[t] * e;
          }
          d += a[t];
        }
        let f = 0;
        for (let t = l.length - 1; t >= 0; t--)
          if (Jt.isNotA1left(e, r, n)) {
            let e = Jt.WEIGHTS[u][2 * t + 1];
            f += l[t] * e;
          }
        let w = g + f;
        if (0 != (1 & d) || d > 13 || d < 4) throw new R();
        let A = (13 - d) / 2,
          C = Jt.SYMBOL_WIDEST[A],
          E = 9 - C,
          m = Mt.getRSSvalue(a, C, !0),
          _ = Mt.getRSSvalue(l, E, !1),
          I = Jt.EVEN_TOTAL_SUBSET[A],
          S = Jt.GSUM[A];
        return new yt(m * I + _ + S, w);
      }
      static isNotA1left(t, e, r) {
        return !(0 == t.getValue() && e && r);
      }
      adjustOddEvenCounts(t) {
        let e = tt.sum(new Int32Array(this.getOddCounts())),
          r = tt.sum(new Int32Array(this.getEvenCounts())),
          n = !1,
          i = !1;
        e > 13 ? (i = !0) : e < 4 && (n = !0);
        let s = !1,
          o = !1;
        r > 13 ? (o = !0) : r < 4 && (s = !0);
        let a = e + r - t,
          l = 1 == (1 & e),
          h = 0 == (1 & r);
        if (1 == a)
          if (l) {
            if (h) throw new R();
            i = !0;
          } else {
            if (!h) throw new R();
            o = !0;
          }
        else if (-1 == a)
          if (l) {
            if (h) throw new R();
            n = !0;
          } else {
            if (!h) throw new R();
            s = !0;
          }
        else {
          if (0 != a) throw new R();
          if (l) {
            if (!h) throw new R();
            e < r ? ((n = !0), (o = !0)) : ((i = !0), (s = !0));
          } else if (h) throw new R();
        }
        if (n) {
          if (i) throw new R();
          Jt.increment(this.getOddCounts(), this.getOddRoundingErrors());
        }
        if (
          (i && Jt.decrement(this.getOddCounts(), this.getOddRoundingErrors()), s)
        ) {
          if (o) throw new R();
          Jt.increment(this.getEvenCounts(), this.getOddRoundingErrors());
        }
        o && Jt.decrement(this.getEvenCounts(), this.getEvenRoundingErrors());
      }
    }
    (Jt.SYMBOL_WIDEST = [7, 5, 4, 3, 1]),
      (Jt.EVEN_TOTAL_SUBSET = [4, 20, 52, 104, 204]),
      (Jt.GSUM = [0, 348, 1388, 2948, 3988]),
      (Jt.FINDER_PATTERNS = [
        Int32Array.from([1, 8, 4, 1]),
        Int32Array.from([3, 6, 4, 1]),
        Int32Array.from([3, 4, 6, 1]),
        Int32Array.from([3, 2, 8, 1]),
        Int32Array.from([2, 6, 5, 1]),
        Int32Array.from([2, 2, 9, 1]),
      ]),
      (Jt.WEIGHTS = [
        [1, 3, 9, 27, 81, 32, 96, 77],
        [20, 60, 180, 118, 143, 7, 21, 63],
        [189, 145, 13, 39, 117, 140, 209, 205],
        [193, 157, 49, 147, 19, 57, 171, 91],
        [62, 186, 136, 197, 169, 85, 44, 132],
        [185, 133, 188, 142, 4, 12, 36, 108],
        [113, 128, 173, 97, 80, 29, 87, 50],
        [150, 28, 84, 41, 123, 158, 52, 156],
        [46, 138, 203, 187, 139, 206, 196, 166],
        [76, 17, 51, 153, 37, 111, 122, 155],
        [43, 129, 176, 106, 107, 110, 119, 146],
        [16, 48, 144, 10, 30, 90, 59, 177],
        [109, 116, 137, 200, 178, 112, 125, 164],
        [70, 210, 208, 202, 184, 130, 179, 115],
        [134, 191, 151, 31, 93, 68, 204, 190],
        [148, 22, 66, 198, 172, 94, 71, 2],
        [6, 18, 54, 162, 64, 192, 154, 40],
        [120, 149, 25, 75, 14, 42, 126, 167],
        [79, 26, 78, 23, 69, 207, 199, 175],
        [103, 98, 83, 38, 114, 131, 182, 124],
        [161, 61, 183, 127, 170, 88, 53, 159],
        [55, 165, 73, 8, 24, 72, 5, 15],
        [45, 135, 194, 160, 58, 174, 100, 89],
      ]),
      (Jt.FINDER_PAT_A = 0),
      (Jt.FINDER_PAT_B = 1),
      (Jt.FINDER_PAT_C = 2),
      (Jt.FINDER_PAT_D = 3),
      (Jt.FINDER_PAT_E = 4),
      (Jt.FINDER_PAT_F = 5),
      (Jt.FINDER_PATTERN_SEQUENCES = [
        [Jt.FINDER_PAT_A, Jt.FINDER_PAT_A],
        [Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B],
        [Jt.FINDER_PAT_A, Jt.FINDER_PAT_C, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_C,
        ],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_F,
        ],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_F,
          Jt.FINDER_PAT_F,
        ],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_D,
        ],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_E,
        ],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_F,
          Jt.FINDER_PAT_F,
        ],
        [
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_A,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_B,
          Jt.FINDER_PAT_C,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_D,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_E,
          Jt.FINDER_PAT_F,
          Jt.FINDER_PAT_F,
        ],
      ]),
      (Jt.MAX_PAIRS = 11);
    class $t extends yt {
      constructor(t, e, r) {
        super(t, e), (this.count = 0), (this.finderPattern = r);
      }
      getFinderPattern() {
        return this.finderPattern;
      }
      getCount() {
        return this.count;
      }
      incrementCount() {
        this.count++;
      }
    }
    class te extends Dt {
      constructor() {
        super(...arguments),
          (this.possibleLeftPairs = []),
          (this.possibleRightPairs = []);
      }
      decodeRow(t, e, r) {
        const n = this.decodePair(e, !1, t, r);
        te.addOrTally(this.possibleLeftPairs, n), e.reverse();
        let i = this.decodePair(e, !0, t, r);
        te.addOrTally(this.possibleRightPairs, i), e.reverse();
        for (let t of this.possibleLeftPairs)
          if (t.getCount() > 1)
            for (let e of this.possibleRightPairs)
              if (e.getCount() > 1 && te.checkChecksum(t, e))
                return te.constructResult(t, e);
        throw new R();
      }
      static addOrTally(t, e) {
        if (null == e) return;
        let r = !1;
        for (let n of t)
          if (n.getValue() === e.getValue()) {
            n.incrementCount(), (r = !0);
            break;
          }
        r || t.push(e);
      }
      reset() {
        (this.possibleLeftPairs.length = 0), (this.possibleRightPairs.length = 0);
      }
      static constructResult(t, e) {
        let r = 4537077 * t.getValue() + e.getValue(),
          n = new String(r).toString(),
          i = new p();
        for (let t = 13 - n.length; t > 0; t--) i.append("0");
        i.append(n);
        let s = 0;
        for (let t = 0; t < 13; t++) {
          let e = i.charAt(t).charCodeAt(0) - "0".charCodeAt(0);
          s += 0 == (1 & t) ? 3 * e : e;
        }
        10 === (s = 10 - (s % 10)) && (s = 0), i.append(s.toString());
        let o = t.getFinderPattern().getResultPoints(),
          a = e.getFinderPattern().getResultPoints();
        return new F(
          i.toString(),
          null,
          0,
          [o[0], o[1], a[0], a[1]],
          k.RSS_14,
          new Date().getTime()
        );
      }
      static checkChecksum(t, e) {
        let r = (t.getChecksumPortion() + 16 * e.getChecksumPortion()) % 79,
          n =
            9 * t.getFinderPattern().getValue() + e.getFinderPattern().getValue();
        return n > 72 && n--, n > 8 && n--, r === n;
      }
      decodePair(t, e, r, n) {
        try {
          let i = this.findFinderPattern(t, e),
            s = this.parseFoundFinderPattern(t, r, e, i),
            o = null == n ? null : n.get(C.NEED_RESULT_POINT_CALLBACK);
          if (null != o) {
            let n = (i[0] + i[1]) / 2;
            e && (n = t.getSize() - 1 - n),
              o.foundPossibleResultPoint(new rt(n, r));
          }
          let a = this.decodeDataCharacter(t, s, !0),
            l = this.decodeDataCharacter(t, s, !1);
          return new $t(
            1597 * a.getValue() + l.getValue(),
            a.getChecksumPortion() + 4 * l.getChecksumPortion(),
            s
          );
        } catch (t) {
          return null;
        }
      }
      decodeDataCharacter(t, e, r) {
        let n = this.getDataCharacterCounters();
        for (let t = 0; t < n.length; t++) n[t] = 0;
        if (r) gt.recordPatternInReverse(t, e.getStartEnd()[0], n);
        else {
          gt.recordPattern(t, e.getStartEnd()[1] + 1, n);
          for (let t = 0, e = n.length - 1; t < e; t++, e--) {
            let r = n[t];
            (n[t] = n[e]), (n[e] = r);
          }
        }
        let i = r ? 16 : 15,
          s = tt.sum(new Int32Array(n)) / i,
          o = this.getOddCounts(),
          a = this.getEvenCounts(),
          l = this.getOddRoundingErrors(),
          h = this.getEvenRoundingErrors();
        for (let t = 0; t < n.length; t++) {
          let e = n[t] / s,
            r = Math.floor(e + 0.5);
          r < 1 ? (r = 1) : r > 8 && (r = 8);
          let i = Math.floor(t / 2);
          0 == (1 & t)
            ? ((o[i] = r), (l[i] = e - r))
            : ((a[i] = r), (h[i] = e - r));
        }
        this.adjustOddEvenCounts(r, i);
        let c = 0,
          u = 0;
        for (let t = o.length - 1; t >= 0; t--)
          (u *= 9), (u += o[t]), (c += o[t]);
        let d = 0,
          g = 0;
        for (let t = a.length - 1; t >= 0; t--)
          (d *= 9), (d += a[t]), (g += a[t]);
        let f = u + 3 * d;
        if (r) {
          if (0 != (1 & c) || c > 12 || c < 4) throw new R();
          let t = (12 - c) / 2,
            e = te.OUTSIDE_ODD_WIDEST[t],
            r = 9 - e,
            n = Mt.getRSSvalue(o, e, !1),
            i = Mt.getRSSvalue(a, r, !0),
            s = te.OUTSIDE_EVEN_TOTAL_SUBSET[t],
            l = te.OUTSIDE_GSUM[t];
          return new yt(n * s + i + l, f);
        }
        {
          if (0 != (1 & g) || g > 10 || g < 4) throw new R();
          let t = (10 - g) / 2,
            e = te.INSIDE_ODD_WIDEST[t],
            r = 9 - e,
            n = Mt.getRSSvalue(o, e, !0),
            i = Mt.getRSSvalue(a, r, !1),
            s = te.INSIDE_ODD_TOTAL_SUBSET[t],
            l = te.INSIDE_GSUM[t];
          return new yt(i * s + n + l, f);
        }
      }
      findFinderPattern(t, e) {
        let r = this.getDecodeFinderCounters();
        (r[0] = 0), (r[1] = 0), (r[2] = 0), (r[3] = 0);
        let n = t.getSize(),
          i = !1,
          s = 0;
        for (; s < n && e !== (i = !t.get(s)); ) s++;
        let o = 0,
          a = s;
        for (let e = s; e < n; e++)
          if (t.get(e) !== i) r[o]++;
          else {
            if (3 === o) {
              if (Dt.isFinderPattern(r)) return [a, e];
              (a += r[0] + r[1]),
                (r[0] = r[2]),
                (r[1] = r[3]),
                (r[2] = 0),
                (r[3] = 0),
                o--;
            } else o++;
            (r[o] = 1), (i = !i);
          }
        throw new R();
      }
      parseFoundFinderPattern(t, e, r, n) {
        let i = t.get(n[0]),
          s = n[0] - 1;
        for (; s >= 0 && i !== t.get(s); ) s--;
        s++;
        const o = n[0] - s,
          a = this.getDecodeFinderCounters(),
          l = new Int32Array(a.length);
        c.arraycopy(a, 0, l, 1, a.length - 1), (l[0] = o);
        const h = this.parseFinderValue(l, te.FINDER_PATTERNS);
        let u = s,
          d = n[1];
        return (
          r && ((u = t.getSize() - 1 - u), (d = t.getSize() - 1 - d)),
          new Ot(h, [s, n[1]], u, d, e)
        );
      }
      adjustOddEvenCounts(t, e) {
        let r = tt.sum(new Int32Array(this.getOddCounts())),
          n = tt.sum(new Int32Array(this.getEvenCounts())),
          i = !1,
          s = !1,
          o = !1,
          a = !1;
        t
          ? (r > 12 ? (s = !0) : r < 4 && (i = !0),
            n > 12 ? (a = !0) : n < 4 && (o = !0))
          : (r > 11 ? (s = !0) : r < 5 && (i = !0),
            n > 10 ? (a = !0) : n < 4 && (o = !0));
        let l = r + n - e,
          h = (1 & r) == (t ? 1 : 0),
          c = 1 == (1 & n);
        if (1 === l)
          if (h) {
            if (c) throw new R();
            s = !0;
          } else {
            if (!c) throw new R();
            a = !0;
          }
        else if (-1 === l)
          if (h) {
            if (c) throw new R();
            i = !0;
          } else {
            if (!c) throw new R();
            o = !0;
          }
        else {
          if (0 !== l) throw new R();
          if (h) {
            if (!c) throw new R();
            r < n ? ((i = !0), (a = !0)) : ((s = !0), (o = !0));
          } else if (c) throw new R();
        }
        if (i) {
          if (s) throw new R();
          Dt.increment(this.getOddCounts(), this.getOddRoundingErrors());
        }
        if (
          (s && Dt.decrement(this.getOddCounts(), this.getOddRoundingErrors()), o)
        ) {
          if (a) throw new R();
          Dt.increment(this.getEvenCounts(), this.getOddRoundingErrors());
        }
        a && Dt.decrement(this.getEvenCounts(), this.getEvenRoundingErrors());
      }
    }
    (te.OUTSIDE_EVEN_TOTAL_SUBSET = [1, 10, 34, 70, 126]),
      (te.INSIDE_ODD_TOTAL_SUBSET = [4, 20, 48, 81]),
      (te.OUTSIDE_GSUM = [0, 161, 961, 2015, 2715]),
      (te.INSIDE_GSUM = [0, 336, 1036, 1516]),
      (te.OUTSIDE_ODD_WIDEST = [8, 6, 4, 3, 1]),
      (te.INSIDE_ODD_WIDEST = [2, 4, 6, 8]),
      (te.FINDER_PATTERNS = [
        Int32Array.from([3, 8, 2, 1]),
        Int32Array.from([3, 5, 5, 1]),
        Int32Array.from([3, 3, 7, 1]),
        Int32Array.from([3, 1, 9, 1]),
        Int32Array.from([2, 7, 4, 1]),
        Int32Array.from([2, 5, 6, 1]),
        Int32Array.from([2, 3, 8, 1]),
        Int32Array.from([1, 5, 7, 1]),
        Int32Array.from([1, 3, 9, 1]),
      ]);
    class ee extends gt {
      constructor(t, e) {
        super(), (this.readers = []), (this.verbose = !0 === e);
        const r = t ? t.get(C.POSSIBLE_FORMATS) : null,
          n = t && void 0 !== t.get(C.ASSUME_CODE_39_CHECK_DIGIT);
        r &&
          ((r.includes(k.EAN_13) ||
            r.includes(k.UPC_A) ||
            r.includes(k.EAN_8) ||
            r.includes(k.UPC_E)) &&
            this.readers.push(new Nt(t)),
          r.includes(k.CODE_39) && this.readers.push(new wt(n)),
          r.includes(k.CODE_128) && this.readers.push(new ft()),
          r.includes(k.ITF) && this.readers.push(new At()),
          r.includes(k.RSS_14) && this.readers.push(new te()),
          r.includes(k.RSS_EXPANDED) && this.readers.push(new Jt(this.verbose))),
          0 === this.readers.length &&
            (this.readers.push(new Nt(t)),
            this.readers.push(new wt()),
            this.readers.push(new Nt(t)),
            this.readers.push(new ft()),
            this.readers.push(new At()),
            this.readers.push(new te()),
            this.readers.push(new Jt(this.verbose)));
      }
      decodeRow(t, e, r) {
        for (let n = 0; n < this.readers.length; n++)
          try {
            return this.readers[n].decodeRow(t, e, r);
          } catch (t) {}
        throw new R();
      }
      reset() {
        this.readers.forEach((t) => t.reset());
      }
    }
    class re {
      constructor(t, e, r) {
        (this.ecCodewords = t), (this.ecBlocks = [e]), r && this.ecBlocks.push(r);
      }
      getECCodewords() {
        return this.ecCodewords;
      }
      getECBlocks() {
        return this.ecBlocks;
      }
    }
    class ne {
      constructor(t, e) {
        (this.count = t), (this.dataCodewords = e);
      }
      getCount() {
        return this.count;
      }
      getDataCodewords() {
        return this.dataCodewords;
      }
    }
    class ie {
      constructor(t, e, r, n, i, s) {
        (this.versionNumber = t),
          (this.symbolSizeRows = e),
          (this.symbolSizeColumns = r),
          (this.dataRegionSizeRows = n),
          (this.dataRegionSizeColumns = i),
          (this.ecBlocks = s);
        let o = 0;
        const a = s.getECCodewords(),
          l = s.getECBlocks();
        for (let t of l) o += t.getCount() * (t.getDataCodewords() + a);
        this.totalCodewords = o;
      }
      getVersionNumber() {
        return this.versionNumber;
      }
      getSymbolSizeRows() {
        return this.symbolSizeRows;
      }
      getSymbolSizeColumns() {
        return this.symbolSizeColumns;
      }
      getDataRegionSizeRows() {
        return this.dataRegionSizeRows;
      }
      getDataRegionSizeColumns() {
        return this.dataRegionSizeColumns;
      }
      getTotalCodewords() {
        return this.totalCodewords;
      }
      getECBlocks() {
        return this.ecBlocks;
      }
      static getVersionForDimensions(t, e) {
        if (0 != (1 & t) || 0 != (1 & e)) throw new E();
        for (let r of ie.VERSIONS)
          if (r.symbolSizeRows === t && r.symbolSizeColumns === e) return r;
        throw new E();
      }
      toString() {
        return "" + this.versionNumber;
      }
      static buildVersions() {
        return [
          new ie(1, 10, 10, 8, 8, new re(5, new ne(1, 3))),
          new ie(2, 12, 12, 10, 10, new re(7, new ne(1, 5))),
          new ie(3, 14, 14, 12, 12, new re(10, new ne(1, 8))),
          new ie(4, 16, 16, 14, 14, new re(12, new ne(1, 12))),
          new ie(5, 18, 18, 16, 16, new re(14, new ne(1, 18))),
          new ie(6, 20, 20, 18, 18, new re(18, new ne(1, 22))),
          new ie(7, 22, 22, 20, 20, new re(20, new ne(1, 30))),
          new ie(8, 24, 24, 22, 22, new re(24, new ne(1, 36))),
          new ie(9, 26, 26, 24, 24, new re(28, new ne(1, 44))),
          new ie(10, 32, 32, 14, 14, new re(36, new ne(1, 62))),
          new ie(11, 36, 36, 16, 16, new re(42, new ne(1, 86))),
          new ie(12, 40, 40, 18, 18, new re(48, new ne(1, 114))),
          new ie(13, 44, 44, 20, 20, new re(56, new ne(1, 144))),
          new ie(14, 48, 48, 22, 22, new re(68, new ne(1, 174))),
          new ie(15, 52, 52, 24, 24, new re(42, new ne(2, 102))),
          new ie(16, 64, 64, 14, 14, new re(56, new ne(2, 140))),
          new ie(17, 72, 72, 16, 16, new re(36, new ne(4, 92))),
          new ie(18, 80, 80, 18, 18, new re(48, new ne(4, 114))),
          new ie(19, 88, 88, 20, 20, new re(56, new ne(4, 144))),
          new ie(20, 96, 96, 22, 22, new re(68, new ne(4, 174))),
          new ie(21, 104, 104, 24, 24, new re(56, new ne(6, 136))),
          new ie(22, 120, 120, 18, 18, new re(68, new ne(6, 175))),
          new ie(23, 132, 132, 20, 20, new re(62, new ne(8, 163))),
          new ie(
            24,
            144,
            144,
            22,
            22,
            new re(62, new ne(8, 156), new ne(2, 155))
          ),
          new ie(25, 8, 18, 6, 16, new re(7, new ne(1, 5))),
          new ie(26, 8, 32, 6, 14, new re(11, new ne(1, 10))),
          new ie(27, 12, 26, 10, 24, new re(14, new ne(1, 16))),
          new ie(28, 12, 36, 10, 16, new re(18, new ne(1, 22))),
          new ie(29, 16, 36, 14, 16, new re(24, new ne(1, 32))),
          new ie(30, 16, 48, 14, 22, new re(28, new ne(1, 49))),
        ];
      }
    }
    ie.VERSIONS = ie.buildVersions();
    class se {
      constructor(t) {
        const e = t.getHeight();
        if (e < 8 || e > 144 || 0 != (1 & e)) throw new E();
        (this.version = se.readVersion(t)),
          (this.mappingBitMatrix = this.extractDataRegion(t)),
          (this.readMappingMatrix = new T(
            this.mappingBitMatrix.getWidth(),
            this.mappingBitMatrix.getHeight()
          ));
      }
      getVersion() {
        return this.version;
      }
      static readVersion(t) {
        const e = t.getHeight(),
          r = t.getWidth();
        return ie.getVersionForDimensions(e, r);
      }
      readCodewords() {
        const t = new Int8Array(this.version.getTotalCodewords());
        let e = 0,
          r = 4,
          n = 0;
        const i = this.mappingBitMatrix.getHeight(),
          s = this.mappingBitMatrix.getWidth();
        let o = !1,
          a = !1,
          l = !1,
          h = !1;
        do {
          if (r !== i || 0 !== n || o)
            if (r !== i - 2 || 0 !== n || 0 == (3 & s) || a)
              if (r !== i + 4 || 2 !== n || 0 != (7 & s) || l)
                if (r !== i - 2 || 0 !== n || 4 != (7 & s) || h) {
                  do {
                    r < i &&
                      n >= 0 &&
                      !this.readMappingMatrix.get(n, r) &&
                      (t[e++] = 255 & this.readUtah(r, n, i, s)),
                      (r -= 2),
                      (n += 2);
                  } while (r >= 0 && n < s);
                  (r += 1), (n += 3);
                  do {
                    r >= 0 &&
                      n < s &&
                      !this.readMappingMatrix.get(n, r) &&
                      (t[e++] = 255 & this.readUtah(r, n, i, s)),
                      (r += 2),
                      (n -= 2);
                  } while (r < i && n >= 0);
                  (r += 3), (n += 1);
                } else
                  (t[e++] = 255 & this.readCorner4(i, s)),
                    (r -= 2),
                    (n += 2),
                    (h = !0);
              else
                (t[e++] = 255 & this.readCorner3(i, s)),
                  (r -= 2),
                  (n += 2),
                  (l = !0);
            else
              (t[e++] = 255 & this.readCorner2(i, s)),
                (r -= 2),
                (n += 2),
                (a = !0);
          else
            (t[e++] = 255 & this.readCorner1(i, s)), (r -= 2), (n += 2), (o = !0);
        } while (r < i || n < s);
        if (e !== this.version.getTotalCodewords()) throw new E();
        return t;
      }
      readModule(t, e, r, n) {
        return (
          t < 0 && ((t += r), (e += 4 - ((r + 4) & 7))),
          e < 0 && ((e += n), (t += 4 - ((n + 4) & 7))),
          this.readMappingMatrix.set(e, t),
          this.mappingBitMatrix.get(e, t)
        );
      }
      readUtah(t, e, r, n) {
        let i = 0;
        return (
          this.readModule(t - 2, e - 2, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t - 2, e - 1, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t - 1, e - 2, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t - 1, e - 1, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t - 1, e, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t, e - 2, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t, e - 1, r, n) && (i |= 1),
          (i <<= 1),
          this.readModule(t, e, r, n) && (i |= 1),
          i
        );
      }
      readCorner1(t, e) {
        let r = 0;
        return (
          this.readModule(t - 1, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 1, 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 1, 2, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 2, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(1, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(2, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(3, e - 1, t, e) && (r |= 1),
          r
        );
      }
      readCorner2(t, e) {
        let r = 0;
        return (
          this.readModule(t - 3, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 2, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 1, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 4, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 3, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 2, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(1, e - 1, t, e) && (r |= 1),
          r
        );
      }
      readCorner3(t, e) {
        let r = 0;
        return (
          this.readModule(t - 1, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 1, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 3, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 2, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(1, e - 3, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(1, e - 2, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(1, e - 1, t, e) && (r |= 1),
          r
        );
      }
      readCorner4(t, e) {
        let r = 0;
        return (
          this.readModule(t - 3, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 2, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(t - 1, 0, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 2, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(0, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(1, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(2, e - 1, t, e) && (r |= 1),
          (r <<= 1),
          this.readModule(3, e - 1, t, e) && (r |= 1),
          r
        );
      }
      extractDataRegion(t) {
        const e = this.version.getSymbolSizeRows(),
          r = this.version.getSymbolSizeColumns();
        if (t.getHeight() !== e)
          throw new o("Dimension of bitMatrix must match the version size");
        const n = this.version.getDataRegionSizeRows(),
          i = this.version.getDataRegionSizeColumns(),
          s = (e / n) | 0,
          a = (r / i) | 0,
          l = new T(a * i, s * n);
        for (let e = 0; e < s; ++e) {
          const r = e * n;
          for (let s = 0; s < a; ++s) {
            const o = s * i;
            for (let a = 0; a < n; ++a) {
              const h = e * (n + 2) + 1 + a,
                c = r + a;
              for (let e = 0; e < i; ++e) {
                const r = s * (i + 2) + 1 + e;
                if (t.get(r, h)) {
                  const t = o + e;
                  l.set(t, c);
                }
              }
            }
          }
        }
        return l;
      }
    }
    class oe {
      constructor(t, e) {
        (this.numDataCodewords = t), (this.codewords = e);
      }
      static getDataBlocks(t, e) {
        const r = e.getECBlocks();
        let n = 0;
        const i = r.getECBlocks();
        for (let t of i) n += t.getCount();
        const s = new Array(n);
        let a = 0;
        for (let t of i)
          for (let e = 0; e < t.getCount(); e++) {
            const e = t.getDataCodewords(),
              n = r.getECCodewords() + e;
            s[a++] = new oe(e, new Uint8Array(n));
          }
        const l = s[0].codewords.length - r.getECCodewords(),
          h = l - 1;
        let c = 0;
        for (let e = 0; e < h; e++)
          for (let r = 0; r < a; r++) s[r].codewords[e] = t[c++];
        const u = 24 === e.getVersionNumber(),
          d = u ? 8 : a;
        for (let e = 0; e < d; e++) s[e].codewords[l - 1] = t[c++];
        const g = s[0].codewords.length;
        for (let e = l; e < g; e++)
          for (let r = 0; r < a; r++) {
            const n = u ? (r + 8) % a : r,
              i = u && n > 7 ? e - 1 : e;
            s[n].codewords[i] = t[c++];
          }
        if (c !== t.length) throw new o();
        return s;
      }
      getNumDataCodewords() {
        return this.numDataCodewords;
      }
      getCodewords() {
        return this.codewords;
      }
    }
    class ae {
      constructor(t) {
        (this.bytes = t), (this.byteOffset = 0), (this.bitOffset = 0);
      }
      getBitOffset() {
        return this.bitOffset;
      }
      getByteOffset() {
        return this.byteOffset;
      }
      readBits(t) {
        if (t < 1 || t > 32 || t > this.available()) throw new o("" + t);
        let e = 0,
          r = this.bitOffset,
          n = this.byteOffset;
        const i = this.bytes;
        if (r > 0) {
          const s = 8 - r,
            o = t < s ? t : s,
            a = s - o,
            l = (255 >> (8 - o)) << a;
          (e = (i[n] & l) >> a), (t -= o), 8 === (r += o) && ((r = 0), n++);
        }
        if (t > 0) {
          for (; t >= 8; ) (e = (e << 8) | (255 & i[n])), n++, (t -= 8);
          if (t > 0) {
            const s = 8 - t,
              o = (255 >> s) << s;
            (e = (e << t) | ((i[n] & o) >> s)), (r += t);
          }
        }
        return (this.bitOffset = r), (this.byteOffset = n), e;
      }
      available() {
        return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset;
      }
    }
    !(function (t) {
      (t[(t.PAD_ENCODE = 0)] = "PAD_ENCODE"),
        (t[(t.ASCII_ENCODE = 1)] = "ASCII_ENCODE"),
        (t[(t.C40_ENCODE = 2)] = "C40_ENCODE"),
        (t[(t.TEXT_ENCODE = 3)] = "TEXT_ENCODE"),
        (t[(t.ANSIX12_ENCODE = 4)] = "ANSIX12_ENCODE"),
        (t[(t.EDIFACT_ENCODE = 5)] = "EDIFACT_ENCODE"),
        (t[(t.BASE256_ENCODE = 6)] = "BASE256_ENCODE");
    })(V || (V = {}));
    class le {
      static decode(t) {
        const e = new ae(t),
          r = new p(),
          n = new p(),
          i = new Array();
        let s = V.ASCII_ENCODE;
        do {
          if (s === V.ASCII_ENCODE) s = this.decodeAsciiSegment(e, r, n);
          else {
            switch (s) {
              case V.C40_ENCODE:
                this.decodeC40Segment(e, r);
                break;
              case V.TEXT_ENCODE:
                this.decodeTextSegment(e, r);
                break;
              case V.ANSIX12_ENCODE:
                this.decodeAnsiX12Segment(e, r);
                break;
              case V.EDIFACT_ENCODE:
                this.decodeEdifactSegment(e, r);
                break;
              case V.BASE256_ENCODE:
                this.decodeBase256Segment(e, r, i);
                break;
              default:
                throw new E();
            }
            s = V.ASCII_ENCODE;
          }
        } while (s !== V.PAD_ENCODE && e.available() > 0);
        return (
          n.length() > 0 && r.append(n.toString()),
          new z(t, r.toString(), 0 === i.length ? null : i, null)
        );
      }
      static decodeAsciiSegment(t, e, r) {
        let n = !1;
        do {
          let i = t.readBits(8);
          if (0 === i) throw new E();
          if (i <= 128)
            return (
              n && (i += 128),
              e.append(String.fromCharCode(i - 1)),
              V.ASCII_ENCODE
            );
          if (129 === i) return V.PAD_ENCODE;
          if (i <= 229) {
            const t = i - 130;
            t < 10 && e.append("0"), e.append("" + t);
          } else
            switch (i) {
              case 230:
                return V.C40_ENCODE;
              case 231:
                return V.BASE256_ENCODE;
              case 232:
                e.append(String.fromCharCode(29));
                break;
              case 233:
              case 234:
                break;
              case 235:
                n = !0;
                break;
              case 236:
                e.append("[)>05"), r.insert(0, "");
                break;
              case 237:
                e.append("[)>06"), r.insert(0, "");
                break;
              case 238:
                return V.ANSIX12_ENCODE;
              case 239:
                return V.TEXT_ENCODE;
              case 240:
                return V.EDIFACT_ENCODE;
              case 241:
                break;
              default:
                if (254 !== i || 0 !== t.available()) throw new E();
            }
        } while (t.available() > 0);
        return V.ASCII_ENCODE;
      }
      static decodeC40Segment(t, e) {
        let r = !1;
        const n = [];
        let i = 0;
        do {
          if (8 === t.available()) return;
          const s = t.readBits(8);
          if (254 === s) return;
          this.parseTwoBytes(s, t.readBits(8), n);
          for (let t = 0; t < 3; t++) {
            const s = n[t];
            switch (i) {
              case 0:
                if (s < 3) i = s + 1;
                else {
                  if (!(s < this.C40_BASIC_SET_CHARS.length)) throw new E();
                  {
                    const t = this.C40_BASIC_SET_CHARS[s];
                    r
                      ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)),
                        (r = !1))
                      : e.append(t);
                  }
                }
                break;
              case 1:
                r
                  ? (e.append(String.fromCharCode(s + 128)), (r = !1))
                  : e.append(String.fromCharCode(s)),
                  (i = 0);
                break;
              case 2:
                if (s < this.C40_SHIFT2_SET_CHARS.length) {
                  const t = this.C40_SHIFT2_SET_CHARS[s];
                  r
                    ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)),
                      (r = !1))
                    : e.append(t);
                } else
                  switch (s) {
                    case 27:
                      e.append(String.fromCharCode(29));
                      break;
                    case 30:
                      r = !0;
                      break;
                    default:
                      throw new E();
                  }
                i = 0;
                break;
              case 3:
                r
                  ? (e.append(String.fromCharCode(s + 224)), (r = !1))
                  : e.append(String.fromCharCode(s + 96)),
                  (i = 0);
                break;
              default:
                throw new E();
            }
          }
        } while (t.available() > 0);
      }
      static decodeTextSegment(t, e) {
        let r = !1,
          n = [],
          i = 0;
        do {
          if (8 === t.available()) return;
          const s = t.readBits(8);
          if (254 === s) return;
          this.parseTwoBytes(s, t.readBits(8), n);
          for (let t = 0; t < 3; t++) {
            const s = n[t];
            switch (i) {
              case 0:
                if (s < 3) i = s + 1;
                else {
                  if (!(s < this.TEXT_BASIC_SET_CHARS.length)) throw new E();
                  {
                    const t = this.TEXT_BASIC_SET_CHARS[s];
                    r
                      ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)),
                        (r = !1))
                      : e.append(t);
                  }
                }
                break;
              case 1:
                r
                  ? (e.append(String.fromCharCode(s + 128)), (r = !1))
                  : e.append(String.fromCharCode(s)),
                  (i = 0);
                break;
              case 2:
                if (s < this.TEXT_SHIFT2_SET_CHARS.length) {
                  const t = this.TEXT_SHIFT2_SET_CHARS[s];
                  r
                    ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)),
                      (r = !1))
                    : e.append(t);
                } else
                  switch (s) {
                    case 27:
                      e.append(String.fromCharCode(29));
                      break;
                    case 30:
                      r = !0;
                      break;
                    default:
                      throw new E();
                  }
                i = 0;
                break;
              case 3:
                if (!(s < this.TEXT_SHIFT3_SET_CHARS.length)) throw new E();
                {
                  const t = this.TEXT_SHIFT3_SET_CHARS[s];
                  r
                    ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)),
                      (r = !1))
                    : e.append(t),
                    (i = 0);
                }
                break;
              default:
                throw new E();
            }
          }
        } while (t.available() > 0);
      }
      static decodeAnsiX12Segment(t, e) {
        const r = [];
        do {
          if (8 === t.available()) return;
          const n = t.readBits(8);
          if (254 === n) return;
          this.parseTwoBytes(n, t.readBits(8), r);
          for (let t = 0; t < 3; t++) {
            const n = r[t];
            switch (n) {
              case 0:
                e.append("\r");
                break;
              case 1:
                e.append("*");
                break;
              case 2:
                e.append(">");
                break;
              case 3:
                e.append(" ");
                break;
              default:
                if (n < 14) e.append(String.fromCharCode(n + 44));
                else {
                  if (!(n < 40)) throw new E();
                  e.append(String.fromCharCode(n + 51));
                }
            }
          }
        } while (t.available() > 0);
      }
      static parseTwoBytes(t, e, r) {
        let n = (t << 8) + e - 1,
          i = Math.floor(n / 1600);
        (r[0] = i),
          (n -= 1600 * i),
          (i = Math.floor(n / 40)),
          (r[1] = i),
          (r[2] = n - 40 * i);
      }
      static decodeEdifactSegment(t, e) {
        do {
          if (t.available() <= 16) return;
          for (let r = 0; r < 4; r++) {
            let r = t.readBits(6);
            if (31 === r) {
              const e = 8 - t.getBitOffset();
              return void (8 !== e && t.readBits(e));
            }
            0 == (32 & r) && (r |= 64), e.append(String.fromCharCode(r));
          }
        } while (t.available() > 0);
      }
      static decodeBase256Segment(t, e, r) {
        let n = 1 + t.getByteOffset();
        const i = this.unrandomize255State(t.readBits(8), n++);
        let s;
        if (
          (s =
            0 === i
              ? (t.available() / 8) | 0
              : i < 250
              ? i
              : 250 * (i - 249) + this.unrandomize255State(t.readBits(8), n++)) <
          0
        )
          throw new E();
        const o = new Uint8Array(s);
        for (let e = 0; e < s; e++) {
          if (t.available() < 8) throw new E();
          o[e] = this.unrandomize255State(t.readBits(8), n++);
        }
        r.push(o);
        try {
          e.append(I.decode(o, S.ISO88591));
        } catch (t) {
          throw new j(
            "Platform does not support required encoding: " + t.message
          );
        }
      }
      static unrandomize255State(t, e) {
        const r = t - (((149 * e) % 255) + 1);
        return r >= 0 ? r : r + 256;
      }
    }
    (le.C40_BASIC_SET_CHARS = [
      "*",
      "*",
      "*",
      " ",
      "0",
      "1",
      "2",
      "3",
      "4",
      "5",
      "6",
      "7",
      "8",
      "9",
      "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",
    ]),
      (le.C40_SHIFT2_SET_CHARS = [
        "!",
        '"',
        "#",
        "$",
        "%",
        "&",
        "'",
        "(",
        ")",
        "*",
        "+",
        ",",
        "-",
        ".",
        "/",
        ":",
        ";",
        "<",
        "=",
        ">",
        "?",
        "@",
        "[",
        "\\",
        "]",
        "^",
        "_",
      ]),
      (le.TEXT_BASIC_SET_CHARS = [
        "*",
        "*",
        "*",
        " ",
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "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",
      ]),
      (le.TEXT_SHIFT2_SET_CHARS = le.C40_SHIFT2_SET_CHARS),
      (le.TEXT_SHIFT3_SET_CHARS = [
        "`",
        "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",
        "{",
        "|",
        "}",
        "~",
        String.fromCharCode(127),
      ]);
    class he {
      constructor() {
        this.rsDecoder = new J(q.DATA_MATRIX_FIELD_256);
      }
      decode(t) {
        const e = new se(t),
          r = e.getVersion(),
          n = e.readCodewords(),
          i = oe.getDataBlocks(n, r);
        let s = 0;
        for (let t of i) s += t.getNumDataCodewords();
        const o = new Uint8Array(s),
          a = i.length;
        for (let t = 0; t < a; t++) {
          const e = i[t],
            r = e.getCodewords(),
            n = e.getNumDataCodewords();
          this.correctErrors(r, n);
          for (let e = 0; e < n; e++) o[e * a + t] = r[e];
        }
        return le.decode(o);
      }
      correctErrors(t, e) {
        const r = new Int32Array(t);
        try {
          this.rsDecoder.decode(r, t.length - e);
        } catch (t) {
          throw new l();
        }
        for (let n = 0; n < e; n++) t[n] = r[n];
      }
    }
    class ce {
      constructor(t) {
        (this.image = t), (this.rectangleDetector = new st(this.image));
      }
      detect() {
        const t = this.rectangleDetector.detect();
        let e = this.detectSolid1(t);
        if ((((e = this.detectSolid2(e))[3] = this.correctTopRight(e)), !e[3]))
          throw new R();
        const r = (e = this.shiftToModuleCenter(e))[0],
          n = e[1],
          i = e[2],
          s = e[3];
        let o = this.transitionsBetween(r, s) + 1,
          a = this.transitionsBetween(i, s) + 1;
        1 == (1 & o) && (o += 1),
          1 == (1 & a) && (a += 1),
          4 * o < 7 * a && 4 * a < 7 * o && (o = a = Math.max(o, a));
        let l = ce.sampleGrid(this.image, r, n, i, s, o, a);
        return new nt(l, [r, n, i, s]);
      }
      static shiftPoint(t, e, r) {
        let n = (e.getX() - t.getX()) / (r + 1),
          i = (e.getY() - t.getY()) / (r + 1);
        return new rt(t.getX() + n, t.getY() + i);
      }
      static moveAway(t, e, r) {
        let n = t.getX(),
          i = t.getY();
        return (
          n < e ? (n -= 1) : (n += 1), i < r ? (i -= 1) : (i += 1), new rt(n, i)
        );
      }
      detectSolid1(t) {
        let e = t[0],
          r = t[1],
          n = t[3],
          i = t[2],
          s = this.transitionsBetween(e, r),
          o = this.transitionsBetween(r, n),
          a = this.transitionsBetween(n, i),
          l = this.transitionsBetween(i, e),
          h = s,
          c = [i, e, r, n];
        return (
          h > o && ((h = o), (c[0] = e), (c[1] = r), (c[2] = n), (c[3] = i)),
          h > a && ((h = a), (c[0] = r), (c[1] = n), (c[2] = i), (c[3] = e)),
          h > l && ((c[0] = n), (c[1] = i), (c[2] = e), (c[3] = r)),
          c
        );
      }
      detectSolid2(t) {
        let e = t[0],
          r = t[1],
          n = t[2],
          i = t[3],
          s = this.transitionsBetween(e, i),
          o = ce.shiftPoint(r, n, 4 * (s + 1)),
          a = ce.shiftPoint(n, r, 4 * (s + 1));
        return (
          this.transitionsBetween(o, e) < this.transitionsBetween(a, i)
            ? ((t[0] = e), (t[1] = r), (t[2] = n), (t[3] = i))
            : ((t[0] = r), (t[1] = n), (t[2] = i), (t[3] = e)),
          t
        );
      }
      correctTopRight(t) {
        let e = t[0],
          r = t[1],
          n = t[2],
          i = t[3],
          s = this.transitionsBetween(e, i),
          o = this.transitionsBetween(r, i),
          a = ce.shiftPoint(e, r, 4 * (o + 1)),
          l = ce.shiftPoint(n, r, 4 * (s + 1));
        (s = this.transitionsBetween(a, i)), (o = this.transitionsBetween(l, i));
        let h = new rt(
            i.getX() + (n.getX() - r.getX()) / (s + 1),
            i.getY() + (n.getY() - r.getY()) / (s + 1)
          ),
          c = new rt(
            i.getX() + (e.getX() - r.getX()) / (o + 1),
            i.getY() + (e.getY() - r.getY()) / (o + 1)
          );
        return this.isValid(h)
          ? this.isValid(c)
            ? this.transitionsBetween(a, h) + this.transitionsBetween(l, h) >
              this.transitionsBetween(a, c) + this.transitionsBetween(l, c)
              ? h
              : c
            : h
          : this.isValid(c)
          ? c
          : null;
      }
      shiftToModuleCenter(t) {
        let e = t[0],
          r = t[1],
          n = t[2],
          i = t[3],
          s = this.transitionsBetween(e, i) + 1,
          o = this.transitionsBetween(n, i) + 1,
          a = ce.shiftPoint(e, r, 4 * o),
          l = ce.shiftPoint(n, r, 4 * s);
        1 == (1 & (s = this.transitionsBetween(a, i) + 1)) && (s += 1),
          1 == (1 & (o = this.transitionsBetween(l, i) + 1)) && (o += 1);
        let h,
          c,
          u = (e.getX() + r.getX() + n.getX() + i.getX()) / 4,
          d = (e.getY() + r.getY() + n.getY() + i.getY()) / 4;
        return (
          (e = ce.moveAway(e, u, d)),
          (r = ce.moveAway(r, u, d)),
          (n = ce.moveAway(n, u, d)),
          (i = ce.moveAway(i, u, d)),
          (a = ce.shiftPoint(e, r, 4 * o)),
          (a = ce.shiftPoint(a, i, 4 * s)),
          (h = ce.shiftPoint(r, e, 4 * o)),
          (h = ce.shiftPoint(h, n, 4 * s)),
          (l = ce.shiftPoint(n, i, 4 * o)),
          (l = ce.shiftPoint(l, r, 4 * s)),
          (c = ce.shiftPoint(i, n, 4 * o)),
          [a, h, l, (c = ce.shiftPoint(c, e, 4 * s))]
        );
      }
      isValid(t) {
        return (
          t.getX() >= 0 &&
          t.getX() < this.image.getWidth() &&
          t.getY() > 0 &&
          t.getY() < this.image.getHeight()
        );
      }
      static sampleGrid(t, e, r, n, i, s, o) {
        return ht
          .getInstance()
          .sampleGrid(
            t,
            s,
            o,
            0.5,
            0.5,
            s - 0.5,
            0.5,
            s - 0.5,
            o - 0.5,
            0.5,
            o - 0.5,
            e.getX(),
            e.getY(),
            i.getX(),
            i.getY(),
            n.getX(),
            n.getY(),
            r.getX(),
            r.getY()
          );
      }
      transitionsBetween(t, e) {
        let r = Math.trunc(t.getX()),
          n = Math.trunc(t.getY()),
          i = Math.trunc(e.getX()),
          s = Math.trunc(e.getY()),
          o = Math.abs(s - n) > Math.abs(i - r);
        if (o) {
          let t = r;
          (r = n), (n = t), (t = i), (i = s), (s = t);
        }
        let a = Math.abs(i - r),
          l = Math.abs(s - n),
          h = -a / 2,
          c = n < s ? 1 : -1,
          u = r < i ? 1 : -1,
          d = 0,
          g = this.image.get(o ? n : r, o ? r : n);
        for (let t = r, e = n; t !== i; t += u) {
          let r = this.image.get(o ? e : t, o ? t : e);
          if ((r !== g && (d++, (g = r)), (h += l) > 0)) {
            if (e === s) break;
            (e += c), (h -= a);
          }
        }
        return d;
      }
    }
    class ue {
      constructor() {
        this.decoder = new he();
      }
      decode(t, e = null) {
        let r, n;
        if (null != e && e.has(C.PURE_BARCODE)) {
          const e = ue.extractPureBits(t.getBlackMatrix());
          (r = this.decoder.decode(e)), (n = ue.NO_POINTS);
        } else {
          const e = new ce(t.getBlackMatrix()).detect();
          (r = this.decoder.decode(e.getBits())), (n = e.getPoints());
        }
        const i = r.getRawBytes(),
          s = new F(
            r.getText(),
            i,
            8 * i.length,
            n,
            k.DATA_MATRIX,
            c.currentTimeMillis()
          ),
          o = r.getByteSegments();
        null != o && s.putMetadata(W.BYTE_SEGMENTS, o);
        const a = r.getECLevel();
        return null != a && s.putMetadata(W.ERROR_CORRECTION_LEVEL, a), s;
      }
      reset() {}
      static extractPureBits(t) {
        const e = t.getTopLeftOnBit(),
          r = t.getBottomRightOnBit();
        if (null == e || null == r) throw new R();
        const n = this.moduleSize(e, t);
        let i = e[1];
        const s = r[1];
        let o = e[0];
        const a = (r[0] - o + 1) / n,
          l = (s - i + 1) / n;
        if (a <= 0 || l <= 0) throw new R();
        const h = n / 2;
        (i += h), (o += h);
        const c = new T(a, l);
        for (let e = 0; e < l; e++) {
          const r = i + e * n;
          for (let i = 0; i < a; i++) t.get(o + i * n, r) && c.set(i, e);
        }
        return c;
      }
      static moduleSize(t, e) {
        const r = e.getWidth();
        let n = t[0];
        const i = t[1];
        for (; n < r && e.get(n, i); ) n++;
        if (n === r) throw new R();
        const s = n - t[0];
        if (0 === s) throw new R();
        return s;
      }
    }
    ue.NO_POINTS = [];
    !(function (t) {
      (t[(t.L = 0)] = "L"),
        (t[(t.M = 1)] = "M"),
        (t[(t.Q = 2)] = "Q"),
        (t[(t.H = 3)] = "H");
    })(U || (U = {}));
    class de {
      constructor(t, e, r) {
        (this.value = t),
          (this.stringValue = e),
          (this.bits = r),
          de.FOR_BITS.set(r, this),
          de.FOR_VALUE.set(t, this);
      }
      getValue() {
        return this.value;
      }
      getBits() {
        return this.bits;
      }
      static fromString(t) {
        switch (t) {
          case "L":
            return de.L;
          case "M":
            return de.M;
          case "Q":
            return de.Q;
          case "H":
            return de.H;
          default:
            throw new s(t + "not available");
        }
      }
      toString() {
        return this.stringValue;
      }
      equals(t) {
        if (!(t instanceof de)) return !1;
        const e = t;
        return this.value === e.value;
      }
      static forBits(t) {
        if (t < 0 || t >= de.FOR_BITS.size) throw new o();
        return de.FOR_BITS.get(t);
      }
    }
    (de.FOR_BITS = new Map()),
      (de.FOR_VALUE = new Map()),
      (de.L = new de(U.L, "L", 1)),
      (de.M = new de(U.M, "M", 0)),
      (de.Q = new de(U.Q, "Q", 3)),
      (de.H = new de(U.H, "H", 2));
    class ge {
      constructor(t) {
        (this.errorCorrectionLevel = de.forBits((t >> 3) & 3)),
          (this.dataMask = 7 & t);
      }
      static numBitsDiffering(t, e) {
        return f.bitCount(t ^ e);
      }
      static decodeFormatInformation(t, e) {
        const r = ge.doDecodeFormatInformation(t, e);
        return null !== r
          ? r
          : ge.doDecodeFormatInformation(
              t ^ ge.FORMAT_INFO_MASK_QR,
              e ^ ge.FORMAT_INFO_MASK_QR
            );
      }
      static doDecodeFormatInformation(t, e) {
        let r = Number.MAX_SAFE_INTEGER,
          n = 0;
        for (const i of ge.FORMAT_INFO_DECODE_LOOKUP) {
          const s = i[0];
          if (s === t || s === e) return new ge(i[1]);
          let o = ge.numBitsDiffering(t, s);
          o < r && ((n = i[1]), (r = o)),
            t !== e &&
              (o = ge.numBitsDiffering(e, s)) < r &&
              ((n = i[1]), (r = o));
        }
        return r <= 3 ? new ge(n) : null;
      }
      getErrorCorrectionLevel() {
        return this.errorCorrectionLevel;
      }
      getDataMask() {
        return this.dataMask;
      }
      hashCode() {
        return (this.errorCorrectionLevel.getBits() << 3) | this.dataMask;
      }
      equals(t) {
        if (!(t instanceof ge)) return !1;
        const e = t;
        return (
          this.errorCorrectionLevel === e.errorCorrectionLevel &&
          this.dataMask === e.dataMask
        );
      }
    }
    (ge.FORMAT_INFO_MASK_QR = 21522),
      (ge.FORMAT_INFO_DECODE_LOOKUP = [
        Int32Array.from([21522, 0]),
        Int32Array.from([20773, 1]),
        Int32Array.from([24188, 2]),
        Int32Array.from([23371, 3]),
        Int32Array.from([17913, 4]),
        Int32Array.from([16590, 5]),
        Int32Array.from([20375, 6]),
        Int32Array.from([19104, 7]),
        Int32Array.from([30660, 8]),
        Int32Array.from([29427, 9]),
        Int32Array.from([32170, 10]),
        Int32Array.from([30877, 11]),
        Int32Array.from([26159, 12]),
        Int32Array.from([25368, 13]),
        Int32Array.from([27713, 14]),
        Int32Array.from([26998, 15]),
        Int32Array.from([5769, 16]),
        Int32Array.from([5054, 17]),
        Int32Array.from([7399, 18]),
        Int32Array.from([6608, 19]),
        Int32Array.from([1890, 20]),
        Int32Array.from([597, 21]),
        Int32Array.from([3340, 22]),
        Int32Array.from([2107, 23]),
        Int32Array.from([13663, 24]),
        Int32Array.from([12392, 25]),
        Int32Array.from([16177, 26]),
        Int32Array.from([14854, 27]),
        Int32Array.from([9396, 28]),
        Int32Array.from([8579, 29]),
        Int32Array.from([11994, 30]),
        Int32Array.from([11245, 31]),
      ]);
    class fe {
      constructor(t, ...e) {
        (this.ecCodewordsPerBlock = t), (this.ecBlocks = e);
      }
      getECCodewordsPerBlock() {
        return this.ecCodewordsPerBlock;
      }
      getNumBlocks() {
        let t = 0;
        const e = this.ecBlocks;
        for (const r of e) t += r.getCount();
        return t;
      }
      getTotalECCodewords() {
        return this.ecCodewordsPerBlock * this.getNumBlocks();
      }
      getECBlocks() {
        return this.ecBlocks;
      }
    }
    class we {
      constructor(t, e) {
        (this.count = t), (this.dataCodewords = e);
      }
      getCount() {
        return this.count;
      }
      getDataCodewords() {
        return this.dataCodewords;
      }
    }
    class Ae {
      constructor(t, e, ...r) {
        (this.versionNumber = t),
          (this.alignmentPatternCenters = e),
          (this.ecBlocks = r);
        let n = 0;
        const i = r[0].getECCodewordsPerBlock(),
          s = r[0].getECBlocks();
        for (const t of s) n += t.getCount() * (t.getDataCodewords() + i);
        this.totalCodewords = n;
      }
      getVersionNumber() {
        return this.versionNumber;
      }
      getAlignmentPatternCenters() {
        return this.alignmentPatternCenters;
      }
      getTotalCodewords() {
        return this.totalCodewords;
      }
      getDimensionForVersion() {
        return 17 + 4 * this.versionNumber;
      }
      getECBlocksForLevel(t) {
        return this.ecBlocks[t.getValue()];
      }
      static getProvisionalVersionForDimension(t) {
        if (t % 4 != 1) throw new E();
        try {
          return this.getVersionForNumber((t - 17) / 4);
        } catch (t) {
          throw new E();
        }
      }
      static getVersionForNumber(t) {
        if (t < 1 || t > 40) throw new o();
        return Ae.VERSIONS[t - 1];
      }
      static decodeVersionInformation(t) {
        let e = Number.MAX_SAFE_INTEGER,
          r = 0;
        for (let n = 0; n < Ae.VERSION_DECODE_INFO.length; n++) {
          const i = Ae.VERSION_DECODE_INFO[n];
          if (i === t) return Ae.getVersionForNumber(n + 7);
          const s = ge.numBitsDiffering(t, i);
          s < e && ((r = n + 7), (e = s));
        }
        return e <= 3 ? Ae.getVersionForNumber(r) : null;
      }
      buildFunctionPattern() {
        const t = this.getDimensionForVersion(),
          e = new T(t);
        e.setRegion(0, 0, 9, 9),
          e.setRegion(t - 8, 0, 8, 9),
          e.setRegion(0, t - 8, 9, 8);
        const r = this.alignmentPatternCenters.length;
        for (let t = 0; t < r; t++) {
          const n = this.alignmentPatternCenters[t] - 2;
          for (let i = 0; i < r; i++)
            (0 === t && (0 === i || i === r - 1)) ||
              (t === r - 1 && 0 === i) ||
              e.setRegion(this.alignmentPatternCenters[i] - 2, n, 5, 5);
        }
        return (
          e.setRegion(6, 9, 1, t - 17),
          e.setRegion(9, 6, t - 17, 1),
          this.versionNumber > 6 &&
            (e.setRegion(t - 11, 0, 3, 6), e.setRegion(0, t - 11, 6, 3)),
          e
        );
      }
      toString() {
        return "" + this.versionNumber;
      }
    }
    (Ae.VERSION_DECODE_INFO = Int32Array.from([
      31892, 34236, 39577, 42195, 48118, 51042, 55367, 58893, 63784, 68472, 70749,
      76311, 79154, 84390, 87683, 92361, 96236, 102084, 102881, 110507, 110734,
      117786, 119615, 126325, 127568, 133589, 136944, 141498, 145311, 150283,
      152622, 158308, 161089, 167017,
    ])),
      (Ae.VERSIONS = [
        new Ae(
          1,
          new Int32Array(0),
          new fe(7, new we(1, 19)),
          new fe(10, new we(1, 16)),
          new fe(13, new we(1, 13)),
          new fe(17, new we(1, 9))
        ),
        new Ae(
          2,
          Int32Array.from([6, 18]),
          new fe(10, new we(1, 34)),
          new fe(16, new we(1, 28)),
          new fe(22, new we(1, 22)),
          new fe(28, new we(1, 16))
        ),
        new Ae(
          3,
          Int32Array.from([6, 22]),
          new fe(15, new we(1, 55)),
          new fe(26, new we(1, 44)),
          new fe(18, new we(2, 17)),
          new fe(22, new we(2, 13))
        ),
        new Ae(
          4,
          Int32Array.from([6, 26]),
          new fe(20, new we(1, 80)),
          new fe(18, new we(2, 32)),
          new fe(26, new we(2, 24)),
          new fe(16, new we(4, 9))
        ),
        new Ae(
          5,
          Int32Array.from([6, 30]),
          new fe(26, new we(1, 108)),
          new fe(24, new we(2, 43)),
          new fe(18, new we(2, 15), new we(2, 16)),
          new fe(22, new we(2, 11), new we(2, 12))
        ),
        new Ae(
          6,
          Int32Array.from([6, 34]),
          new fe(18, new we(2, 68)),
          new fe(16, new we(4, 27)),
          new fe(24, new we(4, 19)),
          new fe(28, new we(4, 15))
        ),
        new Ae(
          7,
          Int32Array.from([6, 22, 38]),
          new fe(20, new we(2, 78)),
          new fe(18, new we(4, 31)),
          new fe(18, new we(2, 14), new we(4, 15)),
          new fe(26, new we(4, 13), new we(1, 14))
        ),
        new Ae(
          8,
          Int32Array.from([6, 24, 42]),
          new fe(24, new we(2, 97)),
          new fe(22, new we(2, 38), new we(2, 39)),
          new fe(22, new we(4, 18), new we(2, 19)),
          new fe(26, new we(4, 14), new we(2, 15))
        ),
        new Ae(
          9,
          Int32Array.from([6, 26, 46]),
          new fe(30, new we(2, 116)),
          new fe(22, new we(3, 36), new we(2, 37)),
          new fe(20, new we(4, 16), new we(4, 17)),
          new fe(24, new we(4, 12), new we(4, 13))
        ),
        new Ae(
          10,
          Int32Array.from([6, 28, 50]),
          new fe(18, new we(2, 68), new we(2, 69)),
          new fe(26, new we(4, 43), new we(1, 44)),
          new fe(24, new we(6, 19), new we(2, 20)),
          new fe(28, new we(6, 15), new we(2, 16))
        ),
        new Ae(
          11,
          Int32Array.from([6, 30, 54]),
          new fe(20, new we(4, 81)),
          new fe(30, new we(1, 50), new we(4, 51)),
          new fe(28, new we(4, 22), new we(4, 23)),
          new fe(24, new we(3, 12), new we(8, 13))
        ),
        new Ae(
          12,
          Int32Array.from([6, 32, 58]),
          new fe(24, new we(2, 92), new we(2, 93)),
          new fe(22, new we(6, 36), new we(2, 37)),
          new fe(26, new we(4, 20), new we(6, 21)),
          new fe(28, new we(7, 14), new we(4, 15))
        ),
        new Ae(
          13,
          Int32Array.from([6, 34, 62]),
          new fe(26, new we(4, 107)),
          new fe(22, new we(8, 37), new we(1, 38)),
          new fe(24, new we(8, 20), new we(4, 21)),
          new fe(22, new we(12, 11), new we(4, 12))
        ),
        new Ae(
          14,
          Int32Array.from([6, 26, 46, 66]),
          new fe(30, new we(3, 115), new we(1, 116)),
          new fe(24, new we(4, 40), new we(5, 41)),
          new fe(20, new we(11, 16), new we(5, 17)),
          new fe(24, new we(11, 12), new we(5, 13))
        ),
        new Ae(
          15,
          Int32Array.from([6, 26, 48, 70]),
          new fe(22, new we(5, 87), new we(1, 88)),
          new fe(24, new we(5, 41), new we(5, 42)),
          new fe(30, new we(5, 24), new we(7, 25)),
          new fe(24, new we(11, 12), new we(7, 13))
        ),
        new Ae(
          16,
          Int32Array.from([6, 26, 50, 74]),
          new fe(24, new we(5, 98), new we(1, 99)),
          new fe(28, new we(7, 45), new we(3, 46)),
          new fe(24, new we(15, 19), new we(2, 20)),
          new fe(30, new we(3, 15), new we(13, 16))
        ),
        new Ae(
          17,
          Int32Array.from([6, 30, 54, 78]),
          new fe(28, new we(1, 107), new we(5, 108)),
          new fe(28, new we(10, 46), new we(1, 47)),
          new fe(28, new we(1, 22), new we(15, 23)),
          new fe(28, new we(2, 14), new we(17, 15))
        ),
        new Ae(
          18,
          Int32Array.from([6, 30, 56, 82]),
          new fe(30, new we(5, 120), new we(1, 121)),
          new fe(26, new we(9, 43), new we(4, 44)),
          new fe(28, new we(17, 22), new we(1, 23)),
          new fe(28, new we(2, 14), new we(19, 15))
        ),
        new Ae(
          19,
          Int32Array.from([6, 30, 58, 86]),
          new fe(28, new we(3, 113), new we(4, 114)),
          new fe(26, new we(3, 44), new we(11, 45)),
          new fe(26, new we(17, 21), new we(4, 22)),
          new fe(26, new we(9, 13), new we(16, 14))
        ),
        new Ae(
          20,
          Int32Array.from([6, 34, 62, 90]),
          new fe(28, new we(3, 107), new we(5, 108)),
          new fe(26, new we(3, 41), new we(13, 42)),
          new fe(30, new we(15, 24), new we(5, 25)),
          new fe(28, new we(15, 15), new we(10, 16))
        ),
        new Ae(
          21,
          Int32Array.from([6, 28, 50, 72, 94]),
          new fe(28, new we(4, 116), new we(4, 117)),
          new fe(26, new we(17, 42)),
          new fe(28, new we(17, 22), new we(6, 23)),
          new fe(30, new we(19, 16), new we(6, 17))
        ),
        new Ae(
          22,
          Int32Array.from([6, 26, 50, 74, 98]),
          new fe(28, new we(2, 111), new we(7, 112)),
          new fe(28, new we(17, 46)),
          new fe(30, new we(7, 24), new we(16, 25)),
          new fe(24, new we(34, 13))
        ),
        new Ae(
          23,
          Int32Array.from([6, 30, 54, 78, 102]),
          new fe(30, new we(4, 121), new we(5, 122)),
          new fe(28, new we(4, 47), new we(14, 48)),
          new fe(30, new we(11, 24), new we(14, 25)),
          new fe(30, new we(16, 15), new we(14, 16))
        ),
        new Ae(
          24,
          Int32Array.from([6, 28, 54, 80, 106]),
          new fe(30, new we(6, 117), new we(4, 118)),
          new fe(28, new we(6, 45), new we(14, 46)),
          new fe(30, new we(11, 24), new we(16, 25)),
          new fe(30, new we(30, 16), new we(2, 17))
        ),
        new Ae(
          25,
          Int32Array.from([6, 32, 58, 84, 110]),
          new fe(26, new we(8, 106), new we(4, 107)),
          new fe(28, new we(8, 47), new we(13, 48)),
          new fe(30, new we(7, 24), new we(22, 25)),
          new fe(30, new we(22, 15), new we(13, 16))
        ),
        new Ae(
          26,
          Int32Array.from([6, 30, 58, 86, 114]),
          new fe(28, new we(10, 114), new we(2, 115)),
          new fe(28, new we(19, 46), new we(4, 47)),
          new fe(28, new we(28, 22), new we(6, 23)),
          new fe(30, new we(33, 16), new we(4, 17))
        ),
        new Ae(
          27,
          Int32Array.from([6, 34, 62, 90, 118]),
          new fe(30, new we(8, 122), new we(4, 123)),
          new fe(28, new we(22, 45), new we(3, 46)),
          new fe(30, new we(8, 23), new we(26, 24)),
          new fe(30, new we(12, 15), new we(28, 16))
        ),
        new Ae(
          28,
          Int32Array.from([6, 26, 50, 74, 98, 122]),
          new fe(30, new we(3, 117), new we(10, 118)),
          new fe(28, new we(3, 45), new we(23, 46)),
          new fe(30, new we(4, 24), new we(31, 25)),
          new fe(30, new we(11, 15), new we(31, 16))
        ),
        new Ae(
          29,
          Int32Array.from([6, 30, 54, 78, 102, 126]),
          new fe(30, new we(7, 116), new we(7, 117)),
          new fe(28, new we(21, 45), new we(7, 46)),
          new fe(30, new we(1, 23), new we(37, 24)),
          new fe(30, new we(19, 15), new we(26, 16))
        ),
        new Ae(
          30,
          Int32Array.from([6, 26, 52, 78, 104, 130]),
          new fe(30, new we(5, 115), new we(10, 116)),
          new fe(28, new we(19, 47), new we(10, 48)),
          new fe(30, new we(15, 24), new we(25, 25)),
          new fe(30, new we(23, 15), new we(25, 16))
        ),
        new Ae(
          31,
          Int32Array.from([6, 30, 56, 82, 108, 134]),
          new fe(30, new we(13, 115), new we(3, 116)),
          new fe(28, new we(2, 46), new we(29, 47)),
          new fe(30, new we(42, 24), new we(1, 25)),
          new fe(30, new we(23, 15), new we(28, 16))
        ),
        new Ae(
          32,
          Int32Array.from([6, 34, 60, 86, 112, 138]),
          new fe(30, new we(17, 115)),
          new fe(28, new we(10, 46), new we(23, 47)),
          new fe(30, new we(10, 24), new we(35, 25)),
          new fe(30, new we(19, 15), new we(35, 16))
        ),
        new Ae(
          33,
          Int32Array.from([6, 30, 58, 86, 114, 142]),
          new fe(30, new we(17, 115), new we(1, 116)),
          new fe(28, new we(14, 46), new we(21, 47)),
          new fe(30, new we(29, 24), new we(19, 25)),
          new fe(30, new we(11, 15), new we(46, 16))
        ),
        new Ae(
          34,
          Int32Array.from([6, 34, 62, 90, 118, 146]),
          new fe(30, new we(13, 115), new we(6, 116)),
          new fe(28, new we(14, 46), new we(23, 47)),
          new fe(30, new we(44, 24), new we(7, 25)),
          new fe(30, new we(59, 16), new we(1, 17))
        ),
        new Ae(
          35,
          Int32Array.from([6, 30, 54, 78, 102, 126, 150]),
          new fe(30, new we(12, 121), new we(7, 122)),
          new fe(28, new we(12, 47), new we(26, 48)),
          new fe(30, new we(39, 24), new we(14, 25)),
          new fe(30, new we(22, 15), new we(41, 16))
        ),
        new Ae(
          36,
          Int32Array.from([6, 24, 50, 76, 102, 128, 154]),
          new fe(30, new we(6, 121), new we(14, 122)),
          new fe(28, new we(6, 47), new we(34, 48)),
          new fe(30, new we(46, 24), new we(10, 25)),
          new fe(30, new we(2, 15), new we(64, 16))
        ),
        new Ae(
          37,
          Int32Array.from([6, 28, 54, 80, 106, 132, 158]),
          new fe(30, new we(17, 122), new we(4, 123)),
          new fe(28, new we(29, 46), new we(14, 47)),
          new fe(30, new we(49, 24), new we(10, 25)),
          new fe(30, new we(24, 15), new we(46, 16))
        ),
        new Ae(
          38,
          Int32Array.from([6, 32, 58, 84, 110, 136, 162]),
          new fe(30, new we(4, 122), new we(18, 123)),
          new fe(28, new we(13, 46), new we(32, 47)),
          new fe(30, new we(48, 24), new we(14, 25)),
          new fe(30, new we(42, 15), new we(32, 16))
        ),
        new Ae(
          39,
          Int32Array.from([6, 26, 54, 82, 110, 138, 166]),
          new fe(30, new we(20, 117), new we(4, 118)),
          new fe(28, new we(40, 47), new we(7, 48)),
          new fe(30, new we(43, 24), new we(22, 25)),
          new fe(30, new we(10, 15), new we(67, 16))
        ),
        new Ae(
          40,
          Int32Array.from([6, 30, 58, 86, 114, 142, 170]),
          new fe(30, new we(19, 118), new we(6, 119)),
          new fe(28, new we(18, 47), new we(31, 48)),
          new fe(30, new we(34, 24), new we(34, 25)),
          new fe(30, new we(20, 15), new we(61, 16))
        ),
      ]),
      (function (t) {
        (t[(t.DATA_MASK_000 = 0)] = "DATA_MASK_000"),
          (t[(t.DATA_MASK_001 = 1)] = "DATA_MASK_001"),
          (t[(t.DATA_MASK_010 = 2)] = "DATA_MASK_010"),
          (t[(t.DATA_MASK_011 = 3)] = "DATA_MASK_011"),
          (t[(t.DATA_MASK_100 = 4)] = "DATA_MASK_100"),
          (t[(t.DATA_MASK_101 = 5)] = "DATA_MASK_101"),
          (t[(t.DATA_MASK_110 = 6)] = "DATA_MASK_110"),
          (t[(t.DATA_MASK_111 = 7)] = "DATA_MASK_111");
      })(H || (H = {}));
    class Ce {
      constructor(t, e) {
        (this.value = t), (this.isMasked = e);
      }
      unmaskBitMatrix(t, e) {
        for (let r = 0; r < e; r++)
          for (let n = 0; n < e; n++) this.isMasked(r, n) && t.flip(n, r);
      }
    }
    Ce.values = new Map([
      [H.DATA_MASK_000, new Ce(H.DATA_MASK_000, (t, e) => 0 == ((t + e) & 1))],
      [H.DATA_MASK_001, new Ce(H.DATA_MASK_001, (t, e) => 0 == (1 & t))],
      [H.DATA_MASK_010, new Ce(H.DATA_MASK_010, (t, e) => e % 3 == 0)],
      [H.DATA_MASK_011, new Ce(H.DATA_MASK_011, (t, e) => (t + e) % 3 == 0)],
      [
        H.DATA_MASK_100,
        new Ce(
          H.DATA_MASK_100,
          (t, e) => 0 == ((Math.floor(t / 2) + Math.floor(e / 3)) & 1)
        ),
      ],
      [H.DATA_MASK_101, new Ce(H.DATA_MASK_101, (t, e) => (t * e) % 6 == 0)],
      [H.DATA_MASK_110, new Ce(H.DATA_MASK_110, (t, e) => (t * e) % 6 < 3)],
      [
        H.DATA_MASK_111,
        new Ce(H.DATA_MASK_111, (t, e) => 0 == ((t + e + ((t * e) % 3)) & 1)),
      ],
    ]);
    class Ee {
      constructor(t) {
        const e = t.getHeight();
        if (e < 21 || 1 != (3 & e)) throw new E();
        this.bitMatrix = t;
      }
      readFormatInformation() {
        if (null !== this.parsedFormatInfo && void 0 !== this.parsedFormatInfo)
          return this.parsedFormatInfo;
        let t = 0;
        for (let e = 0; e < 6; e++) t = this.copyBit(e, 8, t);
        (t = this.copyBit(7, 8, t)),
          (t = this.copyBit(8, 8, t)),
          (t = this.copyBit(8, 7, t));
        for (let e = 5; e >= 0; e--) t = this.copyBit(8, e, t);
        const e = this.bitMatrix.getHeight();
        let r = 0;
        const n = e - 7;
        for (let t = e - 1; t >= n; t--) r = this.copyBit(8, t, r);
        for (let t = e - 8; t < e; t++) r = this.copyBit(t, 8, r);
        if (
          ((this.parsedFormatInfo = ge.decodeFormatInformation(t, r)),
          null !== this.parsedFormatInfo)
        )
          return this.parsedFormatInfo;
        throw new E();
      }
      readVersion() {
        if (null !== this.parsedVersion && void 0 !== this.parsedVersion)
          return this.parsedVersion;
        const t = this.bitMatrix.getHeight(),
          e = Math.floor((t - 17) / 4);
        if (e <= 6) return Ae.getVersionForNumber(e);
        let r = 0;
        const n = t - 11;
        for (let e = 5; e >= 0; e--)
          for (let i = t - 9; i >= n; i--) r = this.copyBit(i, e, r);
        let i = Ae.decodeVersionInformation(r);
        if (null !== i && i.getDimensionForVersion() === t)
          return (this.parsedVersion = i), i;
        r = 0;
        for (let e = 5; e >= 0; e--)
          for (let i = t - 9; i >= n; i--) r = this.copyBit(e, i, r);
        if (
          null !== (i = Ae.decodeVersionInformation(r)) &&
          i.getDimensionForVersion() === t
        )
          return (this.parsedVersion = i), i;
        throw new E();
      }
      copyBit(t, e, r) {
        return (
          this.isMirror ? this.bitMatrix.get(e, t) : this.bitMatrix.get(t, e)
        )
          ? (r << 1) | 1
          : r << 1;
      }
      readCodewords() {
        const t = this.readFormatInformation(),
          e = this.readVersion(),
          r = Ce.values.get(t.getDataMask()),
          n = this.bitMatrix.getHeight();
        r.unmaskBitMatrix(this.bitMatrix, n);
        const i = e.buildFunctionPattern();
        let s = !0;
        const o = new Uint8Array(e.getTotalCodewords());
        let a = 0,
          l = 0,
          h = 0;
        for (let t = n - 1; t > 0; t -= 2) {
          6 === t && t--;
          for (let e = 0; e < n; e++) {
            const r = s ? n - 1 - e : e;
            for (let e = 0; e < 2; e++)
              i.get(t - e, r) ||
                (h++,
                (l <<= 1),
                this.bitMatrix.get(t - e, r) && (l |= 1),
                8 === h && ((o[a++] = l), (h = 0), (l = 0)));
          }
          s = !s;
        }
        if (a !== e.getTotalCodewords()) throw new E();
        return o;
      }
      remask() {
        if (null === this.parsedFormatInfo) return;
        const t = Ce.values[this.parsedFormatInfo.getDataMask()],
          e = this.bitMatrix.getHeight();
        t.unmaskBitMatrix(this.bitMatrix, e);
      }
      setMirror(t) {
        (this.parsedVersion = null),
          (this.parsedFormatInfo = null),
          (this.isMirror = t);
      }
      mirror() {
        const t = this.bitMatrix;
        for (let e = 0, r = t.getWidth(); e < r; e++)
          for (let r = e + 1, n = t.getHeight(); r < n; r++)
            t.get(e, r) !== t.get(r, e) && (t.flip(r, e), t.flip(e, r));
      }
    }
    class me {
      constructor(t, e) {
        (this.numDataCodewords = t), (this.codewords = e);
      }
      static getDataBlocks(t, e, r) {
        if (t.length !== e.getTotalCodewords()) throw new o();
        const n = e.getECBlocksForLevel(r);
        let i = 0;
        const s = n.getECBlocks();
        for (const t of s) i += t.getCount();
        const a = new Array(i);
        let l = 0;
        for (const t of s)
          for (let e = 0; e < t.getCount(); e++) {
            const e = t.getDataCodewords(),
              r = n.getECCodewordsPerBlock() + e;
            a[l++] = new me(e, new Uint8Array(r));
          }
        const h = a[0].codewords.length;
        let c = a.length - 1;
        for (; c >= 0; ) {
          if (a[c].codewords.length === h) break;
          c--;
        }
        c++;
        const u = h - n.getECCodewordsPerBlock();
        let d = 0;
        for (let e = 0; e < u; e++)
          for (let r = 0; r < l; r++) a[r].codewords[e] = t[d++];
        for (let e = c; e < l; e++) a[e].codewords[u] = t[d++];
        const g = a[0].codewords.length;
        for (let e = u; e < g; e++)
          for (let r = 0; r < l; r++) {
            const n = r < c ? e : e + 1;
            a[r].codewords[n] = t[d++];
          }
        return a;
      }
      getNumDataCodewords() {
        return this.numDataCodewords;
      }
      getCodewords() {
        return this.codewords;
      }
    }
    !(function (t) {
      (t[(t.TERMINATOR = 0)] = "TERMINATOR"),
        (t[(t.NUMERIC = 1)] = "NUMERIC"),
        (t[(t.ALPHANUMERIC = 2)] = "ALPHANUMERIC"),
        (t[(t.STRUCTURED_APPEND = 3)] = "STRUCTURED_APPEND"),
        (t[(t.BYTE = 4)] = "BYTE"),
        (t[(t.ECI = 5)] = "ECI"),
        (t[(t.KANJI = 6)] = "KANJI"),
        (t[(t.FNC1_FIRST_POSITION = 7)] = "FNC1_FIRST_POSITION"),
        (t[(t.FNC1_SECOND_POSITION = 8)] = "FNC1_SECOND_POSITION"),
        (t[(t.HANZI = 9)] = "HANZI");
    })(G || (G = {}));
    class _e {
      constructor(t, e, r, n) {
        (this.value = t),
          (this.stringValue = e),
          (this.characterCountBitsForVersions = r),
          (this.bits = n),
          _e.FOR_BITS.set(n, this),
          _e.FOR_VALUE.set(t, this);
      }
      static forBits(t) {
        const e = _e.FOR_BITS.get(t);
        if (void 0 === e) throw new o();
        return e;
      }
      getCharacterCountBits(t) {
        const e = t.getVersionNumber();
        let r;
        return (
          (r = e <= 9 ? 0 : e <= 26 ? 1 : 2),
          this.characterCountBitsForVersions[r]
        );
      }
      getValue() {
        return this.value;
      }
      getBits() {
        return this.bits;
      }
      equals(t) {
        if (!(t instanceof _e)) return !1;
        const e = t;
        return this.value === e.value;
      }
      toString() {
        return this.stringValue;
      }
    }
    (_e.FOR_BITS = new Map()),
      (_e.FOR_VALUE = new Map()),
      (_e.TERMINATOR = new _e(
        G.TERMINATOR,
        "TERMINATOR",
        Int32Array.from([0, 0, 0]),
        0
      )),
      (_e.NUMERIC = new _e(
        G.NUMERIC,
        "NUMERIC",
        Int32Array.from([10, 12, 14]),
        1
      )),
      (_e.ALPHANUMERIC = new _e(
        G.ALPHANUMERIC,
        "ALPHANUMERIC",
        Int32Array.from([9, 11, 13]),
        2
      )),
      (_e.STRUCTURED_APPEND = new _e(
        G.STRUCTURED_APPEND,
        "STRUCTURED_APPEND",
        Int32Array.from([0, 0, 0]),
        3
      )),
      (_e.BYTE = new _e(G.BYTE, "BYTE", Int32Array.from([8, 16, 16]), 4)),
      (_e.ECI = new _e(G.ECI, "ECI", Int32Array.from([0, 0, 0]), 7)),
      (_e.KANJI = new _e(G.KANJI, "KANJI", Int32Array.from([8, 10, 12]), 8)),
      (_e.FNC1_FIRST_POSITION = new _e(
        G.FNC1_FIRST_POSITION,
        "FNC1_FIRST_POSITION",
        Int32Array.from([0, 0, 0]),
        5
      )),
      (_e.FNC1_SECOND_POSITION = new _e(
        G.FNC1_SECOND_POSITION,
        "FNC1_SECOND_POSITION",
        Int32Array.from([0, 0, 0]),
        9
      )),
      (_e.HANZI = new _e(G.HANZI, "HANZI", Int32Array.from([8, 10, 12]), 13));
    class Ie {
      static decode(t, e, r, n) {
        const i = new ae(t);
        let s = new p();
        const o = new Array();
        let a = -1,
          l = -1;
        try {
          let t,
            r = null,
            h = !1;
          do {
            if (i.available() < 4) t = _e.TERMINATOR;
            else {
              const e = i.readBits(4);
              t = _e.forBits(e);
            }
            switch (t) {
              case _e.TERMINATOR:
                break;
              case _e.FNC1_FIRST_POSITION:
              case _e.FNC1_SECOND_POSITION:
                h = !0;
                break;
              case _e.STRUCTURED_APPEND:
                if (i.available() < 16) throw new E();
                (a = i.readBits(8)), (l = i.readBits(8));
                break;
              case _e.ECI:
                const c = Ie.parseECIValue(i);
                if (null === (r = m.getCharacterSetECIByValue(c))) throw new E();
                break;
              case _e.HANZI:
                const u = i.readBits(4),
                  d = i.readBits(t.getCharacterCountBits(e));
                u === Ie.GB2312_SUBSET && Ie.decodeHanziSegment(i, s, d);
                break;
              default:
                const g = i.readBits(t.getCharacterCountBits(e));
                switch (t) {
                  case _e.NUMERIC:
                    Ie.decodeNumericSegment(i, s, g);
                    break;
                  case _e.ALPHANUMERIC:
                    Ie.decodeAlphanumericSegment(i, s, g, h);
                    break;
                  case _e.BYTE:
                    Ie.decodeByteSegment(i, s, g, r, o, n);
                    break;
                  case _e.KANJI:
                    Ie.decodeKanjiSegment(i, s, g);
                    break;
                  default:
                    throw new E();
                }
            }
          } while (t !== _e.TERMINATOR);
        } catch (t) {
          throw new E();
        }
        return new z(
          t,
          s.toString(),
          0 === o.length ? null : o,
          null === r ? null : r.toString(),
          a,
          l
        );
      }
      static decodeHanziSegment(t, e, r) {
        if (13 * r > t.available()) throw new E();
        const n = new Uint8Array(2 * r);
        let i = 0;
        for (; r > 0; ) {
          const e = t.readBits(13);
          let s = (((e / 96) << 8) & 4294967295) | e % 96;
          (s += s < 959 ? 41377 : 42657),
            (n[i] = (s >> 8) & 255),
            (n[i + 1] = 255 & s),
            (i += 2),
            r--;
        }
        try {
          e.append(I.decode(n, S.GB2312));
        } catch (t) {
          throw new E(t);
        }
      }
      static decodeKanjiSegment(t, e, r) {
        if (13 * r > t.available()) throw new E();
        const n = new Uint8Array(2 * r);
        let i = 0;
        for (; r > 0; ) {
          const e = t.readBits(13);
          let s = (((e / 192) << 8) & 4294967295) | e % 192;
          (s += s < 7936 ? 33088 : 49472),
            (n[i] = s >> 8),
            (n[i + 1] = s),
            (i += 2),
            r--;
        }
        try {
          e.append(I.decode(n, S.SHIFT_JIS));
        } catch (t) {
          throw new E(t);
        }
      }
      static decodeByteSegment(t, e, r, n, i, s) {
        if (8 * r > t.available()) throw new E();
        const o = new Uint8Array(r);
        for (let e = 0; e < r; e++) o[e] = t.readBits(8);
        let a;
        a = null === n ? S.guessEncoding(o, s) : n.getName();
        try {
          e.append(I.decode(o, a));
        } catch (t) {
          throw new E(t);
        }
        i.push(o);
      }
      static toAlphaNumericChar(t) {
        if (t >= Ie.ALPHANUMERIC_CHARS.length) throw new E();
        return Ie.ALPHANUMERIC_CHARS[t];
      }
      static decodeAlphanumericSegment(t, e, r, n) {
        const i = e.length();
        for (; r > 1; ) {
          if (t.available() < 11) throw new E();
          const n = t.readBits(11);
          e.append(Ie.toAlphaNumericChar(Math.floor(n / 45))),
            e.append(Ie.toAlphaNumericChar(n % 45)),
            (r -= 2);
        }
        if (1 === r) {
          if (t.available() < 6) throw new E();
          e.append(Ie.toAlphaNumericChar(t.readBits(6)));
        }
        if (n)
          for (let t = i; t < e.length(); t++)
            "%" === e.charAt(t) &&
              (t < e.length() - 1 && "%" === e.charAt(t + 1)
                ? e.deleteCharAt(t + 1)
                : e.setCharAt(t, String.fromCharCode(29)));
      }
      static decodeNumericSegment(t, e, r) {
        for (; r >= 3; ) {
          if (t.available() < 10) throw new E();
          const n = t.readBits(10);
          if (n >= 1e3) throw new E();
          e.append(Ie.toAlphaNumericChar(Math.floor(n / 100))),
            e.append(Ie.toAlphaNumericChar(Math.floor(n / 10) % 10)),
            e.append(Ie.toAlphaNumericChar(n % 10)),
            (r -= 3);
        }
        if (2 === r) {
          if (t.available() < 7) throw new E();
          const r = t.readBits(7);
          if (r >= 100) throw new E();
          e.append(Ie.toAlphaNumericChar(Math.floor(r / 10))),
            e.append(Ie.toAlphaNumericChar(r % 10));
        } else if (1 === r) {
          if (t.available() < 4) throw new E();
          const r = t.readBits(4);
          if (r >= 10) throw new E();
          e.append(Ie.toAlphaNumericChar(r));
        }
      }
      static parseECIValue(t) {
        const e = t.readBits(8);
        if (0 == (128 & e)) return 127 & e;
        if (128 == (192 & e)) {
          return (((63 & e) << 8) & 4294967295) | t.readBits(8);
        }
        if (192 == (224 & e)) {
          return (((31 & e) << 16) & 4294967295) | t.readBits(16);
        }
        throw new E();
      }
    }
    (Ie.ALPHANUMERIC_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"),
      (Ie.GB2312_SUBSET = 1);
    class Se {
      constructor(t) {
        this.mirrored = t;
      }
      isMirrored() {
        return this.mirrored;
      }
      applyMirroredCorrection(t) {
        if (!this.mirrored || null === t || t.length < 3) return;
        const e = t[0];
        (t[0] = t[2]), (t[2] = e);
      }
    }
    class pe {
      constructor() {
        this.rsDecoder = new J(q.QR_CODE_FIELD_256);
      }
      decodeBooleanArray(t, e) {
        return this.decodeBitMatrix(T.parseFromBooleanArray(t), e);
      }
      decodeBitMatrix(t, e) {
        const r = new Ee(t);
        let n = null;
        try {
          return this.decodeBitMatrixParser(r, e);
        } catch (t) {
          n = t;
        }
        try {
          r.remask(),
            r.setMirror(!0),
            r.readVersion(),
            r.readFormatInformation(),
            r.mirror();
          const t = this.decodeBitMatrixParser(r, e);
          return t.setOther(new Se(!0)), t;
        } catch (t) {
          if (null !== n) throw n;
          throw t;
        }
      }
      decodeBitMatrixParser(t, e) {
        const r = t.readVersion(),
          n = t.readFormatInformation().getErrorCorrectionLevel(),
          i = t.readCodewords(),
          s = me.getDataBlocks(i, r, n);
        let o = 0;
        for (const t of s) o += t.getNumDataCodewords();
        const a = new Uint8Array(o);
        let l = 0;
        for (const t of s) {
          const e = t.getCodewords(),
            r = t.getNumDataCodewords();
          this.correctErrors(e, r);
          for (let t = 0; t < r; t++) a[l++] = e[t];
        }
        return Ie.decode(a, r, n, e);
      }
      correctErrors(t, e) {
        const r = new Int32Array(t);
        try {
          this.rsDecoder.decode(r, t.length - e);
        } catch (t) {
          throw new l();
        }
        for (let n = 0; n < e; n++) t[n] = r[n];
      }
    }
    class Te extends rt {
      constructor(t, e, r) {
        super(t, e), (this.estimatedModuleSize = r);
      }
      aboutEquals(t, e, r) {
        if (Math.abs(e - this.getY()) <= t && Math.abs(r - this.getX()) <= t) {
          const e = Math.abs(t - this.estimatedModuleSize);
          return e <= 1 || e <= this.estimatedModuleSize;
        }
        return !1;
      }
      combineEstimate(t, e, r) {
        const n = (this.getX() + e) / 2,
          i = (this.getY() + t) / 2,
          s = (this.estimatedModuleSize + r) / 2;
        return new Te(n, i, s);
      }
    }
    class Re {
      constructor(t, e, r, n, i, s, o) {
        (this.image = t),
          (this.startX = e),
          (this.startY = r),
          (this.width = n),
          (this.height = i),
          (this.moduleSize = s),
          (this.resultPointCallback = o),
          (this.possibleCenters = []),
          (this.crossCheckStateCount = new Int32Array(3));
      }
      find() {
        const t = this.startX,
          e = this.height,
          r = t + this.width,
          n = this.startY + e / 2,
          i = new Int32Array(3),
          s = this.image;
        for (let o = 0; o < e; o++) {
          const e =
            n +
            (0 == (1 & o) ? Math.floor((o + 1) / 2) : -Math.floor((o + 1) / 2));
          (i[0] = 0), (i[1] = 0), (i[2] = 0);
          let a = t;
          for (; a < r && !s.get(a, e); ) a++;
          let l = 0;
          for (; a < r; ) {
            if (s.get(a, e))
              if (1 === l) i[1]++;
              else if (2 === l) {
                if (this.foundPatternCross(i)) {
                  const t = this.handlePossibleCenter(i, e, a);
                  if (null !== t) return t;
                }
                (i[0] = i[2]), (i[1] = 1), (i[2] = 0), (l = 1);
              } else i[++l]++;
            else 1 === l && l++, i[l]++;
            a++;
          }
          if (this.foundPatternCross(i)) {
            const t = this.handlePossibleCenter(i, e, r);
            if (null !== t) return t;
          }
        }
        if (0 !== this.possibleCenters.length) return this.possibleCenters[0];
        throw new R();
      }
      static centerFromEnd(t, e) {
        return e - t[2] - t[1] / 2;
      }
      foundPatternCross(t) {
        const e = this.moduleSize,
          r = e / 2;
        for (let n = 0; n < 3; n++) if (Math.abs(e - t[n]) >= r) return !1;
        return !0;
      }
      crossCheckVertical(t, e, r, n) {
        const i = this.image,
          s = i.getHeight(),
          o = this.crossCheckStateCount;
        (o[0] = 0), (o[1] = 0), (o[2] = 0);
        let a = t;
        for (; a >= 0 && i.get(e, a) && o[1] <= r; ) o[1]++, a--;
        if (a < 0 || o[1] > r) return NaN;
        for (; a >= 0 && !i.get(e, a) && o[0] <= r; ) o[0]++, a--;
        if (o[0] > r) return NaN;
        for (a = t + 1; a < s && i.get(e, a) && o[1] <= r; ) o[1]++, a++;
        if (a === s || o[1] > r) return NaN;
        for (; a < s && !i.get(e, a) && o[2] <= r; ) o[2]++, a++;
        if (o[2] > r) return NaN;
        const l = o[0] + o[1] + o[2];
        return 5 * Math.abs(l - n) >= 2 * n
          ? NaN
          : this.foundPatternCross(o)
          ? Re.centerFromEnd(o, a)
          : NaN;
      }
      handlePossibleCenter(t, e, r) {
        const n = t[0] + t[1] + t[2],
          i = Re.centerFromEnd(t, r),
          s = this.crossCheckVertical(e, i, 2 * t[1], n);
        if (!isNaN(s)) {
          const e = (t[0] + t[1] + t[2]) / 3;
          for (const t of this.possibleCenters)
            if (t.aboutEquals(e, s, i)) return t.combineEstimate(s, i, e);
          const r = new Te(i, s, e);
          this.possibleCenters.push(r),
            null !== this.resultPointCallback &&
              void 0 !== this.resultPointCallback &&
              this.resultPointCallback.foundPossibleResultPoint(r);
        }
        return null;
      }
    }
    class Ne extends rt {
      constructor(t, e, r, n) {
        super(t, e),
          (this.estimatedModuleSize = r),
          (this.count = n),
          void 0 === n && (this.count = 1);
      }
      getEstimatedModuleSize() {
        return this.estimatedModuleSize;
      }
      getCount() {
        return this.count;
      }
      aboutEquals(t, e, r) {
        if (Math.abs(e - this.getY()) <= t && Math.abs(r - this.getX()) <= t) {
          const e = Math.abs(t - this.estimatedModuleSize);
          return e <= 1 || e <= this.estimatedModuleSize;
        }
        return !1;
      }
      combineEstimate(t, e, r) {
        const n = this.count + 1,
          i = (this.count * this.getX() + e) / n,
          s = (this.count * this.getY() + t) / n,
          o = (this.count * this.estimatedModuleSize + r) / n;
        return new Ne(i, s, o, n);
      }
    }
    class De {
      constructor(t) {
        (this.bottomLeft = t[0]), (this.topLeft = t[1]), (this.topRight = t[2]);
      }
      getBottomLeft() {
        return this.bottomLeft;
      }
      getTopLeft() {
        return this.topLeft;
      }
      getTopRight() {
        return this.topRight;
      }
    }
    class ye {
      constructor(t, e) {
        (this.image = t),
          (this.resultPointCallback = e),
          (this.possibleCenters = []),
          (this.crossCheckStateCount = new Int32Array(5)),
          (this.resultPointCallback = e);
      }
      getImage() {
        return this.image;
      }
      getPossibleCenters() {
        return this.possibleCenters;
      }
      find(t) {
        const e = null != t && void 0 !== t.get(C.TRY_HARDER),
          r = null != t && void 0 !== t.get(C.PURE_BARCODE),
          n = this.image,
          i = n.getHeight(),
          s = n.getWidth();
        let o = Math.floor((3 * i) / (4 * ye.MAX_MODULES));
        (o < ye.MIN_SKIP || e) && (o = ye.MIN_SKIP);
        let a = !1;
        const l = new Int32Array(5);
        for (let t = o - 1; t < i && !a; t += o) {
          (l[0] = 0), (l[1] = 0), (l[2] = 0), (l[3] = 0), (l[4] = 0);
          let e = 0;
          for (let i = 0; i < s; i++)
            if (n.get(i, t)) 1 == (1 & e) && e++, l[e]++;
            else if (0 == (1 & e))
              if (4 === e)
                if (ye.foundPatternCross(l)) {
                  if (!0 !== this.handlePossibleCenter(l, t, i, r)) {
                    (l[0] = l[2]),
                      (l[1] = l[3]),
                      (l[2] = l[4]),
                      (l[3] = 1),
                      (l[4] = 0),
                      (e = 3);
                    continue;
                  }
                  if (((o = 2), !0 === this.hasSkipped))
                    a = this.haveMultiplyConfirmedCenters();
                  else {
                    const e = this.findRowSkip();
                    e > l[2] && ((t += e - l[2] - o), (i = s - 1));
                  }
                  (e = 0),
                    (l[0] = 0),
                    (l[1] = 0),
                    (l[2] = 0),
                    (l[3] = 0),
                    (l[4] = 0);
                } else
                  (l[0] = l[2]),
                    (l[1] = l[3]),
                    (l[2] = l[4]),
                    (l[3] = 1),
                    (l[4] = 0),
                    (e = 3);
              else l[++e]++;
            else l[e]++;
          if (ye.foundPatternCross(l)) {
            !0 === this.handlePossibleCenter(l, t, s, r) &&
              ((o = l[0]),
              this.hasSkipped && (a = this.haveMultiplyConfirmedCenters()));
          }
        }
        const h = this.selectBestPatterns();
        return rt.orderBestPatterns(h), new De(h);
      }
      static centerFromEnd(t, e) {
        return e - t[4] - t[3] - t[2] / 2;
      }
      static foundPatternCross(t) {
        let e = 0;
        for (let r = 0; r < 5; r++) {
          const n = t[r];
          if (0 === n) return !1;
          e += n;
        }
        if (e < 7) return !1;
        const r = e / 7,
          n = r / 2;
        return (
          Math.abs(r - t[0]) < n &&
          Math.abs(r - t[1]) < n &&
          Math.abs(3 * r - t[2]) < 3 * n &&
          Math.abs(r - t[3]) < n &&
          Math.abs(r - t[4]) < n
        );
      }
      getCrossCheckStateCount() {
        const t = this.crossCheckStateCount;
        return (t[0] = 0), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), t;
      }
      crossCheckDiagonal(t, e, r, n) {
        const i = this.getCrossCheckStateCount();
        let s = 0;
        const o = this.image;
        for (; t >= s && e >= s && o.get(e - s, t - s); ) i[2]++, s++;
        if (t < s || e < s) return !1;
        for (; t >= s && e >= s && !o.get(e - s, t - s) && i[1] <= r; )
          i[1]++, s++;
        if (t < s || e < s || i[1] > r) return !1;
        for (; t >= s && e >= s && o.get(e - s, t - s) && i[0] <= r; )
          i[0]++, s++;
        if (i[0] > r) return !1;
        const a = o.getHeight(),
          l = o.getWidth();
        for (s = 1; t + s < a && e + s < l && o.get(e + s, t + s); ) i[2]++, s++;
        if (t + s >= a || e + s >= l) return !1;
        for (; t + s < a && e + s < l && !o.get(e + s, t + s) && i[3] < r; )
          i[3]++, s++;
        if (t + s >= a || e + s >= l || i[3] >= r) return !1;
        for (; t + s < a && e + s < l && o.get(e + s, t + s) && i[4] < r; )
          i[4]++, s++;
        if (i[4] >= r) return !1;
        const h = i[0] + i[1] + i[2] + i[3] + i[4];
        return Math.abs(h - n) < 2 * n && ye.foundPatternCross(i);
      }
      crossCheckVertical(t, e, r, n) {
        const i = this.image,
          s = i.getHeight(),
          o = this.getCrossCheckStateCount();
        let a = t;
        for (; a >= 0 && i.get(e, a); ) o[2]++, a--;
        if (a < 0) return NaN;
        for (; a >= 0 && !i.get(e, a) && o[1] <= r; ) o[1]++, a--;
        if (a < 0 || o[1] > r) return NaN;
        for (; a >= 0 && i.get(e, a) && o[0] <= r; ) o[0]++, a--;
        if (o[0] > r) return NaN;
        for (a = t + 1; a < s && i.get(e, a); ) o[2]++, a++;
        if (a === s) return NaN;
        for (; a < s && !i.get(e, a) && o[3] < r; ) o[3]++, a++;
        if (a === s || o[3] >= r) return NaN;
        for (; a < s && i.get(e, a) && o[4] < r; ) o[4]++, a++;
        if (o[4] >= r) return NaN;
        const l = o[0] + o[1] + o[2] + o[3] + o[4];
        return 5 * Math.abs(l - n) >= 2 * n
          ? NaN
          : ye.foundPatternCross(o)
          ? ye.centerFromEnd(o, a)
          : NaN;
      }
      crossCheckHorizontal(t, e, r, n) {
        const i = this.image,
          s = i.getWidth(),
          o = this.getCrossCheckStateCount();
        let a = t;
        for (; a >= 0 && i.get(a, e); ) o[2]++, a--;
        if (a < 0) return NaN;
        for (; a >= 0 && !i.get(a, e) && o[1] <= r; ) o[1]++, a--;
        if (a < 0 || o[1] > r) return NaN;
        for (; a >= 0 && i.get(a, e) && o[0] <= r; ) o[0]++, a--;
        if (o[0] > r) return NaN;
        for (a = t + 1; a < s && i.get(a, e); ) o[2]++, a++;
        if (a === s) return NaN;
        for (; a < s && !i.get(a, e) && o[3] < r; ) o[3]++, a++;
        if (a === s || o[3] >= r) return NaN;
        for (; a < s && i.get(a, e) && o[4] < r; ) o[4]++, a++;
        if (o[4] >= r) return NaN;
        const l = o[0] + o[1] + o[2] + o[3] + o[4];
        return 5 * Math.abs(l - n) >= n
          ? NaN
          : ye.foundPatternCross(o)
          ? ye.centerFromEnd(o, a)
          : NaN;
      }
      handlePossibleCenter(t, e, r, n) {
        const i = t[0] + t[1] + t[2] + t[3] + t[4];
        let s = ye.centerFromEnd(t, r),
          o = this.crossCheckVertical(e, Math.floor(s), t[2], i);
        if (
          !isNaN(o) &&
          ((s = this.crossCheckHorizontal(Math.floor(s), Math.floor(o), t[2], i)),
          !isNaN(s) &&
            (!n ||
              this.crossCheckDiagonal(Math.floor(o), Math.floor(s), t[2], i)))
        ) {
          const t = i / 7;
          let e = !1;
          const r = this.possibleCenters;
          for (let n = 0, i = r.length; n < i; n++) {
            const i = r[n];
            if (i.aboutEquals(t, o, s)) {
              (r[n] = i.combineEstimate(o, s, t)), (e = !0);
              break;
            }
          }
          if (!e) {
            const e = new Ne(s, o, t);
            r.push(e),
              null !== this.resultPointCallback &&
                void 0 !== this.resultPointCallback &&
                this.resultPointCallback.foundPossibleResultPoint(e);
          }
          return !0;
        }
        return !1;
      }
      findRowSkip() {
        if (this.possibleCenters.length <= 1) return 0;
        let t = null;
        for (const e of this.possibleCenters)
          if (e.getCount() >= ye.CENTER_QUORUM) {
            if (null != t)
              return (
                (this.hasSkipped = !0),
                Math.floor(
                  (Math.abs(t.getX() - e.getX()) -
                    Math.abs(t.getY() - e.getY())) /
                    2
                )
              );
            t = e;
          }
        return 0;
      }
      haveMultiplyConfirmedCenters() {
        let t = 0,
          e = 0;
        const r = this.possibleCenters.length;
        for (const r of this.possibleCenters)
          r.getCount() >= ye.CENTER_QUORUM &&
            (t++, (e += r.getEstimatedModuleSize()));
        if (t < 3) return !1;
        const n = e / r;
        let i = 0;
        for (const t of this.possibleCenters)
          i += Math.abs(t.getEstimatedModuleSize() - n);
        return i <= 0.05 * e;
      }
      selectBestPatterns() {
        const t = this.possibleCenters.length;
        if (t < 3) throw new R();
        const e = this.possibleCenters;
        let r;
        if (t > 3) {
          let n = 0,
            i = 0;
          for (const t of this.possibleCenters) {
            const e = t.getEstimatedModuleSize();
            (n += e), (i += e * e);
          }
          r = n / t;
          let s = Math.sqrt(i / t - r * r);
          e.sort((t, e) => {
            const n = Math.abs(e.getEstimatedModuleSize() - r),
              i = Math.abs(t.getEstimatedModuleSize() - r);
            return n < i ? -1 : n > i ? 1 : 0;
          });
          const o = Math.max(0.2 * r, s);
          for (let t = 0; t < e.length && e.length > 3; t++) {
            const n = e[t];
            Math.abs(n.getEstimatedModuleSize() - r) > o && (e.splice(t, 1), t--);
          }
        }
        if (e.length > 3) {
          let t = 0;
          for (const r of e) t += r.getEstimatedModuleSize();
          (r = t / e.length),
            e.sort((t, e) => {
              if (e.getCount() === t.getCount()) {
                const n = Math.abs(e.getEstimatedModuleSize() - r),
                  i = Math.abs(t.getEstimatedModuleSize() - r);
                return n < i ? 1 : n > i ? -1 : 0;
              }
              return e.getCount() - t.getCount();
            }),
            e.splice(3);
        }
        return [e[0], e[1], e[2]];
      }
    }
    (ye.CENTER_QUORUM = 2), (ye.MIN_SKIP = 3), (ye.MAX_MODULES = 57);
    class Oe {
      constructor(t) {
        this.image = t;
      }
      getImage() {
        return this.image;
      }
      getResultPointCallback() {
        return this.resultPointCallback;
      }
      detect(t) {
        this.resultPointCallback =
          null == t ? null : t.get(C.NEED_RESULT_POINT_CALLBACK);
        const e = new ye(this.image, this.resultPointCallback).find(t);
        return this.processFinderPatternInfo(e);
      }
      processFinderPatternInfo(t) {
        const e = t.getTopLeft(),
          r = t.getTopRight(),
          n = t.getBottomLeft(),
          i = this.calculateModuleSize(e, r, n);
        if (i < 1) throw new R("No pattern found in proccess finder.");
        const s = Oe.computeDimension(e, r, n, i),
          o = Ae.getProvisionalVersionForDimension(s),
          a = o.getDimensionForVersion() - 7;
        let l = null;
        if (o.getAlignmentPatternCenters().length > 0) {
          const t = r.getX() - e.getX() + n.getX(),
            s = r.getY() - e.getY() + n.getY(),
            o = 1 - 3 / a,
            h = Math.floor(e.getX() + o * (t - e.getX())),
            c = Math.floor(e.getY() + o * (s - e.getY()));
          for (let t = 4; t <= 16; t <<= 1)
            try {
              l = this.findAlignmentInRegion(i, h, c, t);
              break;
            } catch (t) {
              if (!(t instanceof R)) throw t;
            }
        }
        const h = Oe.createTransform(e, r, n, l, s),
          c = Oe.sampleGrid(this.image, h, s);
        let u;
        return new nt(c, (u = null === l ? [n, e, r] : [n, e, r, l]));
      }
      static createTransform(t, e, r, n, i) {
        const s = i - 3.5;
        let o, a, l, h;
        return (
          null !== n
            ? ((o = n.getX()), (a = n.getY()), (h = l = s - 3))
            : ((o = e.getX() - t.getX() + r.getX()),
              (a = e.getY() - t.getY() + r.getY()),
              (l = s),
              (h = s)),
          at.quadrilateralToQuadrilateral(
            3.5,
            3.5,
            s,
            3.5,
            l,
            h,
            3.5,
            s,
            t.getX(),
            t.getY(),
            e.getX(),
            e.getY(),
            o,
            a,
            r.getX(),
            r.getY()
          )
        );
      }
      static sampleGrid(t, e, r) {
        return ht.getInstance().sampleGridWithTransform(t, r, r, e);
      }
      static computeDimension(t, e, r, n) {
        const i = tt.round(rt.distance(t, e) / n),
          s = tt.round(rt.distance(t, r) / n);
        let o = Math.floor((i + s) / 2) + 7;
        switch (3 & o) {
          case 0:
            o++;
            break;
          case 2:
            o--;
            break;
          case 3:
            throw new R("Dimensions could be not found.");
        }
        return o;
      }
      calculateModuleSize(t, e, r) {
        return (
          (this.calculateModuleSizeOneWay(t, e) +
            this.calculateModuleSizeOneWay(t, r)) /
          2
        );
      }
      calculateModuleSizeOneWay(t, e) {
        const r = this.sizeOfBlackWhiteBlackRunBothWays(
            Math.floor(t.getX()),
            Math.floor(t.getY()),
            Math.floor(e.getX()),
            Math.floor(e.getY())
          ),
          n = this.sizeOfBlackWhiteBlackRunBothWays(
            Math.floor(e.getX()),
            Math.floor(e.getY()),
            Math.floor(t.getX()),
            Math.floor(t.getY())
          );
        return isNaN(r) ? n / 7 : isNaN(n) ? r / 7 : (r + n) / 14;
      }
      sizeOfBlackWhiteBlackRunBothWays(t, e, r, n) {
        let i = this.sizeOfBlackWhiteBlackRun(t, e, r, n),
          s = 1,
          o = t - (r - t);
        o < 0
          ? ((s = t / (t - o)), (o = 0))
          : o >= this.image.getWidth() &&
            ((s = (this.image.getWidth() - 1 - t) / (o - t)),
            (o = this.image.getWidth() - 1));
        let a = Math.floor(e - (n - e) * s);
        return (
          (s = 1),
          a < 0
            ? ((s = e / (e - a)), (a = 0))
            : a >= this.image.getHeight() &&
              ((s = (this.image.getHeight() - 1 - e) / (a - e)),
              (a = this.image.getHeight() - 1)),
          (o = Math.floor(t + (o - t) * s)),
          (i += this.sizeOfBlackWhiteBlackRun(t, e, o, a)) - 1
        );
      }
      sizeOfBlackWhiteBlackRun(t, e, r, n) {
        const i = Math.abs(n - e) > Math.abs(r - t);
        if (i) {
          let i = t;
          (t = e), (e = i), (i = r), (r = n), (n = i);
        }
        const s = Math.abs(r - t),
          o = Math.abs(n - e);
        let a = -s / 2;
        const l = t < r ? 1 : -1,
          h = e < n ? 1 : -1;
        let c = 0;
        const u = r + l;
        for (let r = t, d = e; r !== u; r += l) {
          const l = i ? d : r,
            u = i ? r : d;
          if ((1 === c) === this.image.get(l, u)) {
            if (2 === c) return tt.distance(r, d, t, e);
            c++;
          }
          if ((a += o) > 0) {
            if (d === n) break;
            (d += h), (a -= s);
          }
        }
        return 2 === c ? tt.distance(r + l, n, t, e) : NaN;
      }
      findAlignmentInRegion(t, e, r, n) {
        const i = Math.floor(n * t),
          s = Math.max(0, e - i),
          o = Math.min(this.image.getWidth() - 1, e + i);
        if (o - s < 3 * t)
          throw new R("Alignment top exceeds estimated module size.");
        const a = Math.max(0, r - i),
          l = Math.min(this.image.getHeight() - 1, r + i);
        if (l - a < 3 * t)
          throw new R("Alignment bottom exceeds estimated module size.");
        return new Re(
          this.image,
          s,
          a,
          o - s,
          l - a,
          t,
          this.resultPointCallback
        ).find();
      }
    }
    class Me {
      constructor() {
        this.decoder = new pe();
      }
      getDecoder() {
        return this.decoder;
      }
      decode(t, e) {
        let r, n;
        if (null != e && void 0 !== e.get(C.PURE_BARCODE)) {
          const i = Me.extractPureBits(t.getBlackMatrix());
          (r = this.decoder.decodeBitMatrix(i, e)), (n = Me.NO_POINTS);
        } else {
          const i = new Oe(t.getBlackMatrix()).detect(e);
          (r = this.decoder.decodeBitMatrix(i.getBits(), e)), (n = i.getPoints());
        }
        r.getOther() instanceof Se && r.getOther().applyMirroredCorrection(n);
        const i = new F(
            r.getText(),
            r.getRawBytes(),
            void 0,
            n,
            k.QR_CODE,
            void 0
          ),
          s = r.getByteSegments();
        null !== s && i.putMetadata(W.BYTE_SEGMENTS, s);
        const o = r.getECLevel();
        return (
          null !== o && i.putMetadata(W.ERROR_CORRECTION_LEVEL, o),
          r.hasStructuredAppend() &&
            (i.putMetadata(
              W.STRUCTURED_APPEND_SEQUENCE,
              r.getStructuredAppendSequenceNumber()
            ),
            i.putMetadata(
              W.STRUCTURED_APPEND_PARITY,
              r.getStructuredAppendParity()
            )),
          i
        );
      }
      reset() {}
      static extractPureBits(t) {
        const e = t.getTopLeftOnBit(),
          r = t.getBottomRightOnBit();
        if (null === e || null === r) throw new R();
        const n = this.moduleSize(e, t);
        let i = e[1],
          s = r[1],
          o = e[0],
          a = r[0];
        if (o >= a || i >= s) throw new R();
        if (s - i != a - o && (a = o + (s - i)) >= t.getWidth()) throw new R();
        const l = Math.round((a - o + 1) / n),
          h = Math.round((s - i + 1) / n);
        if (l <= 0 || h <= 0) throw new R();
        if (h !== l) throw new R();
        const c = Math.floor(n / 2);
        i += c;
        const u = (o += c) + Math.floor((l - 1) * n) - a;
        if (u > 0) {
          if (u > c) throw new R();
          o -= u;
        }
        const d = i + Math.floor((h - 1) * n) - s;
        if (d > 0) {
          if (d > c) throw new R();
          i -= d;
        }
        const g = new T(l, h);
        for (let e = 0; e < h; e++) {
          const r = i + Math.floor(e * n);
          for (let i = 0; i < l; i++)
            t.get(o + Math.floor(i * n), r) && g.set(i, e);
        }
        return g;
      }
      static moduleSize(t, e) {
        const r = e.getHeight(),
          n = e.getWidth();
        let i = t[0],
          s = t[1],
          o = !0,
          a = 0;
        for (; i < n && s < r; ) {
          if (o !== e.get(i, s)) {
            if (5 == ++a) break;
            o = !o;
          }
          i++, s++;
        }
        if (i === n || s === r) throw new R();
        return (i - t[0]) / 7;
      }
    }
    Me.NO_POINTS = new Array();
    class be {
      PDF417Common() {}
      static getBitCountSum(t) {
        return tt.sum(t);
      }
      static toIntArray(t) {
        if (null == t || !t.length) return be.EMPTY_INT_ARRAY;
        const e = new Int32Array(t.length);
        let r = 0;
        for (const n of t) e[r++] = n;
        return e;
      }
      static getCodeword(t) {
        const e = g.binarySearch(be.SYMBOL_TABLE, 262143 & t);
        return e < 0 ? -1 : (be.CODEWORD_TABLE[e] - 1) % be.NUMBER_OF_CODEWORDS;
      }
    }
    (be.NUMBER_OF_CODEWORDS = 929),
      (be.MAX_CODEWORDS_IN_BARCODE = be.NUMBER_OF_CODEWORDS - 1),
      (be.MIN_ROWS_IN_BARCODE = 3),
      (be.MAX_ROWS_IN_BARCODE = 90),
      (be.MODULES_IN_CODEWORD = 17),
      (be.MODULES_IN_STOP_PATTERN = 18),
      (be.BARS_IN_MODULE = 8),
      (be.EMPTY_INT_ARRAY = new Int32Array([])),
      (be.SYMBOL_TABLE = Int32Array.from([
        66142, 66170, 66206, 66236, 66290, 66292, 66350, 66382, 66396, 66454,
        66470, 66476, 66594, 66600, 66614, 66626, 66628, 66632, 66640, 66654,
        66662, 66668, 66682, 66690, 66718, 66720, 66748, 66758, 66776, 66798,
        66802, 66804, 66820, 66824, 66832, 66846, 66848, 66876, 66880, 66936,
        66950, 66956, 66968, 66992, 67006, 67022, 67036, 67042, 67044, 67048,
        67062, 67118, 67150, 67164, 67214, 67228, 67256, 67294, 67322, 67350,
        67366, 67372, 67398, 67404, 67416, 67438, 67474, 67476, 67490, 67492,
        67496, 67510, 67618, 67624, 67650, 67656, 67664, 67678, 67686, 67692,
        67706, 67714, 67716, 67728, 67742, 67744, 67772, 67782, 67788, 67800,
        67822, 67826, 67828, 67842, 67848, 67870, 67872, 67900, 67904, 67960,
        67974, 67992, 68016, 68030, 68046, 68060, 68066, 68068, 68072, 68086,
        68104, 68112, 68126, 68128, 68156, 68160, 68216, 68336, 68358, 68364,
        68376, 68400, 68414, 68448, 68476, 68494, 68508, 68536, 68546, 68548,
        68552, 68560, 68574, 68582, 68588, 68654, 68686, 68700, 68706, 68708,
        68712, 68726, 68750, 68764, 68792, 68802, 68804, 68808, 68816, 68830,
        68838, 68844, 68858, 68878, 68892, 68920, 68976, 68990, 68994, 68996,
        69e3, 69008, 69022, 69024, 69052, 69062, 69068, 69080, 69102, 69106,
        69108, 69142, 69158, 69164, 69190, 69208, 69230, 69254, 69260, 69272,
        69296, 69310, 69326, 69340, 69386, 69394, 69396, 69410, 69416, 69430,
        69442, 69444, 69448, 69456, 69470, 69478, 69484, 69554, 69556, 69666,
        69672, 69698, 69704, 69712, 69726, 69754, 69762, 69764, 69776, 69790,
        69792, 69820, 69830, 69836, 69848, 69870, 69874, 69876, 69890, 69918,
        69920, 69948, 69952, 70008, 70022, 70040, 70064, 70078, 70094, 70108,
        70114, 70116, 70120, 70134, 70152, 70174, 70176, 70264, 70384, 70412,
        70448, 70462, 70496, 70524, 70542, 70556, 70584, 70594, 70600, 70608,
        70622, 70630, 70636, 70664, 70672, 70686, 70688, 70716, 70720, 70776,
        70896, 71136, 71180, 71192, 71216, 71230, 71264, 71292, 71360, 71416,
        71452, 71480, 71536, 71550, 71554, 71556, 71560, 71568, 71582, 71584,
        71612, 71622, 71628, 71640, 71662, 71726, 71732, 71758, 71772, 71778,
        71780, 71784, 71798, 71822, 71836, 71864, 71874, 71880, 71888, 71902,
        71910, 71916, 71930, 71950, 71964, 71992, 72048, 72062, 72066, 72068,
        72080, 72094, 72096, 72124, 72134, 72140, 72152, 72174, 72178, 72180,
        72206, 72220, 72248, 72304, 72318, 72416, 72444, 72456, 72464, 72478,
        72480, 72508, 72512, 72568, 72588, 72600, 72624, 72638, 72654, 72668,
        72674, 72676, 72680, 72694, 72726, 72742, 72748, 72774, 72780, 72792,
        72814, 72838, 72856, 72880, 72894, 72910, 72924, 72930, 72932, 72936,
        72950, 72966, 72972, 72984, 73008, 73022, 73056, 73084, 73102, 73116,
        73144, 73156, 73160, 73168, 73182, 73190, 73196, 73210, 73226, 73234,
        73236, 73250, 73252, 73256, 73270, 73282, 73284, 73296, 73310, 73318,
        73324, 73346, 73348, 73352, 73360, 73374, 73376, 73404, 73414, 73420,
        73432, 73454, 73498, 73518, 73522, 73524, 73550, 73564, 73570, 73572,
        73576, 73590, 73800, 73822, 73858, 73860, 73872, 73886, 73888, 73916,
        73944, 73970, 73972, 73992, 74014, 74016, 74044, 74048, 74104, 74118,
        74136, 74160, 74174, 74210, 74212, 74216, 74230, 74244, 74256, 74270,
        74272, 74360, 74480, 74502, 74508, 74544, 74558, 74592, 74620, 74638,
        74652, 74680, 74690, 74696, 74704, 74726, 74732, 74782, 74784, 74812,
        74992, 75232, 75288, 75326, 75360, 75388, 75456, 75512, 75576, 75632,
        75646, 75650, 75652, 75664, 75678, 75680, 75708, 75718, 75724, 75736,
        75758, 75808, 75836, 75840, 75896, 76016, 76256, 76736, 76824, 76848,
        76862, 76896, 76924, 76992, 77048, 77296, 77340, 77368, 77424, 77438,
        77536, 77564, 77572, 77576, 77584, 77600, 77628, 77632, 77688, 77702,
        77708, 77720, 77744, 77758, 77774, 77788, 77870, 77902, 77916, 77922,
        77928, 77966, 77980, 78008, 78018, 78024, 78032, 78046, 78060, 78074,
        78094, 78136, 78192, 78206, 78210, 78212, 78224, 78238, 78240, 78268,
        78278, 78284, 78296, 78322, 78324, 78350, 78364, 78448, 78462, 78560,
        78588, 78600, 78622, 78624, 78652, 78656, 78712, 78726, 78744, 78768,
        78782, 78798, 78812, 78818, 78820, 78824, 78838, 78862, 78876, 78904,
        78960, 78974, 79072, 79100, 79296, 79352, 79368, 79376, 79390, 79392,
        79420, 79424, 79480, 79600, 79628, 79640, 79664, 79678, 79712, 79740,
        79772, 79800, 79810, 79812, 79816, 79824, 79838, 79846, 79852, 79894,
        79910, 79916, 79942, 79948, 79960, 79982, 79988, 80006, 80024, 80048,
        80062, 80078, 80092, 80098, 80100, 80104, 80134, 80140, 80176, 80190,
        80224, 80252, 80270, 80284, 80312, 80328, 80336, 80350, 80358, 80364,
        80378, 80390, 80396, 80408, 80432, 80446, 80480, 80508, 80576, 80632,
        80654, 80668, 80696, 80752, 80766, 80776, 80784, 80798, 80800, 80828,
        80844, 80856, 80878, 80882, 80884, 80914, 80916, 80930, 80932, 80936,
        80950, 80962, 80968, 80976, 80990, 80998, 81004, 81026, 81028, 81040,
        81054, 81056, 81084, 81094, 81100, 81112, 81134, 81154, 81156, 81160,
        81168, 81182, 81184, 81212, 81216, 81272, 81286, 81292, 81304, 81328,
        81342, 81358, 81372, 81380, 81384, 81398, 81434, 81454, 81458, 81460,
        81486, 81500, 81506, 81508, 81512, 81526, 81550, 81564, 81592, 81602,
        81604, 81608, 81616, 81630, 81638, 81644, 81702, 81708, 81722, 81734,
        81740, 81752, 81774, 81778, 81780, 82050, 82078, 82080, 82108, 82180,
        82184, 82192, 82206, 82208, 82236, 82240, 82296, 82316, 82328, 82352,
        82366, 82402, 82404, 82408, 82440, 82448, 82462, 82464, 82492, 82496,
        82552, 82672, 82694, 82700, 82712, 82736, 82750, 82784, 82812, 82830,
        82882, 82884, 82888, 82896, 82918, 82924, 82952, 82960, 82974, 82976,
        83004, 83008, 83064, 83184, 83424, 83468, 83480, 83504, 83518, 83552,
        83580, 83648, 83704, 83740, 83768, 83824, 83838, 83842, 83844, 83848,
        83856, 83872, 83900, 83910, 83916, 83928, 83950, 83984, 84e3, 84028,
        84032, 84088, 84208, 84448, 84928, 85040, 85054, 85088, 85116, 85184,
        85240, 85488, 85560, 85616, 85630, 85728, 85756, 85764, 85768, 85776,
        85790, 85792, 85820, 85824, 85880, 85894, 85900, 85912, 85936, 85966,
        85980, 86048, 86080, 86136, 86256, 86496, 86976, 88160, 88188, 88256,
        88312, 88560, 89056, 89200, 89214, 89312, 89340, 89536, 89592, 89608,
        89616, 89632, 89664, 89720, 89840, 89868, 89880, 89904, 89952, 89980,
        89998, 90012, 90040, 90190, 90204, 90254, 90268, 90296, 90306, 90308,
        90312, 90334, 90382, 90396, 90424, 90480, 90494, 90500, 90504, 90512,
        90526, 90528, 90556, 90566, 90572, 90584, 90610, 90612, 90638, 90652,
        90680, 90736, 90750, 90848, 90876, 90884, 90888, 90896, 90910, 90912,
        90940, 90944, 91e3, 91014, 91020, 91032, 91056, 91070, 91086, 91100,
        91106, 91108, 91112, 91126, 91150, 91164, 91192, 91248, 91262, 91360,
        91388, 91584, 91640, 91664, 91678, 91680, 91708, 91712, 91768, 91888,
        91928, 91952, 91966, 92e3, 92028, 92046, 92060, 92088, 92098, 92100,
        92104, 92112, 92126, 92134, 92140, 92188, 92216, 92272, 92384, 92412,
        92608, 92664, 93168, 93200, 93214, 93216, 93244, 93248, 93304, 93424,
        93664, 93720, 93744, 93758, 93792, 93820, 93888, 93944, 93980, 94008,
        94064, 94078, 94084, 94088, 94096, 94110, 94112, 94140, 94150, 94156,
        94168, 94246, 94252, 94278, 94284, 94296, 94318, 94342, 94348, 94360,
        94384, 94398, 94414, 94428, 94440, 94470, 94476, 94488, 94512, 94526,
        94560, 94588, 94606, 94620, 94648, 94658, 94660, 94664, 94672, 94686,
        94694, 94700, 94714, 94726, 94732, 94744, 94768, 94782, 94816, 94844,
        94912, 94968, 94990, 95004, 95032, 95088, 95102, 95112, 95120, 95134,
        95136, 95164, 95180, 95192, 95214, 95218, 95220, 95244, 95256, 95280,
        95294, 95328, 95356, 95424, 95480, 95728, 95758, 95772, 95800, 95856,
        95870, 95968, 95996, 96008, 96016, 96030, 96032, 96060, 96064, 96120,
        96152, 96176, 96190, 96220, 96226, 96228, 96232, 96290, 96292, 96296,
        96310, 96322, 96324, 96328, 96336, 96350, 96358, 96364, 96386, 96388,
        96392, 96400, 96414, 96416, 96444, 96454, 96460, 96472, 96494, 96498,
        96500, 96514, 96516, 96520, 96528, 96542, 96544, 96572, 96576, 96632,
        96646, 96652, 96664, 96688, 96702, 96718, 96732, 96738, 96740, 96744,
        96758, 96772, 96776, 96784, 96798, 96800, 96828, 96832, 96888, 97008,
        97030, 97036, 97048, 97072, 97086, 97120, 97148, 97166, 97180, 97208,
        97220, 97224, 97232, 97246, 97254, 97260, 97326, 97330, 97332, 97358,
        97372, 97378, 97380, 97384, 97398, 97422, 97436, 97464, 97474, 97476,
        97480, 97488, 97502, 97510, 97516, 97550, 97564, 97592, 97648, 97666,
        97668, 97672, 97680, 97694, 97696, 97724, 97734, 97740, 97752, 97774,
        97830, 97836, 97850, 97862, 97868, 97880, 97902, 97906, 97908, 97926,
        97932, 97944, 97968, 97998, 98012, 98018, 98020, 98024, 98038, 98618,
        98674, 98676, 98838, 98854, 98874, 98892, 98904, 98926, 98930, 98932,
        98968, 99006, 99042, 99044, 99048, 99062, 99166, 99194, 99246, 99286,
        99350, 99366, 99372, 99386, 99398, 99416, 99438, 99442, 99444, 99462,
        99504, 99518, 99534, 99548, 99554, 99556, 99560, 99574, 99590, 99596,
        99608, 99632, 99646, 99680, 99708, 99726, 99740, 99768, 99778, 99780,
        99784, 99792, 99806, 99814, 99820, 99834, 99858, 99860, 99874, 99880,
        99894, 99906, 99920, 99934, 99962, 99970, 99972, 99976, 99984, 99998, 1e5,
        100028, 100038, 100044, 100056, 100078, 100082, 100084, 100142, 100174,
        100188, 100246, 100262, 100268, 100306, 100308, 100390, 100396, 100410,
        100422, 100428, 100440, 100462, 100466, 100468, 100486, 100504, 100528,
        100542, 100558, 100572, 100578, 100580, 100584, 100598, 100620, 100656,
        100670, 100704, 100732, 100750, 100792, 100802, 100808, 100816, 100830,
        100838, 100844, 100858, 100888, 100912, 100926, 100960, 100988, 101056,
        101112, 101148, 101176, 101232, 101246, 101250, 101252, 101256, 101264,
        101278, 101280, 101308, 101318, 101324, 101336, 101358, 101362, 101364,
        101410, 101412, 101416, 101430, 101442, 101448, 101456, 101470, 101478,
        101498, 101506, 101508, 101520, 101534, 101536, 101564, 101580, 101618,
        101620, 101636, 101640, 101648, 101662, 101664, 101692, 101696, 101752,
        101766, 101784, 101838, 101858, 101860, 101864, 101934, 101938, 101940,
        101966, 101980, 101986, 101988, 101992, 102030, 102044, 102072, 102082,
        102084, 102088, 102096, 102138, 102166, 102182, 102188, 102214, 102220,
        102232, 102254, 102282, 102290, 102292, 102306, 102308, 102312, 102326,
        102444, 102458, 102470, 102476, 102488, 102514, 102516, 102534, 102552,
        102576, 102590, 102606, 102620, 102626, 102632, 102646, 102662, 102668,
        102704, 102718, 102752, 102780, 102798, 102812, 102840, 102850, 102856,
        102864, 102878, 102886, 102892, 102906, 102936, 102974, 103008, 103036,
        103104, 103160, 103224, 103280, 103294, 103298, 103300, 103312, 103326,
        103328, 103356, 103366, 103372, 103384, 103406, 103410, 103412, 103472,
        103486, 103520, 103548, 103616, 103672, 103920, 103992, 104048, 104062,
        104160, 104188, 104194, 104196, 104200, 104208, 104224, 104252, 104256,
        104312, 104326, 104332, 104344, 104368, 104382, 104398, 104412, 104418,
        104420, 104424, 104482, 104484, 104514, 104520, 104528, 104542, 104550,
        104570, 104578, 104580, 104592, 104606, 104608, 104636, 104652, 104690,
        104692, 104706, 104712, 104734, 104736, 104764, 104768, 104824, 104838,
        104856, 104910, 104930, 104932, 104936, 104968, 104976, 104990, 104992,
        105020, 105024, 105080, 105200, 105240, 105278, 105312, 105372, 105410,
        105412, 105416, 105424, 105446, 105518, 105524, 105550, 105564, 105570,
        105572, 105576, 105614, 105628, 105656, 105666, 105672, 105680, 105702,
        105722, 105742, 105756, 105784, 105840, 105854, 105858, 105860, 105864,
        105872, 105888, 105932, 105970, 105972, 106006, 106022, 106028, 106054,
        106060, 106072, 106100, 106118, 106124, 106136, 106160, 106174, 106190,
        106210, 106212, 106216, 106250, 106258, 106260, 106274, 106276, 106280,
        106306, 106308, 106312, 106320, 106334, 106348, 106394, 106414, 106418,
        106420, 106566, 106572, 106610, 106612, 106630, 106636, 106648, 106672,
        106686, 106722, 106724, 106728, 106742, 106758, 106764, 106776, 106800,
        106814, 106848, 106876, 106894, 106908, 106936, 106946, 106948, 106952,
        106960, 106974, 106982, 106988, 107032, 107056, 107070, 107104, 107132,
        107200, 107256, 107292, 107320, 107376, 107390, 107394, 107396, 107400,
        107408, 107422, 107424, 107452, 107462, 107468, 107480, 107502, 107506,
        107508, 107544, 107568, 107582, 107616, 107644, 107712, 107768, 108016,
        108060, 108088, 108144, 108158, 108256, 108284, 108290, 108292, 108296,
        108304, 108318, 108320, 108348, 108352, 108408, 108422, 108428, 108440,
        108464, 108478, 108494, 108508, 108514, 108516, 108520, 108592, 108640,
        108668, 108736, 108792, 109040, 109536, 109680, 109694, 109792, 109820,
        110016, 110072, 110084, 110088, 110096, 110112, 110140, 110144, 110200,
        110320, 110342, 110348, 110360, 110384, 110398, 110432, 110460, 110478,
        110492, 110520, 110532, 110536, 110544, 110558, 110658, 110686, 110714,
        110722, 110724, 110728, 110736, 110750, 110752, 110780, 110796, 110834,
        110836, 110850, 110852, 110856, 110864, 110878, 110880, 110908, 110912,
        110968, 110982, 111e3, 111054, 111074, 111076, 111080, 111108, 111112,
        111120, 111134, 111136, 111164, 111168, 111224, 111344, 111372, 111422,
        111456, 111516, 111554, 111556, 111560, 111568, 111590, 111632, 111646,
        111648, 111676, 111680, 111736, 111856, 112096, 112152, 112224, 112252,
        112320, 112440, 112514, 112516, 112520, 112528, 112542, 112544, 112588,
        112686, 112718, 112732, 112782, 112796, 112824, 112834, 112836, 112840,
        112848, 112870, 112890, 112910, 112924, 112952, 113008, 113022, 113026,
        113028, 113032, 113040, 113054, 113056, 113100, 113138, 113140, 113166,
        113180, 113208, 113264, 113278, 113376, 113404, 113416, 113424, 113440,
        113468, 113472, 113560, 113614, 113634, 113636, 113640, 113686, 113702,
        113708, 113734, 113740, 113752, 113778, 113780, 113798, 113804, 113816,
        113840, 113854, 113870, 113890, 113892, 113896, 113926, 113932, 113944,
        113968, 113982, 114016, 114044, 114076, 114114, 114116, 114120, 114128,
        114150, 114170, 114194, 114196, 114210, 114212, 114216, 114242, 114244,
        114248, 114256, 114270, 114278, 114306, 114308, 114312, 114320, 114334,
        114336, 114364, 114380, 114420, 114458, 114478, 114482, 114484, 114510,
        114524, 114530, 114532, 114536, 114842, 114866, 114868, 114970, 114994,
        114996, 115042, 115044, 115048, 115062, 115130, 115226, 115250, 115252,
        115278, 115292, 115298, 115300, 115304, 115318, 115342, 115394, 115396,
        115400, 115408, 115422, 115430, 115436, 115450, 115478, 115494, 115514,
        115526, 115532, 115570, 115572, 115738, 115758, 115762, 115764, 115790,
        115804, 115810, 115812, 115816, 115830, 115854, 115868, 115896, 115906,
        115912, 115920, 115934, 115942, 115948, 115962, 115996, 116024, 116080,
        116094, 116098, 116100, 116104, 116112, 116126, 116128, 116156, 116166,
        116172, 116184, 116206, 116210, 116212, 116246, 116262, 116268, 116282,
        116294, 116300, 116312, 116334, 116338, 116340, 116358, 116364, 116376,
        116400, 116414, 116430, 116444, 116450, 116452, 116456, 116498, 116500,
        116514, 116520, 116534, 116546, 116548, 116552, 116560, 116574, 116582,
        116588, 116602, 116654, 116694, 116714, 116762, 116782, 116786, 116788,
        116814, 116828, 116834, 116836, 116840, 116854, 116878, 116892, 116920,
        116930, 116936, 116944, 116958, 116966, 116972, 116986, 117006, 117048,
        117104, 117118, 117122, 117124, 117136, 117150, 117152, 117180, 117190,
        117196, 117208, 117230, 117234, 117236, 117304, 117360, 117374, 117472,
        117500, 117506, 117508, 117512, 117520, 117536, 117564, 117568, 117624,
        117638, 117644, 117656, 117680, 117694, 117710, 117724, 117730, 117732,
        117736, 117750, 117782, 117798, 117804, 117818, 117830, 117848, 117874,
        117876, 117894, 117936, 117950, 117966, 117986, 117988, 117992, 118022,
        118028, 118040, 118064, 118078, 118112, 118140, 118172, 118210, 118212,
        118216, 118224, 118238, 118246, 118266, 118306, 118312, 118338, 118352,
        118366, 118374, 118394, 118402, 118404, 118408, 118416, 118430, 118432,
        118460, 118476, 118514, 118516, 118574, 118578, 118580, 118606, 118620,
        118626, 118628, 118632, 118678, 118694, 118700, 118730, 118738, 118740,
        118830, 118834, 118836, 118862, 118876, 118882, 118884, 118888, 118902,
        118926, 118940, 118968, 118978, 118980, 118984, 118992, 119006, 119014,
        119020, 119034, 119068, 119096, 119152, 119166, 119170, 119172, 119176,
        119184, 119198, 119200, 119228, 119238, 119244, 119256, 119278, 119282,
        119284, 119324, 119352, 119408, 119422, 119520, 119548, 119554, 119556,
        119560, 119568, 119582, 119584, 119612, 119616, 119672, 119686, 119692,
        119704, 119728, 119742, 119758, 119772, 119778, 119780, 119784, 119798,
        119920, 119934, 120032, 120060, 120256, 120312, 120324, 120328, 120336,
        120352, 120384, 120440, 120560, 120582, 120588, 120600, 120624, 120638,
        120672, 120700, 120718, 120732, 120760, 120770, 120772, 120776, 120784,
        120798, 120806, 120812, 120870, 120876, 120890, 120902, 120908, 120920,
        120946, 120948, 120966, 120972, 120984, 121008, 121022, 121038, 121058,
        121060, 121064, 121078, 121100, 121112, 121136, 121150, 121184, 121212,
        121244, 121282, 121284, 121288, 121296, 121318, 121338, 121356, 121368,
        121392, 121406, 121440, 121468, 121536, 121592, 121656, 121730, 121732,
        121736, 121744, 121758, 121760, 121804, 121842, 121844, 121890, 121922,
        121924, 121928, 121936, 121950, 121958, 121978, 121986, 121988, 121992,
        122e3, 122014, 122016, 122044, 122060, 122098, 122100, 122116, 122120,
        122128, 122142, 122144, 122172, 122176, 122232, 122246, 122264, 122318,
        122338, 122340, 122344, 122414, 122418, 122420, 122446, 122460, 122466,
        122468, 122472, 122510, 122524, 122552, 122562, 122564, 122568, 122576,
        122598, 122618, 122646, 122662, 122668, 122694, 122700, 122712, 122738,
        122740, 122762, 122770, 122772, 122786, 122788, 122792, 123018, 123026,
        123028, 123042, 123044, 123048, 123062, 123098, 123146, 123154, 123156,
        123170, 123172, 123176, 123190, 123202, 123204, 123208, 123216, 123238,
        123244, 123258, 123290, 123314, 123316, 123402, 123410, 123412, 123426,
        123428, 123432, 123446, 123458, 123464, 123472, 123486, 123494, 123500,
        123514, 123522, 123524, 123528, 123536, 123552, 123580, 123590, 123596,
        123608, 123630, 123634, 123636, 123674, 123698, 123700, 123740, 123746,
        123748, 123752, 123834, 123914, 123922, 123924, 123938, 123944, 123958,
        123970, 123976, 123984, 123998, 124006, 124012, 124026, 124034, 124036,
        124048, 124062, 124064, 124092, 124102, 124108, 124120, 124142, 124146,
        124148, 124162, 124164, 124168, 124176, 124190, 124192, 124220, 124224,
        124280, 124294, 124300, 124312, 124336, 124350, 124366, 124380, 124386,
        124388, 124392, 124406, 124442, 124462, 124466, 124468, 124494, 124508,
        124514, 124520, 124558, 124572, 124600, 124610, 124612, 124616, 124624,
        124646, 124666, 124694, 124710, 124716, 124730, 124742, 124748, 124760,
        124786, 124788, 124818, 124820, 124834, 124836, 124840, 124854, 124946,
        124948, 124962, 124964, 124968, 124982, 124994, 124996, 125e3, 125008,
        125022, 125030, 125036, 125050, 125058, 125060, 125064, 125072, 125086,
        125088, 125116, 125126, 125132, 125144, 125166, 125170, 125172, 125186,
        125188, 125192, 125200, 125216, 125244, 125248, 125304, 125318, 125324,
        125336, 125360, 125374, 125390, 125404, 125410, 125412, 125416, 125430,
        125444, 125448, 125456, 125472, 125504, 125560, 125680, 125702, 125708,
        125720, 125744, 125758, 125792, 125820, 125838, 125852, 125880, 125890,
        125892, 125896, 125904, 125918, 125926, 125932, 125978, 125998, 126002,
        126004, 126030, 126044, 126050, 126052, 126056, 126094, 126108, 126136,
        126146, 126148, 126152, 126160, 126182, 126202, 126222, 126236, 126264,
        126320, 126334, 126338, 126340, 126344, 126352, 126366, 126368, 126412,
        126450, 126452, 126486, 126502, 126508, 126522, 126534, 126540, 126552,
        126574, 126578, 126580, 126598, 126604, 126616, 126640, 126654, 126670,
        126684, 126690, 126692, 126696, 126738, 126754, 126756, 126760, 126774,
        126786, 126788, 126792, 126800, 126814, 126822, 126828, 126842, 126894,
        126898, 126900, 126934, 127126, 127142, 127148, 127162, 127178, 127186,
        127188, 127254, 127270, 127276, 127290, 127302, 127308, 127320, 127342,
        127346, 127348, 127370, 127378, 127380, 127394, 127396, 127400, 127450,
        127510, 127526, 127532, 127546, 127558, 127576, 127598, 127602, 127604,
        127622, 127628, 127640, 127664, 127678, 127694, 127708, 127714, 127716,
        127720, 127734, 127754, 127762, 127764, 127778, 127784, 127810, 127812,
        127816, 127824, 127838, 127846, 127866, 127898, 127918, 127922, 127924,
        128022, 128038, 128044, 128058, 128070, 128076, 128088, 128110, 128114,
        128116, 128134, 128140, 128152, 128176, 128190, 128206, 128220, 128226,
        128228, 128232, 128246, 128262, 128268, 128280, 128304, 128318, 128352,
        128380, 128398, 128412, 128440, 128450, 128452, 128456, 128464, 128478,
        128486, 128492, 128506, 128522, 128530, 128532, 128546, 128548, 128552,
        128566, 128578, 128580, 128584, 128592, 128606, 128614, 128634, 128642,
        128644, 128648, 128656, 128670, 128672, 128700, 128716, 128754, 128756,
        128794, 128814, 128818, 128820, 128846, 128860, 128866, 128868, 128872,
        128886, 128918, 128934, 128940, 128954, 128978, 128980, 129178, 129198,
        129202, 129204, 129238, 129258, 129306, 129326, 129330, 129332, 129358,
        129372, 129378, 129380, 129384, 129398, 129430, 129446, 129452, 129466,
        129482, 129490, 129492, 129562, 129582, 129586, 129588, 129614, 129628,
        129634, 129636, 129640, 129654, 129678, 129692, 129720, 129730, 129732,
        129736, 129744, 129758, 129766, 129772, 129814, 129830, 129836, 129850,
        129862, 129868, 129880, 129902, 129906, 129908, 129930, 129938, 129940,
        129954, 129956, 129960, 129974, 130010,
      ])),
      (be.CODEWORD_TABLE = Int32Array.from([
        2627, 1819, 2622, 2621, 1813, 1812, 2729, 2724, 2723, 2779, 2774, 2773,
        902, 896, 908, 868, 865, 861, 859, 2511, 873, 871, 1780, 835, 2493, 825,
        2491, 842, 837, 844, 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806,
        2480, 815, 814, 813, 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655,
        2637, 2635, 2626, 2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727,
        2725, 2730, 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736,
        2413, 754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703,
        1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345,
        654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, 2319,
        2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617, 1616,
        1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, 909, 2509,
        2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, 2489, 2487,
        2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841, 839, 845, 1765,
        1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, 2631, 2629, 1821,
        2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, 2736, 2735, 2733, 2731,
        1848, 2740, 2738, 2786, 2784, 591, 588, 576, 569, 566, 2296, 1590, 537,
        534, 526, 2276, 522, 2274, 545, 542, 539, 548, 1572, 1570, 481, 2245, 466,
        2242, 462, 2239, 492, 485, 482, 2249, 496, 494, 1534, 1531, 1528, 1538,
        413, 2196, 406, 2191, 2188, 425, 419, 2202, 415, 2199, 432, 430, 427,
        1472, 1467, 1464, 433, 1476, 1474, 368, 367, 2160, 365, 2159, 362, 2157,
        2155, 2152, 378, 377, 375, 2166, 372, 2165, 369, 2162, 383, 381, 379,
        2168, 1419, 1418, 1416, 1414, 385, 1411, 384, 1423, 1422, 1420, 1424,
        2461, 802, 2441, 2439, 790, 786, 783, 794, 2409, 2406, 2403, 750, 742,
        738, 2414, 756, 753, 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684,
        2373, 680, 2370, 702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332,
        1624, 2329, 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645,
        2346, 655, 653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568,
        2565, 2576, 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503,
        2502, 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513,
        876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670,
        2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, 2654,
        2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, 2749, 2747,
        2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345, 1375, 1373, 306,
        2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, 1354, 1352, 1349, 1356,
        262, 257, 2101, 253, 2096, 2093, 274, 273, 267, 2107, 263, 2104, 280, 278,
        275, 1316, 1311, 1308, 1320, 1318, 2052, 202, 2050, 2044, 2040, 219, 2063,
        212, 2060, 208, 2055, 224, 221, 2066, 1260, 1258, 1252, 231, 1248, 229,
        1266, 1264, 1261, 1268, 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164,
        2007, 162, 2006, 159, 2003, 2e3, 172, 171, 169, 2012, 166, 2010, 1186,
        1184, 1182, 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193,
        2313, 2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580,
        1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547, 544,
        541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, 470, 2244,
        465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, 1539, 2187,
        2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412, 2197, 409, 2195,
        405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, 429, 1473, 1471,
        1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459, 2457, 2454, 2462,
        803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, 785, 2401, 2399, 2393,
        1702, 2389, 1699, 2411, 2408, 2405, 745, 741, 2415, 758, 755, 1721, 2358,
        2357, 2355, 2353, 1661, 2350, 1660, 2347, 1657, 2368, 2366, 2364, 2361,
        1666, 690, 687, 2374, 683, 2372, 701, 698, 705, 1691, 1689, 2619, 2617,
        2610, 2608, 2605, 2613, 2593, 2588, 2585, 1803, 2599, 2596, 2563, 2561,
        2555, 1797, 2551, 1795, 2573, 2570, 2567, 2577, 2525, 2524, 2522, 2520,
        1786, 2517, 1785, 2514, 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539,
        906, 903, 911, 2721, 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703,
        1827, 1826, 1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857,
        2772, 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133,
        131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, 1130,
        112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117, 1977, 114,
        1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, 1953, 81, 1952, 78,
        1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, 1955, 99, 97, 95, 1961,
        1086, 1085, 1083, 1081, 1078, 100, 1090, 1089, 1087, 1091, 49, 47, 1917,
        44, 1915, 1913, 1910, 1907, 59, 1926, 56, 1925, 53, 1922, 1919, 66, 64,
        1931, 61, 1929, 1042, 1040, 1038, 71, 1035, 70, 1032, 68, 1048, 1047,
        1045, 1043, 1050, 1049, 12, 10, 1869, 1867, 1864, 1861, 21, 1880, 19,
        1877, 1874, 1871, 28, 1888, 25, 1886, 22, 1883, 982, 980, 977, 974, 32,
        30, 991, 989, 987, 984, 34, 995, 994, 992, 2151, 2150, 2147, 2146, 2144,
        356, 355, 354, 2149, 2139, 2138, 2136, 2134, 1359, 343, 341, 338, 2143,
        335, 2141, 348, 347, 346, 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116,
        1324, 310, 308, 305, 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133,
        322, 321, 1355, 1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084,
        1274, 2081, 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108,
        266, 2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039,
        2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201, 2049,
        2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, 2069,
        1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315, 2312,
        2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590, 2288,
        2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, 574, 571,
        2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255, 1544, 2252,
        1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, 2277, 546, 543,
        549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, 2214, 1482, 1479,
        2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477, 2248, 473, 2246, 469,
        2243, 490, 487, 2251, 497, 1537, 1535, 1532, 2477, 2476, 2474, 2479, 2469,
        2468, 2466, 2464, 1730, 2473, 2471, 2453, 2452, 2450, 2448, 1729, 2445,
        1728, 2460, 2458, 2456, 2463, 805, 804, 2428, 2427, 2425, 2423, 1725,
        2420, 1724, 2417, 1722, 2438, 2436, 2434, 2431, 1727, 2444, 2442, 793,
        791, 788, 795, 2388, 2386, 2384, 1697, 2381, 1696, 2378, 1694, 1692, 2402,
        2400, 2398, 2395, 1703, 2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416,
        759, 757, 1807, 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802,
        1801, 1799, 2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791,
        1789, 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578,
        1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, 1832,
        1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897, 862,
        1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, 1743, 2624,
        1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695, 1682, 1680, 639,
        628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602, 600, 597, 595, 2320,
        593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, 613, 1615, 1613, 2328,
        926, 924, 892, 886, 899, 857, 850, 2505, 1778, 824, 823, 821, 819, 2488,
        818, 2486, 833, 831, 828, 840, 1761, 1759, 2649, 2632, 2630, 2746, 2734,
        2732, 2782, 2781, 570, 567, 1587, 531, 527, 523, 540, 1566, 1564, 476,
        467, 463, 2240, 486, 483, 1524, 1521, 1518, 1529, 411, 403, 2192, 399,
        2189, 423, 416, 1462, 1457, 1454, 428, 1468, 1465, 2210, 366, 363, 2158,
        360, 2156, 357, 2153, 376, 373, 370, 2163, 1410, 1409, 1407, 1405, 382,
        1402, 380, 1417, 1415, 1412, 1421, 2175, 2174, 777, 774, 771, 784, 732,
        725, 722, 2404, 743, 1716, 676, 674, 668, 2363, 665, 2360, 685, 1684,
        1681, 626, 624, 622, 2335, 620, 2333, 617, 2330, 641, 635, 649, 1646,
        1644, 1642, 2566, 928, 925, 2530, 2527, 894, 891, 888, 2501, 2499, 2496,
        858, 856, 854, 851, 1779, 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768,
        2759, 2757, 2744, 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369,
        307, 300, 296, 2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246,
        2094, 271, 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048,
        195, 2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222,
        1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992, 1989,
        163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, 1164, 167,
        1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, 587, 586, 564,
        559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508, 2265, 530, 1568,
        1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, 489, 1526, 1523,
        1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177, 410, 2194, 402, 422,
        1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, 2430, 779, 776, 773, 2397,
        2394, 2390, 734, 728, 724, 746, 1717, 2356, 2354, 2351, 2348, 1658, 677,
        675, 673, 670, 667, 688, 1685, 1683, 2606, 2589, 2586, 2559, 2556, 2552,
        927, 2523, 2521, 2518, 2515, 1784, 2532, 895, 893, 890, 2718, 2709, 2707,
        2689, 2687, 2684, 2663, 2662, 2660, 2658, 1825, 2667, 2769, 1852, 2760,
        2758, 142, 141, 1139, 1138, 134, 132, 129, 126, 1982, 1129, 1128, 1126,
        1131, 113, 111, 108, 105, 1972, 101, 1970, 120, 118, 115, 1109, 1108,
        1106, 1104, 123, 1113, 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86,
        1956, 1077, 1076, 1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968,
        1967, 48, 45, 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920,
        1031, 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033,
        69, 1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20,
        1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, 981,
        978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, 2145,
        1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294, 293, 291,
        289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, 1344, 245,
        244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249, 270, 1307,
        1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033, 2030, 2026, 206,
        198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, 1237, 1255, 2310, 2302,
        2300, 2286, 2284, 2281, 565, 563, 561, 558, 575, 1589, 2261, 2259, 2256,
        2253, 1542, 521, 519, 517, 514, 2270, 511, 533, 1569, 1567, 2223, 2221,
        2218, 2215, 1483, 2211, 1480, 459, 456, 453, 2232, 449, 474, 491, 1527,
        1525, 1522, 2475, 2467, 2465, 2451, 2449, 2446, 801, 800, 2426, 2424,
        2421, 2418, 1723, 2435, 780, 778, 775, 2387, 2385, 2382, 2379, 1695, 2375,
        1693, 2396, 735, 733, 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601,
        2584, 2583, 2581, 2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542,
        1790, 2558, 929, 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686,
        1815, 1809, 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711,
        1676, 1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600,
        605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, 524,
        1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, 1452, 1447,
        1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401, 1400, 1398, 1396,
        374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, 772, 726, 723, 1712,
        672, 669, 666, 682, 1678, 1675, 625, 623, 621, 618, 2331, 636, 632, 1639,
        1637, 1635, 920, 918, 884, 880, 889, 849, 848, 847, 846, 2497, 855, 852,
        1776, 2641, 2742, 2787, 1380, 334, 1367, 1365, 301, 297, 1340, 1338, 1335,
        1343, 255, 251, 247, 1296, 1291, 1288, 265, 1302, 1299, 2113, 204, 196,
        192, 2042, 1232, 1230, 1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077,
        2075, 151, 148, 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152,
        157, 1173, 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585,
        560, 557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513,
        1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, 1446,
        420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, 661, 659,
        2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519, 2516, 885, 883,
        881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, 1136, 130, 127, 1125,
        1124, 1122, 1127, 109, 106, 102, 1103, 1102, 1100, 1098, 116, 1107, 1105,
        1980, 80, 76, 73, 1947, 1068, 1067, 1065, 1063, 90, 1060, 87, 1075, 1073,
        1070, 1080, 1966, 1965, 46, 43, 40, 1912, 36, 1909, 1019, 1018, 1016,
        1014, 58, 1011, 55, 1008, 51, 1029, 1027, 1024, 1021, 63, 1037, 1034,
        1940, 1939, 1937, 1942, 8, 1866, 4, 1863, 1, 1860, 956, 954, 952, 949,
        946, 17, 14, 969, 967, 964, 961, 27, 957, 24, 979, 976, 972, 1901, 1900,
        1898, 1896, 986, 1905, 1903, 350, 349, 1381, 329, 327, 324, 1368, 1366,
        292, 290, 287, 284, 2118, 304, 1341, 1339, 1337, 1345, 243, 240, 237,
        2086, 233, 2083, 254, 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184,
        2034, 180, 2031, 177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241,
        2078, 2076, 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502,
        2257, 499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435,
        2212, 460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770,
        768, 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582,
        2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680,
        1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668, 1631,
        1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, 1772, 1753,
        1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442, 1437, 1434, 401,
        1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, 1399, 1397, 1394,
        1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, 1628, 1773, 1378,
        1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248, 1292, 1289, 2111,
        1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, 1236, 2073, 2071,
        1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145, 1161, 1159, 1156, 1153,
        158, 1169, 1166, 2017, 2016, 2014, 2019, 1582, 510, 1556, 1553, 452, 448,
        1506, 1500, 394, 391, 387, 1443, 1441, 1439, 1436, 1450, 2207, 765, 716,
        713, 1709, 662, 660, 657, 1673, 1671, 916, 914, 879, 878, 877, 882, 1135,
        1134, 1121, 1120, 1118, 1123, 1097, 1096, 1094, 1092, 103, 1101, 1099,
        1979, 1059, 1058, 1056, 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964,
        1963, 1007, 1006, 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009,
        52, 1025, 1022, 1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2,
        955, 953, 950, 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890,
        973, 1899, 1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241,
        238, 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028,
        1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, 1583,
        505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455, 451, 1507,
        1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706, 2377, 718, 715,
        1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, 1769, 1749, 1747,
        1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395, 2169, 2167, 1704, 1665,
        1662, 1625, 1623, 1620, 1770, 1329, 1282, 1279, 2109, 1214, 1207, 1222,
        2068, 2065, 1149, 1147, 1144, 1141, 146, 1157, 1154, 2013, 2011, 2008,
        2015, 1579, 1549, 1546, 1495, 1487, 1433, 1431, 1428, 1425, 388, 1440,
        2205, 1705, 658, 1667, 1664, 1119, 1095, 1093, 1978, 1057, 1055, 1052,
        1062, 1962, 1960, 1005, 1003, 1e3, 997, 38, 1013, 1010, 1932, 1930, 1927,
        1934, 941, 939, 936, 933, 6, 930, 3, 951, 948, 944, 1889, 1887, 1884,
        1881, 959, 1893, 1891, 35, 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277,
        1275, 1272, 1269, 235, 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179,
        1213, 2070, 2067, 1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503,
        761, 709, 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103,
        1208, 2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426,
        2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921,
        1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, 1323,
        1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, 1543, 1540,
        1484, 1481, 1478, 1491, 1700,
      ]));
    class Be {
      constructor(t, e) {
        (this.bits = t), (this.points = e);
      }
      getBits() {
        return this.bits;
      }
      getPoints() {
        return this.points;
      }
    }
    class Pe {
      static detectMultiple(t, e, r) {
        let n = t.getBlackMatrix(),
          i = Pe.detect(r, n);
        return (
          i.length || ((n = n.clone()).rotate180(), (i = Pe.detect(r, n))),
          new Be(n, i)
        );
      }
      static detect(t, e) {
        const r = new Array();
        let n = 0,
          i = 0,
          s = !1;
        for (; n < e.getHeight(); ) {
          const o = Pe.findVertices(e, n, i);
          if (null != o[0] || null != o[3]) {
            if (((s = !0), r.push(o), !t)) break;
            null != o[2]
              ? ((i = Math.trunc(o[2].getX())), (n = Math.trunc(o[2].getY())))
              : ((i = Math.trunc(o[4].getX())), (n = Math.trunc(o[4].getY())));
          } else {
            if (!s) break;
            (s = !1), (i = 0);
            for (const t of r)
              null != t[1] && (n = Math.trunc(Math.max(n, t[1].getY()))),
                null != t[3] && (n = Math.max(n, Math.trunc(t[3].getY())));
            n += Pe.ROW_STEP;
          }
        }
        return r;
      }
      static findVertices(t, e, r) {
        const n = t.getHeight(),
          i = t.getWidth(),
          s = new Array(8);
        return (
          Pe.copyToResult(
            s,
            Pe.findRowsWithPattern(t, n, i, e, r, Pe.START_PATTERN),
            Pe.INDEXES_START_PATTERN
          ),
          null != s[4] &&
            ((r = Math.trunc(s[4].getX())), (e = Math.trunc(s[4].getY()))),
          Pe.copyToResult(
            s,
            Pe.findRowsWithPattern(t, n, i, e, r, Pe.STOP_PATTERN),
            Pe.INDEXES_STOP_PATTERN
          ),
          s
        );
      }
      static copyToResult(t, e, r) {
        for (let n = 0; n < r.length; n++) t[r[n]] = e[n];
      }
      static findRowsWithPattern(t, e, r, n, i, s) {
        const o = new Array(4);
        let a = !1;
        const l = new Int32Array(s.length);
        for (; n < e; n += Pe.ROW_STEP) {
          let e = Pe.findGuardPattern(t, i, n, r, !1, s, l);
          if (null != e) {
            for (; n > 0; ) {
              const o = Pe.findGuardPattern(t, i, --n, r, !1, s, l);
              if (null == o) {
                n++;
                break;
              }
              e = o;
            }
            (o[0] = new rt(e[0], n)), (o[1] = new rt(e[1], n)), (a = !0);
            break;
          }
        }
        let h = n + 1;
        if (a) {
          let n = 0,
            i = Int32Array.from([
              Math.trunc(o[0].getX()),
              Math.trunc(o[1].getX()),
            ]);
          for (; h < e; h++) {
            const e = Pe.findGuardPattern(t, i[0], h, r, !1, s, l);
            if (
              null != e &&
              Math.abs(i[0] - e[0]) < Pe.MAX_PATTERN_DRIFT &&
              Math.abs(i[1] - e[1]) < Pe.MAX_PATTERN_DRIFT
            )
              (i = e), (n = 0);
            else {
              if (n > Pe.SKIPPED_ROW_COUNT_MAX) break;
              n++;
            }
          }
          (h -= n + 1), (o[2] = new rt(i[0], h)), (o[3] = new rt(i[1], h));
        }
        return h - n < Pe.BARCODE_MIN_HEIGHT && g.fill(o, null), o;
      }
      static findGuardPattern(t, e, r, n, i, s, o) {
        g.fillWithin(o, 0, o.length, 0);
        let a = e,
          l = 0;
        for (; t.get(a, r) && a > 0 && l++ < Pe.MAX_PIXEL_DRIFT; ) a--;
        let h = a,
          u = 0,
          d = s.length;
        for (let e = i; h < n; h++) {
          if (t.get(h, r) !== e) o[u]++;
          else {
            if (u === d - 1) {
              if (
                Pe.patternMatchVariance(o, s, Pe.MAX_INDIVIDUAL_VARIANCE) <
                Pe.MAX_AVG_VARIANCE
              )
                return new Int32Array([a, h]);
              (a += o[0] + o[1]),
                c.arraycopy(o, 2, o, 0, u - 1),
                (o[u - 1] = 0),
                (o[u] = 0),
                u--;
            } else u++;
            (o[u] = 1), (e = !e);
          }
        }
        return u === d - 1 &&
          Pe.patternMatchVariance(o, s, Pe.MAX_INDIVIDUAL_VARIANCE) <
            Pe.MAX_AVG_VARIANCE
          ? new Int32Array([a, h - 1])
          : null;
      }
      static patternMatchVariance(t, e, r) {
        let n = t.length,
          i = 0,
          s = 0;
        for (let r = 0; r < n; r++) (i += t[r]), (s += e[r]);
        if (i < s) return 1 / 0;
        let o = i / s;
        r *= o;
        let a = 0;
        for (let i = 0; i < n; i++) {
          let n = t[i],
            s = e[i] * o,
            l = n > s ? n - s : s - n;
          if (l > r) return 1 / 0;
          a += l;
        }
        return a / i;
      }
    }
    (Pe.INDEXES_START_PATTERN = Int32Array.from([0, 4, 1, 5])),
      (Pe.INDEXES_STOP_PATTERN = Int32Array.from([6, 2, 7, 3])),
      (Pe.MAX_AVG_VARIANCE = 0.42),
      (Pe.MAX_INDIVIDUAL_VARIANCE = 0.8),
      (Pe.START_PATTERN = Int32Array.from([8, 1, 1, 1, 1, 1, 1, 3])),
      (Pe.STOP_PATTERN = Int32Array.from([7, 1, 1, 3, 1, 1, 1, 2, 1])),
      (Pe.MAX_PIXEL_DRIFT = 3),
      (Pe.MAX_PATTERN_DRIFT = 5),
      (Pe.SKIPPED_ROW_COUNT_MAX = 25),
      (Pe.ROW_STEP = 5),
      (Pe.BARCODE_MIN_HEIGHT = 10);
    class Le {
      constructor(t, e) {
        if (0 === e.length) throw new o();
        this.field = t;
        let r = e.length;
        if (r > 1 && 0 === e[0]) {
          let t = 1;
          for (; t < r && 0 === e[t]; ) t++;
          t === r
            ? (this.coefficients = new Int32Array([0]))
            : ((this.coefficients = new Int32Array(r - t)),
              c.arraycopy(e, t, this.coefficients, 0, this.coefficients.length));
        } else this.coefficients = e;
      }
      getCoefficients() {
        return this.coefficients;
      }
      getDegree() {
        return this.coefficients.length - 1;
      }
      isZero() {
        return 0 === this.coefficients[0];
      }
      getCoefficient(t) {
        return this.coefficients[this.coefficients.length - 1 - t];
      }
      evaluateAt(t) {
        if (0 === t) return this.getCoefficient(0);
        if (1 === t) {
          let t = 0;
          for (let e of this.coefficients) t = this.field.add(t, e);
          return t;
        }
        let e = this.coefficients[0],
          r = this.coefficients.length;
        for (let n = 1; n < r; n++)
          e = this.field.add(this.field.multiply(t, e), this.coefficients[n]);
        return e;
      }
      add(t) {
        if (!this.field.equals(t.field))
          throw new o("ModulusPolys do not have same ModulusGF field");
        if (this.isZero()) return t;
        if (t.isZero()) return this;
        let e = this.coefficients,
          r = t.coefficients;
        if (e.length > r.length) {
          let t = e;
          (e = r), (r = t);
        }
        let n = new Int32Array(r.length),
          i = r.length - e.length;
        c.arraycopy(r, 0, n, 0, i);
        for (let t = i; t < r.length; t++) n[t] = this.field.add(e[t - i], r[t]);
        return new Le(this.field, n);
      }
      subtract(t) {
        if (!this.field.equals(t.field))
          throw new o("ModulusPolys do not have same ModulusGF field");
        return t.isZero() ? this : this.add(t.negative());
      }
      multiply(t) {
        return t instanceof Le ? this.multiplyOther(t) : this.multiplyScalar(t);
      }
      multiplyOther(t) {
        if (!this.field.equals(t.field))
          throw new o("ModulusPolys do not have same ModulusGF field");
        if (this.isZero() || t.isZero())
          return new Le(this.field, new Int32Array([0]));
        let e = this.coefficients,
          r = e.length,
          n = t.coefficients,
          i = n.length,
          s = new Int32Array(r + i - 1);
        for (let t = 0; t < r; t++) {
          let r = e[t];
          for (let e = 0; e < i; e++)
            s[t + e] = this.field.add(s[t + e], this.field.multiply(r, n[e]));
        }
        return new Le(this.field, s);
      }
      negative() {
        let t = this.coefficients.length,
          e = new Int32Array(t);
        for (let r = 0; r < t; r++)
          e[r] = this.field.subtract(0, this.coefficients[r]);
        return new Le(this.field, e);
      }
      multiplyScalar(t) {
        if (0 === t) return new Le(this.field, new Int32Array([0]));
        if (1 === t) return this;
        let e = this.coefficients.length,
          r = new Int32Array(e);
        for (let n = 0; n < e; n++)
          r[n] = this.field.multiply(this.coefficients[n], t);
        return new Le(this.field, r);
      }
      multiplyByMonomial(t, e) {
        if (t < 0) throw new o();
        if (0 === e) return new Le(this.field, new Int32Array([0]));
        let r = this.coefficients.length,
          n = new Int32Array(r + t);
        for (let t = 0; t < r; t++)
          n[t] = this.field.multiply(this.coefficients[t], e);
        return new Le(this.field, n);
      }
      toString() {
        let t = new p();
        for (let e = this.getDegree(); e >= 0; e--) {
          let r = this.getCoefficient(e);
          0 !== r &&
            (r < 0
              ? (t.append(" - "), (r = -r))
              : t.length() > 0 && t.append(" + "),
            (0 !== e && 1 === r) || t.append(r),
            0 !== e && (1 === e ? t.append("x") : (t.append("x^"), t.append(e))));
        }
        return t.toString();
      }
    }
    class Fe {
      add(t, e) {
        return (t + e) % this.modulus;
      }
      subtract(t, e) {
        return (this.modulus + t - e) % this.modulus;
      }
      exp(t) {
        return this.expTable[t];
      }
      log(t) {
        if (0 === t) throw new o();
        return this.logTable[t];
      }
      inverse(t) {
        if (0 === t) throw new K();
        return this.expTable[this.modulus - this.logTable[t] - 1];
      }
      multiply(t, e) {
        return 0 === t || 0 === e
          ? 0
          : this.expTable[
              (this.logTable[t] + this.logTable[e]) % (this.modulus - 1)
            ];
      }
      getSize() {
        return this.modulus;
      }
      equals(t) {
        return t === this;
      }
    }
    class ve extends Fe {
      constructor(t, e) {
        super(),
          (this.modulus = t),
          (this.expTable = new Int32Array(t)),
          (this.logTable = new Int32Array(t));
        let r = 1;
        for (let n = 0; n < t; n++) (this.expTable[n] = r), (r = (r * e) % t);
        for (let e = 0; e < t - 1; e++) this.logTable[this.expTable[e]] = e;
        (this.zero = new Le(this, new Int32Array([0]))),
          (this.one = new Le(this, new Int32Array([1])));
      }
      getZero() {
        return this.zero;
      }
      getOne() {
        return this.one;
      }
      buildMonomial(t, e) {
        if (t < 0) throw new o();
        if (0 === e) return this.zero;
        let r = new Int32Array(t + 1);
        return (r[0] = e), new Le(this, r);
      }
    }
    ve.PDF417_GF = new ve(be.NUMBER_OF_CODEWORDS, 3);
    class ke {
      constructor() {
        this.field = ve.PDF417_GF;
      }
      decode(t, e, r) {
        let n = new Le(this.field, t),
          i = new Int32Array(e),
          s = !1;
        for (let t = e; t > 0; t--) {
          let r = n.evaluateAt(this.field.exp(t));
          (i[e - t] = r), 0 !== r && (s = !0);
        }
        if (!s) return 0;
        let o = this.field.getOne();
        if (null != r)
          for (const e of r) {
            let r = this.field.exp(t.length - 1 - e),
              n = new Le(
                this.field,
                new Int32Array([this.field.subtract(0, r), 1])
              );
            o = o.multiply(n);
          }
        let a = new Le(this.field, i),
          h = this.runEuclideanAlgorithm(this.field.buildMonomial(e, 1), a, e),
          c = h[0],
          u = h[1],
          d = this.findErrorLocations(c),
          g = this.findErrorMagnitudes(u, c, d);
        for (let e = 0; e < d.length; e++) {
          let r = t.length - 1 - this.field.log(d[e]);
          if (r < 0) throw l.getChecksumInstance();
          t[r] = this.field.subtract(t[r], g[e]);
        }
        return d.length;
      }
      runEuclideanAlgorithm(t, e, r) {
        if (t.getDegree() < e.getDegree()) {
          let r = t;
          (t = e), (e = r);
        }
        let n = t,
          i = e,
          s = this.field.getZero(),
          o = this.field.getOne();
        for (; i.getDegree() >= Math.round(r / 2); ) {
          let t = n,
            e = s;
          if (((s = o), (n = i).isZero())) throw l.getChecksumInstance();
          i = t;
          let r = this.field.getZero(),
            a = n.getCoefficient(n.getDegree()),
            h = this.field.inverse(a);
          for (; i.getDegree() >= n.getDegree() && !i.isZero(); ) {
            let t = i.getDegree() - n.getDegree(),
              e = this.field.multiply(i.getCoefficient(i.getDegree()), h);
            (r = r.add(this.field.buildMonomial(t, e))),
              (i = i.subtract(n.multiplyByMonomial(t, e)));
          }
          o = r.multiply(s).subtract(e).negative();
        }
        let a = o.getCoefficient(0);
        if (0 === a) throw l.getChecksumInstance();
        let h = this.field.inverse(a);
        return [o.multiply(h), i.multiply(h)];
      }
      findErrorLocations(t) {
        let e = t.getDegree(),
          r = new Int32Array(e),
          n = 0;
        for (let i = 1; i < this.field.getSize() && n < e; i++)
          0 === t.evaluateAt(i) && ((r[n] = this.field.inverse(i)), n++);
        if (n !== e) throw l.getChecksumInstance();
        return r;
      }
      findErrorMagnitudes(t, e, r) {
        let n = e.getDegree(),
          i = new Int32Array(n);
        for (let t = 1; t <= n; t++)
          i[n - t] = this.field.multiply(t, e.getCoefficient(t));
        let s = new Le(this.field, i),
          o = r.length,
          a = new Int32Array(o);
        for (let e = 0; e < o; e++) {
          let n = this.field.inverse(r[e]),
            i = this.field.subtract(0, t.evaluateAt(n)),
            o = this.field.inverse(s.evaluateAt(n));
          a[e] = this.field.multiply(i, o);
        }
        return a;
      }
    }
    class xe {
      constructor(t, e, r, n, i) {
        t instanceof xe
          ? this.constructor_2(t)
          : this.constructor_1(t, e, r, n, i);
      }
      constructor_1(t, e, r, n, i) {
        const s = null == e || null == r,
          o = null == n || null == i;
        if (s && o) throw new R();
        s
          ? ((e = new rt(0, n.getY())), (r = new rt(0, i.getY())))
          : o &&
            ((n = new rt(t.getWidth() - 1, e.getY())),
            (i = new rt(t.getWidth() - 1, r.getY()))),
          (this.image = t),
          (this.topLeft = e),
          (this.bottomLeft = r),
          (this.topRight = n),
          (this.bottomRight = i),
          (this.minX = Math.trunc(Math.min(e.getX(), r.getX()))),
          (this.maxX = Math.trunc(Math.max(n.getX(), i.getX()))),
          (this.minY = Math.trunc(Math.min(e.getY(), n.getY()))),
          (this.maxY = Math.trunc(Math.max(r.getY(), i.getY())));
      }
      constructor_2(t) {
        (this.image = t.image),
          (this.topLeft = t.getTopLeft()),
          (this.bottomLeft = t.getBottomLeft()),
          (this.topRight = t.getTopRight()),
          (this.bottomRight = t.getBottomRight()),
          (this.minX = t.getMinX()),
          (this.maxX = t.getMaxX()),
          (this.minY = t.getMinY()),
          (this.maxY = t.getMaxY());
      }
      static merge(t, e) {
        return null == t
          ? e
          : null == e
          ? t
          : new xe(t.image, t.topLeft, t.bottomLeft, e.topRight, e.bottomRight);
      }
      addMissingRows(t, e, r) {
        let n = this.topLeft,
          i = this.bottomLeft,
          s = this.topRight,
          o = this.bottomRight;
        if (t > 0) {
          let e = r ? this.topLeft : this.topRight,
            i = Math.trunc(e.getY() - t);
          i < 0 && (i = 0);
          let o = new rt(e.getX(), i);
          r ? (n = o) : (s = o);
        }
        if (e > 0) {
          let t = r ? this.bottomLeft : this.bottomRight,
            n = Math.trunc(t.getY() + e);
          n >= this.image.getHeight() && (n = this.image.getHeight() - 1);
          let s = new rt(t.getX(), n);
          r ? (i = s) : (o = s);
        }
        return new xe(this.image, n, i, s, o);
      }
      getMinX() {
        return this.minX;
      }
      getMaxX() {
        return this.maxX;
      }
      getMinY() {
        return this.minY;
      }
      getMaxY() {
        return this.maxY;
      }
      getTopLeft() {
        return this.topLeft;
      }
      getTopRight() {
        return this.topRight;
      }
      getBottomLeft() {
        return this.bottomLeft;
      }
      getBottomRight() {
        return this.bottomRight;
      }
    }
    class Ve {
      constructor(t, e, r, n) {
        (this.columnCount = t),
          (this.errorCorrectionLevel = n),
          (this.rowCountUpperPart = e),
          (this.rowCountLowerPart = r),
          (this.rowCount = e + r);
      }
      getColumnCount() {
        return this.columnCount;
      }
      getErrorCorrectionLevel() {
        return this.errorCorrectionLevel;
      }
      getRowCount() {
        return this.rowCount;
      }
      getRowCountUpperPart() {
        return this.rowCountUpperPart;
      }
      getRowCountLowerPart() {
        return this.rowCountLowerPart;
      }
    }
    class Ue {
      constructor() {
        this.buffer = "";
      }
      static form(t, e) {
        let r = -1;
        return t.replace(
          /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g,
          function (t, n, i, s, o, a) {
            if ("%%" === t) return "%";
            if (void 0 === e[++r]) return;
            t = s ? parseInt(s.substr(1)) : void 0;
            let l,
              h = o ? parseInt(o.substr(1)) : void 0;
            switch (a) {
              case "s":
                l = e[r];
                break;
              case "c":
                l = e[r][0];
                break;
              case "f":
                l = parseFloat(e[r]).toFixed(t);
                break;
              case "p":
                l = parseFloat(e[r]).toPrecision(t);
                break;
              case "e":
                l = parseFloat(e[r]).toExponential(t);
                break;
              case "x":
                l = parseInt(e[r]).toString(h || 16);
                break;
              case "d":
                l = parseFloat(parseInt(e[r], h || 10).toPrecision(t)).toFixed(0);
            }
            l = "object" == typeof l ? JSON.stringify(l) : (+l).toString(h);
            let c = parseInt(i),
              u = i && i[0] + "" == "0" ? "0" : " ";
            for (; l.length < c; ) l = void 0 !== n ? l + u : u + l;
            return l;
          }
        );
      }
      format(t, ...e) {
        this.buffer += Ue.form(t, e);
      }
      toString() {
        return this.buffer;
      }
    }
    class He {
      constructor(t) {
        (this.boundingBox = new xe(t)),
          (this.codewords = new Array(t.getMaxY() - t.getMinY() + 1));
      }
      getCodewordNearby(t) {
        let e = this.getCodeword(t);
        if (null != e) return e;
        for (let r = 1; r < He.MAX_NEARBY_DISTANCE; r++) {
          let n = this.imageRowToCodewordIndex(t) - r;
          if (n >= 0 && null != (e = this.codewords[n])) return e;
          if (
            (n = this.imageRowToCodewordIndex(t) + r) < this.codewords.length &&
            null != (e = this.codewords[n])
          )
            return e;
        }
        return null;
      }
      imageRowToCodewordIndex(t) {
        return t - this.boundingBox.getMinY();
      }
      setCodeword(t, e) {
        this.codewords[this.imageRowToCodewordIndex(t)] = e;
      }
      getCodeword(t) {
        return this.codewords[this.imageRowToCodewordIndex(t)];
      }
      getBoundingBox() {
        return this.boundingBox;
      }
      getCodewords() {
        return this.codewords;
      }
      toString() {
        const t = new Ue();
        let e = 0;
        for (const r of this.codewords)
          null != r
            ? t.format("%3d: %3d|%3d%n", e++, r.getRowNumber(), r.getValue())
            : t.format("%3d:    |   %n", e++);
        return t.toString();
      }
    }
    He.MAX_NEARBY_DISTANCE = 5;
    class Ge {
      constructor() {
        this.values = new Map();
      }
      setValue(t) {
        t = Math.trunc(t);
        let e = this.values.get(t);
        null == e && (e = 0), e++, this.values.set(t, e);
      }
      getValue() {
        let t = -1,
          e = new Array();
        for (const [r, n] of this.values.entries()) {
          const i = { getKey: () => r, getValue: () => n };
          i.getValue() > t
            ? ((t = i.getValue()), (e = []).push(i.getKey()))
            : i.getValue() === t && e.push(i.getKey());
        }
        return be.toIntArray(e);
      }
      getConfidence(t) {
        return this.values.get(t);
      }
    }
    class Xe extends He {
      constructor(t, e) {
        super(t), (this._isLeft = e);
      }
      setRowNumbers() {
        for (let t of this.getCodewords())
          null != t && t.setRowNumberAsRowIndicatorColumn();
      }
      adjustCompleteIndicatorColumnRowNumbers(t) {
        let e = this.getCodewords();
        this.setRowNumbers(), this.removeIncorrectCodewords(e, t);
        let r = this.getBoundingBox(),
          n = this._isLeft ? r.getTopLeft() : r.getTopRight(),
          i = this._isLeft ? r.getBottomLeft() : r.getBottomRight(),
          s = this.imageRowToCodewordIndex(Math.trunc(n.getY())),
          o = this.imageRowToCodewordIndex(Math.trunc(i.getY())),
          a = -1,
          l = 1,
          h = 0;
        for (let r = s; r < o; r++) {
          if (null == e[r]) continue;
          let n = e[r],
            i = n.getRowNumber() - a;
          if (0 === i) h++;
          else if (1 === i) (l = Math.max(l, h)), (h = 1), (a = n.getRowNumber());
          else if (i < 0 || n.getRowNumber() >= t.getRowCount() || i > r)
            e[r] = null;
          else {
            let t,
              s = (t = l > 2 ? (l - 2) * i : i) >= r;
            for (let n = 1; n <= t && !s; n++) s = null != e[r - n];
            s ? (e[r] = null) : ((a = n.getRowNumber()), (h = 1));
          }
        }
      }
      getRowHeights() {
        let t = this.getBarcodeMetadata();
        if (null == t) return null;
        this.adjustIncompleteIndicatorColumnRowNumbers(t);
        let e = new Int32Array(t.getRowCount());
        for (let t of this.getCodewords())
          if (null != t) {
            let r = t.getRowNumber();
            if (r >= e.length) continue;
            e[r]++;
          }
        return e;
      }
      adjustIncompleteIndicatorColumnRowNumbers(t) {
        let e = this.getBoundingBox(),
          r = this._isLeft ? e.getTopLeft() : e.getTopRight(),
          n = this._isLeft ? e.getBottomLeft() : e.getBottomRight(),
          i = this.imageRowToCodewordIndex(Math.trunc(r.getY())),
          s = this.imageRowToCodewordIndex(Math.trunc(n.getY())),
          o = this.getCodewords(),
          a = -1;
        for (let e = i; e < s; e++) {
          if (null == o[e]) continue;
          let r = o[e];
          r.setRowNumberAsRowIndicatorColumn();
          let n = r.getRowNumber() - a;
          0 === n ||
            (1 === n
              ? (a = r.getRowNumber())
              : r.getRowNumber() >= t.getRowCount()
              ? (o[e] = null)
              : (a = r.getRowNumber()));
        }
      }
      getBarcodeMetadata() {
        let t = this.getCodewords(),
          e = new Ge(),
          r = new Ge(),
          n = new Ge(),
          i = new Ge();
        for (let s of t) {
          if (null == s) continue;
          s.setRowNumberAsRowIndicatorColumn();
          let t = s.getValue() % 30,
            o = s.getRowNumber();
          switch ((this._isLeft || (o += 2), o % 3)) {
            case 0:
              r.setValue(3 * t + 1);
              break;
            case 1:
              i.setValue(t / 3), n.setValue(t % 3);
              break;
            case 2:
              e.setValue(t + 1);
          }
        }
        if (
          0 === e.getValue().length ||
          0 === r.getValue().length ||
          0 === n.getValue().length ||
          0 === i.getValue().length ||
          e.getValue()[0] < 1 ||
          r.getValue()[0] + n.getValue()[0] < be.MIN_ROWS_IN_BARCODE ||
          r.getValue()[0] + n.getValue()[0] > be.MAX_ROWS_IN_BARCODE
        )
          return null;
        let s = new Ve(
          e.getValue()[0],
          r.getValue()[0],
          n.getValue()[0],
          i.getValue()[0]
        );
        return this.removeIncorrectCodewords(t, s), s;
      }
      removeIncorrectCodewords(t, e) {
        for (let r = 0; r < t.length; r++) {
          let n = t[r];
          if (null == t[r]) continue;
          let i = n.getValue() % 30,
            s = n.getRowNumber();
          if (s > e.getRowCount()) t[r] = null;
          else
            switch ((this._isLeft || (s += 2), s % 3)) {
              case 0:
                3 * i + 1 !== e.getRowCountUpperPart() && (t[r] = null);
                break;
              case 1:
                (Math.trunc(i / 3) === e.getErrorCorrectionLevel() &&
                  i % 3 === e.getRowCountLowerPart()) ||
                  (t[r] = null);
                break;
              case 2:
                i + 1 !== e.getColumnCount() && (t[r] = null);
            }
        }
      }
      isLeft() {
        return this._isLeft;
      }
      toString() {
        return "IsLeft: " + this._isLeft + "\n" + super.toString();
      }
    }
    class We {
      constructor(t, e) {
        (this.ADJUST_ROW_NUMBER_SKIP = 2),
          (this.barcodeMetadata = t),
          (this.barcodeColumnCount = t.getColumnCount()),
          (this.boundingBox = e),
          (this.detectionResultColumns = new Array(this.barcodeColumnCount + 2));
      }
      getDetectionResultColumns() {
        this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[0]),
          this.adjustIndicatorColumnRowNumbers(
            this.detectionResultColumns[this.barcodeColumnCount + 1]
          );
        let t,
          e = be.MAX_CODEWORDS_IN_BARCODE;
        do {
          (t = e), (e = this.adjustRowNumbersAndGetCount());
        } while (e > 0 && e < t);
        return this.detectionResultColumns;
      }
      adjustIndicatorColumnRowNumbers(t) {
        null != t &&
          t.adjustCompleteIndicatorColumnRowNumbers(this.barcodeMetadata);
      }
      adjustRowNumbersAndGetCount() {
        let t = this.adjustRowNumbersByRow();
        if (0 === t) return 0;
        for (let t = 1; t < this.barcodeColumnCount + 1; t++) {
          let e = this.detectionResultColumns[t].getCodewords();
          for (let r = 0; r < e.length; r++)
            null != e[r] &&
              (e[r].hasValidRowNumber() || this.adjustRowNumbers(t, r, e));
        }
        return t;
      }
      adjustRowNumbersByRow() {
        return (
          this.adjustRowNumbersFromBothRI(),
          this.adjustRowNumbersFromLRI() + this.adjustRowNumbersFromRRI()
        );
      }
      adjustRowNumbersFromBothRI() {
        if (
          null == this.detectionResultColumns[0] ||
          null == this.detectionResultColumns[this.barcodeColumnCount + 1]
        )
          return;
        let t = this.detectionResultColumns[0].getCodewords(),
          e =
            this.detectionResultColumns[
              this.barcodeColumnCount + 1
            ].getCodewords();
        for (let r = 0; r < t.length; r++)
          if (
            null != t[r] &&
            null != e[r] &&
            t[r].getRowNumber() === e[r].getRowNumber()
          )
            for (let e = 1; e <= this.barcodeColumnCount; e++) {
              let n = this.detectionResultColumns[e].getCodewords()[r];
              null != n &&
                (n.setRowNumber(t[r].getRowNumber()),
                n.hasValidRowNumber() ||
                  (this.detectionResultColumns[e].getCodewords()[r] = null));
            }
      }
      adjustRowNumbersFromRRI() {
        if (null == this.detectionResultColumns[this.barcodeColumnCount + 1])
          return 0;
        let t = 0,
          e =
            this.detectionResultColumns[
              this.barcodeColumnCount + 1
            ].getCodewords();
        for (let r = 0; r < e.length; r++) {
          if (null == e[r]) continue;
          let n = e[r].getRowNumber(),
            i = 0;
          for (
            let e = this.barcodeColumnCount + 1;
            e > 0 && i < this.ADJUST_ROW_NUMBER_SKIP;
            e--
          ) {
            let s = this.detectionResultColumns[e].getCodewords()[r];
            null != s &&
              ((i = We.adjustRowNumberIfValid(n, i, s)),
              s.hasValidRowNumber() || t++);
          }
        }
        return t;
      }
      adjustRowNumbersFromLRI() {
        if (null == this.detectionResultColumns[0]) return 0;
        let t = 0,
          e = this.detectionResultColumns[0].getCodewords();
        for (let r = 0; r < e.length; r++) {
          if (null == e[r]) continue;
          let n = e[r].getRowNumber(),
            i = 0;
          for (
            let e = 1;
            e < this.barcodeColumnCount + 1 && i < this.ADJUST_ROW_NUMBER_SKIP;
            e++
          ) {
            let s = this.detectionResultColumns[e].getCodewords()[r];
            null != s &&
              ((i = We.adjustRowNumberIfValid(n, i, s)),
              s.hasValidRowNumber() || t++);
          }
        }
        return t;
      }
      static adjustRowNumberIfValid(t, e, r) {
        return null == r
          ? e
          : (r.hasValidRowNumber() ||
              (r.isValidRowNumber(t) ? (r.setRowNumber(t), (e = 0)) : ++e),
            e);
      }
      adjustRowNumbers(t, e, r) {
        let n = r[e],
          i = this.detectionResultColumns[t - 1].getCodewords(),
          s = i;
        null != this.detectionResultColumns[t + 1] &&
          (s = this.detectionResultColumns[t + 1].getCodewords());
        let o = new Array(14);
        (o[2] = i[e]),
          (o[3] = s[e]),
          e > 0 && ((o[0] = r[e - 1]), (o[4] = i[e - 1]), (o[5] = s[e - 1])),
          e > 1 && ((o[8] = r[e - 2]), (o[10] = i[e - 2]), (o[11] = s[e - 2])),
          e < r.length - 1 &&
            ((o[1] = r[e + 1]), (o[6] = i[e + 1]), (o[7] = s[e + 1])),
          e < r.length - 2 &&
            ((o[9] = r[e + 2]), (o[12] = i[e + 2]), (o[13] = s[e + 2]));
        for (let t of o) if (We.adjustRowNumber(n, t)) return;
      }
      static adjustRowNumber(t, e) {
        return (
          null != e &&
          !(!e.hasValidRowNumber() || e.getBucket() !== t.getBucket()) &&
          (t.setRowNumber(e.getRowNumber()), !0)
        );
      }
      getBarcodeColumnCount() {
        return this.barcodeColumnCount;
      }
      getBarcodeRowCount() {
        return this.barcodeMetadata.getRowCount();
      }
      getBarcodeECLevel() {
        return this.barcodeMetadata.getErrorCorrectionLevel();
      }
      setBoundingBox(t) {
        this.boundingBox = t;
      }
      getBoundingBox() {
        return this.boundingBox;
      }
      setDetectionResultColumn(t, e) {
        this.detectionResultColumns[t] = e;
      }
      getDetectionResultColumn(t) {
        return this.detectionResultColumns[t];
      }
      toString() {
        let t = this.detectionResultColumns[0];
        null == t &&
          (t = this.detectionResultColumns[this.barcodeColumnCount + 1]);
        let e = new Ue();
        for (let r = 0; r < t.getCodewords().length; r++) {
          e.format("CW %3d:", r);
          for (let t = 0; t < this.barcodeColumnCount + 2; t++) {
            if (null == this.detectionResultColumns[t]) {
              e.format("    |   ");
              continue;
            }
            let n = this.detectionResultColumns[t].getCodewords()[r];
            null != n
              ? e.format(" %3d|%3d", n.getRowNumber(), n.getValue())
              : e.format("    |   ");
          }
          e.format("%n");
        }
        return e.toString();
      }
    }
    class ze {
      constructor(t, e, r, n) {
        (this.rowNumber = ze.BARCODE_ROW_UNKNOWN),
          (this.startX = Math.trunc(t)),
          (this.endX = Math.trunc(e)),
          (this.bucket = Math.trunc(r)),
          (this.value = Math.trunc(n));
      }
      hasValidRowNumber() {
        return this.isValidRowNumber(this.rowNumber);
      }
      isValidRowNumber(t) {
        return t !== ze.BARCODE_ROW_UNKNOWN && this.bucket === (t % 3) * 3;
      }
      setRowNumberAsRowIndicatorColumn() {
        this.rowNumber = Math.trunc(
          3 * Math.trunc(this.value / 30) + Math.trunc(this.bucket / 3)
        );
      }
      getWidth() {
        return this.endX - this.startX;
      }
      getStartX() {
        return this.startX;
      }
      getEndX() {
        return this.endX;
      }
      getBucket() {
        return this.bucket;
      }
      getValue() {
        return this.value;
      }
      getRowNumber() {
        return this.rowNumber;
      }
      setRowNumber(t) {
        this.rowNumber = t;
      }
      toString() {
        return this.rowNumber + "|" + this.value;
      }
    }
    ze.BARCODE_ROW_UNKNOWN = -1;
    class Ye {
      static initialize() {
        for (let t = 0; t < be.SYMBOL_TABLE.length; t++) {
          let e = be.SYMBOL_TABLE[t],
            r = 1 & e;
          for (let n = 0; n < be.BARS_IN_MODULE; n++) {
            let i = 0;
            for (; (1 & e) === r; ) (i += 1), (e >>= 1);
            (r = 1 & e),
              Ye.RATIOS_TABLE[t] ||
                (Ye.RATIOS_TABLE[t] = new Array(be.BARS_IN_MODULE)),
              (Ye.RATIOS_TABLE[t][be.BARS_IN_MODULE - n - 1] = Math.fround(
                i / be.MODULES_IN_CODEWORD
              ));
          }
        }
        this.bSymbolTableReady = !0;
      }
      static getDecodedValue(t) {
        let e = Ye.getDecodedCodewordValue(Ye.sampleBitCounts(t));
        return -1 !== e ? e : Ye.getClosestDecodedValue(t);
      }
      static sampleBitCounts(t) {
        let e = tt.sum(t),
          r = new Int32Array(be.BARS_IN_MODULE),
          n = 0,
          i = 0;
        for (let s = 0; s < be.MODULES_IN_CODEWORD; s++) {
          let o =
            e / (2 * be.MODULES_IN_CODEWORD) + (s * e) / be.MODULES_IN_CODEWORD;
          i + t[n] <= o && ((i += t[n]), n++), r[n]++;
        }
        return r;
      }
      static getDecodedCodewordValue(t) {
        let e = Ye.getBitValue(t);
        return -1 === be.getCodeword(e) ? -1 : e;
      }
      static getBitValue(t) {
        let e = 0;
        for (let r = 0; r < t.length; r++)
          for (let n = 0; n < t[r]; n++) e = (e << 1) | (r % 2 == 0 ? 1 : 0);
        return Math.trunc(e);
      }
      static getClosestDecodedValue(t) {
        let e = tt.sum(t),
          r = new Array(be.BARS_IN_MODULE);
        if (e > 1)
          for (let n = 0; n < r.length; n++) r[n] = Math.fround(t[n] / e);
        let n = et.MAX_VALUE,
          i = -1;
        this.bSymbolTableReady || Ye.initialize();
        for (let t = 0; t < Ye.RATIOS_TABLE.length; t++) {
          let e = 0,
            s = Ye.RATIOS_TABLE[t];
          for (let t = 0; t < be.BARS_IN_MODULE; t++) {
            let i = Math.fround(s[t] - r[t]);
            if ((e += Math.fround(i * i)) >= n) break;
          }
          e < n && ((n = e), (i = be.SYMBOL_TABLE[t]));
        }
        return i;
      }
    }
    (Ye.bSymbolTableReady = !1),
      (Ye.RATIOS_TABLE = new Array(be.SYMBOL_TABLE.length).map(
        (t) => new Array(be.BARS_IN_MODULE)
      ));
    class Ze {
      constructor() {
        (this.segmentCount = -1),
          (this.fileSize = -1),
          (this.timestamp = -1),
          (this.checksum = -1);
      }
      getSegmentIndex() {
        return this.segmentIndex;
      }
      setSegmentIndex(t) {
        this.segmentIndex = t;
      }
      getFileId() {
        return this.fileId;
      }
      setFileId(t) {
        this.fileId = t;
      }
      getOptionalData() {
        return this.optionalData;
      }
      setOptionalData(t) {
        this.optionalData = t;
      }
      isLastSegment() {
        return this.lastSegment;
      }
      setLastSegment(t) {
        this.lastSegment = t;
      }
      getSegmentCount() {
        return this.segmentCount;
      }
      setSegmentCount(t) {
        this.segmentCount = t;
      }
      getSender() {
        return this.sender || null;
      }
      setSender(t) {
        this.sender = t;
      }
      getAddressee() {
        return this.addressee || null;
      }
      setAddressee(t) {
        this.addressee = t;
      }
      getFileName() {
        return this.fileName;
      }
      setFileName(t) {
        this.fileName = t;
      }
      getFileSize() {
        return this.fileSize;
      }
      setFileSize(t) {
        this.fileSize = t;
      }
      getChecksum() {
        return this.checksum;
      }
      setChecksum(t) {
        this.checksum = t;
      }
      getTimestamp() {
        return this.timestamp;
      }
      setTimestamp(t) {
        this.timestamp = t;
      }
    }
    class Ke {
      static parseLong(t, e) {
        return parseInt(t, e);
      }
    }
    class qe extends i {}
    qe.kind = "NullPointerException";
    class Qe {
      writeBytes(t) {
        this.writeBytesOffset(t, 0, t.length);
      }
      writeBytesOffset(t, e, r) {
        if (null == t) throw new qe();
        if (e < 0 || e > t.length || r < 0 || e + r > t.length || e + r < 0)
          throw new u();
        if (0 !== r) for (let n = 0; n < r; n++) this.write(t[e + n]);
      }
      flush() {}
      close() {}
    }
    class je extends i {}
    class Je extends Qe {
      constructor(t = 32) {
        if ((super(), (this.count = 0), t < 0))
          throw new o("Negative initial size: " + t);
        this.buf = new Uint8Array(t);
      }
      ensureCapacity(t) {
        t - this.buf.length > 0 && this.grow(t);
      }
      grow(t) {
        let e = this.buf.length << 1;
        if ((e - t < 0 && (e = t), e < 0)) {
          if (t < 0) throw new je();
          e = f.MAX_VALUE;
        }
        this.buf = g.copyOfUint8Array(this.buf, e);
      }
      write(t) {
        this.ensureCapacity(this.count + 1),
          (this.buf[this.count] = t),
          (this.count += 1);
      }
      writeBytesOffset(t, e, r) {
        if (e < 0 || e > t.length || r < 0 || e + r - t.length > 0) throw new u();
        this.ensureCapacity(this.count + r),
          c.arraycopy(t, e, this.buf, this.count, r),
          (this.count += r);
      }
      writeTo(t) {
        t.writeBytesOffset(this.buf, 0, this.count);
      }
      reset() {
        this.count = 0;
      }
      toByteArray() {
        return g.copyOfUint8Array(this.buf, this.count);
      }
      size() {
        return this.count;
      }
      toString(t) {
        return t
          ? "string" == typeof t
            ? this.toString_string(t)
            : this.toString_number(t)
          : this.toString_void();
      }
      toString_void() {
        return new String(this.buf).toString();
      }
      toString_string(t) {
        return new String(this.buf).toString();
      }
      toString_number(t) {
        return new String(this.buf).toString();
      }
      close() {}
    }
    function $e() {
      if ("undefined" != typeof window) return window.BigInt || null;
      if ("undefined" != typeof global) return global.BigInt || null;
      if ("undefined" != typeof self) return self.BigInt || null;
      throw new Error("Can't search globals for BigInt!");
    }
    let tr;
    function er(t) {
      if ((void 0 === tr && (tr = $e()), null === tr))
        throw new Error("BigInt is not supported!");
      return tr(t);
    }
    !(function (t) {
      (t[(t.ALPHA = 0)] = "ALPHA"),
        (t[(t.LOWER = 1)] = "LOWER"),
        (t[(t.MIXED = 2)] = "MIXED"),
        (t[(t.PUNCT = 3)] = "PUNCT"),
        (t[(t.ALPHA_SHIFT = 4)] = "ALPHA_SHIFT"),
        (t[(t.PUNCT_SHIFT = 5)] = "PUNCT_SHIFT");
    })(X || (X = {}));
    class rr {
      static decode(t, e) {
        let r = new p(""),
          n = m.ISO8859_1;
        r.enableDecoding(n);
        let i = 1,
          s = t[i++],
          o = new Ze();
        for (; i < t[0]; ) {
          switch (s) {
            case rr.TEXT_COMPACTION_MODE_LATCH:
              i = rr.textCompaction(t, i, r);
              break;
            case rr.BYTE_COMPACTION_MODE_LATCH:
            case rr.BYTE_COMPACTION_MODE_LATCH_6:
              i = rr.byteCompaction(s, t, n, i, r);
              break;
            case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
              r.append(t[i++]);
              break;
            case rr.NUMERIC_COMPACTION_MODE_LATCH:
              i = rr.numericCompaction(t, i, r);
              break;
            case rr.ECI_CHARSET:
              m.getCharacterSetECIByValue(t[i++]);
              break;
            case rr.ECI_GENERAL_PURPOSE:
              i += 2;
              break;
            case rr.ECI_USER_DEFINED:
              i++;
              break;
            case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
              i = rr.decodeMacroBlock(t, i, o);
              break;
            case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
            case rr.MACRO_PDF417_TERMINATOR:
              throw new E();
            default:
              i--, (i = rr.textCompaction(t, i, r));
          }
          if (!(i < t.length)) throw E.getFormatInstance();
          s = t[i++];
        }
        if (0 === r.length()) throw E.getFormatInstance();
        let a = new z(null, r.toString(), null, e);
        return a.setOther(o), a;
      }
      static decodeMacroBlock(t, e, r) {
        if (e + rr.NUMBER_OF_SEQUENCE_CODEWORDS > t[0])
          throw E.getFormatInstance();
        let n = new Int32Array(rr.NUMBER_OF_SEQUENCE_CODEWORDS);
        for (let r = 0; r < rr.NUMBER_OF_SEQUENCE_CODEWORDS; r++, e++)
          n[r] = t[e];
        r.setSegmentIndex(
          f.parseInt(rr.decodeBase900toBase10(n, rr.NUMBER_OF_SEQUENCE_CODEWORDS))
        );
        let i = new p();
        (e = rr.textCompaction(t, e, i)), r.setFileId(i.toString());
        let s = -1;
        for (
          t[e] === rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD && (s = e + 1);
          e < t[0];
  
        )
          switch (t[e]) {
            case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
              switch (t[++e]) {
                case rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME:
                  let n = new p();
                  (e = rr.textCompaction(t, e + 1, n)),
                    r.setFileName(n.toString());
                  break;
                case rr.MACRO_PDF417_OPTIONAL_FIELD_SENDER:
                  let i = new p();
                  (e = rr.textCompaction(t, e + 1, i)), r.setSender(i.toString());
                  break;
                case rr.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE:
                  let s = new p();
                  (e = rr.textCompaction(t, e + 1, s)),
                    r.setAddressee(s.toString());
                  break;
                case rr.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT:
                  let o = new p();
                  (e = rr.numericCompaction(t, e + 1, o)),
                    r.setSegmentCount(f.parseInt(o.toString()));
                  break;
                case rr.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP:
                  let a = new p();
                  (e = rr.numericCompaction(t, e + 1, a)),
                    r.setTimestamp(Ke.parseLong(a.toString()));
                  break;
                case rr.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM:
                  let l = new p();
                  (e = rr.numericCompaction(t, e + 1, l)),
                    r.setChecksum(f.parseInt(l.toString()));
                  break;
                case rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE:
                  let h = new p();
                  (e = rr.numericCompaction(t, e + 1, h)),
                    r.setFileSize(Ke.parseLong(h.toString()));
                  break;
                default:
                  throw E.getFormatInstance();
              }
              break;
            case rr.MACRO_PDF417_TERMINATOR:
              e++, r.setLastSegment(!0);
              break;
            default:
              throw E.getFormatInstance();
          }
        if (-1 !== s) {
          let n = e - s;
          r.isLastSegment() && n--, r.setOptionalData(g.copyOfRange(t, s, s + n));
        }
        return e;
      }
      static textCompaction(t, e, r) {
        let n = new Int32Array(2 * (t[0] - e)),
          i = new Int32Array(2 * (t[0] - e)),
          s = 0,
          o = !1;
        for (; e < t[0] && !o; ) {
          let r = t[e++];
          if (r < rr.TEXT_COMPACTION_MODE_LATCH)
            (n[s] = r / 30), (n[s + 1] = r % 30), (s += 2);
          else
            switch (r) {
              case rr.TEXT_COMPACTION_MODE_LATCH:
                n[s++] = rr.TEXT_COMPACTION_MODE_LATCH;
                break;
              case rr.BYTE_COMPACTION_MODE_LATCH:
              case rr.BYTE_COMPACTION_MODE_LATCH_6:
              case rr.NUMERIC_COMPACTION_MODE_LATCH:
              case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
              case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
              case rr.MACRO_PDF417_TERMINATOR:
                e--, (o = !0);
                break;
              case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
                (n[s] = rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE),
                  (r = t[e++]),
                  (i[s] = r),
                  s++;
            }
        }
        return rr.decodeTextCompaction(n, i, s, r), e;
      }
      static decodeTextCompaction(t, e, r, n) {
        let i = X.ALPHA,
          s = X.ALPHA,
          o = 0;
        for (; o < r; ) {
          let r = t[o],
            a = "";
          switch (i) {
            case X.ALPHA:
              if (r < 26) a = String.fromCharCode(65 + r);
              else
                switch (r) {
                  case 26:
                    a = " ";
                    break;
                  case rr.LL:
                    i = X.LOWER;
                    break;
                  case rr.ML:
                    i = X.MIXED;
                    break;
                  case rr.PS:
                    (s = i), (i = X.PUNCT_SHIFT);
                    break;
                  case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
                    n.append(e[o]);
                    break;
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                    i = X.ALPHA;
                }
              break;
            case X.LOWER:
              if (r < 26) a = String.fromCharCode(97 + r);
              else
                switch (r) {
                  case 26:
                    a = " ";
                    break;
                  case rr.AS:
                    (s = i), (i = X.ALPHA_SHIFT);
                    break;
                  case rr.ML:
                    i = X.MIXED;
                    break;
                  case rr.PS:
                    (s = i), (i = X.PUNCT_SHIFT);
                    break;
                  case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
                    n.append(e[o]);
                    break;
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                    i = X.ALPHA;
                }
              break;
            case X.MIXED:
              if (r < rr.PL) a = rr.MIXED_CHARS[r];
              else
                switch (r) {
                  case rr.PL:
                    i = X.PUNCT;
                    break;
                  case 26:
                    a = " ";
                    break;
                  case rr.LL:
                    i = X.LOWER;
                    break;
                  case rr.AL:
                    i = X.ALPHA;
                    break;
                  case rr.PS:
                    (s = i), (i = X.PUNCT_SHIFT);
                    break;
                  case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
                    n.append(e[o]);
                    break;
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                    i = X.ALPHA;
                }
              break;
            case X.PUNCT:
              if (r < rr.PAL) a = rr.PUNCT_CHARS[r];
              else
                switch (r) {
                  case rr.PAL:
                    i = X.ALPHA;
                    break;
                  case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
                    n.append(e[o]);
                    break;
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                    i = X.ALPHA;
                }
              break;
            case X.ALPHA_SHIFT:
              if (((i = s), r < 26)) a = String.fromCharCode(65 + r);
              else
                switch (r) {
                  case 26:
                    a = " ";
                    break;
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                    i = X.ALPHA;
                }
              break;
            case X.PUNCT_SHIFT:
              if (((i = s), r < rr.PAL)) a = rr.PUNCT_CHARS[r];
              else
                switch (r) {
                  case rr.PAL:
                    i = X.ALPHA;
                    break;
                  case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE:
                    n.append(e[o]);
                    break;
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                    i = X.ALPHA;
                }
          }
          "" !== a && n.append(a), o++;
        }
      }
      static byteCompaction(t, e, r, n, i) {
        let s = new Je(),
          o = 0,
          a = 0,
          l = !1;
        switch (t) {
          case rr.BYTE_COMPACTION_MODE_LATCH:
            let r = new Int32Array(6),
              i = e[n++];
            for (; n < e[0] && !l; )
              switch (((r[o++] = i), (a = 900 * a + i), (i = e[n++]))) {
                case rr.TEXT_COMPACTION_MODE_LATCH:
                case rr.BYTE_COMPACTION_MODE_LATCH:
                case rr.NUMERIC_COMPACTION_MODE_LATCH:
                case rr.BYTE_COMPACTION_MODE_LATCH_6:
                case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
                case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
                case rr.MACRO_PDF417_TERMINATOR:
                  n--, (l = !0);
                  break;
                default:
                  if (o % 5 == 0 && o > 0) {
                    for (let t = 0; t < 6; ++t)
                      s.write(Number(er(a) >> er(8 * (5 - t))));
                    (a = 0), (o = 0);
                  }
              }
            n === e[0] && i < rr.TEXT_COMPACTION_MODE_LATCH && (r[o++] = i);
            for (let t = 0; t < o; t++) s.write(r[t]);
            break;
          case rr.BYTE_COMPACTION_MODE_LATCH_6:
            for (; n < e[0] && !l; ) {
              let t = e[n++];
              if (t < rr.TEXT_COMPACTION_MODE_LATCH) o++, (a = 900 * a + t);
              else
                switch (t) {
                  case rr.TEXT_COMPACTION_MODE_LATCH:
                  case rr.BYTE_COMPACTION_MODE_LATCH:
                  case rr.NUMERIC_COMPACTION_MODE_LATCH:
                  case rr.BYTE_COMPACTION_MODE_LATCH_6:
                  case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
                  case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
                  case rr.MACRO_PDF417_TERMINATOR:
                    n--, (l = !0);
                }
              if (o % 5 == 0 && o > 0) {
                for (let t = 0; t < 6; ++t)
                  s.write(Number(er(a) >> er(8 * (5 - t))));
                (a = 0), (o = 0);
              }
            }
        }
        return i.append(I.decode(s.toByteArray(), r)), n;
      }
      static numericCompaction(t, e, r) {
        let n = 0,
          i = !1,
          s = new Int32Array(rr.MAX_NUMERIC_CODEWORDS);
        for (; e < t[0] && !i; ) {
          let o = t[e++];
          if ((e === t[0] && (i = !0), o < rr.TEXT_COMPACTION_MODE_LATCH))
            (s[n] = o), n++;
          else
            switch (o) {
              case rr.TEXT_COMPACTION_MODE_LATCH:
              case rr.BYTE_COMPACTION_MODE_LATCH:
              case rr.BYTE_COMPACTION_MODE_LATCH_6:
              case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK:
              case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD:
              case rr.MACRO_PDF417_TERMINATOR:
                e--, (i = !0);
            }
          (n % rr.MAX_NUMERIC_CODEWORDS == 0 ||
            o === rr.NUMERIC_COMPACTION_MODE_LATCH ||
            i) &&
            n > 0 &&
            (r.append(rr.decodeBase900toBase10(s, n)), (n = 0));
        }
        return e;
      }
      static decodeBase900toBase10(t, e) {
        let r = er(0);
        for (let n = 0; n < e; n++) r += rr.EXP900[e - n - 1] * er(t[n]);
        let n = r.toString();
        if ("1" !== n.charAt(0)) throw new E();
        return n.substring(1);
      }
    }
    (rr.TEXT_COMPACTION_MODE_LATCH = 900),
      (rr.BYTE_COMPACTION_MODE_LATCH = 901),
      (rr.NUMERIC_COMPACTION_MODE_LATCH = 902),
      (rr.BYTE_COMPACTION_MODE_LATCH_6 = 924),
      (rr.ECI_USER_DEFINED = 925),
      (rr.ECI_GENERAL_PURPOSE = 926),
      (rr.ECI_CHARSET = 927),
      (rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK = 928),
      (rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD = 923),
      (rr.MACRO_PDF417_TERMINATOR = 922),
      (rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE = 913),
      (rr.MAX_NUMERIC_CODEWORDS = 15),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME = 0),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT = 1),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP = 2),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_SENDER = 3),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE = 4),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE = 5),
      (rr.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM = 6),
      (rr.PL = 25),
      (rr.LL = 27),
      (rr.AS = 27),
      (rr.ML = 28),
      (rr.AL = 28),
      (rr.PS = 29),
      (rr.PAL = 29),
      (rr.PUNCT_CHARS = ";<>@[\\]_`~!\r\t,:\n-.$/\"|*()?{}'"),
      (rr.MIXED_CHARS = "0123456789&\r\t,:#-.$/+%*=^"),
      (rr.EXP900 = $e()
        ? (function () {
            let t = [];
            t[0] = er(1);
            let e = er(900);
            t[1] = e;
            for (let r = 2; r < 16; r++) t[r] = t[r - 1] * e;
            return t;
          })()
        : []),
      (rr.NUMBER_OF_SEQUENCE_CODEWORDS = 2);
    class nr {
      constructor() {}
      static decode(t, e, r, n, i, s, o) {
        let a,
          l = new xe(t, e, r, n, i),
          h = null,
          c = null;
        for (let r = !0; ; r = !1) {
          if (
            (null != e && (h = nr.getRowIndicatorColumn(t, l, e, !0, s, o)),
            null != n && (c = nr.getRowIndicatorColumn(t, l, n, !1, s, o)),
            null == (a = nr.merge(h, c)))
          )
            throw R.getNotFoundInstance();
          let i = a.getBoundingBox();
          if (
            !r ||
            null == i ||
            !(i.getMinY() < l.getMinY() || i.getMaxY() > l.getMaxY())
          )
            break;
          l = i;
        }
        a.setBoundingBox(l);
        let u = a.getBarcodeColumnCount() + 1;
        a.setDetectionResultColumn(0, h), a.setDetectionResultColumn(u, c);
        let d = null != h;
        for (let e = 1; e <= u; e++) {
          let r,
            n = d ? e : u - e;
          if (void 0 !== a.getDetectionResultColumn(n)) continue;
          (r = 0 === n || n === u ? new Xe(l, 0 === n) : new He(l)),
            a.setDetectionResultColumn(n, r);
          let i = -1,
            h = i;
          for (let e = l.getMinY(); e <= l.getMaxY(); e++) {
            if ((i = nr.getStartColumn(a, n, e, d)) < 0 || i > l.getMaxX()) {
              if (-1 === h) continue;
              i = h;
            }
            let c = nr.detectCodeword(t, l.getMinX(), l.getMaxX(), d, i, e, s, o);
            null != c &&
              (r.setCodeword(e, c),
              (h = i),
              (s = Math.min(s, c.getWidth())),
              (o = Math.max(o, c.getWidth())));
          }
        }
        return nr.createDecoderResult(a);
      }
      static merge(t, e) {
        if (null == t && null == e) return null;
        let r = nr.getBarcodeMetadata(t, e);
        if (null == r) return null;
        let n = xe.merge(nr.adjustBoundingBox(t), nr.adjustBoundingBox(e));
        return new We(r, n);
      }
      static adjustBoundingBox(t) {
        if (null == t) return null;
        let e = t.getRowHeights();
        if (null == e) return null;
        let r = nr.getMax(e),
          n = 0;
        for (let t of e) if (((n += r - t), t > 0)) break;
        let i = t.getCodewords();
        for (let t = 0; n > 0 && null == i[t]; t++) n--;
        let s = 0;
        for (let t = e.length - 1; t >= 0 && ((s += r - e[t]), !(e[t] > 0)); t--);
        for (let t = i.length - 1; s > 0 && null == i[t]; t--) s--;
        return t.getBoundingBox().addMissingRows(n, s, t.isLeft());
      }
      static getMax(t) {
        let e = -1;
        for (let r of t) e = Math.max(e, r);
        return e;
      }
      static getBarcodeMetadata(t, e) {
        let r, n;
        return null == t || null == (r = t.getBarcodeMetadata())
          ? null == e
            ? null
            : e.getBarcodeMetadata()
          : null == e || null == (n = e.getBarcodeMetadata())
          ? r
          : r.getColumnCount() !== n.getColumnCount() &&
            r.getErrorCorrectionLevel() !== n.getErrorCorrectionLevel() &&
            r.getRowCount() !== n.getRowCount()
          ? null
          : r;
      }
      static getRowIndicatorColumn(t, e, r, n, i, s) {
        let o = new Xe(e, n);
        for (let a = 0; a < 2; a++) {
          let l = 0 === a ? 1 : -1,
            h = Math.trunc(Math.trunc(r.getX()));
          for (
            let a = Math.trunc(Math.trunc(r.getY()));
            a <= e.getMaxY() && a >= e.getMinY();
            a += l
          ) {
            let e = nr.detectCodeword(t, 0, t.getWidth(), n, h, a, i, s);
            null != e &&
              (o.setCodeword(a, e), (h = n ? e.getStartX() : e.getEndX()));
          }
        }
        return o;
      }
      static adjustCodewordCount(t, e) {
        let r = e[0][1],
          n = r.getValue(),
          i =
            t.getBarcodeColumnCount() * t.getBarcodeRowCount() -
            nr.getNumberOfECCodeWords(t.getBarcodeECLevel());
        if (0 === n.length) {
          if (i < 1 || i > be.MAX_CODEWORDS_IN_BARCODE)
            throw R.getNotFoundInstance();
          r.setValue(i);
        } else n[0] !== i && r.setValue(i);
      }
      static createDecoderResult(t) {
        let e = nr.createBarcodeMatrix(t);
        nr.adjustCodewordCount(t, e);
        let r = new Array(),
          n = new Int32Array(t.getBarcodeRowCount() * t.getBarcodeColumnCount()),
          i = [],
          s = new Array();
        for (let o = 0; o < t.getBarcodeRowCount(); o++)
          for (let a = 0; a < t.getBarcodeColumnCount(); a++) {
            let l = e[o][a + 1].getValue(),
              h = o * t.getBarcodeColumnCount() + a;
            0 === l.length
              ? r.push(h)
              : 1 === l.length
              ? (n[h] = l[0])
              : (s.push(h), i.push(l));
          }
        let o = new Array(i.length);
        for (let t = 0; t < o.length; t++) o[t] = i[t];
        return nr.createDecoderResultFromAmbiguousValues(
          t.getBarcodeECLevel(),
          n,
          be.toIntArray(r),
          be.toIntArray(s),
          o
        );
      }
      static createDecoderResultFromAmbiguousValues(t, e, r, n, i) {
        let s = new Int32Array(n.length),
          o = 100;
        for (; o-- > 0; ) {
          for (let t = 0; t < s.length; t++) e[n[t]] = i[t][s[t]];
          try {
            return nr.decodeCodewords(e, t, r);
          } catch (t) {
            if (!(t instanceof l)) throw t;
          }
          if (0 === s.length) throw l.getChecksumInstance();
          for (let t = 0; t < s.length; t++) {
            if (s[t] < i[t].length - 1) {
              s[t]++;
              break;
            }
            if (((s[t] = 0), t === s.length - 1)) throw l.getChecksumInstance();
          }
        }
        throw l.getChecksumInstance();
      }
      static createBarcodeMatrix(t) {
        let e = Array.from(
          { length: t.getBarcodeRowCount() },
          () => new Array(t.getBarcodeColumnCount() + 2)
        );
        for (let t = 0; t < e.length; t++)
          for (let r = 0; r < e[t].length; r++) e[t][r] = new Ge();
        let r = 0;
        for (let n of t.getDetectionResultColumns()) {
          if (null != n)
            for (let t of n.getCodewords())
              if (null != t) {
                let n = t.getRowNumber();
                if (n >= 0) {
                  if (n >= e.length) continue;
                  e[n][r].setValue(t.getValue());
                }
              }
          r++;
        }
        return e;
      }
      static isValidBarcodeColumn(t, e) {
        return e >= 0 && e <= t.getBarcodeColumnCount() + 1;
      }
      static getStartColumn(t, e, r, n) {
        let i = n ? 1 : -1,
          s = null;
        if (
          (nr.isValidBarcodeColumn(t, e - i) &&
            (s = t.getDetectionResultColumn(e - i).getCodeword(r)),
          null != s)
        )
          return n ? s.getEndX() : s.getStartX();
        if (null != (s = t.getDetectionResultColumn(e).getCodewordNearby(r)))
          return n ? s.getStartX() : s.getEndX();
        if (
          (nr.isValidBarcodeColumn(t, e - i) &&
            (s = t.getDetectionResultColumn(e - i).getCodewordNearby(r)),
          null != s)
        )
          return n ? s.getEndX() : s.getStartX();
        let o = 0;
        for (; nr.isValidBarcodeColumn(t, e - i); ) {
          e -= i;
          for (let r of t.getDetectionResultColumn(e).getCodewords())
            if (null != r)
              return (
                (n ? r.getEndX() : r.getStartX()) +
                i * o * (r.getEndX() - r.getStartX())
              );
          o++;
        }
        return n ? t.getBoundingBox().getMinX() : t.getBoundingBox().getMaxX();
      }
      static detectCodeword(t, e, r, n, i, s, o, a) {
        i = nr.adjustCodewordStartColumn(t, e, r, n, i, s);
        let l,
          h = nr.getModuleBitCount(t, e, r, n, i, s);
        if (null == h) return null;
        let c = tt.sum(h);
        if (n) l = i + c;
        else {
          for (let t = 0; t < h.length / 2; t++) {
            let e = h[t];
            (h[t] = h[h.length - 1 - t]), (h[h.length - 1 - t] = e);
          }
          i = (l = i) - c;
        }
        if (!nr.checkCodewordSkew(c, o, a)) return null;
        let u = Ye.getDecodedValue(h),
          d = be.getCodeword(u);
        return -1 === d ? null : new ze(i, l, nr.getCodewordBucketNumber(u), d);
      }
      static getModuleBitCount(t, e, r, n, i, s) {
        let o = i,
          a = new Int32Array(8),
          l = 0,
          h = n ? 1 : -1,
          c = n;
        for (; (n ? o < r : o >= e) && l < a.length; )
          t.get(o, s) === c ? (a[l]++, (o += h)) : (l++, (c = !c));
        return l === a.length || (o === (n ? r : e) && l === a.length - 1)
          ? a
          : null;
      }
      static getNumberOfECCodeWords(t) {
        return 2 << t;
      }
      static adjustCodewordStartColumn(t, e, r, n, i, s) {
        let o = i,
          a = n ? -1 : 1;
        for (let l = 0; l < 2; l++) {
          for (; (n ? o >= e : o < r) && n === t.get(o, s); ) {
            if (Math.abs(i - o) > nr.CODEWORD_SKEW_SIZE) return i;
            o += a;
          }
          (a = -a), (n = !n);
        }
        return o;
      }
      static checkCodewordSkew(t, e, r) {
        return e - nr.CODEWORD_SKEW_SIZE <= t && t <= r + nr.CODEWORD_SKEW_SIZE;
      }
      static decodeCodewords(t, e, r) {
        if (0 === t.length) throw E.getFormatInstance();
        let n = 1 << (e + 1),
          i = nr.correctErrors(t, r, n);
        nr.verifyCodewordCount(t, n);
        let s = rr.decode(t, "" + e);
        return s.setErrorsCorrected(i), s.setErasures(r.length), s;
      }
      static correctErrors(t, e, r) {
        if (
          (null != e && e.length > r / 2 + nr.MAX_ERRORS) ||
          r < 0 ||
          r > nr.MAX_EC_CODEWORDS
        )
          throw l.getChecksumInstance();
        return nr.errorCorrection.decode(t, r, e);
      }
      static verifyCodewordCount(t, e) {
        if (t.length < 4) throw E.getFormatInstance();
        let r = t[0];
        if (r > t.length) throw E.getFormatInstance();
        if (0 === r) {
          if (!(e < t.length)) throw E.getFormatInstance();
          t[0] = t.length - e;
        }
      }
      static getBitCountForCodeword(t) {
        let e = new Int32Array(8),
          r = 0,
          n = e.length - 1;
        for (; !((1 & t) !== r && ((r = 1 & t), --n < 0)); ) e[n]++, (t >>= 1);
        return e;
      }
      static getCodewordBucketNumber(t) {
        return t instanceof Int32Array
          ? this.getCodewordBucketNumber_Int32Array(t)
          : this.getCodewordBucketNumber_number(t);
      }
      static getCodewordBucketNumber_number(t) {
        return nr.getCodewordBucketNumber(nr.getBitCountForCodeword(t));
      }
      static getCodewordBucketNumber_Int32Array(t) {
        return (t[0] - t[2] + t[4] - t[6] + 9) % 9;
      }
      static toString(t) {
        let e = new Ue();
        for (let r = 0; r < t.length; r++) {
          e.format("Row %2d: ", r);
          for (let n = 0; n < t[r].length; n++) {
            let i = t[r][n];
            0 === i.getValue().length
              ? e.format("        ", null)
              : e.format(
                  "%4d(%2d)",
                  i.getValue()[0],
                  i.getConfidence(i.getValue()[0])
                );
          }
          e.format("%n");
        }
        return e.toString();
      }
    }
    (nr.CODEWORD_SKEW_SIZE = 2),
      (nr.MAX_ERRORS = 3),
      (nr.MAX_EC_CODEWORDS = 512),
      (nr.errorCorrection = new ke());
    class ir {
      decode(t, e = null) {
        let r = ir.decode(t, e, !1);
        if (null == r || 0 === r.length || null == r[0])
          throw R.getNotFoundInstance();
        return r[0];
      }
      decodeMultiple(t, e = null) {
        try {
          return ir.decode(t, e, !0);
        } catch (t) {
          if (t instanceof E || t instanceof l) throw R.getNotFoundInstance();
          throw t;
        }
      }
      static decode(t, e, r) {
        const n = new Array(),
          i = Pe.detectMultiple(t, e, r);
        for (const t of i.getPoints()) {
          const e = nr.decode(
              i.getBits(),
              t[4],
              t[5],
              t[6],
              t[7],
              ir.getMinCodewordWidth(t),
              ir.getMaxCodewordWidth(t)
            ),
            r = new F(e.getText(), e.getRawBytes(), void 0, t, k.PDF_417);
          r.putMetadata(W.ERROR_CORRECTION_LEVEL, e.getECLevel());
          const s = e.getOther();
          null != s && r.putMetadata(W.PDF417_EXTRA_METADATA, s), n.push(r);
        }
        return n.map((t) => t);
      }
      static getMaxWidth(t, e) {
        return null == t || null == e
          ? 0
          : Math.trunc(Math.abs(t.getX() - e.getX()));
      }
      static getMinWidth(t, e) {
        return null == t || null == e
          ? f.MAX_VALUE
          : Math.trunc(Math.abs(t.getX() - e.getX()));
      }
      static getMaxCodewordWidth(t) {
        return Math.floor(
          Math.max(
            Math.max(
              ir.getMaxWidth(t[0], t[4]),
              (ir.getMaxWidth(t[6], t[2]) * be.MODULES_IN_CODEWORD) /
                be.MODULES_IN_STOP_PATTERN
            ),
            Math.max(
              ir.getMaxWidth(t[1], t[5]),
              (ir.getMaxWidth(t[7], t[3]) * be.MODULES_IN_CODEWORD) /
                be.MODULES_IN_STOP_PATTERN
            )
          )
        );
      }
      static getMinCodewordWidth(t) {
        return Math.floor(
          Math.min(
            Math.min(
              ir.getMinWidth(t[0], t[4]),
              (ir.getMinWidth(t[6], t[2]) * be.MODULES_IN_CODEWORD) /
                be.MODULES_IN_STOP_PATTERN
            ),
            Math.min(
              ir.getMinWidth(t[1], t[5]),
              (ir.getMinWidth(t[7], t[3]) * be.MODULES_IN_CODEWORD) /
                be.MODULES_IN_STOP_PATTERN
            )
          )
        );
      }
      reset() {}
    }
    class sr extends i {}
    sr.kind = "ReaderException";
    class or {
      constructor(t) {
        this.verbose = !0 === t;
      }
      decode(t, e) {
        return this.setHints(e), this.decodeInternal(t);
      }
      decodeWithState(t) {
        return (
          (null !== this.readers && void 0 !== this.readers) ||
            this.setHints(null),
          this.decodeInternal(t)
        );
      }
      setHints(t) {
        this.hints = t;
        const e = null != t && void 0 !== t.get(C.TRY_HARDER),
          r = null == t ? null : t.get(C.POSSIBLE_FORMATS),
          n = new Array();
        if (null != r) {
          const i = r.some(
            (t) =>
              t === k.UPC_A ||
              t === k.UPC_E ||
              t === k.EAN_13 ||
              t === k.EAN_8 ||
              t === k.CODABAR ||
              t === k.CODE_39 ||
              t === k.CODE_93 ||
              t === k.CODE_128 ||
              t === k.ITF ||
              t === k.RSS_14 ||
              t === k.RSS_EXPANDED
          );
          i && !e && n.push(new ee(t, this.verbose)),
            r.includes(k.QR_CODE) && n.push(new Me()),
            r.includes(k.DATA_MATRIX) && n.push(new ue()),
            r.includes(k.AZTEC) && n.push(new dt()),
            r.includes(k.PDF_417) && n.push(new ir()),
            i && e && n.push(new ee(t, this.verbose));
        }
        0 === n.length &&
          (e || n.push(new ee(t, this.verbose)),
          n.push(new Me()),
          n.push(new ue()),
          n.push(new dt()),
          n.push(new ir()),
          e && n.push(new ee(t, this.verbose))),
          (this.readers = n);
      }
      reset() {
        if (null !== this.readers) for (const t of this.readers) t.reset();
      }
      decodeInternal(t) {
        if (null === this.readers)
          throw new sr("No readers where selected, nothing can be read.");
        for (const e of this.readers)
          try {
            return e.decode(t, this.hints);
          } catch (t) {
            if (t instanceof sr) continue;
          }
        throw new R("No MultiFormat Readers were able to detect the code.");
      }
    }
    var ar;
    !(function (t) {
      (t[(t.ERROR_CORRECTION = 0)] = "ERROR_CORRECTION"),
        (t[(t.CHARACTER_SET = 1)] = "CHARACTER_SET"),
        (t[(t.DATA_MATRIX_SHAPE = 2)] = "DATA_MATRIX_SHAPE"),
        (t[(t.MIN_SIZE = 3)] = "MIN_SIZE"),
        (t[(t.MAX_SIZE = 4)] = "MAX_SIZE"),
        (t[(t.MARGIN = 5)] = "MARGIN"),
        (t[(t.PDF417_COMPACT = 6)] = "PDF417_COMPACT"),
        (t[(t.PDF417_COMPACTION = 7)] = "PDF417_COMPACTION"),
        (t[(t.PDF417_DIMENSIONS = 8)] = "PDF417_DIMENSIONS"),
        (t[(t.AZTEC_LAYERS = 9)] = "AZTEC_LAYERS"),
        (t[(t.QR_VERSION = 10)] = "QR_VERSION");
    })(ar || (ar = {}));
    var lr = ar;
    class hr {
      constructor(t) {
        (this.field = t),
          (this.cachedGenerators = []),
          this.cachedGenerators.push(new Z(t, Int32Array.from([1])));
      }
      buildGenerator(t) {
        const e = this.cachedGenerators;
        if (t >= e.length) {
          let r = e[e.length - 1];
          const n = this.field;
          for (let i = e.length; i <= t; i++) {
            const t = r.multiply(
              new Z(n, Int32Array.from([1, n.exp(i - 1 + n.getGeneratorBase())]))
            );
            e.push(t), (r = t);
          }
        }
        return e[t];
      }
      encode(t, e) {
        if (0 === e) throw new o("No error correction bytes");
        const r = t.length - e;
        if (r <= 0) throw new o("No data bytes provided");
        const n = this.buildGenerator(e),
          i = new Int32Array(r);
        c.arraycopy(t, 0, i, 0, r);
        let s = new Z(this.field, i);
        const a = (s = s.multiplyByMonomial(e, 1)).divide(n)[1].getCoefficients(),
          l = e - a.length;
        for (let e = 0; e < l; e++) t[r + e] = 0;
        c.arraycopy(a, 0, t, r + l, a.length);
      }
    }
    class cr {
      constructor() {}
      static applyMaskPenaltyRule1(t) {
        return (
          cr.applyMaskPenaltyRule1Internal(t, !0) +
          cr.applyMaskPenaltyRule1Internal(t, !1)
        );
      }
      static applyMaskPenaltyRule2(t) {
        let e = 0;
        const r = t.getArray(),
          n = t.getWidth(),
          i = t.getHeight();
        for (let t = 0; t < i - 1; t++) {
          const i = r[t];
          for (let s = 0; s < n - 1; s++) {
            const n = i[s];
            n === i[s + 1] && n === r[t + 1][s] && n === r[t + 1][s + 1] && e++;
          }
        }
        return cr.N2 * e;
      }
      static applyMaskPenaltyRule3(t) {
        let e = 0;
        const r = t.getArray(),
          n = t.getWidth(),
          i = t.getHeight();
        for (let t = 0; t < i; t++)
          for (let s = 0; s < n; s++) {
            const o = r[t];
            s + 6 < n &&
              1 === o[s] &&
              0 === o[s + 1] &&
              1 === o[s + 2] &&
              1 === o[s + 3] &&
              1 === o[s + 4] &&
              0 === o[s + 5] &&
              1 === o[s + 6] &&
              (cr.isWhiteHorizontal(o, s - 4, s) ||
                cr.isWhiteHorizontal(o, s + 7, s + 11)) &&
              e++,
              t + 6 < i &&
                1 === r[t][s] &&
                0 === r[t + 1][s] &&
                1 === r[t + 2][s] &&
                1 === r[t + 3][s] &&
                1 === r[t + 4][s] &&
                0 === r[t + 5][s] &&
                1 === r[t + 6][s] &&
                (cr.isWhiteVertical(r, s, t - 4, t) ||
                  cr.isWhiteVertical(r, s, t + 7, t + 11)) &&
                e++;
          }
        return e * cr.N3;
      }
      static isWhiteHorizontal(t, e, r) {
        (e = Math.max(e, 0)), (r = Math.min(r, t.length));
        for (let n = e; n < r; n++) if (1 === t[n]) return !1;
        return !0;
      }
      static isWhiteVertical(t, e, r, n) {
        (r = Math.max(r, 0)), (n = Math.min(n, t.length));
        for (let i = r; i < n; i++) if (1 === t[i][e]) return !1;
        return !0;
      }
      static applyMaskPenaltyRule4(t) {
        let e = 0;
        const r = t.getArray(),
          n = t.getWidth(),
          i = t.getHeight();
        for (let t = 0; t < i; t++) {
          const i = r[t];
          for (let t = 0; t < n; t++) 1 === i[t] && e++;
        }
        const s = t.getHeight() * t.getWidth();
        return Math.floor((10 * Math.abs(2 * e - s)) / s) * cr.N4;
      }
      static getDataMaskBit(t, e, r) {
        let n, i;
        switch (t) {
          case 0:
            n = (r + e) & 1;
            break;
          case 1:
            n = 1 & r;
            break;
          case 2:
            n = e % 3;
            break;
          case 3:
            n = (r + e) % 3;
            break;
          case 4:
            n = (Math.floor(r / 2) + Math.floor(e / 3)) & 1;
            break;
          case 5:
            n = (1 & (i = r * e)) + (i % 3);
            break;
          case 6:
            n = ((1 & (i = r * e)) + (i % 3)) & 1;
            break;
          case 7:
            n = (((i = r * e) % 3) + ((r + e) & 1)) & 1;
            break;
          default:
            throw new o("Invalid mask pattern: " + t);
        }
        return 0 === n;
      }
      static applyMaskPenaltyRule1Internal(t, e) {
        let r = 0;
        const n = e ? t.getHeight() : t.getWidth(),
          i = e ? t.getWidth() : t.getHeight(),
          s = t.getArray();
        for (let t = 0; t < n; t++) {
          let n = 0,
            o = -1;
          for (let a = 0; a < i; a++) {
            const i = e ? s[t][a] : s[a][t];
            i === o ? n++ : (n >= 5 && (r += cr.N1 + (n - 5)), (n = 1), (o = i));
          }
          n >= 5 && (r += cr.N1 + (n - 5));
        }
        return r;
      }
    }
    (cr.N1 = 3), (cr.N2 = 3), (cr.N3 = 40), (cr.N4 = 10);
    class ur {
      constructor(t, e) {
        (this.width = t), (this.height = e);
        const r = new Array(e);
        for (let n = 0; n !== e; n++) r[n] = new Uint8Array(t);
        this.bytes = r;
      }
      getHeight() {
        return this.height;
      }
      getWidth() {
        return this.width;
      }
      get(t, e) {
        return this.bytes[e][t];
      }
      getArray() {
        return this.bytes;
      }
      setNumber(t, e, r) {
        this.bytes[e][t] = r;
      }
      setBoolean(t, e, r) {
        this.bytes[e][t] = r ? 1 : 0;
      }
      clear(t) {
        for (const e of this.bytes) g.fill(e, t);
      }
      equals(t) {
        if (!(t instanceof ur)) return !1;
        const e = t;
        if (this.width !== e.width) return !1;
        if (this.height !== e.height) return !1;
        for (let t = 0, r = this.height; t < r; ++t) {
          const r = this.bytes[t],
            n = e.bytes[t];
          for (let t = 0, e = this.width; t < e; ++t)
            if (r[t] !== n[t]) return !1;
        }
        return !0;
      }
      toString() {
        const t = new p();
        for (let e = 0, r = this.height; e < r; ++e) {
          const r = this.bytes[e];
          for (let e = 0, n = this.width; e < n; ++e)
            switch (r[e]) {
              case 0:
                t.append(" 0");
                break;
              case 1:
                t.append(" 1");
                break;
              default:
                t.append("  ");
            }
          t.append("\n");
        }
        return t.toString();
      }
    }
    class dr {
      constructor() {
        this.maskPattern = -1;
      }
      getMode() {
        return this.mode;
      }
      getECLevel() {
        return this.ecLevel;
      }
      getVersion() {
        return this.version;
      }
      getMaskPattern() {
        return this.maskPattern;
      }
      getMatrix() {
        return this.matrix;
      }
      toString() {
        const t = new p();
        return (
          t.append("<<\n"),
          t.append(" mode: "),
          t.append(this.mode ? this.mode.toString() : "null"),
          t.append("\n ecLevel: "),
          t.append(this.ecLevel ? this.ecLevel.toString() : "null"),
          t.append("\n version: "),
          t.append(this.version ? this.version.toString() : "null"),
          t.append("\n maskPattern: "),
          t.append(this.maskPattern.toString()),
          this.matrix
            ? (t.append("\n matrix:\n"), t.append(this.matrix.toString()))
            : t.append("\n matrix: null\n"),
          t.append(">>\n"),
          t.toString()
        );
      }
      setMode(t) {
        this.mode = t;
      }
      setECLevel(t) {
        this.ecLevel = t;
      }
      setVersion(t) {
        this.version = t;
      }
      setMaskPattern(t) {
        this.maskPattern = t;
      }
      setMatrix(t) {
        this.matrix = t;
      }
      static isValidMaskPattern(t) {
        return t >= 0 && t < dr.NUM_MASK_PATTERNS;
      }
    }
    dr.NUM_MASK_PATTERNS = 8;
    class gr extends i {}
    gr.kind = "WriterException";
    class fr {
      constructor() {}
      static clearMatrix(t) {
        t.clear(255);
      }
      static buildMatrix(t, e, r, n, i) {
        fr.clearMatrix(i),
          fr.embedBasicPatterns(r, i),
          fr.embedTypeInfo(e, n, i),
          fr.maybeEmbedVersionInfo(r, i),
          fr.embedDataBits(t, n, i);
      }
      static embedBasicPatterns(t, e) {
        fr.embedPositionDetectionPatternsAndSeparators(e),
          fr.embedDarkDotAtLeftBottomCorner(e),
          fr.maybeEmbedPositionAdjustmentPatterns(t, e),
          fr.embedTimingPatterns(e);
      }
      static embedTypeInfo(t, e, r) {
        const n = new w();
        fr.makeTypeInfoBits(t, e, n);
        for (let t = 0, e = n.getSize(); t < e; ++t) {
          const e = n.get(n.getSize() - 1 - t),
            i = fr.TYPE_INFO_COORDINATES[t],
            s = i[0],
            o = i[1];
          if ((r.setBoolean(s, o, e), t < 8)) {
            const n = r.getWidth() - t - 1,
              i = 8;
            r.setBoolean(n, i, e);
          } else {
            const n = 8,
              i = r.getHeight() - 7 + (t - 8);
            r.setBoolean(n, i, e);
          }
        }
      }
      static maybeEmbedVersionInfo(t, e) {
        if (t.getVersionNumber() < 7) return;
        const r = new w();
        fr.makeVersionInfoBits(t, r);
        let n = 17;
        for (let t = 0; t < 6; ++t)
          for (let i = 0; i < 3; ++i) {
            const s = r.get(n);
            n--,
              e.setBoolean(t, e.getHeight() - 11 + i, s),
              e.setBoolean(e.getHeight() - 11 + i, t, s);
          }
      }
      static embedDataBits(t, e, r) {
        let n = 0,
          i = -1,
          s = r.getWidth() - 1,
          o = r.getHeight() - 1;
        for (; s > 0; ) {
          for (6 === s && (s -= 1); o >= 0 && o < r.getHeight(); ) {
            for (let i = 0; i < 2; ++i) {
              const a = s - i;
              if (!fr.isEmpty(r.get(a, o))) continue;
              let l;
              n < t.getSize() ? ((l = t.get(n)), ++n) : (l = !1),
                255 !== e && cr.getDataMaskBit(e, a, o) && (l = !l),
                r.setBoolean(a, o, l);
            }
            o += i;
          }
          (o += i = -i), (s -= 2);
        }
        if (n !== t.getSize())
          throw new gr("Not all bits consumed: " + n + "/" + t.getSize());
      }
      static findMSBSet(t) {
        return 32 - f.numberOfLeadingZeros(t);
      }
      static calculateBCHCode(t, e) {
        if (0 === e) throw new o("0 polynomial");
        const r = fr.findMSBSet(e);
        for (t <<= r - 1; fr.findMSBSet(t) >= r; )
          t ^= e << (fr.findMSBSet(t) - r);
        return t;
      }
      static makeTypeInfoBits(t, e, r) {
        if (!dr.isValidMaskPattern(e)) throw new gr("Invalid mask pattern");
        const n = (t.getBits() << 3) | e;
        r.appendBits(n, 5);
        const i = fr.calculateBCHCode(n, fr.TYPE_INFO_POLY);
        r.appendBits(i, 10);
        const s = new w();
        if (
          (s.appendBits(fr.TYPE_INFO_MASK_PATTERN, 15),
          r.xor(s),
          15 !== r.getSize())
        )
          throw new gr("should not happen but we got: " + r.getSize());
      }
      static makeVersionInfoBits(t, e) {
        e.appendBits(t.getVersionNumber(), 6);
        const r = fr.calculateBCHCode(t.getVersionNumber(), fr.VERSION_INFO_POLY);
        if ((e.appendBits(r, 12), 18 !== e.getSize()))
          throw new gr("should not happen but we got: " + e.getSize());
      }
      static isEmpty(t) {
        return 255 === t;
      }
      static embedTimingPatterns(t) {
        for (let e = 8; e < t.getWidth() - 8; ++e) {
          const r = (e + 1) % 2;
          fr.isEmpty(t.get(e, 6)) && t.setNumber(e, 6, r),
            fr.isEmpty(t.get(6, e)) && t.setNumber(6, e, r);
        }
      }
      static embedDarkDotAtLeftBottomCorner(t) {
        if (0 === t.get(8, t.getHeight() - 8)) throw new gr();
        t.setNumber(8, t.getHeight() - 8, 1);
      }
      static embedHorizontalSeparationPattern(t, e, r) {
        for (let n = 0; n < 8; ++n) {
          if (!fr.isEmpty(r.get(t + n, e))) throw new gr();
          r.setNumber(t + n, e, 0);
        }
      }
      static embedVerticalSeparationPattern(t, e, r) {
        for (let n = 0; n < 7; ++n) {
          if (!fr.isEmpty(r.get(t, e + n))) throw new gr();
          r.setNumber(t, e + n, 0);
        }
      }
      static embedPositionAdjustmentPattern(t, e, r) {
        for (let n = 0; n < 5; ++n) {
          const i = fr.POSITION_ADJUSTMENT_PATTERN[n];
          for (let s = 0; s < 5; ++s) r.setNumber(t + s, e + n, i[s]);
        }
      }
      static embedPositionDetectionPattern(t, e, r) {
        for (let n = 0; n < 7; ++n) {
          const i = fr.POSITION_DETECTION_PATTERN[n];
          for (let s = 0; s < 7; ++s) r.setNumber(t + s, e + n, i[s]);
        }
      }
      static embedPositionDetectionPatternsAndSeparators(t) {
        const e = fr.POSITION_DETECTION_PATTERN[0].length;
        fr.embedPositionDetectionPattern(0, 0, t),
          fr.embedPositionDetectionPattern(t.getWidth() - e, 0, t),
          fr.embedPositionDetectionPattern(0, t.getWidth() - e, t);
        fr.embedHorizontalSeparationPattern(0, 7, t),
          fr.embedHorizontalSeparationPattern(t.getWidth() - 8, 7, t),
          fr.embedHorizontalSeparationPattern(0, t.getWidth() - 8, t);
        fr.embedVerticalSeparationPattern(7, 0, t),
          fr.embedVerticalSeparationPattern(t.getHeight() - 7 - 1, 0, t),
          fr.embedVerticalSeparationPattern(7, t.getHeight() - 7, t);
      }
      static maybeEmbedPositionAdjustmentPatterns(t, e) {
        if (t.getVersionNumber() < 2) return;
        const r = t.getVersionNumber() - 1,
          n = fr.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[r];
        for (let t = 0, r = n.length; t !== r; t++) {
          const i = n[t];
          if (i >= 0)
            for (let t = 0; t !== r; t++) {
              const r = n[t];
              r >= 0 &&
                fr.isEmpty(e.get(r, i)) &&
                fr.embedPositionAdjustmentPattern(r - 2, i - 2, e);
            }
        }
      }
    }
    (fr.POSITION_DETECTION_PATTERN = Array.from([
      Int32Array.from([1, 1, 1, 1, 1, 1, 1]),
      Int32Array.from([1, 0, 0, 0, 0, 0, 1]),
      Int32Array.from([1, 0, 1, 1, 1, 0, 1]),
      Int32Array.from([1, 0, 1, 1, 1, 0, 1]),
      Int32Array.from([1, 0, 1, 1, 1, 0, 1]),
      Int32Array.from([1, 0, 0, 0, 0, 0, 1]),
      Int32Array.from([1, 1, 1, 1, 1, 1, 1]),
    ])),
      (fr.POSITION_ADJUSTMENT_PATTERN = Array.from([
        Int32Array.from([1, 1, 1, 1, 1]),
        Int32Array.from([1, 0, 0, 0, 1]),
        Int32Array.from([1, 0, 1, 0, 1]),
        Int32Array.from([1, 0, 0, 0, 1]),
        Int32Array.from([1, 1, 1, 1, 1]),
      ])),
      (fr.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE = Array.from([
        Int32Array.from([-1, -1, -1, -1, -1, -1, -1]),
        Int32Array.from([6, 18, -1, -1, -1, -1, -1]),
        Int32Array.from([6, 22, -1, -1, -1, -1, -1]),
        Int32Array.from([6, 26, -1, -1, -1, -1, -1]),
        Int32Array.from([6, 30, -1, -1, -1, -1, -1]),
        Int32Array.from([6, 34, -1, -1, -1, -1, -1]),
        Int32Array.from([6, 22, 38, -1, -1, -1, -1]),
        Int32Array.from([6, 24, 42, -1, -1, -1, -1]),
        Int32Array.from([6, 26, 46, -1, -1, -1, -1]),
        Int32Array.from([6, 28, 50, -1, -1, -1, -1]),
        Int32Array.from([6, 30, 54, -1, -1, -1, -1]),
        Int32Array.from([6, 32, 58, -1, -1, -1, -1]),
        Int32Array.from([6, 34, 62, -1, -1, -1, -1]),
        Int32Array.from([6, 26, 46, 66, -1, -1, -1]),
        Int32Array.from([6, 26, 48, 70, -1, -1, -1]),
        Int32Array.from([6, 26, 50, 74, -1, -1, -1]),
        Int32Array.from([6, 30, 54, 78, -1, -1, -1]),
        Int32Array.from([6, 30, 56, 82, -1, -1, -1]),
        Int32Array.from([6, 30, 58, 86, -1, -1, -1]),
        Int32Array.from([6, 34, 62, 90, -1, -1, -1]),
        Int32Array.from([6, 28, 50, 72, 94, -1, -1]),
        Int32Array.from([6, 26, 50, 74, 98, -1, -1]),
        Int32Array.from([6, 30, 54, 78, 102, -1, -1]),
        Int32Array.from([6, 28, 54, 80, 106, -1, -1]),
        Int32Array.from([6, 32, 58, 84, 110, -1, -1]),
        Int32Array.from([6, 30, 58, 86, 114, -1, -1]),
        Int32Array.from([6, 34, 62, 90, 118, -1, -1]),
        Int32Array.from([6, 26, 50, 74, 98, 122, -1]),
        Int32Array.from([6, 30, 54, 78, 102, 126, -1]),
        Int32Array.from([6, 26, 52, 78, 104, 130, -1]),
        Int32Array.from([6, 30, 56, 82, 108, 134, -1]),
        Int32Array.from([6, 34, 60, 86, 112, 138, -1]),
        Int32Array.from([6, 30, 58, 86, 114, 142, -1]),
        Int32Array.from([6, 34, 62, 90, 118, 146, -1]),
        Int32Array.from([6, 30, 54, 78, 102, 126, 150]),
        Int32Array.from([6, 24, 50, 76, 102, 128, 154]),
        Int32Array.from([6, 28, 54, 80, 106, 132, 158]),
        Int32Array.from([6, 32, 58, 84, 110, 136, 162]),
        Int32Array.from([6, 26, 54, 82, 110, 138, 166]),
        Int32Array.from([6, 30, 58, 86, 114, 142, 170]),
      ])),
      (fr.TYPE_INFO_COORDINATES = Array.from([
        Int32Array.from([8, 0]),
        Int32Array.from([8, 1]),
        Int32Array.from([8, 2]),
        Int32Array.from([8, 3]),
        Int32Array.from([8, 4]),
        Int32Array.from([8, 5]),
        Int32Array.from([8, 7]),
        Int32Array.from([8, 8]),
        Int32Array.from([7, 8]),
        Int32Array.from([5, 8]),
        Int32Array.from([4, 8]),
        Int32Array.from([3, 8]),
        Int32Array.from([2, 8]),
        Int32Array.from([1, 8]),
        Int32Array.from([0, 8]),
      ])),
      (fr.VERSION_INFO_POLY = 7973),
      (fr.TYPE_INFO_POLY = 1335),
      (fr.TYPE_INFO_MASK_PATTERN = 21522);
    class wr {
      constructor(t, e) {
        (this.dataBytes = t), (this.errorCorrectionBytes = e);
      }
      getDataBytes() {
        return this.dataBytes;
      }
      getErrorCorrectionBytes() {
        return this.errorCorrectionBytes;
      }
    }
    class Ar {
      constructor() {}
      static calculateMaskPenalty(t) {
        return (
          cr.applyMaskPenaltyRule1(t) +
          cr.applyMaskPenaltyRule2(t) +
          cr.applyMaskPenaltyRule3(t) +
          cr.applyMaskPenaltyRule4(t)
        );
      }
      static encode(t, e, r = null) {
        let n = Ar.DEFAULT_BYTE_MODE_ENCODING;
        const i = null !== r && void 0 !== r.get(lr.CHARACTER_SET);
        i && (n = r.get(lr.CHARACTER_SET).toString());
        const s = this.chooseMode(t, n),
          o = new w();
        if (s === _e.BYTE && (i || Ar.DEFAULT_BYTE_MODE_ENCODING !== n)) {
          const t = m.getCharacterSetECIByName(n);
          void 0 !== t && this.appendECI(t, o);
        }
        this.appendModeInfo(s, o);
        const a = new w();
        let l;
        if (
          (this.appendBytes(t, s, a, n),
          null !== r && void 0 !== r.get(lr.QR_VERSION))
        ) {
          const t = Number.parseInt(r.get(lr.QR_VERSION).toString(), 10);
          l = Ae.getVersionForNumber(t);
          const n = this.calculateBitsNeeded(s, o, a, l);
          if (!this.willFit(n, l, e))
            throw new gr("Data too big for requested version");
        } else l = this.recommendVersion(e, s, o, a);
        const h = new w();
        h.appendBitArray(o);
        const c = s === _e.BYTE ? a.getSizeInBytes() : t.length;
        this.appendLengthInfo(c, l, s, h), h.appendBitArray(a);
        const u = l.getECBlocksForLevel(e),
          d = l.getTotalCodewords() - u.getTotalECCodewords();
        this.terminateBits(d, h);
        const g = this.interleaveWithECBytes(
            h,
            l.getTotalCodewords(),
            d,
            u.getNumBlocks()
          ),
          f = new dr();
        f.setECLevel(e), f.setMode(s), f.setVersion(l);
        const A = l.getDimensionForVersion(),
          C = new ur(A, A),
          E = this.chooseMaskPattern(g, e, l, C);
        return (
          f.setMaskPattern(E), fr.buildMatrix(g, e, l, E, C), f.setMatrix(C), f
        );
      }
      static recommendVersion(t, e, r, n) {
        const i = this.calculateBitsNeeded(e, r, n, Ae.getVersionForNumber(1)),
          s = this.chooseVersion(i, t),
          o = this.calculateBitsNeeded(e, r, n, s);
        return this.chooseVersion(o, t);
      }
      static calculateBitsNeeded(t, e, r, n) {
        return e.getSize() + t.getCharacterCountBits(n) + r.getSize();
      }
      static getAlphanumericCode(t) {
        return t < Ar.ALPHANUMERIC_TABLE.length ? Ar.ALPHANUMERIC_TABLE[t] : -1;
      }
      static chooseMode(t, e = null) {
        if (m.SJIS.getName() === e && this.isOnlyDoubleByteKanji(t))
          return _e.KANJI;
        let r = !1,
          n = !1;
        for (let e = 0, i = t.length; e < i; ++e) {
          const i = t.charAt(e);
          if (Ar.isDigit(i)) r = !0;
          else {
            if (-1 === this.getAlphanumericCode(i.charCodeAt(0))) return _e.BYTE;
            n = !0;
          }
        }
        return n ? _e.ALPHANUMERIC : r ? _e.NUMERIC : _e.BYTE;
      }
      static isOnlyDoubleByteKanji(t) {
        let e;
        try {
          e = I.encode(t, m.SJIS);
        } catch (t) {
          return !1;
        }
        const r = e.length;
        if (r % 2 != 0) return !1;
        for (let t = 0; t < r; t += 2) {
          const r = 255 & e[t];
          if ((r < 129 || r > 159) && (r < 224 || r > 235)) return !1;
        }
        return !0;
      }
      static chooseMaskPattern(t, e, r, n) {
        let i = Number.MAX_SAFE_INTEGER,
          s = -1;
        for (let o = 0; o < dr.NUM_MASK_PATTERNS; o++) {
          fr.buildMatrix(t, e, r, o, n);
          let a = this.calculateMaskPenalty(n);
          a < i && ((i = a), (s = o));
        }
        return s;
      }
      static chooseVersion(t, e) {
        for (let r = 1; r <= 40; r++) {
          const n = Ae.getVersionForNumber(r);
          if (Ar.willFit(t, n, e)) return n;
        }
        throw new gr("Data too big");
      }
      static willFit(t, e, r) {
        return (
          e.getTotalCodewords() -
            e.getECBlocksForLevel(r).getTotalECCodewords() >=
          (t + 7) / 8
        );
      }
      static terminateBits(t, e) {
        const r = 8 * t;
        if (e.getSize() > r)
          throw new gr(
            "data bits cannot fit in the QR Code" + e.getSize() + " > " + r
          );
        for (let t = 0; t < 4 && e.getSize() < r; ++t) e.appendBit(!1);
        const n = 7 & e.getSize();
        if (n > 0) for (let t = n; t < 8; t++) e.appendBit(!1);
        const i = t - e.getSizeInBytes();
        for (let t = 0; t < i; ++t) e.appendBits(0 == (1 & t) ? 236 : 17, 8);
        if (e.getSize() !== r) throw new gr("Bits size does not equal capacity");
      }
      static getNumDataBytesAndNumECBytesForBlockID(t, e, r, n, i, s) {
        if (n >= r) throw new gr("Block ID too large");
        const o = t % r,
          a = r - o,
          l = Math.floor(t / r),
          h = l + 1,
          c = Math.floor(e / r),
          u = c + 1,
          d = l - c,
          g = h - u;
        if (d !== g) throw new gr("EC bytes mismatch");
        if (r !== a + o) throw new gr("RS blocks mismatch");
        if (t !== (c + d) * a + (u + g) * o) throw new gr("Total bytes mismatch");
        n < a ? ((i[0] = c), (s[0] = d)) : ((i[0] = u), (s[0] = g));
      }
      static interleaveWithECBytes(t, e, r, n) {
        if (t.getSizeInBytes() !== r)
          throw new gr("Number of bits and data bytes does not match");
        let i = 0,
          s = 0,
          o = 0;
        const a = new Array();
        for (let l = 0; l < n; ++l) {
          const h = new Int32Array(1),
            c = new Int32Array(1);
          Ar.getNumDataBytesAndNumECBytesForBlockID(e, r, n, l, h, c);
          const u = h[0],
            d = new Uint8Array(u);
          t.toBytes(8 * i, d, 0, u);
          const g = Ar.generateECBytes(d, c[0]);
          a.push(new wr(d, g)),
            (s = Math.max(s, u)),
            (o = Math.max(o, g.length)),
            (i += h[0]);
        }
        if (r !== i) throw new gr("Data bytes does not match offset");
        const l = new w();
        for (let t = 0; t < s; ++t)
          for (const e of a) {
            const r = e.getDataBytes();
            t < r.length && l.appendBits(r[t], 8);
          }
        for (let t = 0; t < o; ++t)
          for (const e of a) {
            const r = e.getErrorCorrectionBytes();
            t < r.length && l.appendBits(r[t], 8);
          }
        if (e !== l.getSizeInBytes())
          throw new gr(
            "Interleaving error: " + e + " and " + l.getSizeInBytes() + " differ."
          );
        return l;
      }
      static generateECBytes(t, e) {
        const r = t.length,
          n = new Int32Array(r + e);
        for (let e = 0; e < r; e++) n[e] = 255 & t[e];
        new hr(q.QR_CODE_FIELD_256).encode(n, e);
        const i = new Uint8Array(e);
        for (let t = 0; t < e; t++) i[t] = n[r + t];
        return i;
      }
      static appendModeInfo(t, e) {
        e.appendBits(t.getBits(), 4);
      }
      static appendLengthInfo(t, e, r, n) {
        const i = r.getCharacterCountBits(e);
        if (t >= 1 << i) throw new gr(t + " is bigger than " + ((1 << i) - 1));
        n.appendBits(t, i);
      }
      static appendBytes(t, e, r, n) {
        switch (e) {
          case _e.NUMERIC:
            Ar.appendNumericBytes(t, r);
            break;
          case _e.ALPHANUMERIC:
            Ar.appendAlphanumericBytes(t, r);
            break;
          case _e.BYTE:
            Ar.append8BitBytes(t, r, n);
            break;
          case _e.KANJI:
            Ar.appendKanjiBytes(t, r);
            break;
          default:
            throw new gr("Invalid mode: " + e);
        }
      }
      static getDigit(t) {
        return t.charCodeAt(0) - 48;
      }
      static isDigit(t) {
        const e = Ar.getDigit(t);
        return e >= 0 && e <= 9;
      }
      static appendNumericBytes(t, e) {
        const r = t.length;
        let n = 0;
        for (; n < r; ) {
          const i = Ar.getDigit(t.charAt(n));
          if (n + 2 < r) {
            const r = Ar.getDigit(t.charAt(n + 1)),
              s = Ar.getDigit(t.charAt(n + 2));
            e.appendBits(100 * i + 10 * r + s, 10), (n += 3);
          } else if (n + 1 < r) {
            const r = Ar.getDigit(t.charAt(n + 1));
            e.appendBits(10 * i + r, 7), (n += 2);
          } else e.appendBits(i, 4), n++;
        }
      }
      static appendAlphanumericBytes(t, e) {
        const r = t.length;
        let n = 0;
        for (; n < r; ) {
          const i = Ar.getAlphanumericCode(t.charCodeAt(n));
          if (-1 === i) throw new gr();
          if (n + 1 < r) {
            const r = Ar.getAlphanumericCode(t.charCodeAt(n + 1));
            if (-1 === r) throw new gr();
            e.appendBits(45 * i + r, 11), (n += 2);
          } else e.appendBits(i, 6), n++;
        }
      }
      static append8BitBytes(t, e, r) {
        let n;
        try {
          n = I.encode(t, r);
        } catch (t) {
          throw new gr(t);
        }
        for (let t = 0, r = n.length; t !== r; t++) {
          const r = n[t];
          e.appendBits(r, 8);
        }
      }
      static appendKanjiBytes(t, e) {
        let r;
        try {
          r = I.encode(t, m.SJIS);
        } catch (t) {
          throw new gr(t);
        }
        const n = r.length;
        for (let t = 0; t < n; t += 2) {
          const n = (((255 & r[t]) << 8) & 4294967295) | (255 & r[t + 1]);
          let i = -1;
          if (
            (n >= 33088 && n <= 40956
              ? (i = n - 33088)
              : n >= 57408 && n <= 60351 && (i = n - 49472),
            -1 === i)
          )
            throw new gr("Invalid byte sequence");
          const s = 192 * (i >> 8) + (255 & i);
          e.appendBits(s, 13);
        }
      }
      static appendECI(t, e) {
        e.appendBits(_e.ECI.getBits(), 4), e.appendBits(t.getValue(), 8);
      }
    }
    (Ar.ALPHANUMERIC_TABLE = Int32Array.from([
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, 37, 38,
      -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44,
      -1, -1, -1, -1, -1, -1, 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, -1, -1, -1, -1, -1,
    ])),
      (Ar.DEFAULT_BYTE_MODE_ENCODING = m.UTF8.getName());
    class Cr {
      write(t, e, r, n = null) {
        if (0 === t.length) throw new o("Found empty contents");
        if (e < 0 || r < 0)
          throw new o("Requested dimensions are too small: " + e + "x" + r);
        let i = de.L,
          s = Cr.QUIET_ZONE_SIZE;
        null !== n &&
          (void 0 !== n.get(lr.ERROR_CORRECTION) &&
            (i = de.fromString(n.get(lr.ERROR_CORRECTION).toString())),
          void 0 !== n.get(lr.MARGIN) &&
            (s = Number.parseInt(n.get(lr.MARGIN).toString(), 10)));
        const a = Ar.encode(t, i, n);
        return this.renderResult(a, e, r, s);
      }
      writeToDom(t, e, r, n, i = null) {
        "string" == typeof t && (t = document.querySelector(t));
        const s = this.write(e, r, n, i);
        t && t.appendChild(s);
      }
      renderResult(t, e, r, n) {
        const i = t.getMatrix();
        if (null === i) throw new j();
        const s = i.getWidth(),
          o = i.getHeight(),
          a = s + 2 * n,
          l = o + 2 * n,
          h = Math.max(e, a),
          c = Math.max(r, l),
          u = Math.min(Math.floor(h / a), Math.floor(c / l)),
          d = Math.floor((h - s * u) / 2),
          g = Math.floor((c - o * u) / 2),
          f = this.createSVGElement(h, c);
        for (let t = 0, e = g; t < o; t++, e += u)
          for (let r = 0, n = d; r < s; r++, n += u)
            if (1 === i.get(r, t)) {
              const t = this.createSvgRectElement(n, e, u, u);
              f.appendChild(t);
            }
        return f;
      }
      createSVGElement(t, e) {
        const r = document.createElementNS(Cr.SVG_NS, "svg");
        return (
          r.setAttributeNS(null, "height", t.toString()),
          r.setAttributeNS(null, "width", e.toString()),
          r
        );
      }
      createSvgRectElement(t, e, r, n) {
        const i = document.createElementNS(Cr.SVG_NS, "rect");
        return (
          i.setAttributeNS(null, "x", t.toString()),
          i.setAttributeNS(null, "y", e.toString()),
          i.setAttributeNS(null, "height", r.toString()),
          i.setAttributeNS(null, "width", n.toString()),
          i.setAttributeNS(null, "fill", "#000000"),
          i
        );
      }
    }
    (Cr.QUIET_ZONE_SIZE = 4), (Cr.SVG_NS = "http://www.w3.org/2000/svg");
    class Er {
      encode(t, e, r, n, i) {
        if (0 === t.length) throw new o("Found empty contents");
        if (e !== k.QR_CODE) throw new o("Can only encode QR_CODE, but got " + e);
        if (r < 0 || n < 0)
          throw new o(`Requested dimensions are too small: ${r}x${n}`);
        let s = de.L,
          a = Er.QUIET_ZONE_SIZE;
        null !== i &&
          (void 0 !== i.get(lr.ERROR_CORRECTION) &&
            (s = de.fromString(i.get(lr.ERROR_CORRECTION).toString())),
          void 0 !== i.get(lr.MARGIN) &&
            (a = Number.parseInt(i.get(lr.MARGIN).toString(), 10)));
        const l = Ar.encode(t, s, i);
        return Er.renderResult(l, r, n, a);
      }
      static renderResult(t, e, r, n) {
        const i = t.getMatrix();
        if (null === i) throw new j();
        const s = i.getWidth(),
          o = i.getHeight(),
          a = s + 2 * n,
          l = o + 2 * n,
          h = Math.max(e, a),
          c = Math.max(r, l),
          u = Math.min(Math.floor(h / a), Math.floor(c / l)),
          d = Math.floor((h - s * u) / 2),
          g = Math.floor((c - o * u) / 2),
          f = new T(h, c);
        for (let t = 0, e = g; t < o; t++, e += u)
          for (let r = 0, n = d; r < s; r++, n += u)
            1 === i.get(r, t) && f.setRegion(n, e, u, u);
        return f;
      }
    }
    Er.QUIET_ZONE_SIZE = 4;
    class mr extends y {
      constructor(t, e, r, n, i, s, a, l) {
        if (
          (super(s, a),
          (this.yuvData = t),
          (this.dataWidth = e),
          (this.dataHeight = r),
          (this.left = n),
          (this.top = i),
          n + s > e || i + a > r)
        )
          throw new o("Crop rectangle does not fit within image data.");
        l && this.reverseHorizontal(s, a);
      }
      getRow(t, e) {
        if (t < 0 || t >= this.getHeight())
          throw new o("Requested row is outside the image: " + t);
        const r = this.getWidth();
        (null == e || e.length < r) && (e = new Uint8ClampedArray(r));
        const n = (t + this.top) * this.dataWidth + this.left;
        return c.arraycopy(this.yuvData, n, e, 0, r), e;
      }
      getMatrix() {
        const t = this.getWidth(),
          e = this.getHeight();
        if (t === this.dataWidth && e === this.dataHeight) return this.yuvData;
        const r = t * e,
          n = new Uint8ClampedArray(r);
        let i = this.top * this.dataWidth + this.left;
        if (t === this.dataWidth) return c.arraycopy(this.yuvData, i, n, 0, r), n;
        for (let r = 0; r < e; r++) {
          const e = r * t;
          c.arraycopy(this.yuvData, i, n, e, t), (i += this.dataWidth);
        }
        return n;
      }
      isCropSupported() {
        return !0;
      }
      crop(t, e, r, n) {
        return new mr(
          this.yuvData,
          this.dataWidth,
          this.dataHeight,
          this.left + t,
          this.top + e,
          r,
          n,
          !1
        );
      }
      renderThumbnail() {
        const t = this.getWidth() / mr.THUMBNAIL_SCALE_FACTOR,
          e = this.getHeight() / mr.THUMBNAIL_SCALE_FACTOR,
          r = new Int32Array(t * e),
          n = this.yuvData;
        let i = this.top * this.dataWidth + this.left;
        for (let s = 0; s < e; s++) {
          const e = s * t;
          for (let s = 0; s < t; s++) {
            const t = 255 & n[i + s * mr.THUMBNAIL_SCALE_FACTOR];
            r[e + s] = 4278190080 | (65793 * t);
          }
          i += this.dataWidth * mr.THUMBNAIL_SCALE_FACTOR;
        }
        return r;
      }
      getThumbnailWidth() {
        return this.getWidth() / mr.THUMBNAIL_SCALE_FACTOR;
      }
      getThumbnailHeight() {
        return this.getHeight() / mr.THUMBNAIL_SCALE_FACTOR;
      }
      reverseHorizontal(t, e) {
        const r = this.yuvData;
        for (
          let n = 0, i = this.top * this.dataWidth + this.left;
          n < e;
          n++, i += this.dataWidth
        ) {
          const e = i + t / 2;
          for (let n = i, s = i + t - 1; n < e; n++, s--) {
            const t = r[n];
            (r[n] = r[s]), (r[s] = t);
          }
        }
      }
      invert() {
        return new O(this);
      }
    }
    mr.THUMBNAIL_SCALE_FACTOR = 2;
    class _r extends y {
      constructor(t, e, r, n, i, s, a) {
        if (
          (super(e, r),
          (this.dataWidth = n),
          (this.dataHeight = i),
          (this.left = s),
          (this.top = a),
          4 === t.BYTES_PER_ELEMENT)
        ) {
          const n = e * r,
            i = new Uint8ClampedArray(n);
          for (let e = 0; e < n; e++) {
            const r = t[e],
              n = (r >> 16) & 255,
              s = (r >> 7) & 510,
              o = 255 & r;
            i[e] = ((n + s + o) / 4) & 255;
          }
          this.luminances = i;
        } else this.luminances = t;
        if (
          (void 0 === n && (this.dataWidth = e),
          void 0 === i && (this.dataHeight = r),
          void 0 === s && (this.left = 0),
          void 0 === a && (this.top = 0),
          this.left + e > this.dataWidth || this.top + r > this.dataHeight)
        )
          throw new o("Crop rectangle does not fit within image data.");
      }
      getRow(t, e) {
        if (t < 0 || t >= this.getHeight())
          throw new o("Requested row is outside the image: " + t);
        const r = this.getWidth();
        (null == e || e.length < r) && (e = new Uint8ClampedArray(r));
        const n = (t + this.top) * this.dataWidth + this.left;
        return c.arraycopy(this.luminances, n, e, 0, r), e;
      }
      getMatrix() {
        const t = this.getWidth(),
          e = this.getHeight();
        if (t === this.dataWidth && e === this.dataHeight) return this.luminances;
        const r = t * e,
          n = new Uint8ClampedArray(r);
        let i = this.top * this.dataWidth + this.left;
        if (t === this.dataWidth)
          return c.arraycopy(this.luminances, i, n, 0, r), n;
        for (let r = 0; r < e; r++) {
          const e = r * t;
          c.arraycopy(this.luminances, i, n, e, t), (i += this.dataWidth);
        }
        return n;
      }
      isCropSupported() {
        return !0;
      }
      crop(t, e, r, n) {
        return new _r(
          this.luminances,
          r,
          n,
          this.dataWidth,
          this.dataHeight,
          this.left + t,
          this.top + e
        );
      }
      invert() {
        return new O(this);
      }
    }
    class Ir extends m {
      static forName(t) {
        return this.getCharacterSetECIByName(t);
      }
    }
    class Sr {}
    Sr.ISO_8859_1 = m.ISO8859_1;
    class pr {
      isCompact() {
        return this.compact;
      }
      setCompact(t) {
        this.compact = t;
      }
      getSize() {
        return this.size;
      }
      setSize(t) {
        this.size = t;
      }
      getLayers() {
        return this.layers;
      }
      setLayers(t) {
        this.layers = t;
      }
      getCodeWords() {
        return this.codeWords;
      }
      setCodeWords(t) {
        this.codeWords = t;
      }
      getMatrix() {
        return this.matrix;
      }
      setMatrix(t) {
        this.matrix = t;
      }
    }
    class Tr {
      static singletonList(t) {
        return [t];
      }
      static min(t, e) {
        return t.sort(e)[0];
      }
    }
    class Rr {
      constructor(t) {
        this.previous = t;
      }
      getPrevious() {
        return this.previous;
      }
    }
    class Nr extends Rr {
      constructor(t, e, r) {
        super(t), (this.value = e), (this.bitCount = r);
      }
      appendTo(t, e) {
        t.appendBits(this.value, this.bitCount);
      }
      add(t, e) {
        return new Nr(this, t, e);
      }
      addBinaryShift(t, e) {
        return (
          console.warn(
            "addBinaryShift on SimpleToken, this simply returns a copy of this token"
          ),
          new Nr(this, t, e)
        );
      }
      toString() {
        let t = this.value & ((1 << this.bitCount) - 1);
        return (
          (t |= 1 << this.bitCount),
          "<" + f.toBinaryString(t | (1 << this.bitCount)).substring(1) + ">"
        );
      }
    }
    class Dr extends Nr {
      constructor(t, e, r) {
        super(t, 0, 0),
          (this.binaryShiftStart = e),
          (this.binaryShiftByteCount = r);
      }
      appendTo(t, e) {
        for (let r = 0; r < this.binaryShiftByteCount; r++)
          (0 === r || (31 === r && this.binaryShiftByteCount <= 62)) &&
            (t.appendBits(31, 5),
            this.binaryShiftByteCount > 62
              ? t.appendBits(this.binaryShiftByteCount - 31, 16)
              : 0 === r
              ? t.appendBits(Math.min(this.binaryShiftByteCount, 31), 5)
              : t.appendBits(this.binaryShiftByteCount - 31, 5)),
            t.appendBits(e[this.binaryShiftStart + r], 8);
      }
      addBinaryShift(t, e) {
        return new Dr(this, t, e);
      }
      toString() {
        return (
          "<" +
          this.binaryShiftStart +
          "::" +
          (this.binaryShiftStart + this.binaryShiftByteCount - 1) +
          ">"
        );
      }
    }
    function yr(t, e, r) {
      return new Nr(t, e, r);
    }
    const Or = ["UPPER", "LOWER", "DIGIT", "MIXED", "PUNCT"],
      Mr = 0,
      br = 1,
      Br = 2,
      Pr = 3,
      Lr = 4,
      Fr = new Nr(null, 0, 0),
      vr = [
        Int32Array.from([0, 327708, 327710, 327709, 656318]),
        Int32Array.from([590318, 0, 327710, 327709, 656318]),
        Int32Array.from([262158, 590300, 0, 590301, 932798]),
        Int32Array.from([327709, 327708, 656318, 0, 327710]),
        Int32Array.from([327711, 656380, 656382, 656381, 0]),
      ];
    const kr = (function (t) {
      for (let e of t) g.fill(e, -1);
      return (
        (t[Mr][Lr] = 0),
        (t[br][Lr] = 0),
        (t[br][Mr] = 28),
        (t[Pr][Lr] = 0),
        (t[Br][Lr] = 0),
        (t[Br][Mr] = 15),
        t
      );
    })(g.createInt32Array(6, 6));
    class xr {
      constructor(t, e, r, n) {
        (this.token = t),
          (this.mode = e),
          (this.binaryShiftByteCount = r),
          (this.bitCount = n);
      }
      getMode() {
        return this.mode;
      }
      getToken() {
        return this.token;
      }
      getBinaryShiftByteCount() {
        return this.binaryShiftByteCount;
      }
      getBitCount() {
        return this.bitCount;
      }
      latchAndAppend(t, e) {
        let r = this.bitCount,
          n = this.token;
        if (t !== this.mode) {
          let e = vr[this.mode][t];
          (n = yr(n, 65535 & e, e >> 16)), (r += e >> 16);
        }
        let i = t === Br ? 4 : 5;
        return (n = yr(n, e, i)), new xr(n, t, 0, r + i);
      }
      shiftAndAppend(t, e) {
        let r = this.token,
          n = this.mode === Br ? 4 : 5;
        return (
          (r = yr(r, kr[this.mode][t], n)),
          (r = yr(r, e, 5)),
          new xr(r, this.mode, 0, this.bitCount + n + 5)
        );
      }
      addBinaryShiftChar(t) {
        let e = this.token,
          r = this.mode,
          n = this.bitCount;
        if (this.mode === Lr || this.mode === Br) {
          let t = vr[r][Mr];
          (e = yr(e, 65535 & t, t >> 16)), (n += t >> 16), (r = Mr);
        }
        let i =
            0 === this.binaryShiftByteCount || 31 === this.binaryShiftByteCount
              ? 18
              : 62 === this.binaryShiftByteCount
              ? 9
              : 8,
          s = new xr(e, r, this.binaryShiftByteCount + 1, n + i);
        return (
          2078 === s.binaryShiftByteCount && (s = s.endBinaryShift(t + 1)), s
        );
      }
      endBinaryShift(t) {
        if (0 === this.binaryShiftByteCount) return this;
        let e = this.token;
        return (
          (e = (function (t, e, r) {
            return new Dr(t, e, r);
          })(e, t - this.binaryShiftByteCount, this.binaryShiftByteCount)),
          new xr(e, this.mode, 0, this.bitCount)
        );
      }
      isBetterThanOrEqualTo(t) {
        let e = this.bitCount + (vr[this.mode][t.mode] >> 16);
        return (
          this.binaryShiftByteCount < t.binaryShiftByteCount
            ? (e +=
                xr.calculateBinaryShiftCost(t) -
                xr.calculateBinaryShiftCost(this))
            : this.binaryShiftByteCount > t.binaryShiftByteCount &&
              t.binaryShiftByteCount > 0 &&
              (e += 10),
          e <= t.bitCount
        );
      }
      toBitArray(t) {
        let e = [];
        for (
          let r = this.endBinaryShift(t.length).token;
          null !== r;
          r = r.getPrevious()
        )
          e.unshift(r);
        let r = new w();
        for (const n of e) n.appendTo(r, t);
        return r;
      }
      toString() {
        return S.format(
          "%s bits=%d bytes=%d",
          Or[this.mode],
          this.bitCount,
          this.binaryShiftByteCount
        );
      }
      static calculateBinaryShiftCost(t) {
        return t.binaryShiftByteCount > 62
          ? 21
          : t.binaryShiftByteCount > 31
          ? 20
          : t.binaryShiftByteCount > 0
          ? 10
          : 0;
      }
    }
    xr.INITIAL_STATE = new xr(Fr, Mr, 0, 0);
    const Vr = (function (t) {
      const e = S.getCharCode(" "),
        r = S.getCharCode("."),
        n = S.getCharCode(",");
      t[Mr][e] = 1;
      const i = S.getCharCode("Z"),
        s = S.getCharCode("A");
      for (let e = s; e <= i; e++) t[Mr][e] = e - s + 2;
      t[br][e] = 1;
      const o = S.getCharCode("z"),
        a = S.getCharCode("a");
      for (let e = a; e <= o; e++) t[br][e] = e - a + 2;
      t[Br][e] = 1;
      const l = S.getCharCode("9"),
        h = S.getCharCode("0");
      for (let e = h; e <= l; e++) t[Br][e] = e - h + 2;
      (t[Br][n] = 12), (t[Br][r] = 13);
      const c = [
        "\0",
        " ",
        "",
        "",
        "",
        "",
        "",
        "",
        "",
        "\b",
        "\t",
        "\n",
        "\v",
        "\f",
        "\r",
        "",
        "",
        "",
        "",
        "",
        "@",
        "\\",
        "^",
        "_",
        "`",
        "|",
        "~",
        "",
      ];
      for (let e = 0; e < c.length; e++) t[Pr][S.getCharCode(c[e])] = e;
      const u = [
        "\0",
        "\r",
        "\0",
        "\0",
        "\0",
        "\0",
        "!",
        "'",
        "#",
        "$",
        "%",
        "&",
        "'",
        "(",
        ")",
        "*",
        "+",
        ",",
        "-",
        ".",
        "/",
        ":",
        ";",
        "<",
        "=",
        ">",
        "?",
        "[",
        "]",
        "{",
        "}",
      ];
      for (let e = 0; e < u.length; e++)
        S.getCharCode(u[e]) > 0 && (t[Lr][S.getCharCode(u[e])] = e);
      return t;
    })(g.createInt32Array(5, 256));
    class Ur {
      constructor(t) {
        this.text = t;
      }
      encode() {
        const t = S.getCharCode(" "),
          e = S.getCharCode("\n");
        let r = Tr.singletonList(xr.INITIAL_STATE);
        for (let n = 0; n < this.text.length; n++) {
          let i,
            s = n + 1 < this.text.length ? this.text[n + 1] : 0;
          switch (this.text[n]) {
            case S.getCharCode("\r"):
              i = s === e ? 2 : 0;
              break;
            case S.getCharCode("."):
              i = s === t ? 3 : 0;
              break;
            case S.getCharCode(","):
              i = s === t ? 4 : 0;
              break;
            case S.getCharCode(":"):
              i = s === t ? 5 : 0;
              break;
            default:
              i = 0;
          }
          i > 0
            ? ((r = Ur.updateStateListForPair(r, n, i)), n++)
            : (r = this.updateStateListForChar(r, n));
        }
        return Tr.min(r, (t, e) => t.getBitCount() - e.getBitCount()).toBitArray(
          this.text
        );
      }
      updateStateListForChar(t, e) {
        const r = [];
        for (let n of t) this.updateStateForChar(n, e, r);
        return Ur.simplifyStates(r);
      }
      updateStateForChar(t, e, r) {
        let n = 255 & this.text[e],
          i = Vr[t.getMode()][n] > 0,
          s = null;
        for (let o = 0; o <= Lr; o++) {
          let a = Vr[o][n];
          if (a > 0) {
            if (
              (null == s && (s = t.endBinaryShift(e)),
              !i || o === t.getMode() || o === Br)
            ) {
              const t = s.latchAndAppend(o, a);
              r.push(t);
            }
            if (!i && kr[t.getMode()][o] >= 0) {
              const t = s.shiftAndAppend(o, a);
              r.push(t);
            }
          }
        }
        if (t.getBinaryShiftByteCount() > 0 || 0 === Vr[t.getMode()][n]) {
          let n = t.addBinaryShiftChar(e);
          r.push(n);
        }
      }
      static updateStateListForPair(t, e, r) {
        const n = [];
        for (let i of t) this.updateStateForPair(i, e, r, n);
        return this.simplifyStates(n);
      }
      static updateStateForPair(t, e, r, n) {
        let i = t.endBinaryShift(e);
        if (
          (n.push(i.latchAndAppend(Lr, r)),
          t.getMode() !== Lr && n.push(i.shiftAndAppend(Lr, r)),
          3 === r || 4 === r)
        ) {
          let t = i.latchAndAppend(Br, 16 - r).latchAndAppend(Br, 1);
          n.push(t);
        }
        if (t.getBinaryShiftByteCount() > 0) {
          let r = t.addBinaryShiftChar(e).addBinaryShiftChar(e + 1);
          n.push(r);
        }
      }
      static simplifyStates(t) {
        let e = [];
        for (const r of t) {
          let t = !0;
          for (const n of e) {
            if (n.isBetterThanOrEqualTo(r)) {
              t = !1;
              break;
            }
            r.isBetterThanOrEqualTo(n) && (e = e.filter((t) => t !== n));
          }
          t && e.push(r);
        }
        return e;
      }
    }
    class Hr {
      constructor() {}
      static encodeBytes(t) {
        return Hr.encode(t, Hr.DEFAULT_EC_PERCENT, Hr.DEFAULT_AZTEC_LAYERS);
      }
      static encode(t, e, r) {
        let n,
          i,
          s,
          a,
          l,
          h = new Ur(t).encode(),
          c = f.truncDivision(h.getSize() * e, 100) + 11,
          u = h.getSize() + c;
        if (r !== Hr.DEFAULT_AZTEC_LAYERS) {
          if (
            ((n = r < 0),
            (i = Math.abs(r)) > (n ? Hr.MAX_NB_BITS_COMPACT : Hr.MAX_NB_BITS))
          )
            throw new o(S.format("Illegal value %s for layers", r));
          let t = (s = Hr.totalBitsInLayer(i, n)) - (s % (a = Hr.WORD_SIZE[i]));
          if ((l = Hr.stuffBits(h, a)).getSize() + c > t)
            throw new o("Data to large for user specified layer");
          if (n && l.getSize() > 64 * a)
            throw new o("Data to large for user specified layer");
        } else {
          (a = 0), (l = null);
          for (let t = 0; ; t++) {
            if (t > Hr.MAX_NB_BITS)
              throw new o("Data too large for an Aztec code");
            if (
              ((i = (n = t <= 3) ? t + 1 : t),
              u > (s = Hr.totalBitsInLayer(i, n)))
            )
              continue;
            (null != l && a === Hr.WORD_SIZE[i]) ||
              ((a = Hr.WORD_SIZE[i]), (l = Hr.stuffBits(h, a)));
            let e = s - (s % a);
            if (!(n && l.getSize() > 64 * a) && l.getSize() + c <= e) break;
          }
        }
        let d,
          g = Hr.generateCheckWords(l, s, a),
          w = l.getSize() / a,
          A = Hr.generateModeMessage(n, i, w),
          C = (n ? 11 : 14) + 4 * i,
          E = new Int32Array(C);
        if (n) {
          d = C;
          for (let t = 0; t < E.length; t++) E[t] = t;
        } else {
          d = C + 1 + 2 * f.truncDivision(f.truncDivision(C, 2) - 1, 15);
          let t = f.truncDivision(C, 2),
            e = f.truncDivision(d, 2);
          for (let r = 0; r < t; r++) {
            let n = r + f.truncDivision(r, 15);
            (E[t - r - 1] = e - n - 1), (E[t + r] = e + n + 1);
          }
        }
        let m = new T(d);
        for (let t = 0, e = 0; t < i; t++) {
          let r = 4 * (i - t) + (n ? 9 : 12);
          for (let n = 0; n < r; n++) {
            let i = 2 * n;
            for (let s = 0; s < 2; s++)
              g.get(e + i + s) && m.set(E[2 * t + s], E[2 * t + n]),
                g.get(e + 2 * r + i + s) &&
                  m.set(E[2 * t + n], E[C - 1 - 2 * t - s]),
                g.get(e + 4 * r + i + s) &&
                  m.set(E[C - 1 - 2 * t - s], E[C - 1 - 2 * t - n]),
                g.get(e + 6 * r + i + s) &&
                  m.set(E[C - 1 - 2 * t - n], E[2 * t + s]);
          }
          e += 8 * r;
        }
        if ((Hr.drawModeMessage(m, n, d, A), n))
          Hr.drawBullsEye(m, f.truncDivision(d, 2), 5);
        else {
          Hr.drawBullsEye(m, f.truncDivision(d, 2), 7);
          for (let t = 0, e = 0; t < f.truncDivision(C, 2) - 1; t += 15, e += 16)
            for (let t = 1 & f.truncDivision(d, 2); t < d; t += 2)
              m.set(f.truncDivision(d, 2) - e, t),
                m.set(f.truncDivision(d, 2) + e, t),
                m.set(t, f.truncDivision(d, 2) - e),
                m.set(t, f.truncDivision(d, 2) + e);
        }
        let _ = new pr();
        return (
          _.setCompact(n),
          _.setSize(d),
          _.setLayers(i),
          _.setCodeWords(w),
          _.setMatrix(m),
          _
        );
      }
      static drawBullsEye(t, e, r) {
        for (let n = 0; n < r; n += 2)
          for (let r = e - n; r <= e + n; r++)
            t.set(r, e - n), t.set(r, e + n), t.set(e - n, r), t.set(e + n, r);
        t.set(e - r, e - r),
          t.set(e - r + 1, e - r),
          t.set(e - r, e - r + 1),
          t.set(e + r, e - r),
          t.set(e + r, e - r + 1),
          t.set(e + r, e + r - 1);
      }
      static generateModeMessage(t, e, r) {
        let n = new w();
        return (
          t
            ? (n.appendBits(e - 1, 2),
              n.appendBits(r - 1, 6),
              (n = Hr.generateCheckWords(n, 28, 4)))
            : (n.appendBits(e - 1, 5),
              n.appendBits(r - 1, 11),
              (n = Hr.generateCheckWords(n, 40, 4))),
          n
        );
      }
      static drawModeMessage(t, e, r, n) {
        let i = f.truncDivision(r, 2);
        if (e)
          for (let e = 0; e < 7; e++) {
            let r = i - 3 + e;
            n.get(e) && t.set(r, i - 5),
              n.get(e + 7) && t.set(i + 5, r),
              n.get(20 - e) && t.set(r, i + 5),
              n.get(27 - e) && t.set(i - 5, r);
          }
        else
          for (let e = 0; e < 10; e++) {
            let r = i - 5 + e + f.truncDivision(e, 5);
            n.get(e) && t.set(r, i - 7),
              n.get(e + 10) && t.set(i + 7, r),
              n.get(29 - e) && t.set(r, i + 7),
              n.get(39 - e) && t.set(i - 7, r);
          }
      }
      static generateCheckWords(t, e, r) {
        let n = t.getSize() / r,
          i = new hr(Hr.getGF(r)),
          s = f.truncDivision(e, r),
          o = Hr.bitsToWords(t, r, s);
        i.encode(o, s - n);
        let a = e % r,
          l = new w();
        l.appendBits(0, a);
        for (const t of Array.from(o)) l.appendBits(t, r);
        return l;
      }
      static bitsToWords(t, e, r) {
        let n,
          i,
          s = new Int32Array(r);
        for (n = 0, i = t.getSize() / e; n < i; n++) {
          let r = 0;
          for (let i = 0; i < e; i++)
            r |= t.get(n * e + i) ? 1 << (e - i - 1) : 0;
          s[n] = r;
        }
        return s;
      }
      static getGF(t) {
        switch (t) {
          case 4:
            return q.AZTEC_PARAM;
          case 6:
            return q.AZTEC_DATA_6;
          case 8:
            return q.AZTEC_DATA_8;
          case 10:
            return q.AZTEC_DATA_10;
          case 12:
            return q.AZTEC_DATA_12;
          default:
            throw new o("Unsupported word size " + t);
        }
      }
      static stuffBits(t, e) {
        let r = new w(),
          n = t.getSize(),
          i = (1 << e) - 2;
        for (let s = 0; s < n; s += e) {
          let o = 0;
          for (let r = 0; r < e; r++)
            (s + r >= n || t.get(s + r)) && (o |= 1 << (e - 1 - r));
          (o & i) === i
            ? (r.appendBits(o & i, e), s--)
            : 0 == (o & i)
            ? (r.appendBits(1 | o, e), s--)
            : r.appendBits(o, e);
        }
        return r;
      }
      static totalBitsInLayer(t, e) {
        return ((e ? 88 : 112) + 16 * t) * t;
      }
    }
    (Hr.DEFAULT_EC_PERCENT = 33),
      (Hr.DEFAULT_AZTEC_LAYERS = 0),
      (Hr.MAX_NB_BITS = 32),
      (Hr.MAX_NB_BITS_COMPACT = 4),
      (Hr.WORD_SIZE = Int32Array.from([
        4, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
        10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      ]));
    class Gr {
      encode(t, e, r, n) {
        return this.encodeWithHints(t, e, r, n, null);
      }
      encodeWithHints(t, e, r, n, i) {
        let s = Sr.ISO_8859_1,
          o = Hr.DEFAULT_EC_PERCENT,
          a = Hr.DEFAULT_AZTEC_LAYERS;
        return (
          null != i &&
            (i.has(lr.CHARACTER_SET) &&
              (s = Ir.forName(i.get(lr.CHARACTER_SET).toString())),
            i.has(lr.ERROR_CORRECTION) &&
              (o = f.parseInt(i.get(lr.ERROR_CORRECTION).toString())),
            i.has(lr.AZTEC_LAYERS) &&
              (a = f.parseInt(i.get(lr.AZTEC_LAYERS).toString()))),
          Gr.encodeLayers(t, e, r, n, s, o, a)
        );
      }
      static encodeLayers(t, e, r, n, i, s, a) {
        if (e !== k.AZTEC) throw new o("Can only encode AZTEC, but got " + e);
        let l = Hr.encode(S.getBytes(t, i), s, a);
        return Gr.renderResult(l, r, n);
      }
      static renderResult(t, e, r) {
        let n = t.getMatrix();
        if (null == n) throw new j();
        let i = n.getWidth(),
          s = n.getHeight(),
          o = Math.max(e, i),
          a = Math.max(r, s),
          l = Math.min(o / i, a / s),
          h = (o - i * l) / 2,
          c = (a - s * l) / 2,
          u = new T(o, a);
        for (let t = 0, e = c; t < s; t++, e += l)
          for (let r = 0, s = h; r < i; r++, s += l)
            n.get(r, t) && u.setRegion(s, e, l, l);
        return u;
      }
    }
    (t.ArgumentException = s),
      (t.ArithmeticException = K),
      (t.AztecCode = pr),
      (t.AztecCodeReader = dt),
      (t.AztecCodeWriter = Gr),
      (t.AztecDecoder = $),
      (t.AztecDetector = ut),
      (t.AztecDetectorResult = it),
      (t.AztecEncoder = Hr),
      (t.AztecHighLevelEncoder = Ur),
      (t.AztecPoint = ct),
      (t.BarcodeFormat = k),
      (t.Binarizer = h),
      (t.BinaryBitmap = a),
      (t.BitArray = w),
      (t.BitMatrix = T),
      (t.BitSource = ae),
      (t.BrowserAztecCodeReader = class extends L {
        constructor(t = 500) {
          super(new dt(), t);
        }
      }),
      (t.BrowserBarcodeReader = class extends L {
        constructor(t = 500, e) {
          super(new ee(e), t, e);
        }
      }),
      (t.BrowserCodeReader = L),
      (t.BrowserDatamatrixCodeReader = class extends L {
        constructor(t = 500) {
          super(new ue(), t);
        }
      }),
      (t.BrowserMultiFormatReader = class extends L {
        constructor(t = null, e = 500) {
          const r = new or();
          r.setHints(t), super(r, e);
        }
        decodeBitmap(t) {
          return this.reader.decodeWithState(t);
        }
      }),
      (t.BrowserPDF417Reader = class extends L {
        constructor(t = 500) {
          super(new ir(), t);
        }
      }),
      (t.BrowserQRCodeReader = class extends L {
        constructor(t = 500) {
          super(new Me(), t);
        }
      }),
      (t.BrowserQRCodeSvgWriter = Cr),
      (t.CharacterSetECI = m),
      (t.ChecksumException = l),
      (t.Code128Reader = ft),
      (t.Code39Reader = wt),
      (t.DataMatrixDecodedBitStreamParser = le),
      (t.DataMatrixReader = ue),
      (t.DecodeHintType = C),
      (t.DecoderResult = z),
      (t.DefaultGridSampler = lt),
      (t.DetectorResult = nt),
      (t.EAN13Reader = St),
      (t.EncodeHintType = lr),
      (t.Exception = i),
      (t.FormatException = E),
      (t.GenericGF = q),
      (t.GenericGFPoly = Z),
      (t.GlobalHistogramBinarizer = N),
      (t.GridSampler = ot),
      (t.GridSamplerInstance = ht),
      (t.HTMLCanvasElementLuminanceSource = M),
      (t.HybridBinarizer = D),
      (t.ITFReader = At),
      (t.IllegalArgumentException = o),
      (t.IllegalStateException = j),
      (t.InvertedLuminanceSource = O),
      (t.LuminanceSource = y),
      (t.MathUtils = tt),
      (t.MultiFormatOneDReader = ee),
      (t.MultiFormatReader = or),
      (t.MultiFormatWriter = class {
        encode(t, e, r, n, i) {
          let s;
          switch (e) {
            case k.QR_CODE:
              s = new Er();
              break;
            default:
              throw new o("No encoder available for format " + e);
          }
          return s.encode(t, e, r, n, i);
        }
      }),
      (t.NotFoundException = R),
      (t.OneDReader = gt),
      (t.PDF417DecodedBitStreamParser = rr),
      (t.PDF417DecoderErrorCorrection = ke),
      (t.PDF417Reader = ir),
      (t.PDF417ResultMetadata = Ze),
      (t.PerspectiveTransform = at),
      (t.PlanarYUVLuminanceSource = mr),
      (t.QRCodeByteMatrix = ur),
      (t.QRCodeDataMask = Ce),
      (t.QRCodeDecodedBitStreamParser = Ie),
      (t.QRCodeDecoderErrorCorrectionLevel = de),
      (t.QRCodeDecoderFormatInformation = ge),
      (t.QRCodeEncoder = Ar),
      (t.QRCodeEncoderQRCode = dr),
      (t.QRCodeMaskUtil = cr),
      (t.QRCodeMatrixUtil = fr),
      (t.QRCodeMode = _e),
      (t.QRCodeReader = Me),
      (t.QRCodeVersion = Ae),
      (t.QRCodeWriter = Er),
      (t.RGBLuminanceSource = _r),
      (t.RSS14Reader = te),
      (t.RSSExpandedReader = Jt),
      (t.ReaderException = sr),
      (t.ReedSolomonDecoder = J),
      (t.ReedSolomonEncoder = hr),
      (t.ReedSolomonException = Q),
      (t.Result = F),
      (t.ResultMetadataType = W),
      (t.ResultPoint = rt),
      (t.StringUtils = S),
      (t.UnsupportedOperationException = _),
      (t.VideoInputDevice = b),
      (t.WhiteRectangleDetector = st),
      (t.WriterException = gr),
      (t.ZXingArrays = g),
      (t.ZXingCharset = Ir),
      (t.ZXingInteger = f),
      (t.ZXingStandardCharsets = Sr),
      (t.ZXingStringBuilder = p),
      (t.ZXingStringEncoding = I),
      (t.ZXingSystem = c),
      Object.defineProperty(t, "__esModule", { value: !0 });
  });
  ("use strict");
  function _typeof(a) {
    "@babel/helpers - typeof";
    return (
      (_typeof =
        "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
          ? function (a) {
              return typeof a;
            }
          : function (a) {
              return a &&
                "function" == typeof Symbol &&
                a.constructor === Symbol &&
                a !== Symbol.prototype
                ? "symbol"
                : typeof a;
            }),
      _typeof(a)
    );
  }
  function _classCallCheck(a, b) {
    if (!(a instanceof b))
      throw new TypeError("Cannot call a class as a function");
  }
  function _defineProperties(a, b) {
    for (var c, d = 0; d < b.length; d++)
      (c = b[d]),
        (c.enumerable = c.enumerable || !1),
        (c.configurable = !0),
        "value" in c && (c.writable = !0),
        Object.defineProperty(a, c.key, c);
  }
  function _createClass(a, b, c) {
    return (
      b && _defineProperties(a.prototype, b), c && _defineProperties(a, c), a
    );
  }
  function _defineProperty(a, b, c) {
    return (
      b in a
        ? Object.defineProperty(a, b, {
            value: c,
            enumerable: !0,
            configurable: !0,
            writable: !0,
          })
        : (a[b] = c),
      a
    );
  }
  var Html5Qrcode = (function () {
    function a(b, c) {
      if ((_classCallCheck(this, a), !ZXing))
        throw "Use html5qrcode.min.js without edit, ZXing not found.";
      var d = new Map(),
        e = [
          ZXing.BarcodeFormat.QR_CODE,
          ZXing.BarcodeFormat.AZTEC,
          ZXing.BarcodeFormat.CODABAR,
          ZXing.BarcodeFormat.CODE_39,
          ZXing.BarcodeFormat.CODE_93,
          ZXing.BarcodeFormat.CODE_128,
          ZXing.BarcodeFormat.DATA_MATRIX,
          ZXing.BarcodeFormat.MAXICODE,
          ZXing.BarcodeFormat.ITF,
          ZXing.BarcodeFormat.EAN_13,
          ZXing.BarcodeFormat.EAN_8,
          ZXing.BarcodeFormat.PDF_417,
          ZXing.BarcodeFormat.RSS_14,
          ZXing.BarcodeFormat.RSS_EXPANDED,
          ZXing.BarcodeFormat.UPC_A,
          ZXing.BarcodeFormat.UPC_E,
          ZXing.BarcodeFormat.UPC_EAN_EXTENSION,
        ];
      d.set(ZXing.DecodeHintType.POSSIBLE_FORMATS, e),
        (this.qrcode = new ZXing.MultiFormatReader(c)),
        this.qrcode.setHints(d),
        (this._elementId = b),
        (this._foreverScanTimeout = null),
        (this._localMediaStream = null),
        (this._shouldScan = !0),
        (this._url =
          window.URL || window.webkitURL || window.mozURL || window.msURL),
        (this._userMedia =
          navigator.getUserMedia ||
          navigator.webkitGetUserMedia ||
          navigator.mozGetUserMedia ||
          navigator.msGetUserMedia),
        (this._isScanning = !1),
        (a.VERBOSE = !0 === c);
    }
    return (
      _createClass(
        a,
        [
          {
            key: "start",
            value: function (b, c, d, e) {
              var f = this;
              if (!b) throw "cameraIdOrConfig is required";
              if (!d || "function" != typeof d)
                throw "qrCodeSuccessCallback is required and should be a function.";
              e || (e = console.log), this._clearElement();
              var g = this,
                h = c ? c : {};
              h.fps = h.fps ? h.fps : a.SCAN_DEFAULT_FPS;
              var i = !1;
              h.videoConstraints &&
                (this._isMediaStreamConstraintsValid(h.videoConstraints)
                  ? (i = !0)
                  : a._logError(
                      "'videoConstraints' is not valid 'MediaStreamConstraints, it will be ignored.'",
                      !0
                    ));
              var j = i,
                k = null != h.qrbox,
                l = document.getElementById(this._elementId),
                m = l.clientWidth ? l.clientWidth : a.DEFAULT_WIDTH;
              if (
                ((l.style.position = "relative"),
                (this._shouldScan = !0),
                (this._element = l),
                k)
              ) {
                var n = h.qrbox;
                if (n < a.MIN_QR_BOX_SIZE)
                  throw (
                    "minimum size of 'config.qrbox' is" +
                    " ".concat(a.MIN_QR_BOX_SIZE, "px.")
                  );
                if (n > m)
                  throw "'config.qrbox' should not be greater than the width of the HTML element.";
              }
              var o = function (a, b) {
                  var c = h.qrbox;
                  c > b &&
                    console.warn(
                      "[Html5Qrcode] config.qrboxsize is greater than video height. Shading will be ignored"
                    );
                  var d = k && c <= b,
                    e = d
                      ? f._getShadedRegionBounds(a, b, c)
                      : { x: 0, y: 0, width: a, height: b },
                    i = f._createCanvasElement(e.width, e.height),
                    j = i.getContext("2d");
                  (j.canvas.width = e.width),
                    (j.canvas.height = e.height),
                    l.append(i),
                    d && f._possiblyInsertShadingElement(l, a, b, c),
                    (g._qrRegion = e),
                    (g._context = j),
                    (g._canvasElement = i);
                },
                p = function () {
                  try {
                    var a = new ZXing.HTMLCanvasElementLuminanceSource(
                        g._canvasElement
                      ),
                      b = new ZXing.BinaryBitmap(new ZXing.HybridBinarizer(a)),
                      c = g.qrcode.decode(b);
                    return d(c.text), f._possiblyUpdateShaders(!0), !0;
                  } catch (a) {
                    return (
                      f._possiblyUpdateShaders(!1),
                      e("QR code parse error, error = ".concat(a)),
                      !1
                    );
                  }
                },
                q = function b() {
                  if (g._shouldScan) {
                    if (g._localMediaStream) {
                      var c = g._videoElement,
                        d = c.videoWidth / c.clientWidth,
                        e = c.videoHeight / c.clientHeight,
                        i = g._qrRegion.width * d,
                        j = g._qrRegion.height * e,
                        k = g._qrRegion.x * d,
                        l = g._qrRegion.y * e;
                      g._context.drawImage(
                        g._videoElement,
                        k,
                        l,
                        i,
                        j,
                        0,
                        0,
                        g._qrRegion.width,
                        g._qrRegion.height
                      ),
                        p() ||
                          !0 === h.disableFlip ||
                          (f._context.translate(f._context.canvas.width, 0),
                          f._context.scale(-1, 1),
                          p());
                    }
                    g._foreverScanTimeout = setTimeout(
                      b,
                      a._getTimeoutFps(h.fps)
                    );
                  }
                },
                r = function (a) {
                  return new Promise(function (b, c) {
                    var d = function () {
                      var d = f._createVideoElement(m);
                      g._element.append(d),
                        (d.onabort = c),
                        (d.onerror = c),
                        (d.onplaying = function () {
                          var a = d.clientWidth,
                            c = d.clientHeight;
                          o(a, c), q(), b();
                        }),
                        (d.srcObject = a),
                        d.play(),
                        (g._videoElement = d);
                    };
                    if (((g._localMediaStream = a), j || !h.aspectRatio)) d();
                    else {
                      var e = { aspectRatio: h.aspectRatio },
                        i = a.getVideoTracks()[0];
                      i.applyConstraints(e)
                        .then(function () {
                          return d();
                        })
                        ["catch"](function (a) {
                          console.log(
                            "[Warning] [Html5Qrcode] Constriants could not be satisfied, ignoring constraints",
                            a
                          ),
                            d();
                        });
                    }
                  });
                };
              return new Promise(function (a, c) {
                if (
                  navigator.mediaDevices &&
                  navigator.mediaDevices.getUserMedia
                ) {
                  var d = j ? h.videoConstraints : g._createVideoConstraints(b);
                  navigator.mediaDevices
                    .getUserMedia({ audio: !1, video: d })
                    .then(function (b) {
                      r(b)
                        .then(function () {
                          (g._isScanning = !0), a();
                        })
                        ["catch"](c);
                    })
                    ["catch"](function (a) {
                      c("Error getting userMedia, error = ".concat(a));
                    });
                } else if (navigator.getUserMedia) {
                  if ("string" != typeof b)
                    throw "The device doesn't support navigator.mediaDevices, only supported cameraIdOrConfig in this case is deviceId parameter (string).";
                  navigator.getUserMedia(
                    { video: { optional: [{ sourceId: b }] } },
                    function (b) {
                      r(b)
                        .then(function () {
                          (g._isScanning = !0), a();
                        })
                        ["catch"](c);
                    },
                    function (a) {
                      c("Error getting userMedia, error = ".concat(a));
                    }
                  );
                } else c("Web camera streaming not supported by the browser.");
              });
            },
          },
          {
            key: "stop",
            value: function () {
              (this._shouldScan = !1), clearTimeout(this._foreverScanTimeout);
              var b = this;
              return new Promise(function (c) {
                var d = b._localMediaStream.getVideoTracks().length,
                  e = 0,
                  f = function () {
                    for (
                      ;
                      b._element.getElementsByClassName(a.SHADED_REGION_CLASSNAME)
                        .length;
  
                    ) {
                      var c = b._element.getElementsByClassName(
                        a.SHADED_REGION_CLASSNAME
                      )[0];
                      b._element.removeChild(c);
                    }
                  },
                  g = function () {
                    (b._localMediaStream = null),
                      b._element.removeChild(b._videoElement),
                      b._element.removeChild(b._canvasElement),
                      f(),
                      (b._isScanning = !1),
                      b._qrRegion && (b._qrRegion = null),
                      b._context && (b._context = null),
                      c(!0);
                  };
                b._localMediaStream.getVideoTracks().forEach(function (a) {
                  b._localMediaStream.removeTrack(a),
                    a.stop(),
                    ++e,
                    e >= d && g();
                });
              });
            },
          },
          {
            key: "scanFile",
            value: function (b, c) {
              var d = this;
              if (!b || !(b instanceof File))
                throw "imageFile argument is mandatory and should be instance of File. Use 'event.target.files[0]'";
              if (((c = void 0 === c || c), d._isScanning))
                throw "Close ongoing scan before scanning a file.";
              var e = function b(c, d, e, f) {
                if (c <= e && d <= f) {
                  var g = (e - c) / 2,
                    h = (f - d) / 2;
                  return { x: g, y: h, width: c, height: d };
                }
                var i = c,
                  j = d;
                return (
                  c > e && ((d = (e / c) * d), (c = e)),
                  d > f && ((c = (f / d) * c), (d = f)),
                  a._log(
                    "Image downsampled from " +
                      "".concat(i, "X").concat(j) +
                      " to ".concat(c, "X").concat(d, ".")
                  ),
                  b(c, d, e, f)
                );
              };
              return new Promise(function (f, g) {
                d._possiblyCloseLastScanImageFile(),
                  d._clearElement(),
                  (d._lastScanImageFile = b);
                var h = new Image();
                (h.onload = function () {
                  var b = Math.max,
                    i = h.width,
                    j = h.height,
                    k = document.getElementById(d._elementId),
                    l = k.clientWidth ? k.clientWidth : a.DEFAULT_WIDTH,
                    m = b(
                      k.clientHeight ? k.clientHeight : j,
                      a.FILE_SCAN_MIN_HEIGHT
                    ),
                    n = e(i, j, l, m);
                  if (c) {
                    var o = d._createCanvasElement(l, m, "qr-canvas-visible");
                    (o.style.display = "inline-block"), k.appendChild(o);
                    var p = o.getContext("2d");
                    (p.canvas.width = l),
                      (p.canvas.height = m),
                      p.drawImage(h, 0, 0, i, j, n.x, n.y, n.width, n.height);
                  }
                  var q = d._createCanvasElement(n.width, n.height);
                  k.appendChild(q);
                  var r = q.getContext("2d");
                  (r.canvas.width = n.width),
                    (r.canvas.height = n.height),
                    r.drawImage(h, 0, 0, i, j, 0, 0, n.width, n.height);
                  try {
                    var s = new ZXing.HTMLCanvasElementLuminanceSource(q),
                      t = new ZXing.BinaryBitmap(new ZXing.HybridBinarizer(s)),
                      u = d.qrcode.decode(t);
                    f(u.text);
                  } catch (a) {
                    g("QR code parse error, error = ".concat(a));
                  }
                }),
                  (h.onerror = g),
                  (h.onabort = g),
                  (h.onstalled = g),
                  (h.onsuspend = g),
                  (h.src = URL.createObjectURL(b));
              });
            },
          },
          {
            key: "clear",
            value: function () {
              this._clearElement();
            },
          },
          {
            key: "getRunningTrackCapabilities",
            value: function () {
              if (null == this._localMediaStream)
                throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state.";
              if (0 == this._localMediaStream.getVideoTracks().length)
                throw "No video tracks found";
              var a = this._localMediaStream.getVideoTracks()[0];
              return a.getCapabilities();
            },
          },
          {
            key: "applyVideoConstraints",
            value: function (a) {
              var b = this;
              if (!a) throw "videoConstaints is required argument.";
              else if (!this._isMediaStreamConstraintsValid(a))
                throw "invalid videoConstaints passed, check logs for more details";
              if (null == this._localMediaStream)
                throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state.";
              if (0 == this._localMediaStream.getVideoTracks().length)
                throw "No video tracks found";
              return new Promise(function (c, d) {
                if ("aspectRatio" in a)
                  return void d(
                    "Chaning 'aspectRatio' in run-time is not yet supported."
                  );
                var e = b._localMediaStream.getVideoTracks()[0];
                e.applyConstraints(a)
                  .then(function (a) {
                    c(a);
                  })
                  ["catch"](function (a) {
                    d(a);
                  });
              });
            },
          },
          {
            key: "_clearElement",
            value: function () {
              if (this._isScanning)
                throw "Cannot clear while scan is ongoing, close it first.";
              var a = document.getElementById(this._elementId);
              a.innerHTML = "";
            },
          },
          {
            key: "_createCanvasElement",
            value: function (a, b, c) {
              var d = document.createElement("canvas");
              return (
                (d.style.width = "".concat(a, "px")),
                (d.style.height = "".concat(b, "px")),
                (d.style.display = "none"),
                (d.id = null == c ? "qr-canvas" : c),
                d
              );
            },
          },
          {
            key: "_createVideoElement",
            value: function (a) {
              var b = document.createElement("video");
              return (
                (b.style.width = "".concat(a, "px")),
                (b.muted = !0),
                (b.playsInline = !0),
                b
              );
            },
          },
          {
            key: "_getShadedRegionBounds",
            value: function (a, b, c) {
              if (c > a || c > b)
                throw "'config.qrbox' should not be greater than the width and height of the HTML element.";
              return { x: (a - c) / 2, y: (b - c) / 2, width: c, height: c };
            },
          },
          {
            key: "_possiblyInsertShadingElement",
            value: function (b, c, d, e) {
              if (!(1 > c - e || 1 > d - e)) {
                var f = document.createElement("div");
                if (
                  ((f.style.position = "absolute"),
                  (f.style.borderLeft = "".concat(
                    (c - e) / 2,
                    "px solid #0000007a"
                  )),
                  (f.style.borderRight = "".concat(
                    (c - e) / 2,
                    "px solid #0000007a"
                  )),
                  (f.style.borderTop = "".concat(
                    (d - e) / 2,
                    "px solid #0000007a"
                  )),
                  (f.style.borderBottom = "".concat(
                    (d - e) / 2,
                    "px solid #0000007a"
                  )),
                  (f.style.boxSizing = "border-box"),
                  (f.style.top = "0px"),
                  (f.style.bottom = "0px"),
                  (f.style.left = "0px"),
                  (f.style.right = "0px"),
                  (f.id = "".concat(a.SHADED_REGION_CLASSNAME)),
                  11 > c - e || 11 > d - e)
                )
                  this.hasBorderShaders = !1;
                else {
                  this._insertShaderBorders(f, 40, 5, -5, 0, !0),
                    this._insertShaderBorders(f, 40, 5, -5, 0, !1),
                    this._insertShaderBorders(f, 40, 5, e + 5, 0, !0),
                    this._insertShaderBorders(f, 40, 5, e + 5, 0, !1),
                    this._insertShaderBorders(f, 5, 45, -5, -5, !0),
                    this._insertShaderBorders(f, 5, 45, e + 5 - 40, -5, !0),
                    this._insertShaderBorders(f, 5, 45, -5, -5, !1),
                    this._insertShaderBorders(f, 5, 45, e + 5 - 40, -5, !1),
                    (this.hasBorderShaders = !0);
                }
                b.append(f);
              }
            },
          },
          {
            key: "_insertShaderBorders",
            value: function (b, c, d, e, f, g) {
              var h = document.createElement("div");
              (h.style.position = "absolute"),
                (h.style.backgroundColor = a.BORDER_SHADER_DEFAULT_COLOR),
                (h.style.width = "".concat(c, "px")),
                (h.style.height = "".concat(d, "px")),
                (h.style.top = "".concat(e, "px")),
                g
                  ? (h.style.left = "".concat(f, "px"))
                  : (h.style.right = "".concat(f, "px")),
                this.borderShaders || (this.borderShaders = []),
                this.borderShaders.push(h),
                b.appendChild(h);
            },
          },
          {
            key: "_possiblyUpdateShaders",
            value: function (b) {
              this.qrMatch === b ||
                (this.hasBorderShaders &&
                  this.borderShaders &&
                  this.borderShaders.length &&
                  this.borderShaders.forEach(function (c) {
                    c.style.backgroundColor = b
                      ? a.BORDER_SHADER_MATCH_COLOR
                      : a.BORDER_SHADER_DEFAULT_COLOR;
                  }),
                (this.qrMatch = b));
            },
          },
          {
            key: "_possiblyCloseLastScanImageFile",
            value: function () {
              this._lastScanImageFile &&
                (URL.revokeObjectURL(this._lastScanImageFile),
                (this._lastScanImageFile = null));
            },
          },
          {
            key: "_createVideoConstraints",
            value: function (a) {
              if ("string" == typeof a) return { deviceId: { exact: a } };
              if ("object" == _typeof(a)) {
                var b = { user: !0, environment: !0 },
                  c = function (a) {
                    if (a in b) return !0;
                    throw (
                      "config has invalid 'facingMode' value = " +
                      "'".concat(a, "'")
                    );
                  },
                  d = Object.keys(a);
                if (1 != d.length)
                  throw (
                    "'cameraIdOrConfig' object should have exactly 1 key," +
                    " if passed as an object, found ".concat(d.length, " keys")
                  );
                var e = Object.keys(a)[0];
                if ("facingMode" != e && "deviceId" != e)
                  throw (
                    "Only '"
                      .concat("facingMode", "' and '")
                      .concat("deviceId", "' ") +
                    " are supported for 'cameraIdOrConfig'"
                  );
                if ("facingMode" == e) {
                  var f = a[e];
                  if ("string" == typeof f) {
                    if (c(f)) return { facingMode: f };
                  } else if ("object" != _typeof(f)) {
                    var g = _typeof(f);
                    throw "Invalid type of 'facingMode' = ".concat(g);
                  } else if (!("exact" in f))
                    throw (
                      "'facingMode' should be string or object with" +
                      " ".concat("exact", " as key.")
                    );
                  else if (c(f.exact)) return { facingMode: { exact: f.exact } };
                } else {
                  var h = a[e];
                  if ("string" == typeof h) return { deviceId: h };
                  if ("object" == _typeof(h)) {
                    if ("exact" in h) return { deviceId: { exact: h.exact } };
                    throw (
                      "'deviceId' should be string or object with" +
                      " ".concat("exact", " as key.")
                    );
                  } else {
                    var i = _typeof(h);
                    throw "Invalid type of 'deviceId' = ".concat(i);
                  }
                }
              } else {
                var j = _typeof(a);
                throw "Invalid type of 'cameraIdOrConfig' = ".concat(j);
              }
            },
          },
          {
            key: "_isMediaStreamConstraintsValid",
            value: function (b) {
              if (!b) return a._logError("Empty videoConstraints", !0), !1;
              if ("object" !== _typeof(b)) {
                var c = _typeof(b);
                return (
                  a._logError(
                    "videoConstraints should be of type object, the " +
                      "object passed is of type ".concat(c, "."),
                    !0
                  ),
                  !1
                );
              }
              for (
                var d,
                  e = [
                    "autoGainControl",
                    "channelCount",
                    "echoCancellation",
                    "latency",
                    "noiseSuppression",
                    "sampleRate",
                    "sampleSize",
                    "volume",
                  ],
                  f = new Set(e),
                  g = Object.keys(b),
                  h = 0;
                h < g.length;
                h++
              )
                if (((d = g[h]), f.has(d)))
                  return (
                    a._logError(
                      "".concat(d, " is not supported videoConstaints."),
                      !0
                    ),
                    !1
                  );
              return !0;
            },
          },
        ],
        [
          {
            key: "getCameras",
            value: function () {
              var a = this;
              return new Promise(function (b, c) {
                if (
                  navigator.mediaDevices &&
                  navigator.mediaDevices.enumerateDevices &&
                  navigator.mediaDevices.getUserMedia
                )
                  a._log("navigator.mediaDevices used"),
                    navigator.mediaDevices
                      .getUserMedia({ audio: !1, video: !0 })
                      .then(function (d) {
                        d.oninactive = function () {
                          return a._log("All streams closed");
                        };
                        var e = function (a) {
                          for (
                            var b, c = a.getVideoTracks(), d = 0;
                            d < c.length;
                            d++
                          )
                            (b = c[d]),
                              (b.enabled = !1),
                              b.stop(),
                              a.removeTrack(b);
                        };
                        navigator.mediaDevices
                          .enumerateDevices()
                          .then(function (c) {
                            for (var f, g = [], h = 0; h < c.length; h++)
                              (f = c[h]),
                                "videoinput" == f.kind &&
                                  g.push({ id: f.deviceId, label: f.label });
                            a._log("".concat(g.length, " results found")),
                              e(d),
                              b(g);
                          })
                          ["catch"](function (a) {
                            c("".concat(a.name, " : ").concat(a.message));
                          });
                      })
                      ["catch"](function (a) {
                        c("".concat(a.name, " : ").concat(a.message));
                      });
                else if (MediaStreamTrack && MediaStreamTrack.getSources) {
                  a._log("MediaStreamTrack.getSources used");
                  var d = function (c) {
                    for (var d, e = [], f = 0; f !== c.length; ++f)
                      (d = c[f]),
                        "video" === d.kind &&
                          e.push({ id: d.id, label: d.label });
                    a._log("".concat(e.length, " results found")), b(e);
                  };
                  MediaStreamTrack.getSources(d);
                } else {
                  var e = function () {
                      if ("https:" === location.protocol) return !0;
                      var a = location.host.split(":")[0];
                      return "127.0.0.1" === a || "localhost" === a;
                    },
                    f = "Unable to query supported devices, unknown error.";
                  e() ||
                    (f =
                      "Camera access is only supported in secure context like https or localhost."),
                    a._log(f),
                    c(f);
                }
              });
            },
          },
          {
            key: "_getTimeoutFps",
            value: function (a) {
              return 1e3 / a;
            },
          },
          {
            key: "_log",
            value: function (b) {
              a.VERBOSE && console.log(b);
            },
          },
          {
            key: "_logError",
            value: function (b, c) {
              (a.VERBOSE || !0 === c) && console.error(b);
            },
          },
        ]
      ),
      a
    );
  })();
  _defineProperty(Html5Qrcode, "DEFAULT_WIDTH", 300),
    _defineProperty(Html5Qrcode, "DEFAULT_WIDTH_OFFSET", 2),
    _defineProperty(Html5Qrcode, "FILE_SCAN_MIN_HEIGHT", 300),
    _defineProperty(Html5Qrcode, "SCAN_DEFAULT_FPS", 2),
    _defineProperty(Html5Qrcode, "MIN_QR_BOX_SIZE", 50),
    _defineProperty(Html5Qrcode, "SHADED_LEFT", 1),
    _defineProperty(Html5Qrcode, "SHADED_RIGHT", 2),
    _defineProperty(Html5Qrcode, "SHADED_TOP", 3),
    _defineProperty(Html5Qrcode, "SHADED_BOTTOM", 4),
    _defineProperty(Html5Qrcode, "SHADED_REGION_CLASSNAME", "qr-shaded-region"),
    _defineProperty(Html5Qrcode, "VERBOSE", !1),
    _defineProperty(Html5Qrcode, "BORDER_SHADER_DEFAULT_COLOR", "#ffffff"),
    _defineProperty(Html5Qrcode, "BORDER_SHADER_MATCH_COLOR", "rgb(90, 193, 56)");
  
  /** Html5QrcodeScanner **/
  ("use strict");
  function _classCallCheck(a, b) {
    if (!(a instanceof b))
      throw new TypeError("Cannot call a class as a function");
  }
  function _defineProperties(a, b) {
    for (var c, d = 0; d < b.length; d++)
      (c = b[d]),
        (c.enumerable = c.enumerable || !1),
        (c.configurable = !0),
        "value" in c && (c.writable = !0),
        Object.defineProperty(a, c.key, c);
  }
  function _createClass(a, b, c) {
    return (
      b && _defineProperties(a.prototype, b), c && _defineProperties(a, c), a
    );
  }
  function _defineProperty(a, b, c) {
    return (
      b in a
        ? Object.defineProperty(a, b, {
            value: c,
            enumerable: !0,
            configurable: !0,
            writable: !0,
          })
        : (a[b] = c),
      a
    );
  }
  var Html5QrcodeScanner = (function () {
    function a(b, c, d) {
      if (
        (_classCallCheck(this, a),
        (this.elementId = b),
        (this.config = c),
        (this.verbose = !0 === d),
        !document.getElementById(b))
      )
        throw "HTML Element with id=".concat(b, " not found");
      (this.currentScanType = a.SCAN_TYPE_CAMERA),
        (this.sectionSwapAllowed = !0),
        (this.section = void 0),
        (this.html5Qrcode = void 0),
        (this.qrCodeSuccessCallback = void 0),
        (this.qrCodeErrorCallback = void 0);
    }
    return (
      _createClass(a, [
        {
          key: "render",
          value: function (b, c) {
            var d = this;
            (this.lastMatchFound = void 0),
              (this.qrCodeSuccessCallback = function (c) {
                if ((d.__setStatus("MATCH", a.STATUS_SUCCESS), b)) b(c);
                else {
                  if (d.lastMatchFound == c) return;
                  (d.lastMatchFound = c),
                    d.__setHeaderMessage(
                      "Last Match: ".concat(c),
                      a.STATUS_SUCCESS
                    );
                }
              }),
              (this.qrCodeErrorCallback = function (a) {
                d.__setStatus("Scanning"), c && c(a);
              });
            var e = document.getElementById(this.elementId);
            (e.innerHTML = ""),
              this.__createBasicLayout(e),
              (this.html5Qrcode = new Html5Qrcode(
                this.__getScanRegionId(),
                this.verbose
              ));
          },
        },
        {
          key: "clear",
          value: function () {
            var a = this,
              b = this,
              c = function () {
                var b = document.getElementById(a.elementId);
                b && ((b.innerHTML = ""), a.__resetBasicLayout(b));
              };
            if (this.html5Qrcode)
              return new Promise(function (a, d) {
                b.html5Qrcode._isScanning &&
                  b.html5Qrcode
                    .stop()
                    .then(function () {
                      b.html5Qrcode.clear(), c(), a();
                    })
                    ["catch"](function (a) {
                      b.verbose &&
                        console.error("Unable to stop qrcode scanner", a),
                        d(a);
                    });
              });
          },
        },
        {
          key: "__createBasicLayout",
          value: function (a) {
            (a.style.position = "relative"),
              (a.style.padding = "0px"),
              (a.style.border = "1px solid silver"),
              this.__createHeader(a);
            var b = document.createElement("div"),
              c = this.__getScanRegionId();
            (b.id = c),
              (b.style.width = "100%"),
              (b.style.minHeight = "100px"),
              (b.style.textAlign = "center"),
              a.appendChild(b),
              this.__insertCameraScanImageToScanRegion();
            var d = document.createElement("div"),
              e = this.__getDashboardId();
            (d.id = e),
              (d.style.width = "100%"),
              a.appendChild(d),
              this.__setupInitialDashboard(d);
          },
        },
        {
          key: "__resetBasicLayout",
          value: function (a) {
            a.style.border = "none";
          },
        },
        {
          key: "__setupInitialDashboard",
          value: function (a) {
            this.__createSection(a),
              this.__createSectionControlPanel(),
              this.__createSectionSwap();
          },
        },
        {
          key: "__createHeader",
          value: function (a) {
            var b = document.createElement("div");
            (b.style.textAlign = "left"),
              (b.style.margin = "0px"),
              (b.style.padding = "5px"),
              (b.style.fontSize = "20px"),
              (b.style.borderBottom = "1px solid rgba(192, 192, 192, 0.18)"),
              a.appendChild(b);
            var c = document.createElement("span"),
              d = document.createElement("a");
            
              c.appendChild(d),
              b.appendChild(c);
            var e = document.createElement("span");
            (e.id = this.__getStatusSpanId()),
              (e.style.float = "right"),
              (e.style.padding = "5px 7px"),
              (e.style.fontSize = "14px"),
              (e.style.background = "#dedede6b"),
              (e.style.border = "1px solid #00000000"),
              (e.style.color = "rgb(17, 17, 17)"),
              b.appendChild(e),
              this.__setStatus("IDLE");
            var f = document.createElement("div");
            (f.id = this.__getHeaderMessageContainerId()),
              (f.style.display = "none"),
              (f.style.fontSize = "14px"),
              (f.style.padding = "2px 10px"),
              (f.style.marginTop = "4px"),
              (f.style.borderTop = "1px solid #f6f6f6"),
              b.appendChild(f);
          },
        },
        {
          key: "__createSection",
          value: function (a) {
            var b = document.createElement("div");
            (b.id = this.__getDashboardSectionId()),
              (b.style.width = "100%"),
              (b.style.padding = "10px"),
              (b.style.textAlign = "left"),
              a.appendChild(b);
          },
        },
        {
          key: "__createSectionControlPanel",
          value: function () {
            var b = this,
              c = document.getElementById(this.__getDashboardSectionId()),
              d = document.createElement("div");
            c.appendChild(d);
            var e = document.createElement("div");
            (e.id = this.__getDashboardSectionCameraScanRegionId()),
              (e.style.display =
                this.currentScanType == a.SCAN_TYPE_CAMERA ? "block" : "none"),
              d.appendChild(e);
            var f = document.createElement("div");
            f.style.textAlign = "center";
            var g = document.createElement("button");
            (g.innerHTML = "Request Camera Permissions"),
              g.addEventListener("click", function () {
                (g.disabled = !0),
                  b.__setStatus("PERMISSION"),
                  b.__setHeaderMessage("Requesting camera permissions..."),
                  Html5Qrcode.getCameras()
                    .then(function (c) {
                      b.__setStatus("IDLE"),
                        b.__resetHeaderMessage(),
                        c && 0 != c.length
                          ? (e.removeChild(f), b.__renderCameraSelection(c))
                          : b.__setStatus("No Cameras", a.STATUS_WARNING);
                    })
                    ["catch"](function (c) {
                      (g.disabled = !1),
                        b.__setStatus("IDLE"),
                        b.__setHeaderMessage(c, a.STATUS_WARNING);
                    });
              }),
              f.appendChild(g),
              e.appendChild(f);
            var h = document.createElement("div");
            (h.id = this.__getDashboardSectionFileScanRegionId()),
              (h.style.textAlign = "center"),
              (h.style.display =
                this.currentScanType == a.SCAN_TYPE_CAMERA ? "none" : "block"),
              d.appendChild(h);
            var i = document.createElement("input");
            (i.id = this.__getFileScanInputId()),
              (i.accept = "image/*"),
              (i.type = "file"),
              (i.style.width = "200px"),
              (i.disabled = this.currentScanType == a.SCAN_TYPE_CAMERA);
            var j = document.createElement("span");
            (j.innerHTML = "&nbsp; Select Image"),
              h.appendChild(i),
              h.appendChild(j),
              i.addEventListener("change", function (c) {
                if (
                  b.currentScanType === a.SCAN_TYPE_FILE &&
                  0 != c.target.files.length
                ) {
                  var d = c.target.files[0];
                  b.html5Qrcode
                    .scanFile(d, !0)
                    .then(function (a) {
                      b.__resetHeaderMessage(), b.qrCodeSuccessCallback(a);
                    })
                    ["catch"](function (c) {
                      b.__setStatus("ERROR", a.STATUS_WARNING),
                        b.__setHeaderMessage(c, a.STATUS_WARNING),
                        b.qrCodeErrorCallback(c);
                    });
                }
              });
          },
        },
        {
          key: "__renderCameraSelection",
          value: function (b) {
            var c = this,
              d = document.getElementById(
                this.__getDashboardSectionCameraScanRegionId()
              );
            d.style.textAlign = "center";
            var e = document.createElement("span");
            (e.innerHTML = "Select Camera (".concat(b.length, ") &nbsp;")),
              (e.style.marginRight = "10px");
            var f = document.createElement("select");
            f.id = this.__getCameraSelectionId();
            for (var g = 0; g < b.length; g++) {
              var h = b[g],
                j = h.id,
                k = null == h.label ? j : h.label,
                l = document.createElement("option");
              (l.value = j), (l.innerHTML = k), f.appendChild(l);
            }
            e.appendChild(f), d.appendChild(e);
            var m = document.createElement("span"),
              n = document.createElement("button");
            (n.innerHTML = "Start Scanning"), m.appendChild(n);
            var o = document.createElement("button");
            (o.innerHTML = "Stop Scanning"),
              (o.style.display = "none"),
              (o.disabled = !0),
              m.appendChild(o),
              d.appendChild(m),
              n.addEventListener("click", function () {
                (f.disabled = !0),
                  (n.disabled = !0),
                  c._showHideScanTypeSwapLink(!1);
                var b = c.config ? c.config : { fps: 10, qrbox: 250 },
                  d = f.value;
                c.html5Qrcode
                  .start(d, b, c.qrCodeSuccessCallback, c.qrCodeErrorCallback)
                  .then(function () {
                    (o.disabled = !1),
                      (o.style.display = "inline-block"),
                      (n.style.display = "none"),
                      c.__setStatus("Scanning");
                  })
                  ["catch"](function (b) {
                    c._showHideScanTypeSwapLink(!0),
                      (f.disabled = !1),
                      (n.disabled = !1),
                      c.__setStatus("IDLE"),
                      c.__setHeaderMessage(b, a.STATUS_WARNING);
                  });
              }),
              o.addEventListener("click", function () {
                (o.disabled = !0),
                  c.html5Qrcode
                    .stop()
                    .then(function () {
                      c._showHideScanTypeSwapLink(!0),
                        (f.disabled = !1),
                        (n.disabled = !1),
                        (o.style.display = "none"),
                        (n.style.display = "inline-block"),
                        c.__setStatus("IDLE"),
                        c.__insertCameraScanImageToScanRegion();
                    })
                    ["catch"](function (b) {
                      (o.disabled = !1),
                        c.__setStatus("ERROR", a.STATUS_WARNING),
                        c.__setHeaderMessage(b, a.STATUS_WARNING);
                    });
              });
          },
        },
        {
          key: "__createSectionSwap",
          value: function () {
            var b = this,
              c = "Scan an Image File",
              d = "Scan using camera directly",
              e = document.getElementById(this.__getDashboardSectionId()),
              f = document.createElement("div");
            f.style.textAlign = "center";
            var g = document.createElement("a");
            (g.style.textDecoration = "underline"),
              (g.id = this.__getDashboardSectionSwapLinkId()),
              (g.innerHTML = this.currentScanType == a.SCAN_TYPE_CAMERA ? c : d),
              (g.href = "#scan-using-file"),
              g.addEventListener("click", function () {
                return b.sectionSwapAllowed
                  ? void (b.__setStatus("IDLE"),
                    b.__resetHeaderMessage(),
                    (b.__getFileScanInput().value = ""),
                    (b.sectionSwapAllowed = !1),
                    b.currentScanType == a.SCAN_TYPE_CAMERA
                      ? (b.__clearScanRegion(),
                        (b.__getFileScanInput().disabled = !1),
                        (b.__getCameraScanRegion().style.display = "none"),
                        (b.__getFileScanRegion().style.display = "block"),
                        (g.innerHTML = d),
                        (b.currentScanType = a.SCAN_TYPE_FILE),
                        b.__insertFileScanImageToScanRegion())
                      : (b.__clearScanRegion(),
                        (b.__getFileScanInput().disabled = !0),
                        (b.__getCameraScanRegion().style.display = "block"),
                        (b.__getFileScanRegion().style.display = "none"),
                        (g.innerHTML = c),
                        (b.currentScanType = a.SCAN_TYPE_CAMERA),
                        b.__insertCameraScanImageToScanRegion()),
                    (b.sectionSwapAllowed = !0))
                  : void (
                      b.verbose &&
                      console.error("Section swap called when not allowed")
                    );
              }),
              f.appendChild(g),
              e.appendChild(f);
          },
        },
        {
          key: "__setStatus",
          value: function (b, c) {
            c || (c = a.STATUS_DEFAULT);
            var d = document.getElementById(this.__getStatusSpanId());
            switch (((d.innerHTML = b), c)) {
              case a.STATUS_SUCCESS:
                (d.style.background = "#6aaf5042"), (d.style.color = "#477735");
                break;
              case a.STATUS_WARNING:
                (d.style.background = "#cb243124"), (d.style.color = "#cb2431");
                break;
              case a.STATUS_DEFAULT:
              default:
                (d.style.background = "#eef"),
                  (d.style.color = "rgb(17, 17, 17)");
            }
          },
        },
        {
          key: "__resetHeaderMessage",
          value: function () {
            var a = document.getElementById(this.__getHeaderMessageContainerId());
            a.style.display = "none";
          },
        },
        {
          key: "__setHeaderMessage",
          value: function (b, c) {
            c || (c = a.STATUS_DEFAULT);
            var d = document.getElementById(this.__getHeaderMessageContainerId());
            switch (((d.innerHTML = b), (d.style.display = "block"), c)) {
              case a.STATUS_SUCCESS:
                (d.style.background = "#6aaf5042"), (d.style.color = "#477735");
                break;
              case a.STATUS_WARNING:
                (d.style.background = "#cb243124"), (d.style.color = "#cb2431");
                break;
              case a.STATUS_DEFAULT:
              default:
                (d.style.background = "#00000000"),
                  (d.style.color = "rgb(17, 17, 17)");
            }
          },
        },
        {
          key: "_showHideScanTypeSwapLink",
          value: function (a) {
            !0 !== a && (a = !1),
              (this.sectionSwapAllowed = a),
              (this.__getDashboardSectionSwapLink().style.display = a
                ? "inline-block"
                : "none");
          },
        },
        {
          key: "__insertCameraScanImageToScanRegion",
          value: function () {
            var b = this,
              c = document.getElementById(this.__getScanRegionId());
            return this.cameraScanImage
              ? ((c.innerHTML = "<br>"), void c.appendChild(this.cameraScanImage))
              : void ((this.cameraScanImage = new Image()),
                (this.cameraScanImage.onload = function () {
                  (c.innerHTML = "<br>"), c.appendChild(b.cameraScanImage);
                }),
                (this.cameraScanImage.width = 64),
                (this.cameraScanImage.style.opacity = 0.3),
                (this.cameraScanImage.src = a.ASSET_CAMERA_SCAN));
          },
        },
        {
          key: "__insertFileScanImageToScanRegion",
          value: function () {
            var b = this,
              c = document.getElementById(this.__getScanRegionId());
            return this.fileScanImage
              ? ((c.innerHTML = "<br>"), void c.appendChild(this.fileScanImage))
              : void ((this.fileScanImage = new Image()),
                (this.fileScanImage.onload = function () {
                  (c.innerHTML = "<br>"), c.appendChild(b.fileScanImage);
                }),
                (this.fileScanImage.width = 64),
                (this.fileScanImage.style.opacity = 0.3),
                (this.fileScanImage.src = a.ASSET_FILE_SCAN));
          },
        },
        {
          key: "__clearScanRegion",
          value: function () {
            var a = document.getElementById(this.__getScanRegionId());
            a.innerHTML = "";
          },
        },
        {
          key: "__getDashboardSectionId",
          value: function () {
            return "".concat(this.elementId, "__dashboard_section");
          },
        },
        {
          key: "__getDashboardSectionCameraScanRegionId",
          value: function () {
            return "".concat(this.elementId, "__dashboard_section_csr");
          },
        },
        {
          key: "__getDashboardSectionFileScanRegionId",
          value: function () {
            return "".concat(this.elementId, "__dashboard_section_fsr");
          },
        },
        {
          key: "__getDashboardSectionSwapLinkId",
          value: function () {
            return "".concat(this.elementId, "__dashboard_section_swaplink");
          },
        },
        {
          key: "__getScanRegionId",
          value: function () {
            return "".concat(this.elementId, "__scan_region");
          },
        },
        {
          key: "__getDashboardId",
          value: function () {
            return "".concat(this.elementId, "__dashboard");
          },
        },
        {
          key: "__getFileScanInputId",
          value: function () {
            return "".concat(this.elementId, "__filescan_input");
          },
        },
        {
          key: "__getStatusSpanId",
          value: function () {
            return "".concat(this.elementId, "__status_span");
          },
        },
        {
          key: "__getHeaderMessageContainerId",
          value: function () {
            return "".concat(this.elementId, "__header_message");
          },
        },
        {
          key: "__getCameraSelectionId",
          value: function () {
            return "".concat(this.elementId, "__camera_selection");
          },
        },
        {
          key: "__getCameraScanRegion",
          value: function () {
            return document.getElementById(
              this.__getDashboardSectionCameraScanRegionId()
            );
          },
        },
        {
          key: "__getFileScanRegion",
          value: function () {
            return document.getElementById(
              this.__getDashboardSectionFileScanRegionId()
            );
          },
        },
        {
          key: "__getFileScanInput",
          value: function () {
            return document.getElementById(this.__getFileScanInputId());
          },
        },
        {
          key: "__getDashboardSectionSwapLink",
          value: function () {
            return document.getElementById(
              this.__getDashboardSectionSwapLinkId()
            );
          },
        },
      ]),
      a
    );
  })();
  _defineProperty(Html5QrcodeScanner, "SCAN_TYPE_CAMERA", "SCAN_TYPE_CAMERA"),
    _defineProperty(Html5QrcodeScanner, "SCAN_TYPE_FILE", "SCAN_TYPE_FILE"),
    _defineProperty(Html5QrcodeScanner, "STATUS_SUCCESS", "STATUS_SUCCESS"),
    _defineProperty(Html5QrcodeScanner, "STATUS_WARNING", "STATUS_WARNING"),
    _defineProperty(Html5QrcodeScanner, "STATUS_DEFAULT", "STATUS_DEFAULT"),
    _defineProperty(
      Html5QrcodeScanner,
      "ASSET_FILE_SCAN",
      "https://raw.githubusercontent.com/mebjas/html5-qrcode/master/assets/file-scan.gif"
    ),
    _defineProperty(
      Html5QrcodeScanner,
      "ASSET_CAMERA_SCAN",
      "https://raw.githubusercontent.com/mebjas/html5-qrcode/master/assets/camera-scan.gif"
    );
  