dielines 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dielines.js +3743 -2634
- package/dist/dielines.js.map +1 -1
- package/dist/dielines.umd.cjs +15 -15
- package/dist/dielines.umd.cjs.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dielines.umd.cjs","sources":["../../pantograph/dist/Diagram-d848c815.js","../../pantograph/dist/draw-a830827a.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["function yt(i, t, n, e) {\n return i <= e && t >= n;\n}\nclass it {\n constructor(t = 1 / 0, n = 1 / 0, e = -1 / 0, s = -1 / 0) {\n this.xMin = t, this.yMin = n, this.xMax = e, this.yMax = s;\n }\n get width() {\n return this.xMax - this.xMin;\n }\n get height() {\n return this.yMax - this.yMin;\n }\n contains(t) {\n const [n, e] = t;\n return yt(this.xMin, this.xMax, n, n) && yt(this.yMin, this.yMax, e, e);\n }\n overlaps(t) {\n return yt(this.xMin, this.xMax, t.xMin, t.xMax) && yt(this.yMin, this.yMax, t.yMin, t.yMax);\n }\n addPoint(t) {\n const [n, e] = t;\n return new it(\n Math.min(this.xMin, n),\n Math.min(this.yMin, e),\n Math.max(this.xMax, n),\n Math.max(this.yMax, e)\n );\n }\n merge(t) {\n return new it(\n Math.min(this.xMin, t.xMin),\n Math.min(this.yMin, t.yMin),\n Math.max(this.xMax, t.xMax),\n Math.max(this.yMax, t.yMax)\n );\n }\n}\nfunction De(i) {\n return i.reduce((t, n) => t.addPoint(n), new it());\n}\nconst Jt = (i, t = 1e-9) => {\n let n = i;\n return Math.abs(i) < t && (n = 0), n.toFixed(-Math.log10(t));\n};\nfunction ct(i, t = 1e-9) {\n return Array.from(\n new Map(\n i.map(([n, e]) => [\n `[${Jt(n, t)},${Jt(e, t)}]`,\n [n, e]\n ])\n ).values()\n );\n}\nconst Lt = Math.PI / 180, Ue = 180 / Math.PI, T = (i) => `[${i[0]}, ${i[1]}]`, E = ([i, t], [n, e], s = 1e-9) => Math.abs(i - n) <= s && Math.abs(t - e) <= s, O = ([i, t], [n, e]) => [i + n, t + e], A = ([i, t], [n, e]) => [i - n, t - e], jt = ([i, t]) => i * i + t * t, D = ([i, t], n) => [i * n, t * n], mt = ([i, t], [n, e] = [0, 0]) => (i - n) ** 2 + (t - e) ** 2, q = (i, t = [0, 0]) => Math.sqrt(mt(i, t));\nfunction at([i, t], [n, e]) {\n return i * e - t * n;\n}\nfunction $t([i, t], [n, e]) {\n return i * n + t * e;\n}\nfunction W([i, t]) {\n const n = q([i, t]);\n return [i / n, t / n];\n}\nfunction ft(i, t) {\n const n = Math.cos(t) * i, e = Math.sin(t) * i;\n return [n, e];\n}\nfunction Ye([i, t]) {\n return Math.atan2(t, i);\n}\nfunction Xe(i) {\n const t = q(i), n = Ye(i);\n return [t, n];\n}\nfunction Vt(i, t, n = 1e-9) {\n const e = at(i, t), s = jt(i), r = jt(t);\n return e * e < s * r * n * n;\n}\nfunction J(i) {\n return [-i[1], i[0]];\n}\nfunction bt(i) {\n return [i[1], -i[0]];\n}\nfunction Ge(i, t, n) {\n return E(n, i) || Vt(A(n, i), t);\n}\nconst ot = (i, t) => {\n const [n, e, s, r, o, h, u, l, c] = i, [a, g, w, m, d, P, f, p, y] = t;\n return [\n n * a + e * m + s * f,\n n * g + e * d + s * p,\n n * w + e * P + s * y,\n r * a + o * m + h * f,\n r * g + o * d + h * p,\n r * w + o * P + h * y,\n u * a + l * m + c * f,\n u * g + l * d + c * p,\n u * w + l * P + c * y\n ];\n}, We = (i) => {\n const [t, n, e, s, r, o, h, u, l] = i, c = t * (r * l - o * u) - n * (s * l - o * h) + e * (s * u - r * h);\n return [\n (r * l - o * u) / c,\n (e * u - n * l) / c,\n (n * o - e * r) / c,\n (o * h - s * l) / c,\n (t * l - e * h) / c,\n (e * s - t * o) / c,\n (s * u - r * h) / c,\n (n * h - t * u) / c,\n (t * r - n * s) / c\n ];\n}, Je = (i) => {\n const [t, n, e, s, r, o, h, u, l] = i;\n return [t, s, h, n, r, u, e, o, l];\n};\nclass V {\n constructor(t) {\n this._matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1], t && (this._matrix = [...t]);\n }\n clone() {\n return new V(this._matrix);\n }\n transpose() {\n return this._matrix = Je(this._matrix), this;\n }\n inverse() {\n return this._matrix = We(this._matrix), this;\n }\n translate(t, n) {\n return this._matrix = ot(this._matrix, [1, 0, t, 0, 1, n, 0, 0, 1]), this;\n }\n rotate(t, n) {\n const e = Math.cos(t), s = Math.sin(t), r = [e, -s, 0, s, e, 0, 0, 0, 1];\n return n && this.translate(n[0], n[1]), this._matrix = ot(this._matrix, r), n && this.translate(-n[0], -n[1]), this;\n }\n mirrorX() {\n return this._matrix = ot(this._matrix, [1, 0, 0, 0, -1, 0, 0, 0, 1]), this;\n }\n mirrorY() {\n return this._matrix = ot(this._matrix, [-1, 0, 0, 0, 1, 0, 0, 0, 1]), this;\n }\n mirrorLine(t, n) {\n const [e, s] = t, r = Math.atan2(s, e);\n return n && this.translate(n[0], n[1]), this.rotate(r), this.mirrorX(), this.rotate(-r), n && this.translate(-n[0], -n[1]), this;\n }\n mirrorCenter(t) {\n return t && this.translate(t[0], t[1]), this._matrix = ot(this._matrix, [-1, 0, 0, 0, -1, 0, 0, 0, 1]), t && this.translate(-t[0], -t[1]), this;\n }\n scale(t, n) {\n return n && this.translate(n[0], n[1]), this._matrix = ot(this._matrix, [t, 0, 0, 0, t, 0, 0, 0, 1]), n && this.translate(-n[0], -n[1]), this;\n }\n transform(t) {\n const [n, e] = t, [s, r, o, h, u, l] = this._matrix;\n return [s * n + r * e + o, h * n + u * e + l];\n }\n transformAngle(t) {\n const [n, e] = this.transform([Math.cos(t), Math.sin(t)]), [s, r] = this.transform([0, 0]);\n return Math.atan2(e - r, n - s);\n }\n keepsOrientation() {\n const [t, , , , n] = this._matrix;\n return t * n > 0;\n }\n scaleFactor() {\n const [t, , , n] = this._matrix;\n return Math.sqrt(t * t + n * n);\n }\n}\nclass _t {\n translateX(t) {\n const n = new V().translate(t, 0);\n return this.transform(n);\n }\n translateY(t) {\n const n = new V().translate(0, t);\n return this.transform(n);\n }\n translate(t, n) {\n const e = new V().translate(t, n);\n return this.transform(e);\n }\n translateTo([t, n]) {\n const e = new V().translate(t, n);\n return this.transform(e);\n }\n rotate(t, n) {\n const e = new V().rotate(\n t * Lt,\n n\n );\n return this.transform(e);\n }\n scale(t, n) {\n const e = new V().scale(t, n);\n return this.transform(e);\n }\n mirrorCenter(t) {\n const n = new V().mirrorCenter(t);\n return this.transform(n);\n }\n mirror(t = \"x\", n) {\n const e = new V();\n return t === \"x\" ? e.mirrorX() : t === \"y\" ? e.mirrorY() : e.mirrorLine(t, n), this.transform(e);\n }\n}\nclass zt extends _t {\n constructor(t, n) {\n super(), this.firstPoint = t, this.lastPoint = n, this.precision = 1e-9, this.firstPoint = t, this.lastPoint = n;\n }\n get repr() {\n return `${this.segmentType} ${T(this.firstPoint)} - ${T(\n this.lastPoint\n )}`;\n }\n get info() {\n return this.repr;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nclass R extends zt {\n constructor() {\n super(...arguments), this.segmentType = \"LINE\", this._V = null, this._slope = null, this._yIntercept = null, this._boundingBox = null;\n }\n isValidParameter(t) {\n const n = this.length * this.precision;\n return t >= -n && 1 - t >= -n;\n }\n paramPoint(t) {\n return O(this.firstPoint, D(this.V, t));\n }\n get length() {\n return q(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return mt(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = A(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [t, n] = this.V;\n this._slope = n / t;\n }\n return this._slope;\n }\n get yIntercept() {\n return this._yIntercept === null && (this._yIntercept = this.firstPoint[1] - this.slope * this.firstPoint[0]), this._yIntercept;\n }\n get midPoint() {\n return O(this.firstPoint, D(this.V, 0.5));\n }\n isSame(t) {\n return t instanceof R ? E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) || E(this.lastPoint, t.firstPoint) && E(this.firstPoint, t.lastPoint) : !1;\n }\n clone() {\n return new R(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new R(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new it(\n Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n )), this._boundingBox;\n }\n distanceFrom(t) {\n const n = A(t, this.firstPoint), e = $t(n, this.V) / this.squareLength;\n if (e < 0)\n return q(t, this.firstPoint);\n if (e > 1)\n return q(t, this.lastPoint);\n const s = this.paramPoint(e);\n return q(t, s);\n }\n isOnSegment(t) {\n if (E(t, this.firstPoint, this.precision))\n return !0;\n const n = A(t, this.firstPoint);\n if (!Vt(this.V, n))\n return !1;\n const e = $t(n, this.V) / this.squareLength;\n return this.isValidParameter(e);\n }\n gradientAt(t) {\n return this.V;\n }\n tangentAt(t) {\n if (!this.isOnSegment(t))\n throw new Error(\"Point is not on segment\");\n return W(this.V);\n }\n get normalVector() {\n return J(W(this.V));\n }\n get tangentAtFirstPoint() {\n return W(this.V);\n }\n get tangentAtLastPoint() {\n return W(this.V);\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t], n.forEach((u) => {\n if (!this.isOnSegment(u))\n throw new Error(\n `Point ${T(u)} is not on segment ${this.repr}`\n );\n });\n const e = [this.firstPoint, ...n, this.lastPoint], s = ct(e), r = this.lastPoint[0] - this.firstPoint[0];\n let o = Math.sign(r), h = 0;\n return Math.abs(r) < this.precision && (o = Math.sign(this.lastPoint[1] - this.firstPoint[1]), h = 1), s.sort(\n (u, l) => o * (u[h] - l[h])\n ), s.flatMap((u, l) => l === s.length - 1 ? [] : new R(u, s[l + 1]));\n }\n transform(t) {\n return new R(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint)\n );\n }\n}\nfunction Ke(i) {\n return Array.from(Array(i).keys());\n}\nfunction nt(i) {\n const t = Math.min(...i.map((n) => n.length));\n return Ke(t).map((n) => i.map((e) => e[n]));\n}\nfunction st(i, t = 1e-9) {\n return i < 0 ? i + 2 * Math.PI : i >= 2 * Math.PI ? i % (2 * Math.PI) : i > 2 * Math.PI - t ? 0 : i;\n}\nfunction vt(i, t, n, e = 1e-9) {\n let s = t - i;\n return n && (s = -s), s < 0 && (s += 2 * Math.PI), s > 2 * Math.PI - e ? 0 : s;\n}\nconst Ft = (i, t, n) => {\n const e = at(i.V, t.V), s = jt(i.V), r = jt(t.V), o = n ? n * n : i.precision * t.precision;\n if (e * e < s * r * o)\n return \"parallel\";\n const h = A(t.firstPoint, i.firstPoint), u = at(h, t.V) / e, l = at(h, i.V) / e;\n return {\n intersectionParam1: u,\n intersectionParam2: l\n };\n};\nfunction ge(i, t, n = !1, e) {\n const s = Ft(i, t, e);\n if (s === \"parallel\") {\n if (!n)\n return null;\n if (i.isSame(t))\n return i;\n const h = ct(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((u) => u !== null)\n ).sort((u, l) => u[0] - l[0]);\n if (h.length === 0)\n return null;\n if (h.length === 1)\n return null;\n if (h.length === 2)\n return new R(h[0], h[1]);\n throw console.error(h), new Error(\n \"Unexpected number of points while intersecting parallel lines\"\n );\n }\n const { intersectionParam1: r, intersectionParam2: o } = s;\n return !i.isValidParameter(r) || !t.isValidParameter(o) ? null : i.paramPoint(r);\n}\nconst Pt = (i, t) => {\n const n = A(i, t);\n return Xe(n);\n};\nclass I extends zt {\n constructor(t, n, e, s = !1, { ignoreChecks: r = !1 } = {}) {\n if (super(t, n), this.segmentType = \"ARC\", this._coefficients = null, this._angularLength = null, this._radius = null, this._firstAngle = null, this._lastAngle = null, this._boundingBox = null, this.center = e, this.clockwise = s, !r) {\n if (E(t, n))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - q(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${T(\n t\n )} and ${T(n)}} (center ${T(e)})`\n );\n }\n }\n get info() {\n return `ARC(${T(this.firstPoint)}, ${T(\n this.lastPoint\n )}, ${T(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, n] = this.center, e = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / e,\n xy: 0,\n y2: 1 / e,\n x: -(2 * t) / e,\n y: -(2 * n) / e,\n c: (t * t + n * n - e) / e\n };\n }\n return this._coefficients;\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n angleToParam(t) {\n return vt(this.firstAngle, st(t), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = vt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(t) {\n return O(\n this.center,\n ft(\n this.radius,\n this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(t) {\n const [n, e] = Pt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n throw new Error(\n `Point ${T(t)} is not on segment ${this.repr}`\n );\n const s = this.angleToParam(e);\n if (!this.isValidParameter(s))\n throw new Error(\n `Point ${T(t)} is not on segment ${this.repr}`\n );\n return s;\n }\n get radius() {\n return this._radius === null && (this._radius = q(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [t, n] = A(this.firstPoint, this.center);\n this._firstAngle = st(Math.atan2(n, t));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [t, n] = A(this.lastPoint, this.center);\n this._lastAngle = st(Math.atan2(n, t));\n }\n return this._lastAngle;\n }\n get length() {\n return this.radius * this.angularLength;\n }\n get squareLength() {\n return this.length * this.length;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isSame(t) {\n return !(t instanceof I) || !E(this.center, t.center) ? !1 : E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) && this.clockwise === t.clockwise || E(this.lastPoint, t.firstPoint) && E(this.firstPoint, t.lastPoint) && this.clockwise === !t.clockwise;\n }\n clone() {\n return new I(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new I(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = this.radius + this.precision, n = (e) => this.isValidParameter(this.angleToParam(e));\n this._boundingBox = new it(\n n(Math.PI) ? this.center[0] - t : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n n(Math.PI * 1.5) ? this.center[1] - t : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n n(0) ? this.center[0] + t : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n n(Math.PI / 2) ? this.center[1] + t : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(t) {\n const [n, e] = Pt(t, this.center);\n return this.isValidParameter(this.angleToParam(e)) ? Math.abs(n - this.radius) : Math.sqrt(\n Math.min(\n mt(t, this.firstPoint),\n mt(t, this.lastPoint)\n )\n );\n }\n isOnSegment(t) {\n if (E(t, this.firstPoint) || E(t, this.lastPoint))\n return !0;\n const [n, e] = Pt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n return !1;\n const s = this.angleToParam(e);\n return this.isValidParameter(s);\n }\n gradientAt(t) {\n const n = this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1), e = this.radius * this.angularLength, s = -e * Math.sin(n), r = e * Math.cos(n);\n return this.clockwise ? [-s, -r] : [s, r];\n }\n tangentAt(t) {\n const [n, e] = Pt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const s = this.angleToParam(e);\n if (!this.isValidParameter(s))\n throw new Error(\"Point is not on the arc\");\n const r = ft(1, e);\n return (this.clockwise ? bt : J)(W(r));\n }\n get tangentAtFirstPoint() {\n const t = ft(1, this.firstAngle);\n return (this.clockwise ? bt : J)(W(t));\n }\n get tangentAtLastPoint() {\n const t = ft(1, this.lastAngle);\n return (this.clockwise ? bt : J)(W(t));\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const s = [0, 1, ...n.map((h) => this.pointToParam(h))], r = new Map(\n nt([s, [this.firstPoint, this.lastPoint, ...n]])\n );\n s.sort((h, u) => h - u);\n let o = null;\n return s.flatMap((h, u) => {\n if (u === s.length - 1)\n return [];\n const l = s[u + 1];\n if (l - h < this.precision)\n return o === null && (o = h), [];\n const c = o === null ? h : o, a = new I(\n r.get(c) || this.paramPoint(c),\n r.get(l) || this.paramPoint(l),\n this.center,\n this.clockwise\n );\n return o = null, a;\n });\n }\n transform(t) {\n return new I(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n t.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction as(i, t, n) {\n const e = new R(t, i), s = new R(t, n), r = J(e.tangentAtFirstPoint), o = J(s.tangentAtLastPoint), h = Ft(\n { firstPoint: e.midPoint, V: r, precision: 1e-9 },\n { firstPoint: s.midPoint, V: o, precision: 1e-9 }\n );\n if (h === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const u = at(\n A(i, t),\n A(n, t)\n ) > 0;\n return new I(\n i,\n n,\n O(e.midPoint, D(r, h.intersectionParam1)),\n u,\n { ignoreChecks: !0 }\n );\n}\nfunction cs(i, t, n) {\n const e = new R(t, i), s = J(e.tangentAtFirstPoint), r = Ft(\n { firstPoint: e.midPoint, V: s, precision: 1e-9 },\n {\n firstPoint: i,\n V: J(n),\n precision: 1e-9\n }\n );\n if (r === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = O(\n e.midPoint,\n D(s, r.intersectionParam1)\n ), h = at(\n A(o, i),\n A(o, O(i, n))\n ) < 0;\n return new I(i, t, o, h, {\n ignoreChecks: !0\n });\n}\nfunction Qe(i, t) {\n const n = A(t, i.firstPoint), e = $t(n, i.V) / i.squareLength;\n return i.paramPoint(e);\n}\nfunction kt(i, t, n) {\n const e = n || i.precision, s = Qe(i, t.center), r = q(s, t.center);\n if (r > t.radius + e)\n return [];\n if (Math.abs(r - t.radius) < e) {\n const a = s;\n return i.isOnSegment(a) && t.isOnSegment(a) ? [a] : [];\n }\n const o = [], h = Math.sqrt(\n t.radius * t.radius - r * r\n ), u = i.tangentAtFirstPoint, l = O(s, D(u, h));\n i.isOnSegment(l) && t.isOnSegment(l) && o.push(l);\n const c = O(s, D(u, -h));\n return i.isOnSegment(c) && t.isOnSegment(c) && o.push(c), o;\n}\nconst Ze = (i) => {\n const { firstPoint: t, lastPoint: n, center: e, clockwise: s } = i;\n return new I(n, t, e, s, {\n ignoreChecks: !0\n });\n}, He = (i, t) => {\n if (i.isSame(t))\n return [i];\n const n = ct(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((e) => e !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((e, s) => i.pointToParam(e) - i.pointToParam(s));\n if (n.length === 0)\n return [];\n if (n.length === 1)\n return [];\n if (n.length === 2)\n return i.isSame(Ze(t)) ? [] : [new I(n[0], n[1], i.center, i.clockwise)];\n if (n.length === 3) {\n const e = E(n[0], t.lastPoint) || E(n[0], t.firstPoint) ? 1 : 0;\n return [\n new I(\n n[0 + e],\n n[1 + e],\n i.center,\n i.clockwise\n )\n ];\n } else if (n.length === 4)\n return [\n new I(n[0], n[1], i.center, i.clockwise),\n new I(n[2], n[3], i.center, i.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction me(i, t, n = !1, e) {\n const s = e || i.precision, r = q(i.center, t.center), o = i.radius + t.radius;\n if (r > o + s)\n return [];\n const h = Math.abs(i.radius - t.radius);\n if (r < h - s)\n return [];\n if (r < s)\n return h > s ? [] : n ? He(i, t) : [];\n const u = W(A(t.center, i.center)), l = r > o - s;\n if (\n // circles are outside each other\n l || // circles are inside each other\n Math.abs(r - h) < s\n ) {\n const f = l || i.radius > t.radius ? 1 : -1, p = O(\n i.center,\n D(u, f * i.radius)\n );\n return i.isOnSegment(p) && t.isOnSegment(p) ? [p] : [];\n }\n const c = i.radius * i.radius / (2 * r) - t.radius * t.radius / (2 * r) + r / 2, a = O(\n i.center,\n D(u, c)\n ), g = Math.sqrt(\n i.radius * i.radius - c * c\n ), w = J(u), m = O(a, D(w, g)), d = O(a, D(w, -g)), P = [];\n return i.isOnSegment(m) && t.isOnSegment(m) && P.push(m), i.isOnSegment(d) && t.isOnSegment(d) && P.push(d), P;\n}\nclass C extends zt {\n constructor(t, n, e, s, r, o, h = !1, {\n ignoreChecks: u = !1,\n angleUnits: l = \"deg\"\n } = {}) {\n super(t, n), this.segmentType = \"ELLIPSE_ARC\", this.precision = 1e-6, this._coefficients = null, this.center = e;\n const c = s >= r;\n this.majorRadius = c ? s : r, this.minorRadius = c ? r : s;\n const a = l === \"deg\" ? o * Lt : o;\n if (this.tiltAngle = st(\n c ? a : a + Math.PI / 2\n ), this.clockwise = h, !u) {\n if (E(t, n))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `First point ${T(\n t\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(n))\n throw new Error(\n `Last point ${T(n)} not on the ellipse defined by ${this.info}`\n );\n if (Math.abs(this.majorRadius - this.minorRadius) < this.precision)\n throw new Error(\n \"Both radii should be different, create an arc instead\"\n );\n }\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, n] = this.center, e = this.majorRadius * this.majorRadius, s = this.minorRadius * this.minorRadius, r = Math.cos(this.tiltAngle), o = Math.sin(this.tiltAngle), h = e * o * o + s * r * r, u = 2 * (s - e) * o * r, l = e * r * r + s * o * o;\n this._coefficients = {\n x2: h,\n xy: u,\n y2: l,\n x: -2 * h * t - u * n,\n y: -2 * l * n - u * t,\n c: h * t * t + u * t * n + l * n * n - e * s\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${T(this.firstPoint)}, ${T(\n this.lastPoint\n )}, ${T(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * Ue}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new C(\n this.lastPoint,\n this.firstPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n !this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n clone() {\n return new C(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n computeEllipseExtrema() {\n const t = Math.tan(this.tiltAngle), n = this.minorRadius / this.majorRadius, e = -Math.atan(n * t), s = Math.atan(n / t);\n return [e, Math.PI + e, s, Math.PI + s].map((o) => this.thetaToParam(o)).filter((o) => this.isValidParameter(o)).map((o) => this.paramPoint(o));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const t = this.computeEllipseExtrema(), n = [\n this.firstPoint,\n this.lastPoint,\n ...t\n ];\n this._boundingBox = De(n);\n }\n return this._boundingBox;\n }\n get linearExentricity() {\n return this._linearExentricity === void 0 && (this._linearExentricity = Math.sqrt(\n this.majorRadius * this.majorRadius - this.minorRadius * this.minorRadius\n )), this._linearExentricity;\n }\n get exentricity() {\n return this._exentricity === void 0 && (this._exentricity = this.linearExentricity / this.majorRadius), this._exentricity;\n }\n get focals() {\n if (this._focals === void 0) {\n const t = this.majorAxis;\n this._focals = [\n O(this.center, D(t, this.linearExentricity)),\n O(this.center, D(t, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return ft(1, this.tiltAngle);\n }\n paramPoint(t) {\n const n = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(n),\n this.minorRadius * Math.sin(n)\n ]);\n }\n pointToParam(t) {\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Point ${T(t)} not on the ellipse defined by ${this.repr}`\n );\n const n = this.thetaToParam(this.pointTheta(t));\n if (!this.isValidParameter(n))\n throw new Error(\n `Point ${T(t)} is not on segment ${this.repr}`\n );\n return n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n isSame(t) {\n return E(this.center, t.center) && Math.abs(this.majorRadius - t.majorRadius) < this.precision && Math.abs(this.minorRadius - t.minorRadius) < this.precision && (Math.abs(this.tiltAngle - t.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - t.tiltAngle) - Math.PI) < this.precision) && (E(this.firstPoint, t.firstPoint) && this.clockwise === t.clockwise || E(this.firstPoint, t.lastPoint) && this.clockwise !== t.clockwise);\n }\n pointTheta(t) {\n const n = this.ellipseReferenceFrameTransform.transform(t), e = Math.atan2(\n n[1] / this.minorRadius,\n n[0] / this.majorRadius\n );\n return st(e);\n }\n thetaToParam(t) {\n return vt(this.firstAngle, st(t), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(t) {\n const [n, e] = this.focals, s = q(t, n), r = q(t, e);\n return Math.abs(2 * this.majorRadius - s - r) < this.precision;\n }\n isOnSegment(t) {\n return this.isPointOnEllipse(t) ? this.isValidParameter(this.thetaToParam(this.pointTheta(t))) : !1;\n }\n distanceFrom(t) {\n let n;\n if (E(t, this.center) ? n = O(\n this.center,\n D(J(this.majorAxis), this.minorRadius)\n ) : n = this.reverseEllipseReferenceFrameTransform.transform(\n en(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(t)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(t))))\n return q(t, n);\n if (Ge(t, this.majorAxis, this.center)) {\n const e = st(\n 2 * Math.PI - this.pointTheta(t)\n ), s = this.thetaToParam(e);\n if (this.isValidParameter(s))\n return q(t, this.paramPoint(s));\n }\n return Math.min(\n q(t, this.firstPoint),\n q(t, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new V().rotate(-this.tiltAngle).translate(-this.center[0], -this.center[1])), this._ellipseReferenceFrameTransform;\n }\n get reverseEllipseReferenceFrameTransform() {\n return this._reverseEllipseReferenceFrameTransform === void 0 && (this._reverseEllipseReferenceFrameTransform = new V().translate(this.center[0], this.center[1]).rotate(this.tiltAngle)), this._reverseEllipseReferenceFrameTransform;\n }\n get rotateFromEllipseReferenceFrame() {\n return this._rotateFromEllipseReferenceFrame === void 0 && (this._rotateFromEllipseReferenceFrame = new V().rotate(\n this.tiltAngle\n )), this._rotateFromEllipseReferenceFrame;\n }\n get firstAngle() {\n return this._firstAngle === void 0 && (this._firstAngle = this.pointTheta(this.firstPoint)), this._firstAngle;\n }\n get lastAngle() {\n return this._lastAngle === void 0 && (this._lastAngle = this.pointTheta(this.lastPoint)), this._lastAngle;\n }\n get deltaAngle() {\n return this._deltaAngle === void 0 && (this._deltaAngle = vt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(t) {\n const n = this.tangentAt(t);\n return this.clockwise ? J(n) : bt(n);\n }\n gradientAt(t) {\n const n = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1), e = -this.majorRadius * this.deltaAngle * Math.sin(n), s = this.minorRadius * this.deltaAngle * Math.cos(n), r = this.clockwise ? [-e, -s] : [e, s];\n return this.rotateFromEllipseReferenceFrame.transform(r);\n }\n tangentAt(t) {\n const n = this.pointTheta(t), e = -this.majorRadius * Math.sin(n), s = this.minorRadius * Math.cos(n), r = this.clockwise ? [-e, -s] : [e, s];\n return W(this.rotateFromEllipseReferenceFrame.transform(r));\n }\n get tangentAtFirstPoint() {\n const t = -this.majorRadius * Math.sin(this.firstAngle), n = this.minorRadius * Math.cos(this.firstAngle), e = this.clockwise ? [-t, -n] : [t, n];\n return W(this.rotateFromEllipseReferenceFrame.transform(e));\n }\n get tangentAtLastPoint() {\n const t = -this.majorRadius * Math.sin(this.lastAngle), n = this.minorRadius * Math.cos(this.lastAngle), e = this.clockwise ? [-t, -n] : [t, n];\n return W(this.rotateFromEllipseReferenceFrame.transform(e));\n }\n transform(t) {\n const n = t.transformAngle(this.tiltAngle), e = t.scaleFactor();\n return new C(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n this.majorRadius * e,\n this.minorRadius * e,\n n,\n t.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const s = [0, 1, ...n.map((h) => this.pointToParam(h))], r = new Map(\n nt([s, [this.firstPoint, this.lastPoint, ...n]])\n );\n s.sort((h, u) => h - u);\n let o = null;\n return s.flatMap((h, u) => {\n if (u === s.length - 1)\n return [];\n const l = s[u + 1];\n if (l - h < this.precision)\n return o === null && (o = h), [];\n const c = o === null ? h : o, a = new C(\n r.get(c) || this.paramPoint(c),\n r.get(l) || this.paramPoint(l),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return o = null, a;\n });\n }\n}\nfunction fs(i, t, n, e, s, r, o) {\n const { center: h, rx: u, ry: l } = tn(\n i,\n t,\n n,\n e,\n s * Lt,\n !r,\n o\n );\n return Math.abs(u - l) < 1e-9 ? new I(i, t, h, o) : new C(i, t, h, u, l, s, o);\n}\nfunction tn([i, t], [n, e], s, r, o, h, u) {\n if (s < 0 && (s = -s), r < 0 && (r = -r), s == 0 || r == 0)\n throw Error(\"rx and ry can not be 0\");\n const l = Math.sin(o), c = Math.cos(o), a = (i - n) / 2, g = (t - e) / 2, w = (i + n) / 2, m = (t + e) / 2, d = c * a + l * g, P = c * g - l * a, f = d * d / (s * s) + P * P / (r * r);\n f > 1 && (s = s * Math.sqrt(f), r = r * Math.sqrt(f));\n const p = s * r, y = s * P, M = r * d, b = y * y + M * M;\n if (!b)\n throw Error(\"start point can not be same as end point\");\n let x = Math.sqrt(Math.abs((p * p - b) / b));\n h == u && (x = -x);\n const k = x * y / r, S = -x * M / s, _ = c * k - l * S + w, F = l * k + c * S + m;\n return {\n center: [_, F],\n rx: s,\n ry: r\n };\n}\nfunction en(i, t, n) {\n const e = Math.abs(n[0]), s = Math.abs(n[1]);\n let r = 0.707, o = 0.707;\n const h = i, u = t;\n for (let l = 0; l < 3; l++) {\n const c = h * r, a = u * o, g = (h * h - u * u) * r ** 3 / h, w = (u * u - h * h) * o ** 3 / u, m = c - g, d = a - w, P = e - g, f = s - w, p = Math.hypot(m, d), y = Math.hypot(P, f);\n r = Math.min(1, Math.max(0, (P * p / y + g) / h)), o = Math.min(1, Math.max(0, (f * p / y + w) / u));\n const M = Math.hypot(r, o);\n r /= M, o /= M;\n }\n return [h * r * Math.sign(n[0]), u * o * Math.sign(n[1])];\n}\nfunction qt(i, t, n = 1e-9) {\n const e = i.transform(t.ellipseReferenceFrameTransform), s = e.slope, r = e.yIntercept, o = t.majorRadius * t.majorRadius, h = t.minorRadius * t.minorRadius, u = t.majorRadius * t.minorRadius, l = e.slope * e.slope, c = e.yIntercept * e.yIntercept, a = (f) => f.map(\n (p) => t.reverseEllipseReferenceFrameTransform.transform(p)\n ).filter((p) => i.isOnSegment(p) && t.isOnSegment(p));\n if (!Number.isFinite(s)) {\n const f = e.firstPoint[0];\n if (Math.abs(f) - t.majorRadius > n)\n return [];\n if (Math.abs(Math.abs(f) - t.majorRadius) < n)\n return a([[f, 0]]);\n const p = t.minorRadius * Math.sqrt(1 - f * f / o), y = [f, p], M = [f, -p];\n return a([y, M]);\n }\n const g = o * l + h - c;\n if (g < -n)\n return [];\n const w = o * l + h;\n if (Math.abs(g) < n) {\n const f = -(o * s * r) / w, p = h * r / w;\n return a([[f, p]]);\n }\n const m = Math.sqrt(g), d = [\n -(o * s * r + u * m) / w,\n (h * r - u * s * m) / w\n ], P = [\n -(o * s * r - u * m) / w,\n (h * r + u * s * m) / w\n ];\n return a([d, P]);\n}\nconst nn = Object.prototype.toString;\nfunction z(i) {\n const t = nn.call(i);\n return t.endsWith(\"Array]\") && !t.includes(\"Big\");\n}\nfunction sn(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!z(i))\n throw new TypeError(\"input must be an array\");\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n var n = t.fromIndex, e = n === void 0 ? 0 : n, s = t.toIndex, r = s === void 0 ? i.length : s;\n if (e < 0 || e >= i.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (r <= e || r > i.length || !Number.isInteger(r))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = i[e], h = e + 1; h < r; h++)\n i[h] > o && (o = i[h]);\n return o;\n}\nfunction rn(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!z(i))\n throw new TypeError(\"input must be an array\");\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n var n = t.fromIndex, e = n === void 0 ? 0 : n, s = t.toIndex, r = s === void 0 ? i.length : s;\n if (e < 0 || e >= i.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (r <= e || r > i.length || !Number.isInteger(r))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = i[e], h = e + 1; h < r; h++)\n i[h] < o && (o = i[h]);\n return o;\n}\nfunction Kt(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (z(i)) {\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else\n throw new TypeError(\"input must be an array\");\n var n;\n if (t.output !== void 0) {\n if (!z(t.output))\n throw new TypeError(\"output option must be an array if specified\");\n n = t.output;\n } else\n n = new Array(i.length);\n var e = rn(i), s = sn(i);\n if (e === s)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var r = t.min, o = r === void 0 ? t.autoMinMax ? e : 0 : r, h = t.max, u = h === void 0 ? t.autoMinMax ? s : 1 : h;\n if (o >= u)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var l = (u - o) / (s - e), c = 0; c < i.length; c++)\n n[c] = (i[c] - e) * l + o;\n return n;\n}\nconst Mt = \" \".repeat(2), pe = \" \".repeat(4);\nfunction on() {\n return we(this);\n}\nfunction we(i, t = {}) {\n const {\n maxRows: n = 15,\n maxColumns: e = 10,\n maxNumSize: s = 8,\n padMinus: r = \"auto\"\n } = t;\n return `${i.constructor.name} {\n${Mt}[\n${pe}${hn(i, n, e, s, r)}\n${Mt}]\n${Mt}rows: ${i.rows}\n${Mt}columns: ${i.columns}\n}`;\n}\nfunction hn(i, t, n, e, s) {\n const { rows: r, columns: o } = i, h = Math.min(r, t), u = Math.min(o, n), l = [];\n if (s === \"auto\") {\n s = !1;\n t:\n for (let c = 0; c < h; c++)\n for (let a = 0; a < u; a++)\n if (i.get(c, a) < 0) {\n s = !0;\n break t;\n }\n }\n for (let c = 0; c < h; c++) {\n let a = [];\n for (let g = 0; g < u; g++)\n a.push(ln(i.get(c, g), e, s));\n l.push(`${a.join(\" \")}`);\n }\n return u !== o && (l[l.length - 1] += ` ... ${o - n} more columns`), h !== r && l.push(`... ${r - t} more rows`), l.join(`\n${pe}`);\n}\nfunction ln(i, t, n) {\n return (i >= 0 && n ? ` ${Qt(i, t - 1)}` : Qt(i, t)).padEnd(t);\n}\nfunction Qt(i, t) {\n let n = i.toString();\n if (n.length <= t)\n return n;\n let e = i.toFixed(t);\n if (e.length > t && (e = i.toFixed(Math.max(0, t - (e.length - t)))), e.length <= t && !e.startsWith(\"0.000\") && !e.startsWith(\"-0.000\"))\n return e;\n let s = i.toExponential(t);\n return s.length > t && (s = i.toExponential(Math.max(0, t - (s.length - t)))), s.slice(0);\n}\nfunction un(i, t) {\n i.prototype.add = function(e) {\n return typeof e == \"number\" ? this.addS(e) : this.addM(e);\n }, i.prototype.addS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) + e);\n return this;\n }, i.prototype.addM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) + e.get(s, r));\n return this;\n }, i.add = function(e, s) {\n return new t(e).add(s);\n }, i.prototype.sub = function(e) {\n return typeof e == \"number\" ? this.subS(e) : this.subM(e);\n }, i.prototype.subS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) - e);\n return this;\n }, i.prototype.subM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) - e.get(s, r));\n return this;\n }, i.sub = function(e, s) {\n return new t(e).sub(s);\n }, i.prototype.subtract = i.prototype.sub, i.prototype.subtractS = i.prototype.subS, i.prototype.subtractM = i.prototype.subM, i.subtract = i.sub, i.prototype.mul = function(e) {\n return typeof e == \"number\" ? this.mulS(e) : this.mulM(e);\n }, i.prototype.mulS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) * e);\n return this;\n }, i.prototype.mulM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) * e.get(s, r));\n return this;\n }, i.mul = function(e, s) {\n return new t(e).mul(s);\n }, i.prototype.multiply = i.prototype.mul, i.prototype.multiplyS = i.prototype.mulS, i.prototype.multiplyM = i.prototype.mulM, i.multiply = i.mul, i.prototype.div = function(e) {\n return typeof e == \"number\" ? this.divS(e) : this.divM(e);\n }, i.prototype.divS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) / e);\n return this;\n }, i.prototype.divM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) / e.get(s, r));\n return this;\n }, i.div = function(e, s) {\n return new t(e).div(s);\n }, i.prototype.divide = i.prototype.div, i.prototype.divideS = i.prototype.divS, i.prototype.divideM = i.prototype.divM, i.divide = i.div, i.prototype.mod = function(e) {\n return typeof e == \"number\" ? this.modS(e) : this.modM(e);\n }, i.prototype.modS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) % e);\n return this;\n }, i.prototype.modM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) % e.get(s, r));\n return this;\n }, i.mod = function(e, s) {\n return new t(e).mod(s);\n }, i.prototype.modulus = i.prototype.mod, i.prototype.modulusS = i.prototype.modS, i.prototype.modulusM = i.prototype.modM, i.modulus = i.mod, i.prototype.and = function(e) {\n return typeof e == \"number\" ? this.andS(e) : this.andM(e);\n }, i.prototype.andS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) & e);\n return this;\n }, i.prototype.andM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) & e.get(s, r));\n return this;\n }, i.and = function(e, s) {\n return new t(e).and(s);\n }, i.prototype.or = function(e) {\n return typeof e == \"number\" ? this.orS(e) : this.orM(e);\n }, i.prototype.orS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) | e);\n return this;\n }, i.prototype.orM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) | e.get(s, r));\n return this;\n }, i.or = function(e, s) {\n return new t(e).or(s);\n }, i.prototype.xor = function(e) {\n return typeof e == \"number\" ? this.xorS(e) : this.xorM(e);\n }, i.prototype.xorS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) ^ e);\n return this;\n }, i.prototype.xorM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) ^ e.get(s, r));\n return this;\n }, i.xor = function(e, s) {\n return new t(e).xor(s);\n }, i.prototype.leftShift = function(e) {\n return typeof e == \"number\" ? this.leftShiftS(e) : this.leftShiftM(e);\n }, i.prototype.leftShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) << e);\n return this;\n }, i.prototype.leftShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) << e.get(s, r));\n return this;\n }, i.leftShift = function(e, s) {\n return new t(e).leftShift(s);\n }, i.prototype.signPropagatingRightShift = function(e) {\n return typeof e == \"number\" ? this.signPropagatingRightShiftS(e) : this.signPropagatingRightShiftM(e);\n }, i.prototype.signPropagatingRightShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >> e);\n return this;\n }, i.prototype.signPropagatingRightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >> e.get(s, r));\n return this;\n }, i.signPropagatingRightShift = function(e, s) {\n return new t(e).signPropagatingRightShift(s);\n }, i.prototype.rightShift = function(e) {\n return typeof e == \"number\" ? this.rightShiftS(e) : this.rightShiftM(e);\n }, i.prototype.rightShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >>> e);\n return this;\n }, i.prototype.rightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >>> e.get(s, r));\n return this;\n }, i.rightShift = function(e, s) {\n return new t(e).rightShift(s);\n }, i.prototype.zeroFillRightShift = i.prototype.rightShift, i.prototype.zeroFillRightShiftS = i.prototype.rightShiftS, i.prototype.zeroFillRightShiftM = i.prototype.rightShiftM, i.zeroFillRightShift = i.rightShift, i.prototype.not = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, ~this.get(e, s));\n return this;\n }, i.not = function(e) {\n return new t(e).not();\n }, i.prototype.abs = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.abs(this.get(e, s)));\n return this;\n }, i.abs = function(e) {\n return new t(e).abs();\n }, i.prototype.acos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.acos(this.get(e, s)));\n return this;\n }, i.acos = function(e) {\n return new t(e).acos();\n }, i.prototype.acosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.acosh(this.get(e, s)));\n return this;\n }, i.acosh = function(e) {\n return new t(e).acosh();\n }, i.prototype.asin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.asin(this.get(e, s)));\n return this;\n }, i.asin = function(e) {\n return new t(e).asin();\n }, i.prototype.asinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.asinh(this.get(e, s)));\n return this;\n }, i.asinh = function(e) {\n return new t(e).asinh();\n }, i.prototype.atan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.atan(this.get(e, s)));\n return this;\n }, i.atan = function(e) {\n return new t(e).atan();\n }, i.prototype.atanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.atanh(this.get(e, s)));\n return this;\n }, i.atanh = function(e) {\n return new t(e).atanh();\n }, i.prototype.cbrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cbrt(this.get(e, s)));\n return this;\n }, i.cbrt = function(e) {\n return new t(e).cbrt();\n }, i.prototype.ceil = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.ceil(this.get(e, s)));\n return this;\n }, i.ceil = function(e) {\n return new t(e).ceil();\n }, i.prototype.clz32 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.clz32(this.get(e, s)));\n return this;\n }, i.clz32 = function(e) {\n return new t(e).clz32();\n }, i.prototype.cos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cos(this.get(e, s)));\n return this;\n }, i.cos = function(e) {\n return new t(e).cos();\n }, i.prototype.cosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cosh(this.get(e, s)));\n return this;\n }, i.cosh = function(e) {\n return new t(e).cosh();\n }, i.prototype.exp = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.exp(this.get(e, s)));\n return this;\n }, i.exp = function(e) {\n return new t(e).exp();\n }, i.prototype.expm1 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.expm1(this.get(e, s)));\n return this;\n }, i.expm1 = function(e) {\n return new t(e).expm1();\n }, i.prototype.floor = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.floor(this.get(e, s)));\n return this;\n }, i.floor = function(e) {\n return new t(e).floor();\n }, i.prototype.fround = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.fround(this.get(e, s)));\n return this;\n }, i.fround = function(e) {\n return new t(e).fround();\n }, i.prototype.log = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log(this.get(e, s)));\n return this;\n }, i.log = function(e) {\n return new t(e).log();\n }, i.prototype.log1p = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log1p(this.get(e, s)));\n return this;\n }, i.log1p = function(e) {\n return new t(e).log1p();\n }, i.prototype.log10 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log10(this.get(e, s)));\n return this;\n }, i.log10 = function(e) {\n return new t(e).log10();\n }, i.prototype.log2 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log2(this.get(e, s)));\n return this;\n }, i.log2 = function(e) {\n return new t(e).log2();\n }, i.prototype.round = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.round(this.get(e, s)));\n return this;\n }, i.round = function(e) {\n return new t(e).round();\n }, i.prototype.sign = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sign(this.get(e, s)));\n return this;\n }, i.sign = function(e) {\n return new t(e).sign();\n }, i.prototype.sin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sin(this.get(e, s)));\n return this;\n }, i.sin = function(e) {\n return new t(e).sin();\n }, i.prototype.sinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sinh(this.get(e, s)));\n return this;\n }, i.sinh = function(e) {\n return new t(e).sinh();\n }, i.prototype.sqrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sqrt(this.get(e, s)));\n return this;\n }, i.sqrt = function(e) {\n return new t(e).sqrt();\n }, i.prototype.tan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.tan(this.get(e, s)));\n return this;\n }, i.tan = function(e) {\n return new t(e).tan();\n }, i.prototype.tanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.tanh(this.get(e, s)));\n return this;\n }, i.tanh = function(e) {\n return new t(e).tanh();\n }, i.prototype.trunc = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.trunc(this.get(e, s)));\n return this;\n }, i.trunc = function(e) {\n return new t(e).trunc();\n }, i.pow = function(e, s) {\n return new t(e).pow(s);\n }, i.prototype.pow = function(e) {\n return typeof e == \"number\" ? this.powS(e) : this.powM(e);\n }, i.prototype.powS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, Math.pow(this.get(s, r), e));\n return this;\n }, i.prototype.powM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, Math.pow(this.get(s, r), e.get(s, r)));\n return this;\n };\n}\nfunction Y(i, t, n) {\n let e = n ? i.rows : i.rows - 1;\n if (t < 0 || t > e)\n throw new RangeError(\"Row index out of range\");\n}\nfunction X(i, t, n) {\n let e = n ? i.columns : i.columns - 1;\n if (t < 0 || t > e)\n throw new RangeError(\"Column index out of range\");\n}\nfunction lt(i, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== i.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return t;\n}\nfunction ut(i, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== i.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return t;\n}\nfunction an(i, t) {\n if (!z(t))\n throw new TypeError(\"row indices must be an array\");\n for (let n = 0; n < t.length; n++)\n if (t[n] < 0 || t[n] >= i.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction cn(i, t) {\n if (!z(t))\n throw new TypeError(\"column indices must be an array\");\n for (let n = 0; n < t.length; n++)\n if (t[n] < 0 || t[n] >= i.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction Zt(i, t, n, e, s) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Et(\"startRow\", t), Et(\"endRow\", n), Et(\"startColumn\", e), Et(\"endColumn\", s), t > n || e > s || t < 0 || t >= i.rows || n < 0 || n >= i.rows || e < 0 || e >= i.columns || s < 0 || s >= i.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Tt(i, t = 0) {\n let n = [];\n for (let e = 0; e < i; e++)\n n.push(t);\n return n;\n}\nfunction Et(i, t) {\n if (typeof t != \"number\")\n throw new TypeError(`${i} must be a number`);\n}\nfunction ht(i) {\n if (i.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction fn(i) {\n let t = Tt(i.rows);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[n] += i.get(n, e);\n return t;\n}\nfunction gn(i) {\n let t = Tt(i.columns);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[e] += i.get(n, e);\n return t;\n}\nfunction mn(i) {\n let t = 0;\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n t += i.get(n, e);\n return t;\n}\nfunction pn(i) {\n let t = Tt(i.rows, 1);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[n] *= i.get(n, e);\n return t;\n}\nfunction wn(i) {\n let t = Tt(i.columns, 1);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[e] *= i.get(n, e);\n return t;\n}\nfunction dn(i) {\n let t = 1;\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n t *= i.get(n, e);\n return t;\n}\nfunction yn(i, t, n) {\n const e = i.rows, s = i.columns, r = [];\n for (let o = 0; o < e; o++) {\n let h = 0, u = 0, l = 0;\n for (let c = 0; c < s; c++)\n l = i.get(o, c) - n[o], h += l, u += l * l;\n t ? r.push((u - h * h / s) / (s - 1)) : r.push((u - h * h / s) / s);\n }\n return r;\n}\nfunction Pn(i, t, n) {\n const e = i.rows, s = i.columns, r = [];\n for (let o = 0; o < s; o++) {\n let h = 0, u = 0, l = 0;\n for (let c = 0; c < e; c++)\n l = i.get(c, o) - n[o], h += l, u += l * l;\n t ? r.push((u - h * h / e) / (e - 1)) : r.push((u - h * h / e) / e);\n }\n return r;\n}\nfunction Mn(i, t, n) {\n const e = i.rows, s = i.columns, r = e * s;\n let o = 0, h = 0, u = 0;\n for (let l = 0; l < e; l++)\n for (let c = 0; c < s; c++)\n u = i.get(l, c) - n, o += u, h += u * u;\n return t ? (h - o * o / r) / (r - 1) : (h - o * o / r) / r;\n}\nfunction En(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t[n]);\n}\nfunction Sn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t[e]);\n}\nfunction bn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t);\n}\nfunction jn(i) {\n const t = [];\n for (let n = 0; n < i.rows; n++) {\n let e = 0;\n for (let s = 0; s < i.columns; s++)\n e += Math.pow(i.get(n, s), 2) / (i.columns - 1);\n t.push(Math.sqrt(e));\n }\n return t;\n}\nfunction vn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t[n]);\n}\nfunction kn(i) {\n const t = [];\n for (let n = 0; n < i.columns; n++) {\n let e = 0;\n for (let s = 0; s < i.rows; s++)\n e += Math.pow(i.get(s, n), 2) / (i.rows - 1);\n t.push(Math.sqrt(e));\n }\n return t;\n}\nfunction In(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t[e]);\n}\nfunction xn(i) {\n const t = i.size - 1;\n let n = 0;\n for (let e = 0; e < i.columns; e++)\n for (let s = 0; s < i.rows; s++)\n n += Math.pow(i.get(s, e), 2) / t;\n return Math.sqrt(n);\n}\nfunction Rn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t);\n}\nclass v {\n static from1DArray(t, n, e) {\n if (t * n !== e.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let r = new j(t, n);\n for (let o = 0; o < t; o++)\n for (let h = 0; h < n; h++)\n r.set(o, h, e[o * n + h]);\n return r;\n }\n static rowVector(t) {\n let n = new j(1, t.length);\n for (let e = 0; e < t.length; e++)\n n.set(0, e, t[e]);\n return n;\n }\n static columnVector(t) {\n let n = new j(t.length, 1);\n for (let e = 0; e < t.length; e++)\n n.set(e, 0, t[e]);\n return n;\n }\n static zeros(t, n) {\n return new j(t, n);\n }\n static ones(t, n) {\n return new j(t, n).fill(1);\n }\n static rand(t, n, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: s = Math.random } = e;\n let r = new j(t, n);\n for (let o = 0; o < t; o++)\n for (let h = 0; h < n; h++)\n r.set(o, h, s());\n return r;\n }\n static randInt(t, n, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: s = 0, max: r = 1e3, random: o = Math.random } = e;\n if (!Number.isInteger(s))\n throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(r))\n throw new TypeError(\"max must be an integer\");\n if (s >= r)\n throw new RangeError(\"min must be smaller than max\");\n let h = r - s, u = new j(t, n);\n for (let l = 0; l < t; l++)\n for (let c = 0; c < n; c++) {\n let a = s + Math.round(o() * h);\n u.set(l, c, a);\n }\n return u;\n }\n static eye(t, n, e) {\n n === void 0 && (n = t), e === void 0 && (e = 1);\n let s = Math.min(t, n), r = this.zeros(t, n);\n for (let o = 0; o < s; o++)\n r.set(o, o, e);\n return r;\n }\n static diag(t, n, e) {\n let s = t.length;\n n === void 0 && (n = s), e === void 0 && (e = n);\n let r = Math.min(s, n, e), o = this.zeros(n, e);\n for (let h = 0; h < r; h++)\n o.set(h, h, t[h]);\n return o;\n }\n static min(t, n) {\n t = this.checkMatrix(t), n = this.checkMatrix(n);\n let e = t.rows, s = t.columns, r = new j(e, s);\n for (let o = 0; o < e; o++)\n for (let h = 0; h < s; h++)\n r.set(o, h, Math.min(t.get(o, h), n.get(o, h)));\n return r;\n }\n static max(t, n) {\n t = this.checkMatrix(t), n = this.checkMatrix(n);\n let e = t.rows, s = t.columns, r = new this(e, s);\n for (let o = 0; o < e; o++)\n for (let h = 0; h < s; h++)\n r.set(o, h, Math.max(t.get(o, h), n.get(o, h)));\n return r;\n }\n static checkMatrix(t) {\n return v.isMatrix(t) ? t : new j(t);\n }\n static isMatrix(t) {\n return t != null && t.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(t) {\n if (typeof t != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.call(this, n, e);\n return this;\n }\n to1DArray() {\n let t = [];\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.push(this.get(n, e));\n return t;\n }\n to2DArray() {\n let t = [];\n for (let n = 0; n < this.rows; n++) {\n t.push([]);\n for (let e = 0; e < this.columns; e++)\n t[n].push(this.get(n, e));\n }\n return t;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n <= t; n++)\n if (this.get(t, n) !== this.get(n, t))\n return !1;\n return !0;\n }\n return !1;\n }\n isEchelonForm() {\n let t = 0, n = 0, e = -1, s = !0, r = !1;\n for (; t < this.rows && s; ) {\n for (n = 0, r = !1; n < this.columns && r === !1; )\n this.get(t, n) === 0 ? n++ : this.get(t, n) === 1 && n > e ? (r = !0, e = n) : (s = !1, r = !0);\n t++;\n }\n return s;\n }\n isReducedEchelonForm() {\n let t = 0, n = 0, e = -1, s = !0, r = !1;\n for (; t < this.rows && s; ) {\n for (n = 0, r = !1; n < this.columns && r === !1; )\n this.get(t, n) === 0 ? n++ : this.get(t, n) === 1 && n > e ? (r = !0, e = n) : (s = !1, r = !0);\n for (let o = n + 1; o < this.rows; o++)\n this.get(t, o) !== 0 && (s = !1);\n t++;\n }\n return s;\n }\n echelonForm() {\n let t = this.clone(), n = 0, e = 0;\n for (; n < t.rows && e < t.columns; ) {\n let s = n;\n for (let r = n; r < t.rows; r++)\n t.get(r, e) > t.get(s, e) && (s = r);\n if (t.get(s, e) === 0)\n e++;\n else {\n t.swapRows(n, s);\n let r = t.get(n, e);\n for (let o = e; o < t.columns; o++)\n t.set(n, o, t.get(n, o) / r);\n for (let o = n + 1; o < t.rows; o++) {\n let h = t.get(o, e) / t.get(n, e);\n t.set(o, e, 0);\n for (let u = e + 1; u < t.columns; u++)\n t.set(o, u, t.get(o, u) - t.get(n, u) * h);\n }\n n++, e++;\n }\n }\n return t;\n }\n reducedEchelonForm() {\n let t = this.echelonForm(), n = t.columns, e = t.rows, s = e - 1;\n for (; s >= 0; )\n if (t.maxRow(s) === 0)\n s--;\n else {\n let r = 0, o = !1;\n for (; r < e && o === !1; )\n t.get(s, r) === 1 ? o = !0 : r++;\n for (let h = 0; h < s; h++) {\n let u = t.get(h, r);\n for (let l = r; l < n; l++) {\n let c = t.get(h, l) - u * t.get(s, l);\n t.set(h, l, c);\n }\n }\n s--;\n }\n return t;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: n = 1, columns: e = 1 } = t;\n if (!Number.isInteger(n) || n <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let s = new j(this.rows * n, this.columns * e);\n for (let r = 0; r < n; r++)\n for (let o = 0; o < e; o++)\n s.setSubMatrix(this, this.rows * r, this.columns * o);\n return s;\n }\n fill(t) {\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, t);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(t) {\n Y(this, t);\n let n = [];\n for (let e = 0; e < this.columns; e++)\n n.push(this.get(t, e));\n return n;\n }\n getRowVector(t) {\n return j.rowVector(this.getRow(t));\n }\n setRow(t, n) {\n Y(this, t), n = lt(this, n);\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, n[e]);\n return this;\n }\n swapRows(t, n) {\n Y(this, t), Y(this, n);\n for (let e = 0; e < this.columns; e++) {\n let s = this.get(t, e);\n this.set(t, e, this.get(n, e)), this.set(n, e, s);\n }\n return this;\n }\n getColumn(t) {\n X(this, t);\n let n = [];\n for (let e = 0; e < this.rows; e++)\n n.push(this.get(e, t));\n return n;\n }\n getColumnVector(t) {\n return j.columnVector(this.getColumn(t));\n }\n setColumn(t, n) {\n X(this, t), n = ut(this, n);\n for (let e = 0; e < this.rows; e++)\n this.set(e, t, n[e]);\n return this;\n }\n swapColumns(t, n) {\n X(this, t), X(this, n);\n for (let e = 0; e < this.rows; e++) {\n let s = this.get(e, t);\n this.set(e, t, this.get(e, n)), this.set(e, n, s);\n }\n return this;\n }\n addRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) + t[e]);\n return this;\n }\n subRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) - t[e]);\n return this;\n }\n mulRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) * t[e]);\n return this;\n }\n divRowVector(t) {\n t = lt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) / t[e]);\n return this;\n }\n addColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) + t[n]);\n return this;\n }\n subColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) - t[n]);\n return this;\n }\n mulColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) * t[n]);\n return this;\n }\n divColumnVector(t) {\n t = ut(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) / t[n]);\n return this;\n }\n mulRow(t, n) {\n Y(this, t);\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * n);\n return this;\n }\n mulColumn(t, n) {\n X(this, t);\n for (let e = 0; e < this.rows; e++)\n this.set(e, t, this.get(e, t) * n);\n return this;\n }\n max(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const n = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n[e] && (n[e] = this.get(e, s));\n return n;\n }\n case \"column\": {\n const n = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n[s] && (n[s] = this.get(e, s));\n return n;\n }\n case void 0: {\n let n = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n && (n = this.get(e, s));\n return n;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n maxIndex() {\n ht(this);\n let t = this.get(0, 0), n = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > t && (t = this.get(e, s), n[0] = e, n[1] = s);\n return n;\n }\n min(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const n = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n[e] && (n[e] = this.get(e, s));\n return n;\n }\n case \"column\": {\n const n = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n[s] && (n[s] = this.get(e, s));\n return n;\n }\n case void 0: {\n let n = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n && (n = this.get(e, s));\n return n;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n minIndex() {\n ht(this);\n let t = this.get(0, 0), n = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < t && (t = this.get(e, s), n[0] = e, n[1] = s);\n return n;\n }\n maxRow(t) {\n if (Y(this, t), this.isEmpty())\n return NaN;\n let n = this.get(t, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(t, e) > n && (n = this.get(t, e));\n return n;\n }\n maxRowIndex(t) {\n Y(this, t), ht(this);\n let n = this.get(t, 0), e = [t, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(t, s) > n && (n = this.get(t, s), e[1] = s);\n return e;\n }\n minRow(t) {\n if (Y(this, t), this.isEmpty())\n return NaN;\n let n = this.get(t, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(t, e) < n && (n = this.get(t, e));\n return n;\n }\n minRowIndex(t) {\n Y(this, t), ht(this);\n let n = this.get(t, 0), e = [t, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(t, s) < n && (n = this.get(t, s), e[1] = s);\n return e;\n }\n maxColumn(t) {\n if (X(this, t), this.isEmpty())\n return NaN;\n let n = this.get(0, t);\n for (let e = 1; e < this.rows; e++)\n this.get(e, t) > n && (n = this.get(e, t));\n return n;\n }\n maxColumnIndex(t) {\n X(this, t), ht(this);\n let n = this.get(0, t), e = [0, t];\n for (let s = 1; s < this.rows; s++)\n this.get(s, t) > n && (n = this.get(s, t), e[0] = s);\n return e;\n }\n minColumn(t) {\n if (X(this, t), this.isEmpty())\n return NaN;\n let n = this.get(0, t);\n for (let e = 1; e < this.rows; e++)\n this.get(e, t) < n && (n = this.get(e, t));\n return n;\n }\n minColumnIndex(t) {\n X(this, t), ht(this);\n let n = this.get(0, t), e = [0, t];\n for (let s = 1; s < this.rows; s++)\n this.get(s, t) < n && (n = this.get(s, t), e[0] = s);\n return e;\n }\n diag() {\n let t = Math.min(this.rows, this.columns), n = [];\n for (let e = 0; e < t; e++)\n n.push(this.get(e, e));\n return n;\n }\n norm(t = \"frobenius\") {\n let n = 0;\n if (t === \"max\")\n return this.max();\n if (t === \"frobenius\") {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n n = n + this.get(e, s) * this.get(e, s);\n return Math.sqrt(n);\n } else\n throw new RangeError(`unknown norm type: ${t}`);\n }\n cumulativeSum() {\n let t = 0;\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t += this.get(n, e), this.set(n, e, t);\n return this;\n }\n dot(t) {\n v.isMatrix(t) && (t = t.to1DArray());\n let n = this.to1DArray();\n if (n.length !== t.length)\n throw new RangeError(\"vectors do not have the same size\");\n let e = 0;\n for (let s = 0; s < n.length; s++)\n e += n[s] * t[s];\n return e;\n }\n mmul(t) {\n t = j.checkMatrix(t);\n let n = this.rows, e = this.columns, s = t.columns, r = new j(n, s), o = new Float64Array(e);\n for (let h = 0; h < s; h++) {\n for (let u = 0; u < e; u++)\n o[u] = t.get(u, h);\n for (let u = 0; u < n; u++) {\n let l = 0;\n for (let c = 0; c < e; c++)\n l += this.get(u, c) * o[c];\n r.set(u, h, l);\n }\n }\n return r;\n }\n strassen2x2(t) {\n t = j.checkMatrix(t);\n let n = new j(2, 2);\n const e = this.get(0, 0), s = t.get(0, 0), r = this.get(0, 1), o = t.get(0, 1), h = this.get(1, 0), u = t.get(1, 0), l = this.get(1, 1), c = t.get(1, 1), a = (e + l) * (s + c), g = (h + l) * s, w = e * (o - c), m = l * (u - s), d = (e + r) * c, P = (h - e) * (s + o), f = (r - l) * (u + c), p = a + m - d + f, y = w + d, M = g + m, b = a - g + w + P;\n return n.set(0, 0, p), n.set(0, 1, y), n.set(1, 0, M), n.set(1, 1, b), n;\n }\n strassen3x3(t) {\n t = j.checkMatrix(t);\n let n = new j(3, 3);\n const e = this.get(0, 0), s = this.get(0, 1), r = this.get(0, 2), o = this.get(1, 0), h = this.get(1, 1), u = this.get(1, 2), l = this.get(2, 0), c = this.get(2, 1), a = this.get(2, 2), g = t.get(0, 0), w = t.get(0, 1), m = t.get(0, 2), d = t.get(1, 0), P = t.get(1, 1), f = t.get(1, 2), p = t.get(2, 0), y = t.get(2, 1), M = t.get(2, 2), b = (e + s + r - o - h - c - a) * P, x = (e - o) * (-w + P), k = h * (-g + w + d - P - f - p + M), S = (-e + o + h) * (g - w + P), _ = (o + h) * (-g + w), F = e * g, B = (-e + l + c) * (g - m + f), K = (-e + l) * (m - f), Q = (l + c) * (-g + m), Z = (e + s + r - h - u - l - c) * f, $ = c * (-g + m + d - P - f - p + y), N = (-r + c + a) * (P + p - y), dt = (r - a) * (P - y), H = r * p, rt = (c + a) * (-p + y), L = (-r + h + u) * (f + p - M), Gt = (r - u) * (f - M), Wt = (h + u) * (-p + M), Re = s * d, _e = u * y, Fe = o * m, Te = l * w, Ce = a * M, $e = F + H + Re, qe = b + S + _ + F + N + H + rt, Be = F + B + Q + Z + H + L + Wt, Oe = x + k + S + F + H + L + Gt, Ae = x + S + _ + F + _e, Ne = H + L + Gt + Wt + Fe, Le = F + B + K + $ + N + dt + H, Ve = N + dt + H + rt + Te, ze = F + B + K + Q + Ce;\n return n.set(0, 0, $e), n.set(0, 1, qe), n.set(0, 2, Be), n.set(1, 0, Oe), n.set(1, 1, Ae), n.set(1, 2, Ne), n.set(2, 0, Le), n.set(2, 1, Ve), n.set(2, 2, ze), n;\n }\n mmulStrassen(t) {\n t = j.checkMatrix(t);\n let n = this.clone(), e = n.rows, s = n.columns, r = t.rows, o = t.columns;\n s !== r && console.warn(\n `Multiplying ${e} x ${s} and ${r} x ${o} matrix: dimensions do not match.`\n );\n function h(a, g, w) {\n let m = a.rows, d = a.columns;\n if (m === g && d === w)\n return a;\n {\n let P = v.zeros(g, w);\n return P = P.setSubMatrix(a, 0, 0), P;\n }\n }\n let u = Math.max(e, r), l = Math.max(s, o);\n n = h(n, u, l), t = h(t, u, l);\n function c(a, g, w, m) {\n if (w <= 512 || m <= 512)\n return a.mmul(g);\n w % 2 === 1 && m % 2 === 1 ? (a = h(a, w + 1, m + 1), g = h(g, w + 1, m + 1)) : w % 2 === 1 ? (a = h(a, w + 1, m), g = h(g, w + 1, m)) : m % 2 === 1 && (a = h(a, w, m + 1), g = h(g, w, m + 1));\n let d = parseInt(a.rows / 2, 10), P = parseInt(a.columns / 2, 10), f = a.subMatrix(0, d - 1, 0, P - 1), p = g.subMatrix(0, d - 1, 0, P - 1), y = a.subMatrix(0, d - 1, P, a.columns - 1), M = g.subMatrix(0, d - 1, P, g.columns - 1), b = a.subMatrix(d, a.rows - 1, 0, P - 1), x = g.subMatrix(d, g.rows - 1, 0, P - 1), k = a.subMatrix(d, a.rows - 1, P, a.columns - 1), S = g.subMatrix(d, g.rows - 1, P, g.columns - 1), _ = c(\n v.add(f, k),\n v.add(p, S),\n d,\n P\n ), F = c(v.add(b, k), p, d, P), B = c(f, v.sub(M, S), d, P), K = c(k, v.sub(x, p), d, P), Q = c(v.add(f, y), S, d, P), Z = c(\n v.sub(b, f),\n v.add(p, M),\n d,\n P\n ), $ = c(\n v.sub(y, k),\n v.add(x, S),\n d,\n P\n ), N = v.add(_, K);\n N.sub(Q), N.add($);\n let dt = v.add(B, Q), H = v.add(F, K), rt = v.sub(_, F);\n rt.add(B), rt.add(Z);\n let L = v.zeros(2 * N.rows, 2 * N.columns);\n return L = L.setSubMatrix(N, 0, 0), L = L.setSubMatrix(dt, N.rows, 0), L = L.setSubMatrix(H, 0, N.columns), L = L.setSubMatrix(rt, N.rows, N.columns), L.subMatrix(0, w - 1, 0, m - 1);\n }\n return c(n, t, u, l);\n }\n scaleRows(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: e = 1 } = t;\n if (!Number.isFinite(n))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e))\n throw new TypeError(\"max must be a number\");\n if (n >= e)\n throw new RangeError(\"min must be smaller than max\");\n let s = new j(this.rows, this.columns);\n for (let r = 0; r < this.rows; r++) {\n const o = this.getRow(r);\n o.length > 0 && Kt(o, { min: n, max: e, output: o }), s.setRow(r, o);\n }\n return s;\n }\n scaleColumns(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: e = 1 } = t;\n if (!Number.isFinite(n))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e))\n throw new TypeError(\"max must be a number\");\n if (n >= e)\n throw new RangeError(\"min must be smaller than max\");\n let s = new j(this.rows, this.columns);\n for (let r = 0; r < this.columns; r++) {\n const o = this.getColumn(r);\n o.length && Kt(o, {\n min: n,\n max: e,\n output: o\n }), s.setColumn(r, o);\n }\n return s;\n }\n flipRows() {\n const t = Math.ceil(this.columns / 2);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < t; e++) {\n let s = this.get(n, e), r = this.get(n, this.columns - 1 - e);\n this.set(n, e, r), this.set(n, this.columns - 1 - e, s);\n }\n return this;\n }\n flipColumns() {\n const t = Math.ceil(this.rows / 2);\n for (let n = 0; n < this.columns; n++)\n for (let e = 0; e < t; e++) {\n let s = this.get(e, n), r = this.get(this.rows - 1 - e, n);\n this.set(e, n, r), this.set(this.rows - 1 - e, n, s);\n }\n return this;\n }\n kroneckerProduct(t) {\n t = j.checkMatrix(t);\n let n = this.rows, e = this.columns, s = t.rows, r = t.columns, o = new j(n * s, e * r);\n for (let h = 0; h < n; h++)\n for (let u = 0; u < e; u++)\n for (let l = 0; l < s; l++)\n for (let c = 0; c < r; c++)\n o.set(s * h + l, r * u + c, this.get(h, u) * t.get(l, c));\n return o;\n }\n kroneckerSum(t) {\n if (t = j.checkMatrix(t), !this.isSquare() || !t.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let n = this.rows, e = t.rows, s = this.kroneckerProduct(j.eye(e, e)), r = j.eye(n, n).kroneckerProduct(t);\n return s.add(r);\n }\n transpose() {\n let t = new j(this.columns, this.rows);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.set(e, n, this.get(n, e));\n return t;\n }\n sortRows(t = Ht) {\n for (let n = 0; n < this.rows; n++)\n this.setRow(n, this.getRow(n).sort(t));\n return this;\n }\n sortColumns(t = Ht) {\n for (let n = 0; n < this.columns; n++)\n this.setColumn(n, this.getColumn(n).sort(t));\n return this;\n }\n subMatrix(t, n, e, s) {\n Zt(this, t, n, e, s);\n let r = new j(\n n - t + 1,\n s - e + 1\n );\n for (let o = t; o <= n; o++)\n for (let h = e; h <= s; h++)\n r.set(o - t, h - e, this.get(o, h));\n return r;\n }\n subMatrixRow(t, n, e) {\n if (n === void 0 && (n = 0), e === void 0 && (e = this.columns - 1), n > e || n < 0 || n >= this.columns || e < 0 || e >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let s = new j(t.length, e - n + 1);\n for (let r = 0; r < t.length; r++)\n for (let o = n; o <= e; o++) {\n if (t[r] < 0 || t[r] >= this.rows)\n throw new RangeError(`Row index out of range: ${t[r]}`);\n s.set(r, o - n, this.get(t[r], o));\n }\n return s;\n }\n subMatrixColumn(t, n, e) {\n if (n === void 0 && (n = 0), e === void 0 && (e = this.rows - 1), n > e || n < 0 || n >= this.rows || e < 0 || e >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let s = new j(e - n + 1, t.length);\n for (let r = 0; r < t.length; r++)\n for (let o = n; o <= e; o++) {\n if (t[r] < 0 || t[r] >= this.columns)\n throw new RangeError(`Column index out of range: ${t[r]}`);\n s.set(o - n, r, this.get(o, t[r]));\n }\n return s;\n }\n setSubMatrix(t, n, e) {\n if (t = j.checkMatrix(t), t.isEmpty())\n return this;\n let s = n + t.rows - 1, r = e + t.columns - 1;\n Zt(this, n, s, e, r);\n for (let o = 0; o < t.rows; o++)\n for (let h = 0; h < t.columns; h++)\n this.set(n + o, e + h, t.get(o, h));\n return this;\n }\n selection(t, n) {\n an(this, t), cn(this, n);\n let e = new j(t.length, n.length);\n for (let s = 0; s < t.length; s++) {\n let r = t[s];\n for (let o = 0; o < n.length; o++) {\n let h = n[o];\n e.set(s, o, this.get(r, h));\n }\n }\n return e;\n }\n trace() {\n let t = Math.min(this.rows, this.columns), n = 0;\n for (let e = 0; e < t; e++)\n n += this.get(e, e);\n return n;\n }\n clone() {\n let t = new j(this.rows, this.columns);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.set(n, e, this.get(n, e));\n return t;\n }\n sum(t) {\n switch (t) {\n case \"row\":\n return fn(this);\n case \"column\":\n return gn(this);\n case void 0:\n return mn(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n product(t) {\n switch (t) {\n case \"row\":\n return pn(this);\n case \"column\":\n return wn(this);\n case void 0:\n return dn(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n mean(t) {\n const n = this.sum(t);\n switch (t) {\n case \"row\": {\n for (let e = 0; e < this.rows; e++)\n n[e] /= this.columns;\n return n;\n }\n case \"column\": {\n for (let e = 0; e < this.columns; e++)\n n[e] /= this.rows;\n return n;\n }\n case void 0:\n return n / this.size;\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n variance(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: e = !0, mean: s = this.mean(t) } = n;\n if (typeof e != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (t) {\n case \"row\": {\n if (!z(s))\n throw new TypeError(\"mean must be an array\");\n return yn(this, e, s);\n }\n case \"column\": {\n if (!z(s))\n throw new TypeError(\"mean must be an array\");\n return Pn(this, e, s);\n }\n case void 0: {\n if (typeof s != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Mn(this, e, s);\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n standardDeviation(t, n) {\n typeof t == \"object\" && (n = t, t = void 0);\n const e = this.variance(t, n);\n if (t === void 0)\n return Math.sqrt(e);\n for (let s = 0; s < e.length; s++)\n e[s] = Math.sqrt(e[s]);\n return e;\n }\n center(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: e = this.mean(t) } = n;\n switch (t) {\n case \"row\": {\n if (!z(e))\n throw new TypeError(\"center must be an array\");\n return En(this, e), this;\n }\n case \"column\": {\n if (!z(e))\n throw new TypeError(\"center must be an array\");\n return Sn(this, e), this;\n }\n case void 0: {\n if (typeof e != \"number\")\n throw new TypeError(\"center must be a number\");\n return bn(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n scale(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n let e = n.scale;\n switch (t) {\n case \"row\": {\n if (e === void 0)\n e = jn(this);\n else if (!z(e))\n throw new TypeError(\"scale must be an array\");\n return vn(this, e), this;\n }\n case \"column\": {\n if (e === void 0)\n e = kn(this);\n else if (!z(e))\n throw new TypeError(\"scale must be an array\");\n return In(this, e), this;\n }\n case void 0: {\n if (e === void 0)\n e = xn(this);\n else if (typeof e != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Rn(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n toString(t) {\n return we(this, t);\n }\n}\nv.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (v.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = on);\nfunction Ht(i, t) {\n return i - t;\n}\nfunction _n(i) {\n return i.every((t) => typeof t == \"number\");\n}\nv.random = v.rand;\nv.randomInt = v.randInt;\nv.diagonal = v.diag;\nv.prototype.diagonal = v.prototype.diag;\nv.identity = v.eye;\nv.prototype.negate = v.prototype.neg;\nv.prototype.tensorProduct = v.prototype.kroneckerProduct;\nclass j extends v {\n constructor(t, n) {\n if (super(), j.isMatrix(t))\n return t.clone();\n if (Number.isInteger(t) && t >= 0)\n if (this.data = [], Number.isInteger(n) && n >= 0)\n for (let e = 0; e < t; e++)\n this.data.push(new Float64Array(n));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n else if (z(t)) {\n const e = t;\n if (t = e.length, n = t ? e[0].length : 0, typeof n != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let s = 0; s < t; s++) {\n if (e[s].length !== n)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!_n(e[s]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(e[s]));\n }\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n this.rows = t, this.columns = n;\n }\n set(t, n, e) {\n return this.data[t][n] = e, this;\n }\n get(t, n) {\n return this.data[t][n];\n }\n removeRow(t) {\n return Y(this, t), this.data.splice(t, 1), this.rows -= 1, this;\n }\n addRow(t, n) {\n return n === void 0 && (n = t, t = this.rows), Y(this, t, !0), n = Float64Array.from(lt(this, n)), this.data.splice(t, 0, n), this.rows += 1, this;\n }\n removeColumn(t) {\n X(this, t);\n for (let n = 0; n < this.rows; n++) {\n const e = new Float64Array(this.columns - 1);\n for (let s = 0; s < t; s++)\n e[s] = this.data[n][s];\n for (let s = t + 1; s < this.columns; s++)\n e[s - 1] = this.data[n][s];\n this.data[n] = e;\n }\n return this.columns -= 1, this;\n }\n addColumn(t, n) {\n typeof n > \"u\" && (n = t, t = this.columns), X(this, t, !0), n = ut(this, n);\n for (let e = 0; e < this.rows; e++) {\n const s = new Float64Array(this.columns + 1);\n let r = 0;\n for (; r < t; r++)\n s[r] = this.data[e][r];\n for (s[r++] = n[e]; r < this.columns + 1; r++)\n s[r] = this.data[e][r - 1];\n this.data[e] = s;\n }\n return this.columns += 1, this;\n }\n}\nun(v, j);\nclass Fn extends v {\n constructor(t) {\n super(), this.data = t, this.rows = t.length, this.columns = t[0].length;\n }\n set(t, n, e) {\n return this.data[t][n] = e, this;\n }\n get(t, n) {\n return this.data[t][n];\n }\n}\nfunction te(i, t) {\n let n = 0;\n return Math.abs(i) > Math.abs(t) ? (n = t / i, Math.abs(i) * Math.sqrt(1 + n * n)) : t !== 0 ? (n = i / t, Math.abs(t) * Math.sqrt(1 + n * n)) : 0;\n}\nclass Tn {\n constructor(t, n = {}) {\n const { assumeSymmetric: e = !1 } = n;\n if (t = Fn.checkMatrix(t), !t.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (t.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let s = t.columns, r = new j(s, s), o = new Float64Array(s), h = new Float64Array(s), u = t, l, c, a = !1;\n if (e ? a = !0 : a = t.isSymmetric(), a) {\n for (l = 0; l < s; l++)\n for (c = 0; c < s; c++)\n r.set(l, c, u.get(l, c));\n Cn(s, h, o, r), $n(s, h, o, r);\n } else {\n let g = new j(s, s), w = new Float64Array(s);\n for (c = 0; c < s; c++)\n for (l = 0; l < s; l++)\n g.set(l, c, u.get(l, c));\n qn(s, g, w, r), Bn(s, h, o, r, g);\n }\n this.n = s, this.e = h, this.d = o, this.V = r;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let t = this.n, n = this.e, e = this.d, s = new j(t, t), r, o;\n for (r = 0; r < t; r++) {\n for (o = 0; o < t; o++)\n s.set(r, o, 0);\n s.set(r, r, e[r]), n[r] > 0 ? s.set(r, r + 1, n[r]) : n[r] < 0 && s.set(r, r - 1, n[r]);\n }\n return s;\n }\n}\nfunction Cn(i, t, n, e) {\n let s, r, o, h, u, l, c, a;\n for (u = 0; u < i; u++)\n n[u] = e.get(i - 1, u);\n for (h = i - 1; h > 0; h--) {\n for (a = 0, o = 0, l = 0; l < h; l++)\n a = a + Math.abs(n[l]);\n if (a === 0)\n for (t[h] = n[h - 1], u = 0; u < h; u++)\n n[u] = e.get(h - 1, u), e.set(h, u, 0), e.set(u, h, 0);\n else {\n for (l = 0; l < h; l++)\n n[l] /= a, o += n[l] * n[l];\n for (s = n[h - 1], r = Math.sqrt(o), s > 0 && (r = -r), t[h] = a * r, o = o - s * r, n[h - 1] = s - r, u = 0; u < h; u++)\n t[u] = 0;\n for (u = 0; u < h; u++) {\n for (s = n[u], e.set(u, h, s), r = t[u] + e.get(u, u) * s, l = u + 1; l <= h - 1; l++)\n r += e.get(l, u) * n[l], t[l] += e.get(l, u) * s;\n t[u] = r;\n }\n for (s = 0, u = 0; u < h; u++)\n t[u] /= o, s += t[u] * n[u];\n for (c = s / (o + o), u = 0; u < h; u++)\n t[u] -= c * n[u];\n for (u = 0; u < h; u++) {\n for (s = n[u], r = t[u], l = u; l <= h - 1; l++)\n e.set(l, u, e.get(l, u) - (s * t[l] + r * n[l]));\n n[u] = e.get(h - 1, u), e.set(h, u, 0);\n }\n }\n n[h] = o;\n }\n for (h = 0; h < i - 1; h++) {\n if (e.set(i - 1, h, e.get(h, h)), e.set(h, h, 1), o = n[h + 1], o !== 0) {\n for (l = 0; l <= h; l++)\n n[l] = e.get(l, h + 1) / o;\n for (u = 0; u <= h; u++) {\n for (r = 0, l = 0; l <= h; l++)\n r += e.get(l, h + 1) * e.get(l, u);\n for (l = 0; l <= h; l++)\n e.set(l, u, e.get(l, u) - r * n[l]);\n }\n }\n for (l = 0; l <= h; l++)\n e.set(l, h + 1, 0);\n }\n for (u = 0; u < i; u++)\n n[u] = e.get(i - 1, u), e.set(i - 1, u, 0);\n e.set(i - 1, i - 1, 1), t[0] = 0;\n}\nfunction $n(i, t, n, e) {\n let s, r, o, h, u, l, c, a, g, w, m, d, P, f, p, y;\n for (o = 1; o < i; o++)\n t[o - 1] = t[o];\n t[i - 1] = 0;\n let M = 0, b = 0, x = Number.EPSILON;\n for (l = 0; l < i; l++) {\n for (b = Math.max(b, Math.abs(n[l]) + Math.abs(t[l])), c = l; c < i && !(Math.abs(t[c]) <= x * b); )\n c++;\n if (c > l)\n do {\n for (s = n[l], a = (n[l + 1] - s) / (2 * t[l]), g = te(a, 1), a < 0 && (g = -g), n[l] = t[l] / (a + g), n[l + 1] = t[l] * (a + g), w = n[l + 1], r = s - n[l], o = l + 2; o < i; o++)\n n[o] -= r;\n for (M = M + r, a = n[c], m = 1, d = m, P = m, f = t[l + 1], p = 0, y = 0, o = c - 1; o >= l; o--)\n for (P = d, d = m, y = p, s = m * t[o], r = m * a, g = te(a, t[o]), t[o + 1] = p * g, p = t[o] / g, m = a / g, a = m * n[o] - p * s, n[o + 1] = r + p * (m * s + p * n[o]), u = 0; u < i; u++)\n r = e.get(u, o + 1), e.set(u, o + 1, p * e.get(u, o) + m * r), e.set(u, o, m * e.get(u, o) - p * r);\n a = -p * y * P * f * t[l] / w, t[l] = p * a, n[l] = m * a;\n } while (Math.abs(t[l]) > x * b);\n n[l] = n[l] + M, t[l] = 0;\n }\n for (o = 0; o < i - 1; o++) {\n for (u = o, a = n[o], h = o + 1; h < i; h++)\n n[h] < a && (u = h, a = n[h]);\n if (u !== o)\n for (n[u] = n[o], n[o] = a, h = 0; h < i; h++)\n a = e.get(h, o), e.set(h, o, e.get(h, u)), e.set(h, u, a);\n }\n}\nfunction qn(i, t, n, e) {\n let s = 0, r = i - 1, o, h, u, l, c, a, g;\n for (a = s + 1; a <= r - 1; a++) {\n for (g = 0, l = a; l <= r; l++)\n g = g + Math.abs(t.get(l, a - 1));\n if (g !== 0) {\n for (u = 0, l = r; l >= a; l--)\n n[l] = t.get(l, a - 1) / g, u += n[l] * n[l];\n for (h = Math.sqrt(u), n[a] > 0 && (h = -h), u = u - n[a] * h, n[a] = n[a] - h, c = a; c < i; c++) {\n for (o = 0, l = r; l >= a; l--)\n o += n[l] * t.get(l, c);\n for (o = o / u, l = a; l <= r; l++)\n t.set(l, c, t.get(l, c) - o * n[l]);\n }\n for (l = 0; l <= r; l++) {\n for (o = 0, c = r; c >= a; c--)\n o += n[c] * t.get(l, c);\n for (o = o / u, c = a; c <= r; c++)\n t.set(l, c, t.get(l, c) - o * n[c]);\n }\n n[a] = g * n[a], t.set(a, a - 1, g * h);\n }\n }\n for (l = 0; l < i; l++)\n for (c = 0; c < i; c++)\n e.set(l, c, l === c ? 1 : 0);\n for (a = r - 1; a >= s + 1; a--)\n if (t.get(a, a - 1) !== 0) {\n for (l = a + 1; l <= r; l++)\n n[l] = t.get(l, a - 1);\n for (c = a; c <= r; c++) {\n for (h = 0, l = a; l <= r; l++)\n h += n[l] * e.get(l, c);\n for (h = h / n[a] / t.get(a, a - 1), l = a; l <= r; l++)\n e.set(l, c, e.get(l, c) + h * n[l]);\n }\n }\n}\nfunction Bn(i, t, n, e, s) {\n let r = i - 1, o = 0, h = i - 1, u = Number.EPSILON, l = 0, c = 0, a = 0, g = 0, w = 0, m = 0, d = 0, P = 0, f, p, y, M, b, x, k, S, _, F, B, K, Q, Z, $;\n for (f = 0; f < i; f++)\n for ((f < o || f > h) && (n[f] = s.get(f, f), t[f] = 0), p = Math.max(f - 1, 0); p < i; p++)\n c = c + Math.abs(s.get(f, p));\n for (; r >= o; ) {\n for (M = r; M > o && (m = Math.abs(s.get(M - 1, M - 1)) + Math.abs(s.get(M, M)), m === 0 && (m = c), !(Math.abs(s.get(M, M - 1)) < u * m)); )\n M--;\n if (M === r)\n s.set(r, r, s.get(r, r) + l), n[r] = s.get(r, r), t[r] = 0, r--, P = 0;\n else if (M === r - 1) {\n if (k = s.get(r, r - 1) * s.get(r - 1, r), a = (s.get(r - 1, r - 1) - s.get(r, r)) / 2, g = a * a + k, d = Math.sqrt(Math.abs(g)), s.set(r, r, s.get(r, r) + l), s.set(r - 1, r - 1, s.get(r - 1, r - 1) + l), S = s.get(r, r), g >= 0) {\n for (d = a >= 0 ? a + d : a - d, n[r - 1] = S + d, n[r] = n[r - 1], d !== 0 && (n[r] = S - k / d), t[r - 1] = 0, t[r] = 0, S = s.get(r, r - 1), m = Math.abs(S) + Math.abs(d), a = S / m, g = d / m, w = Math.sqrt(a * a + g * g), a = a / w, g = g / w, p = r - 1; p < i; p++)\n d = s.get(r - 1, p), s.set(r - 1, p, g * d + a * s.get(r, p)), s.set(r, p, g * s.get(r, p) - a * d);\n for (f = 0; f <= r; f++)\n d = s.get(f, r - 1), s.set(f, r - 1, g * d + a * s.get(f, r)), s.set(f, r, g * s.get(f, r) - a * d);\n for (f = o; f <= h; f++)\n d = e.get(f, r - 1), e.set(f, r - 1, g * d + a * e.get(f, r)), e.set(f, r, g * e.get(f, r) - a * d);\n } else\n n[r - 1] = S + a, n[r] = S + a, t[r - 1] = d, t[r] = -d;\n r = r - 2, P = 0;\n } else {\n if (S = s.get(r, r), _ = 0, k = 0, M < r && (_ = s.get(r - 1, r - 1), k = s.get(r, r - 1) * s.get(r - 1, r)), P === 10) {\n for (l += S, f = o; f <= r; f++)\n s.set(f, f, s.get(f, f) - S);\n m = Math.abs(s.get(r, r - 1)) + Math.abs(s.get(r - 1, r - 2)), S = _ = 0.75 * m, k = -0.4375 * m * m;\n }\n if (P === 30 && (m = (_ - S) / 2, m = m * m + k, m > 0)) {\n for (m = Math.sqrt(m), _ < S && (m = -m), m = S - k / ((_ - S) / 2 + m), f = o; f <= r; f++)\n s.set(f, f, s.get(f, f) - m);\n l += m, S = _ = k = 0.964;\n }\n for (P = P + 1, b = r - 2; b >= M && (d = s.get(b, b), w = S - d, m = _ - d, a = (w * m - k) / s.get(b + 1, b) + s.get(b, b + 1), g = s.get(b + 1, b + 1) - d - w - m, w = s.get(b + 2, b + 1), m = Math.abs(a) + Math.abs(g) + Math.abs(w), a = a / m, g = g / m, w = w / m, !(b === M || Math.abs(s.get(b, b - 1)) * (Math.abs(g) + Math.abs(w)) < u * (Math.abs(a) * (Math.abs(s.get(b - 1, b - 1)) + Math.abs(d) + Math.abs(s.get(b + 1, b + 1)))))); )\n b--;\n for (f = b + 2; f <= r; f++)\n s.set(f, f - 2, 0), f > b + 2 && s.set(f, f - 3, 0);\n for (y = b; y <= r - 1 && (Z = y !== r - 1, y !== b && (a = s.get(y, y - 1), g = s.get(y + 1, y - 1), w = Z ? s.get(y + 2, y - 1) : 0, S = Math.abs(a) + Math.abs(g) + Math.abs(w), S !== 0 && (a = a / S, g = g / S, w = w / S)), S !== 0); y++)\n if (m = Math.sqrt(a * a + g * g + w * w), a < 0 && (m = -m), m !== 0) {\n for (y !== b ? s.set(y, y - 1, -m * S) : M !== b && s.set(y, y - 1, -s.get(y, y - 1)), a = a + m, S = a / m, _ = g / m, d = w / m, g = g / a, w = w / a, p = y; p < i; p++)\n a = s.get(y, p) + g * s.get(y + 1, p), Z && (a = a + w * s.get(y + 2, p), s.set(y + 2, p, s.get(y + 2, p) - a * d)), s.set(y, p, s.get(y, p) - a * S), s.set(y + 1, p, s.get(y + 1, p) - a * _);\n for (f = 0; f <= Math.min(r, y + 3); f++)\n a = S * s.get(f, y) + _ * s.get(f, y + 1), Z && (a = a + d * s.get(f, y + 2), s.set(f, y + 2, s.get(f, y + 2) - a * w)), s.set(f, y, s.get(f, y) - a), s.set(f, y + 1, s.get(f, y + 1) - a * g);\n for (f = o; f <= h; f++)\n a = S * e.get(f, y) + _ * e.get(f, y + 1), Z && (a = a + d * e.get(f, y + 2), e.set(f, y + 2, e.get(f, y + 2) - a * w)), e.set(f, y, e.get(f, y) - a), e.set(f, y + 1, e.get(f, y + 1) - a * g);\n }\n }\n }\n if (c !== 0) {\n for (r = i - 1; r >= 0; r--)\n if (a = n[r], g = t[r], g === 0)\n for (M = r, s.set(r, r, 1), f = r - 1; f >= 0; f--) {\n for (k = s.get(f, f) - a, w = 0, p = M; p <= r; p++)\n w = w + s.get(f, p) * s.get(p, r);\n if (t[f] < 0)\n d = k, m = w;\n else if (M = f, t[f] === 0 ? s.set(f, r, k !== 0 ? -w / k : -w / (u * c)) : (S = s.get(f, f + 1), _ = s.get(f + 1, f), g = (n[f] - a) * (n[f] - a) + t[f] * t[f], x = (S * m - d * w) / g, s.set(f, r, x), s.set(\n f + 1,\n r,\n Math.abs(S) > Math.abs(d) ? (-w - k * x) / S : (-m - _ * x) / d\n )), x = Math.abs(s.get(f, r)), u * x * x > 1)\n for (p = f; p <= r; p++)\n s.set(p, r, s.get(p, r) / x);\n }\n else if (g < 0)\n for (M = r - 1, Math.abs(s.get(r, r - 1)) > Math.abs(s.get(r - 1, r)) ? (s.set(r - 1, r - 1, g / s.get(r, r - 1)), s.set(r - 1, r, -(s.get(r, r) - a) / s.get(r, r - 1))) : ($ = St(0, -s.get(r - 1, r), s.get(r - 1, r - 1) - a, g), s.set(r - 1, r - 1, $[0]), s.set(r - 1, r, $[1])), s.set(r, r - 1, 0), s.set(r, r, 1), f = r - 2; f >= 0; f--) {\n for (F = 0, B = 0, p = M; p <= r; p++)\n F = F + s.get(f, p) * s.get(p, r - 1), B = B + s.get(f, p) * s.get(p, r);\n if (k = s.get(f, f) - a, t[f] < 0)\n d = k, w = F, m = B;\n else if (M = f, t[f] === 0 ? ($ = St(-F, -B, k, g), s.set(f, r - 1, $[0]), s.set(f, r, $[1])) : (S = s.get(f, f + 1), _ = s.get(f + 1, f), K = (n[f] - a) * (n[f] - a) + t[f] * t[f] - g * g, Q = (n[f] - a) * 2 * g, K === 0 && Q === 0 && (K = u * c * (Math.abs(k) + Math.abs(g) + Math.abs(S) + Math.abs(_) + Math.abs(d))), $ = St(\n S * w - d * F + g * B,\n S * m - d * B - g * F,\n K,\n Q\n ), s.set(f, r - 1, $[0]), s.set(f, r, $[1]), Math.abs(S) > Math.abs(d) + Math.abs(g) ? (s.set(\n f + 1,\n r - 1,\n (-F - k * s.get(f, r - 1) + g * s.get(f, r)) / S\n ), s.set(\n f + 1,\n r,\n (-B - k * s.get(f, r) - g * s.get(f, r - 1)) / S\n )) : ($ = St(\n -w - _ * s.get(f, r - 1),\n -m - _ * s.get(f, r),\n d,\n g\n ), s.set(f + 1, r - 1, $[0]), s.set(f + 1, r, $[1]))), x = Math.max(Math.abs(s.get(f, r - 1)), Math.abs(s.get(f, r))), u * x * x > 1)\n for (p = f; p <= r; p++)\n s.set(p, r - 1, s.get(p, r - 1) / x), s.set(p, r, s.get(p, r) / x);\n }\n for (f = 0; f < i; f++)\n if (f < o || f > h)\n for (p = f; p < i; p++)\n e.set(f, p, s.get(f, p));\n for (p = i - 1; p >= o; p--)\n for (f = o; f <= h; f++) {\n for (d = 0, y = o; y <= Math.min(p, h); y++)\n d = d + e.get(f, y) * s.get(y, p);\n e.set(f, p, d);\n }\n }\n}\nfunction St(i, t, n, e) {\n let s, r;\n return Math.abs(n) > Math.abs(e) ? (s = e / n, r = n + s * e, [(i + s * t) / r, (t - s * i) / r]) : (s = n / e, r = e + s * n, [(s * i + t) / r, (s * t - i) / r]);\n}\nfunction de(i, t = 1e-9) {\n if (i[i.length - 1] == 0)\n return de(i.slice(0, -1), t);\n const n = new j([\n i.slice(0, -1).reverse().map((s) => -s / i[i.length - 1]),\n ...Array.from({ length: i.length - 2 }, (s, r) => {\n const o = new Array(i.length - 1).fill(0);\n return o[r] = 1, o;\n })\n ]), e = new Tn(n);\n return e.realEigenvalues.filter(\n (s, r) => Math.abs(e.imaginaryEigenvalues[r]) < t\n );\n}\nfunction ye(i, t) {\n const n = Math.max(i.precision, t.precision), e = i.coefficients, s = e.x2, r = e.xy, o = e.y2, h = e.x, u = e.y, l = e.c, c = t.coefficients, a = c.x2, g = c.xy, w = c.y2, m = c.x, d = c.y, P = c.c, f = {\n z0: l * s * m * m + s * s * P * P - h * s * m * P + a * a * l * l - 2 * s * P * a * l - h * m * a * l + a * h * h * P,\n z1: d * h * h * a - P * m * s * r - 2 * s * P * a * u - l * a * g * h + 2 * m * g * s * l + 2 * d * P * s * s + m * m * s * u - d * m * s * h - 2 * s * d * a * l - l * a * m * r + 2 * l * u * a * a - P * g * s * h - u * a * m * h + 2 * P * r * a * h,\n z2: d * d * s * s + 2 * w * P * s * s - u * a * m * r + P * a * r * r - u * a * g * h - P * g * s * r - 2 * s * d * a * u + 2 * m * g * s * u - w * m * s * h - 2 * s * w * a * l + g * g * s * l + 2 * d * r * a * h + u * u * a * a - o * a * m * h - d * g * s * h + 2 * l * o * a * a - l * a * g * r + w * h * h * a + m * m * s * o - d * m * s * r - 2 * s * P * a * o,\n z3: -2 * s * a * o * d + d * a * r * r + 2 * w * r * a * h - o * a * g * h + g * g * s * u - d * g * s * r - 2 * s * w * a * u - u * a * g * r - w * g * s * h + 2 * d * w * s * s + 2 * u * o * a * a - o * a * m * r + 2 * m * g * s * o - w * m * s * r,\n z4: s * s * w * w - 2 * s * w * a * o + a * a * o * o - r * s * g * w - r * g * a * o + r * r * a * w + o * s * g * g\n }, y = de(\n [f.z0, f.z1, f.z2, f.z3, f.z4],\n n\n ).flatMap((M) => {\n const b = s * g * M + s * m - a * r * M - a * h;\n if (b)\n return [[-(s * P + s * w * M * M - a * o * M * M + s * d * M - a * u * M - a * l) / b, M]];\n const x = r * M + h, k = -x / (2 * s), S = o * M * M + u * M + l, _ = x * x / (4 * s * s) - S / s;\n if (Math.abs(_) < n)\n return [[k, M]];\n if (_ > 0) {\n const F = Math.sqrt(_);\n return [[k + F, M], [k - F, M]];\n }\n return [];\n });\n return ct(y, n);\n}\nfunction ee(i, t) {\n return ye(i, t).filter((e) => i.isOnSegment(e) && t.isOnSegment(e));\n}\nconst On = (i) => {\n const {\n firstPoint: t,\n lastPoint: n,\n center: e,\n majorRadius: s,\n minorRadius: r,\n tiltAngle: o,\n clockwise: h\n } = i;\n return new C(\n n,\n t,\n e,\n s,\n r,\n o,\n h,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, An = (i, t) => {\n if (i.isSame(t))\n return [i];\n const n = (s, r) => new C(\n s,\n r,\n i.center,\n i.majorRadius,\n i.minorRadius,\n i.tiltAngle,\n i.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), e = ct(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((s) => s !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((s, r) => i.pointToParam(s) - i.pointToParam(r));\n if (e.length === 0)\n return [];\n if (e.length === 1)\n return [];\n if (e.length === 2)\n return i.isSame(On(t)) ? [] : [n(e[0], e[1])];\n if (e.length === 3) {\n const s = E(e[0], t.lastPoint) || E(e[0], t.firstPoint) ? 1 : 0;\n return [n(e[0 + s], e[1 + s])];\n } else if (e.length === 4)\n return [n(e[0], e[1]), n(e[2], e[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction Nn(i, t, n = !1) {\n const e = Math.max(i.precision, t.precision);\n return E(i.center, t.center) && Math.abs(i.majorRadius - t.majorRadius) < e && Math.abs(i.minorRadius - t.minorRadius) < e && (Math.abs(i.tiltAngle - t.tiltAngle) < e || Math.abs(Math.abs(i.tiltAngle - t.tiltAngle) - Math.PI) < e) ? n ? An(i, t) : [] : ye(i, t).filter((o) => i.isOnSegment(o) && t.isOnSegment(o));\n}\nfunction gs(i, t, n) {\n if (i instanceof R && t instanceof R) {\n const e = ge(\n i,\n t,\n !1,\n n\n );\n return e === null ? [] : [e];\n }\n if (i instanceof R && t instanceof I)\n return kt(i, t, n);\n if (i instanceof I && t instanceof R)\n return kt(t, i, n);\n if (i instanceof I && t instanceof I)\n return me(i, t, !1, n);\n throw new Error(\"Not implemented\");\n}\nfunction It(i, t, n) {\n if (i instanceof R && t instanceof R) {\n const e = ge(\n i,\n t,\n !0,\n n\n );\n return e === null ? { intersections: [], overlaps: [], count: 0 } : e instanceof R ? { intersections: [], overlaps: [e], count: 1 } : { intersections: [e], overlaps: [], count: 1 };\n }\n if (!i.boundingBox.overlaps(t.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (i instanceof R && t instanceof I) {\n const e = kt(i, t, n);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof I && t instanceof R) {\n const e = kt(t, i, n);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof I && t instanceof I) {\n const e = me(\n i,\n t,\n !0,\n n\n );\n return e.length ? e[0] instanceof I ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (i instanceof R && t instanceof C) {\n const e = qt(\n i,\n t,\n n\n );\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof R && i instanceof C) {\n const e = qt(\n t,\n i,\n n\n );\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof I && t instanceof C) {\n const e = ee(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof I && i instanceof C) {\n const e = ee(t, i);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof C && t instanceof C) {\n const e = Nn(\n i,\n t,\n !0\n );\n return e.length ? e[0] instanceof C ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Pe(i) {\n const t = [];\n for (let n = 0; n < i; n++)\n for (let e = 0; e <= n; e++)\n t.push([n, e]);\n return t;\n}\nfunction* Bt(i) {\n for (const [t, n] of Pe(i.length))\n t !== n && (yield [i[t], i[n]]);\n}\nclass Me extends _t {\n constructor(t, { ignoreChecks: n = !1 } = {}) {\n super(), this._boundingBox = null, n || Ee(t), this.segments = t;\n }\n get repr() {\n return this.segments.map((t) => t.repr).join(`\n`) + `\n`;\n }\n get info() {\n return this.repr;\n }\n get firstPoint() {\n return this.segments[0].firstPoint;\n }\n get lastPoint() {\n return this.segments[this.segments.length - 1].lastPoint;\n }\n get segmentsCount() {\n return this.segments.length;\n }\n onStroke(t) {\n return this.segments.some((n) => n.isOnSegment(t));\n }\n intersects(t) {\n return this.boundingBox.overlaps(t.boundingBox) ? this.segments.some(\n (n) => t.segments.some(\n (e) => It(n, e).count > 0\n )\n ) : !1;\n }\n overlappingSegments(t) {\n return this.segments.flatMap((n) => t.segments.flatMap((e) => n.boundingBox.overlaps(e.boundingBox) ? It(n, e).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let t = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((n) => {\n t = t.merge(n.boundingBox);\n }), this._boundingBox = t;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(i, t = \"Stroke\") {\n Pe(i.length).forEach(\n ([n, e]) => {\n if (n === e)\n return;\n const s = i[n], r = i[e], o = It(s, r), h = Math.max(s.precision, r.precision);\n if (o.count !== 0) {\n if (o.count === 1 && !o.overlaps.length) {\n const u = n - e, l = o.intersections[0];\n if (u === 1 && E(s.firstPoint, l, h) || u === -1 && E(s.lastPoint, l, h) || u === i.length - 1 && E(s.lastPoint, l, h) && E(r.firstPoint, l, h) || -u === i.length - 1 && E(s.firstPoint, l, h) && E(r.lastPoint, l, h))\n return;\n }\n if (!(o.count === 2 && i.length === 2 && (E(\n s.firstPoint,\n o.intersections[0],\n h\n ) && E(\n s.lastPoint,\n o.intersections[1],\n h\n ) || E(\n s.firstPoint,\n o.intersections[1],\n h\n ) && E(\n s.lastPoint,\n o.intersections[0],\n h\n ))))\n throw new Error(\n `${t} segments must not intersect, but segments ${s.info} and ${r.info} do at ${JSON.stringify(\n o.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ee(i, t = \"Stroke\") {\n if (i.length === 0)\n throw new Error(`${t} must have at least one segment`);\n nt([i.slice(0, -1), i.slice(1)]).forEach(\n ([n, e]) => {\n if (!E(n.lastPoint, e.firstPoint))\n throw new Error(\n `${t} segments must be connected, but ${n.info} and ${e.info} are not`\n );\n }\n ), Ln(i, t);\n}\nfunction ne(i, t) {\n return !!(i instanceof R && t instanceof R && Vt(i.V, t.V) || i instanceof I && t instanceof I && E(i.center, t.center) && i.radius - t.radius < i.precision);\n}\nfunction se(i, t) {\n if (i instanceof R && t instanceof R)\n return new R(i.firstPoint, t.lastPoint);\n if (i instanceof I && t instanceof I)\n return new I(\n i.firstPoint,\n t.lastPoint,\n i.center,\n i.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction Se(i) {\n let t = !1;\n const n = [];\n for (const e of i.segments) {\n if (n.length === 0) {\n n.push(e);\n continue;\n }\n const s = n[n.length - 1];\n ne(s, e) ? (t = !0, n.pop(), n.push(se(s, e))) : n.push(e);\n }\n if (E(i.firstPoint, i.lastPoint) && ne(\n n[0],\n n[n.length - 1]\n )) {\n t = !0;\n const e = n.pop();\n n[0] = se(e, n[0]);\n }\n return t ? n : null;\n}\nclass G extends Me {\n constructor() {\n super(...arguments), this.strokeType = \"STRAND\";\n }\n reverse() {\n const t = this.segments.map((n) => n.reverse());\n return t.reverse(), new G(t, { ignoreChecks: !0 });\n }\n clone() {\n return new G(\n this.segments.map((t) => t.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(t) {\n if (!E(this.lastPoint, t.firstPoint))\n throw console.error(this.repr, t.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new G([...this.segments, ...t.segments]);\n }\n simplify() {\n const t = Se(this);\n return t ? new G(t, { ignoreChecks: !0 }) : this;\n }\n transform(t) {\n return new G(\n this.segments.map((n) => n.transform(t)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst Vn = (i, t) => {\n const n = Ft(t, {\n V: [1, 0],\n firstPoint: i,\n precision: t.precision\n });\n if (n === \"parallel\")\n return 0;\n const { intersectionParam1: e, intersectionParam2: s } = n;\n if (!t.isValidParameter(e) || s <= -t.precision)\n return 0;\n if (Math.abs(e) < t.precision || Math.abs(e - 1) < t.precision) {\n const [, r] = t.midPoint;\n return i[1] - r < 0 ? 1 : 0;\n }\n return 1;\n};\nclass be {\n constructor(t) {\n this._count = 0, this.segment = t;\n }\n update(t, n = !1) {\n !n && !this.segment.isOnSegment(t) || (E(t, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : E(t, this.segment.lastPoint) ? this._count += this.segment.tangentAtLastPoint[1] > 0 ? 0 : 1 : this._count += 1);\n }\n get count() {\n return this._count;\n }\n}\nconst zn = (i, t) => {\n const n = t.precision, e = Math.abs(i[1] - t.center[1]);\n if (e > t.radius + n)\n return 0;\n const s = mt(i, t.center), r = t.radius * t.radius, o = n * n;\n if (Math.abs(s - r) < o && t.isOnSegment(i))\n return 0;\n const h = s - r > o;\n if (h && t.center[0] < i[0])\n return 0;\n const u = Math.sqrt(\n t.radius * t.radius - e * e\n ), l = new be(t);\n return l.update([t.center[0] + u, i[1]]), h && l.update([t.center[0] - u, i[1]]), l.count;\n}, Dn = (i, t) => {\n const n = t.boundingBox.xMax + t.boundingBox.width / 2, e = new R(i, [n, i[1]]), s = new be(t);\n return qt(e, t).forEach((r) => {\n s.update(r, !0);\n }), s.count;\n};\nfunction Un(i, t) {\n if (t instanceof R)\n return Vn(i, t);\n if (t instanceof I)\n return zn(i, t);\n if (t instanceof C)\n return Dn(i, t);\n throw new Error(\"Not implemented\");\n}\nclass et extends Me {\n constructor(t, { ignoreChecks: n = !1 } = {}) {\n super(t, { ignoreChecks: !0 }), this.strokeType = \"LOOP\", this._clockwise = null, n || Yn(t);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const t = this.segments.flatMap((e) => e instanceof R ? [e.firstPoint] : [e.firstPoint, e.paramPoint(0.5)]), n = t.map((e, s) => {\n const r = t[(s + 1) % t.length];\n return (r[0] - e[0]) * (r[1] + e[1]);\n }).reduce((e, s) => e + s, 0);\n this._clockwise = n > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new et(\n this.segments.map((t) => t.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const t = this.segments.map((n) => n.reverse());\n return t.reverse(), new et(t, { ignoreChecks: !0 });\n }\n transform(t) {\n return new et(\n this.segments.map((n) => n.transform(t)),\n { ignoreChecks: !0 }\n );\n }\n contains(t) {\n return this.onStroke(t) || !this.boundingBox.contains(t) ? !1 : this.segments.reduce((e, s) => e + Un(t, s), 0) % 2 === 1;\n }\n simplify() {\n const t = Se(this);\n return t ? new et(t, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Yn(i) {\n if (Ee(i, \"Loop\"), !E(i[0].firstPoint, i[i.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nfunction je(i) {\n if (i instanceof R)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint\n };\n if (i instanceof I)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n center: i.center,\n clockwise: i.clockwise\n };\n if (i instanceof C)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n center: i.center,\n clockwise: i.clockwise,\n majorRadius: i.majorRadius,\n minorRadius: i.minorRadius,\n tiltAngle: i.tiltAngle\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction Ot(i) {\n return {\n type: \"LOOP\",\n segments: i.segments.map(je)\n };\n}\nfunction ve(i) {\n return {\n type: \"FIGURE\",\n contour: Ot(i.contour),\n holes: i.holes.map(Ot)\n };\n}\nfunction Xn(i) {\n return {\n type: \"DIAGRAM\",\n figures: i.figures.map(ve)\n };\n}\nfunction ie(i) {\n if (i instanceof tt)\n return Xn(i);\n if (i instanceof U)\n return ve(i);\n if (i instanceof et)\n return Ot(i);\n if (i instanceof I || i instanceof R)\n return je(i);\n throw new Error(\"Unknown shape type\");\n}\nclass Gn {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(t, n) {\n let e = this.length++;\n for (; e > 0; ) {\n const s = e - 1 >> 1, r = this.values[s];\n if (n >= r)\n break;\n this.ids[e] = this.ids[s], this.values[e] = r, e = s;\n }\n this.ids[e] = t, this.values[e] = n;\n }\n pop() {\n if (this.length === 0)\n return;\n const t = this.ids[0];\n if (this.length--, this.length > 0) {\n const n = this.ids[0] = this.ids[this.length], e = this.values[0] = this.values[this.length], s = this.length >> 1;\n let r = 0;\n for (; r < s; ) {\n let o = (r << 1) + 1;\n const h = o + 1;\n let u = this.ids[o], l = this.values[o];\n const c = this.values[h];\n if (h < this.length && c < l && (o = h, u = this.ids[h], l = c), l >= e)\n break;\n this.ids[r] = u, this.values[r] = l, r = o;\n }\n this.ids[r] = n, this.values[r] = e;\n }\n return t;\n }\n peek() {\n if (this.length !== 0)\n return this.ids[0];\n }\n peekValue() {\n if (this.length !== 0)\n return this.values[0];\n }\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\nconst re = [\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n], Ct = 3;\nclass Dt {\n static from(t) {\n if (!t || t.byteLength === void 0 || t.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [n, e] = new Uint8Array(t, 0, 2);\n if (n !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n if (e >> 4 !== Ct)\n throw new Error(`Got v${e >> 4} data when expected v${Ct}.`);\n const [s] = new Uint16Array(t, 2, 1), [r] = new Uint32Array(t, 4, 1);\n return new Dt(r, s, re[e & 15], void 0, t);\n }\n constructor(t, n = 16, e = Float64Array, s = ArrayBuffer, r) {\n if (t === void 0)\n throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(t) || t <= 0)\n throw new Error(`Unexpected numItems value: ${t}.`);\n this.numItems = +t, this.nodeSize = Math.min(Math.max(+n, 2), 65535);\n let o = t, h = o;\n this._levelBounds = [o * 4];\n do\n o = Math.ceil(o / this.nodeSize), h += o, this._levelBounds.push(h * 4);\n while (o !== 1);\n this.ArrayType = e || Float64Array, this.IndexArrayType = h < 16384 ? Uint16Array : Uint32Array;\n const u = re.indexOf(this.ArrayType), l = h * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (u < 0)\n throw new Error(`Unexpected typed array class: ${e}.`);\n r && r.byteLength !== void 0 && !r.buffer ? (this.data = r, this._boxes = new this.ArrayType(this.data, 8, h * 4), this._indices = new this.IndexArrayType(this.data, 8 + l, h), this._pos = h * 4, this.minX = this._boxes[this._pos - 4], this.minY = this._boxes[this._pos - 3], this.maxX = this._boxes[this._pos - 2], this.maxY = this._boxes[this._pos - 1]) : (this.data = new s(8 + l + h * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, h * 4), this._indices = new this.IndexArrayType(this.data, 8 + l, h), this._pos = 0, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, new Uint8Array(this.data, 0, 2).set([251, (Ct << 4) + u]), new Uint16Array(this.data, 2, 1)[0] = n, new Uint32Array(this.data, 4, 1)[0] = t), this._queue = new Gn();\n }\n add(t, n, e, s) {\n const r = this._pos >> 2, o = this._boxes;\n return this._indices[r] = r, o[this._pos++] = t, o[this._pos++] = n, o[this._pos++] = e, o[this._pos++] = s, t < this.minX && (this.minX = t), n < this.minY && (this.minY = n), e > this.maxX && (this.maxX = e), s > this.maxY && (this.maxY = s), r;\n }\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const t = this._boxes;\n if (this.numItems <= this.nodeSize) {\n t[this._pos++] = this.minX, t[this._pos++] = this.minY, t[this._pos++] = this.maxX, t[this._pos++] = this.maxY;\n return;\n }\n const n = this.maxX - this.minX || 1, e = this.maxY - this.minY || 1, s = new Uint32Array(this.numItems), r = (1 << 16) - 1;\n for (let o = 0, h = 0; o < this.numItems; o++) {\n const u = t[h++], l = t[h++], c = t[h++], a = t[h++], g = Math.floor(r * ((u + c) / 2 - this.minX) / n), w = Math.floor(r * ((l + a) / 2 - this.minY) / e);\n s[o] = Jn(g, w);\n }\n At(s, t, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let o = 0, h = 0; o < this._levelBounds.length - 1; o++) {\n const u = this._levelBounds[o];\n for (; h < u; ) {\n const l = h;\n let c = t[h++], a = t[h++], g = t[h++], w = t[h++];\n for (let m = 1; m < this.nodeSize && h < u; m++)\n c = Math.min(c, t[h++]), a = Math.min(a, t[h++]), g = Math.max(g, t[h++]), w = Math.max(w, t[h++]);\n this._indices[this._pos >> 2] = l, t[this._pos++] = c, t[this._pos++] = a, t[this._pos++] = g, t[this._pos++] = w;\n }\n }\n }\n search(t, n, e, s, r) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let o = this._boxes.length - 4;\n const h = [], u = [];\n for (; o !== void 0; ) {\n const l = Math.min(o + this.nodeSize * 4, he(o, this._levelBounds));\n for (let c = o; c < l; c += 4) {\n if (e < this._boxes[c] || s < this._boxes[c + 1] || t > this._boxes[c + 2] || n > this._boxes[c + 3])\n continue;\n const a = this._indices[c >> 2] | 0;\n o >= this.numItems * 4 ? h.push(a) : (r === void 0 || r(a)) && u.push(a);\n }\n o = h.pop();\n }\n return u;\n }\n neighbors(t, n, e = 1 / 0, s = 1 / 0, r) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let o = this._boxes.length - 4;\n const h = this._queue, u = [], l = s * s;\n for (; o !== void 0; ) {\n const c = Math.min(o + this.nodeSize * 4, he(o, this._levelBounds));\n for (let a = o; a < c; a += 4) {\n const g = this._indices[a >> 2] | 0, w = oe(t, this._boxes[a], this._boxes[a + 2]), m = oe(n, this._boxes[a + 1], this._boxes[a + 3]), d = w * w + m * m;\n o >= this.numItems * 4 ? h.push(g << 1, d) : (r === void 0 || r(g)) && h.push((g << 1) + 1, d);\n }\n for (; h.length && h.peek() & 1; )\n if (h.peekValue() > l || (u.push(h.pop() >> 1), u.length === e))\n return h.clear(), u;\n o = h.pop() >> 1;\n }\n return h.clear(), u;\n }\n}\nfunction oe(i, t, n) {\n return i < t ? t - i : i <= n ? 0 : i - n;\n}\nfunction he(i, t) {\n let n = 0, e = t.length - 1;\n for (; n < e; ) {\n const s = n + e >> 1;\n t[s] > i ? e = s : n = s + 1;\n }\n return t[n];\n}\nfunction At(i, t, n, e, s, r) {\n if (Math.floor(e / r) >= Math.floor(s / r))\n return;\n const o = i[e + s >> 1];\n let h = e - 1, u = s + 1;\n for (; ; ) {\n do\n h++;\n while (i[h] < o);\n do\n u--;\n while (i[u] > o);\n if (h >= u)\n break;\n Wn(i, t, n, h, u);\n }\n At(i, t, n, e, u, r), At(i, t, n, u + 1, s, r);\n}\nfunction Wn(i, t, n, e, s) {\n const r = i[e];\n i[e] = i[s], i[s] = r;\n const o = 4 * e, h = 4 * s, u = t[o], l = t[o + 1], c = t[o + 2], a = t[o + 3];\n t[o] = t[h], t[o + 1] = t[h + 1], t[o + 2] = t[h + 2], t[o + 3] = t[h + 3], t[h] = u, t[h + 1] = l, t[h + 2] = c, t[h + 3] = a;\n const g = n[e];\n n[e] = n[s], n[s] = g;\n}\nfunction Jn(i, t) {\n let n = i ^ t, e = 65535 ^ n, s = 65535 ^ (i | t), r = i & (t ^ 65535), o = n | e >> 1, h = n >> 1 ^ n, u = s >> 1 ^ e & r >> 1 ^ s, l = n & s >> 1 ^ r >> 1 ^ r;\n n = o, e = h, s = u, r = l, o = n & n >> 2 ^ e & e >> 2, h = n & e >> 2 ^ e & (n ^ e) >> 2, u ^= n & s >> 2 ^ e & r >> 2, l ^= e & s >> 2 ^ (n ^ e) & r >> 2, n = o, e = h, s = u, r = l, o = n & n >> 4 ^ e & e >> 4, h = n & e >> 4 ^ e & (n ^ e) >> 4, u ^= n & s >> 4 ^ e & r >> 4, l ^= e & s >> 4 ^ (n ^ e) & r >> 4, n = o, e = h, s = u, r = l, u ^= n & s >> 8 ^ e & r >> 8, l ^= e & s >> 8 ^ (n ^ e) & r >> 8, n = u ^ u >> 1, e = l ^ l >> 1;\n let c = i ^ t, a = e | 65535 ^ (c | n);\n return c = (c | c << 8) & 16711935, c = (c | c << 4) & 252645135, c = (c | c << 2) & 858993459, c = (c | c << 1) & 1431655765, a = (a | a << 8) & 16711935, a = (a | a << 4) & 252645135, a = (a | a << 2) & 858993459, a = (a | a << 1) & 1431655765, (a << 1 | c) >>> 0;\n}\nfunction ke(i, t = 1e-7) {\n if (i.length === 0)\n return [];\n if (i.length === 1)\n return [i];\n const n = new Dt(i.length);\n i.forEach((r) => {\n const [o, h] = r.firstPoint;\n n.add(o - t, h - t, o + t, h + t);\n }), n.finish();\n const e = [], s = /* @__PURE__ */ new Set();\n return i.forEach((r, o) => {\n if (s.has(o))\n return;\n const h = [r];\n let u = o;\n s.add(o);\n let l = i.length;\n for (; ; ) {\n if (l-- < 0)\n throw new Error(\"Infinite loop detected\");\n const c = h[h.length - 1].lastPoint, [a, g] = c, w = n.search(\n a - t,\n g - t,\n a + t,\n g + t\n ), m = (p) => Math.abs((u - p) % i.length), d = w.filter((p) => !s.has(p)).map((p) => [\n i[p],\n p,\n m(p)\n ]).sort(([, , p], [, , y]) => m(p) - m(y));\n if (d.length === 0) {\n e.push(h);\n break;\n }\n const [P, f] = d[0];\n h.push(P), s.add(f), u = f;\n }\n }), e;\n}\nclass U extends _t {\n constructor(t, n = [], { ignoreChecks: e = !1 } = {}) {\n super(), e || Kn(t, n), this.contour = t, this.holes = n;\n }\n get boundingBox() {\n return this.contour.boundingBox;\n }\n get isFull() {\n return this.holes.length === 0;\n }\n get allLoops() {\n return [this.contour, ...this.holes];\n }\n clone() {\n return new U(\n this.contour.clone(),\n this.holes.map((t) => t.clone())\n );\n }\n transform(t) {\n return new U(\n this.contour.transform(t),\n this.holes.map((n) => n.transform(t))\n );\n }\n contains(t) {\n return this.contour.contains(t) && !this.holes.some((n) => n.contains(t));\n }\n intersects(t) {\n return this.allLoops.some(\n (n) => t.allLoops.some((e) => n.intersects(e))\n );\n }\n overlappingStrands(t) {\n const n = t instanceof U ? t.allLoops : [t], e = this.allLoops.flatMap((s) => n.flatMap((r) => s.overlappingSegments(r)));\n return ke(e).map((s) => new G(s));\n }\n}\nfunction Kn(i, t = []) {\n if (!i)\n throw new Error(\"Figure must have a contour\");\n for (const [n, e] of Bt([i, ...t]))\n if (n.intersects(e))\n throw new Error(\"Loops in a figure must not intersect\");\n if (t.some(\n (n) => !i.contains(n.firstPoint) && !i.onStroke(n.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [n, e] of Bt(t))\n if (n.contains(e.firstPoint))\n throw console.error(ie(n), ie(e)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (i) => {\n const t = i.map((s, r) => i.slice(r + 1).map((o, h) => [h + r + 1, o]).filter(([, o]) => s.boundingBox.overlaps(o.boundingBox)).map(([o]) => o)), n = [], e = Array(t.length);\n return t.forEach((s, r) => {\n let o = e[r];\n o || (o = [], n.push(o)), o.push(i[r]), s.length && s.forEach((h) => {\n e[h] = o;\n });\n }), n;\n}, Ie = (i) => i.map((t, n) => {\n const s = t.segments[0].midPoint, r = i.filter((o, h) => n === h ? !1 : o.contains(s));\n return {\n loop: t,\n isIn: r\n };\n}), Zn = (i, t) => i.flatMap(({ loop: n }) => Ut(\n t.filter(\n ({ loop: e, isIn: s }) => e === n || s.indexOf(n) !== -1\n )\n)), Hn = (i, t) => {\n const n = t.filter(({ isIn: s }) => s.length <= 1), e = Ut(\n Ie(i.map(({ loop: s }) => s))\n );\n return [n, ...e];\n}, Ut = (i) => {\n if (!i.length)\n return [];\n const t = i.filter(({ isIn: e }) => !e.length), n = i.filter(({ isIn: e }) => e.length > 1);\n return t.length === 1 && n.length === 0 ? [i] : t.length > 1 ? Zn(t, i) : Hn(n, i);\n};\nfunction gt(i) {\n return Qn(i).map(Ie).flatMap(Ut).map((n) => {\n if (n.length === 1)\n return new U(n[0].loop);\n n.sort((r, o) => r.isIn.length - o.isIn.length);\n const [e, ...s] = n.map(({ loop: r }) => r);\n return new U(e, s);\n });\n}\nfunction ts(i, t) {\n const n = [];\n for (const e of i)\n for (const s of t)\n n.push([e, s]);\n return n;\n}\nfunction* le(i, t, n) {\n const e = (o) => t.some((h) => E(h, o.lastPoint)), s = (o) => n.some((h) => o.isSame(h));\n let r = [];\n for (const o of i)\n e(o) ? (r.push(o), yield new G(r, { ignoreChecks: !0 }), r = []) : s(o) ? (r.length && (yield new G(r, { ignoreChecks: !0 }), r = []), yield new G([o], { ignoreChecks: !0 })) : r.push(o);\n r.length && (yield new G(r, { ignoreChecks: !0 }));\n}\nconst ue = (i, t) => {\n const n = i.findIndex((r) => E(t, r.firstPoint)), e = i.slice(0, n);\n return i.slice(n).concat(e);\n}, ae = (i, t) => {\n let n = i;\n const e = (h) => E(h.firstPoint, t.firstPoint) && E(h.lastPoint, t.lastPoint);\n let s = i.findIndex(e);\n if (s === -1) {\n const h = i.map((u) => u.reverse());\n if (h.reverse(), s = h.findIndex(e), s === -1)\n throw console.error(\n h.map((u) => u.repr),\n t.repr\n ), new Error(\"Failed to rotate to segment start\");\n n = h;\n }\n const r = n.slice(0, s);\n return n.slice(s).concat(r);\n};\nfunction es(i, t, n) {\n return i.filter((e) => {\n const s = t.filter((h) => E(h.firstPoint, e) || E(h.lastPoint, e));\n if (s.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const r = s.map((h) => n.contains(h.midPoint));\n return !(r.every((h) => h) || !r.some((h) => h));\n });\n}\nfunction ns(i, t, n) {\n let e = [];\n const s = [], r = new Array(i.segments.length).fill(0).map(() => []), o = new Array(t.segments.length).fill(0).map(() => []);\n if (i.segments.forEach((g, w) => {\n t.segments.forEach((m, d) => {\n const { intersections: P, overlaps: f } = It(\n g,\n m,\n n\n );\n e.push(...P), r[w].push(...P), o[d].push(...P), s.push(...f);\n const p = f.flatMap((y) => [\n y.firstPoint,\n y.lastPoint\n ]);\n e.push(...p), r[w].push(...p), o[d].push(...p);\n });\n }), e = ct(e, n), !e.length || e.length === 1)\n return null;\n const h = ([g, w]) => w.length ? g.splitAt(w) : [g];\n let u = nt([i.segments, r]).flatMap(h), l = nt([t.segments, o]).flatMap(h);\n if (e = es(\n e,\n u,\n t\n ), !e.length && !s.length)\n return null;\n if (s.length) {\n const g = s[0];\n u = ae(\n u,\n g\n ), l = ae(\n l,\n g\n );\n } else {\n const g = e[0];\n u = ue(u, g), l = ue(l, g);\n }\n let c = Array.from(\n le(\n u,\n e,\n s\n )\n ), a = Array.from(\n le(\n l,\n e,\n s\n )\n );\n return (!E(\n a[0].lastPoint,\n c[0].lastPoint\n ) || s.length > 0 && a[0].segmentsCount !== 1) && (a = a.map((g) => g.reverse()).reverse(), E(a[0].lastPoint, c[0].lastPoint) || (c = c.map((g) => g.reverse()).reverse())), nt([c, a]).map(([g, w]) => g.segmentsCount === 1 && s.some((m) => g.segments[0].isSame(m)) ? [g, \"same\"] : [g, w]);\n}\nfunction ce(i) {\n let t = i[0];\n for (const n of i.slice(1))\n t = t.extend(n);\n if (!E(t.firstPoint, t.lastPoint))\n throw console.error(\n T(t.firstPoint),\n T(t.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new et(t.segments);\n}\nfunction ss(i, t) {\n const n = nt([\n t.slice(0, -1),\n t.slice(1)\n ]).map(([s, r]) => ce(i.slice(s, r)));\n let e = i.slice(\n t[t.length - 1]\n );\n return t[0] !== 0 && (e = e.concat(i.slice(0, t[0]))), n.push(ce(e)), n;\n}\nfunction is(i) {\n if (!i.length)\n return [];\n const t = i.map((s) => s.firstPoint);\n let n = i.map((s) => s.lastPoint);\n n = n.slice(-1).concat(n.slice(0, -1));\n const e = nt([t, n]).flatMap(\n ([s, r], o) => E(s, r) ? [] : o\n );\n try {\n return ss(i, e);\n } catch {\n return ke(i.flatMap((r) => r.segments)).filter((r) => r.length > 1).filter((r) => E(r[0].firstPoint, r.at(-1).lastPoint)).map((r) => new et(r));\n }\n}\nconst fe = (i, t) => {\n if (i.length === 0)\n return [t];\n const n = i.at(-1);\n return E(n.lastPoint, t.firstPoint) ? i.slice(0, -1).concat([n.extend(t)]) : E(n.lastPoint, t.lastPoint) ? i.slice(0, -1).concat([n.extend(t.reverse())]) : i.concat([t]);\n}, rs = (i, t) => i.length === 0 ? [t] : E(i[0].firstPoint, t.lastPoint) ? [t.extend(i[0])].concat(i.slice(1)) : [t].concat(i);\nfunction Yt(i, t, {\n firstInside: n,\n secondInside: e\n}) {\n const s = ns(i, t);\n if (!s) {\n const u = i.segments[0].midPoint, l = t.contains(u), c = t.segments[0].midPoint, a = i.contains(c);\n return {\n identical: !1,\n firstCurveInSecond: l,\n secondCurveInFirst: a\n };\n }\n if (s.every(([, u]) => u === \"same\"))\n return { identical: !0 };\n let r = null, o = null;\n const h = s.flatMap(([u, l]) => {\n let c = [], a = 0;\n if (l === \"same\")\n return o === 1 ? (o = 1, u) : o === 2 || o === 0 ? (o = null, []) : o === null ? (r ? r = r.extend(u) : r = u, []) : (console.error(\"weird situation\"), []);\n const g = u.segments[0].midPoint, w = t.contains(g);\n (n === \"keep\" && w || n === \"remove\" && !w) && (a += 1, c = fe(c, u));\n const m = l.segments[0].midPoint, d = i.contains(m);\n if (e === \"keep\" && d || e === \"remove\" && !d) {\n const P = l;\n a += 1, a === 2 && c.length ? (c = fe(c, P), r = null) : c = [P];\n }\n return o === null && a === 1 && r && (c = rs(c, r)), a === 1 && (o = a, r = null), c.length ? c : (r = null, []);\n });\n return is(h);\n}\nconst os = (i, t) => {\n const n = Yt(i, t, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(n) ? n : n.identical ? [i] : n.firstCurveInSecond ? [t] : n.secondCurveInFirst ? [i] : [i, t];\n}, xt = (i, t) => {\n const n = Yt(i, t, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(n) ? n : n.identical ? [] : n.firstCurveInSecond ? [] : n.secondCurveInFirst ? [i, t] : [i];\n}, Xt = (i, t) => {\n const n = Yt(i, t, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(n) ? n : n.identical ? [i] : n.firstCurveInSecond ? [i] : n.secondCurveInFirst ? [t] : [];\n};\nfunction hs(i) {\n const t = /* @__PURE__ */ new Map(), n = [];\n return i.forEach((e, s) => {\n let r;\n t.has(s) ? r = t.get(s) : (r = { current: [e], fusedWith: /* @__PURE__ */ new Set([s]) }, n.push(r)), i.slice(s + 1).forEach((o, h) => {\n const u = r.current, l = s + h + 1;\n if (r.fusedWith.has(l))\n return;\n let c = [o], a = !1;\n if (t.has(l) && (c = t.get(l).current, a = !0), !u.some(\n (m) => c.some((d) => m.intersects(d))\n ))\n return;\n let w;\n u.length > 1 || c.length > 1 ? w = pt(u, c) : w = xe(u[0], c[0]), r.fusedWith.add(l), r.current = w, a || t.set(l, r);\n });\n }), n.flatMap(({ current: e }) => e);\n}\nfunction xe(i, t) {\n const n = os(i.contour, t.contour), e = t.holes.flatMap((o) => xt(o, i.contour)), s = i.holes.flatMap((o) => xt(o, t.contour)), r = ts(i.holes, t.holes).flatMap(\n ([o, h]) => Xt(o, h)\n );\n return gt([\n ...n,\n ...e,\n ...s,\n ...r\n ]);\n}\nfunction Rt(i, t) {\n if (i.isFull && t.isFull)\n return gt(xt(i.contour, t.contour));\n if (i.isFull) {\n const e = xt(i.contour, t.contour), s = t.holes.flatMap(\n (r) => Xt(r, i.contour)\n );\n return gt([...e, ...s]);\n } else if (t.isFull && !i.contour.intersects(t.contour))\n if (i.contour.contains(t.contour.firstPoint)) {\n const e = pt(\n i.holes.map((s) => new U(s)),\n [t]\n );\n return gt([\n i.contour,\n ...e.flatMap((s) => s.allLoops)\n ]);\n } else\n return [i];\n let n = Rt(new U(i.contour), t);\n return i.holes.forEach((e) => {\n n = n.flatMap((s) => Rt(s, new U(e)));\n }), n;\n}\nfunction ls(i, t) {\n const n = Xt(i.contour, t.contour);\n if (!n.length)\n return [];\n let e = gt(n);\n return e = wt(\n e,\n i.holes.map((s) => new U(s))\n ), wt(\n e,\n t.holes.map((s) => new U(s))\n );\n}\nfunction pt(i, t) {\n if (!i.length)\n return t;\n if (!t.length)\n return i;\n if (i.length === 1 && t.length > 1 || t.length === 1 && i.length > 1)\n return hs([...i, ...t]);\n if (i.length > 1 && t.length > 1) {\n let n = pt([i[0]], t);\n return i.slice(1).forEach((e) => {\n n = pt([e], n);\n }), n;\n }\n return i.length === 1 && t.length === 1 ? xe(i[0], t[0]) : [];\n}\nfunction wt(i, t) {\n if (!i.length)\n return [];\n if (!t.length)\n return i;\n if (i.length === 1 && t.length === 1)\n return Rt(i[0], t[0]);\n if (i.length > 1)\n return i.flatMap((e) => wt([e], t));\n let n = Rt(i[0], t[0]);\n return t.slice(1).forEach((e) => {\n n = wt(n, [e]);\n }), n;\n}\nfunction Nt(i, t) {\n return !i.length || !t.length ? [] : i.length === 1 && t.length === 1 ? ls(i[0], t[0]) : i.length > 1 ? i.flatMap((n) => Nt([n], t)) : t.flatMap((n) => Nt(i, [n]));\n}\nclass tt extends _t {\n constructor(t = [], { ignoreChecks: n = !1 } = {}) {\n super(), this._boundingBox = null, n || us(t), this.figures = t;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty)\n return new it();\n if (this._boundingBox === null) {\n let t = this.figures[0].boundingBox;\n for (const n of this.figures.slice(1))\n t = t.merge(n.boundingBox);\n this._boundingBox = t;\n }\n return this._boundingBox;\n }\n clone() {\n return new tt(this.figures.map((t) => t.clone()));\n }\n transform(t) {\n return new tt(this.figures.map((n) => n.transform(t)));\n }\n contains(t) {\n return this.figures.some((n) => n.contains(t));\n }\n intersects(t) {\n return this.figures.some(\n (n) => t.figures.some((e) => n.intersects(e))\n );\n }\n overlappingStrands(t) {\n return this.figures.flatMap((n) => t instanceof tt ? t.figures.flatMap(\n (e) => n.overlappingStrands(e)\n ) : n.overlappingStrands(t));\n }\n fuse(t) {\n return new tt(pt(this.figures, t.figures));\n }\n cut(t) {\n return new tt(wt(this.figures, t.figures));\n }\n intersect(t) {\n return new tt(Nt(this.figures, t.figures));\n }\n}\nfunction us(i) {\n for (const [t, n] of Bt(i))\n if (t.intersects(n))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n I as A,\n it as B,\n gs as C,\n tt as D,\n C as E,\n U as F,\n bt as G,\n as as H,\n fs as I,\n Xe as J,\n ft as K,\n et as L,\n Lt as M,\n Ue as R,\n G as S,\n V as T,\n pt as a,\n kt as b,\n wt as c,\n q as d,\n A as e,\n It as f,\n O as g,\n D as h,\n Nt as i,\n me as j,\n Ye as k,\n Ft as l,\n mt as m,\n W as n,\n R as o,\n Qe as p,\n ke as q,\n ct as r,\n le as s,\n E as t,\n cs as u,\n at as v,\n ie as w,\n _t as x,\n J as y,\n nt as z\n};\n//# sourceMappingURL=Diagram-d848c815.js.map\n","import { o as l, A as E, g as h, h as c, y as f, u as x, v as M, C as I, G as N, t as w, H as Y, d as G, I as O, J as V, e as P, R as W, T as B, S as H, D as J, F as K, L as $, K as A, M as S } from \"./Diagram-d848c815.js\";\nclass m {\n constructor(t, n) {\n this.firstPoint = t, this.lastPoint = n;\n }\n}\nfunction T(i, t) {\n if (i instanceof l)\n return j(i, t);\n if (i instanceof E)\n return q(i, t);\n throw new Error(\"Not implemented\");\n}\nfunction j(i, t) {\n const { firstPoint: n, lastPoint: e } = i, r = i.normalVector;\n return new l(\n h(n, c(r, t)),\n h(e, c(r, t))\n );\n}\nfunction q(i, t) {\n const n = h(\n i.firstPoint,\n c(f(i.tangentAtFirstPoint), t)\n ), e = h(\n i.lastPoint,\n c(f(i.tangentAtLastPoint), t)\n ), r = t * (i.clockwise ? 1 : -1);\n return i.radius + r < i.precision ? new m(n, e) : new E(n, e, i.center, i.clockwise);\n}\nfunction b(i, t, n) {\n const e = M(\n i.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(e) < 1e-10)\n return null;\n const r = e > 0 ? 1 : -1, s = Math.abs(n) * r, o = T(i, s), a = T(t, s);\n if (o instanceof m || a instanceof m)\n return null;\n let u;\n try {\n u = I(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!u)\n return null;\n const g = u, d = (p, y) => {\n const F = y.tangentAt(g), R = N(F), k = h(g, c(R, s));\n return p.splitAt(k);\n }, [D] = d(i, o), [, _] = d(t, a);\n return { first: D, second: _, center: g };\n}\nfunction v(i, t, n) {\n const e = b(i, t, n);\n if (!e)\n return console.warn(\n \"Cannot fillet between segments\",\n i.repr,\n t.repr\n ), [i, t];\n const { first: r, second: s } = e;\n return [\n r,\n x(r.lastPoint, s.firstPoint, r.tangentAtLastPoint),\n s\n ];\n}\nfunction C(i, t, n) {\n const e = b(i, t, n);\n if (!e)\n return console.warn(\n \"Cannot chamfer between segments\",\n i.repr,\n t.repr\n ), [i, t];\n const { first: r, second: s } = e;\n return [r, new l(r.lastPoint, s.firstPoint), s];\n}\nfunction L(i, { ignoreChecks: t = !1 } = {}) {\n return new J([new K(new $([...i], { ignoreChecks: t }))]);\n}\nclass z {\n constructor(t = [0, 0]) {\n this.pointer = t, this.firstPoint = t, this.pendingSegments = [], this._nextCorner = null;\n }\n movePointerTo(t) {\n if (this.pendingSegments.length)\n throw new Error(\n \"You can only move the pointer if there is no segment defined\"\n );\n return this.pointer = t, this.firstPoint = t, this;\n }\n saveSegment(t) {\n if (w(t.firstPoint, t.lastPoint))\n throw new Error(`Segment has no length, ${t.repr}`);\n if (!this._nextCorner)\n return this.pendingSegments.push(t), this;\n const n = this.pendingSegments.pop();\n if (!n)\n throw new Error(\"bug in the custom corner algorithm\");\n const e = this._nextCorner.mode === \"chamfer\" ? C : v;\n return this.pendingSegments.push(\n ...e(n, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const n = new l(this.pointer, t);\n return this.pointer = t, this.saveSegment(n);\n }\n line(t, n) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + n]);\n }\n vLine(t) {\n return this.line(0, t);\n }\n hLine(t) {\n return this.line(t, 0);\n }\n vLineTo(t) {\n return this.lineTo([this.pointer[0], t]);\n }\n hLineTo(t) {\n return this.lineTo([t, this.pointer[1]]);\n }\n polarLineTo([t, n]) {\n const e = n * S, r = A(t, e);\n return this.lineTo(r);\n }\n polarLine(t, n) {\n const e = n * S, [r, s] = A(t, e);\n return this.line(r, s);\n }\n tangentLine(t) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [e, r] = n.tangentAtLastPoint;\n return this.line(e * t, r * t);\n }\n threePointsArcTo(t, n) {\n return this.saveSegment(Y(this.pointer, n, t)), this.pointer = t, this;\n }\n threePointsArc(t, n, e, r) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + n],\n [s + e, o + r]\n );\n }\n sagittaArcTo(t, n) {\n if (!n)\n return this.lineTo(t);\n const e = new l(this.pointer, t), r = f(e.tangentAtFirstPoint), s = h(e.midPoint, c(r, n));\n return this.threePointsArcTo(t, s);\n }\n sagittaArc(t, n, e) {\n return this.sagittaArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e\n );\n }\n vSagittaArc(t, n) {\n return this.sagittaArc(0, t, n);\n }\n hSagittaArc(t, n) {\n return this.sagittaArc(t, 0, n);\n }\n bulgeArcTo(t, n) {\n if (!n)\n return this.lineTo(t);\n const e = G(this.pointer, t) / 2, r = -n * e;\n return this.sagittaArcTo(t, r);\n }\n bulgeArc(t, n, e) {\n return this.bulgeArcTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e\n );\n }\n vBulgeArc(t, n) {\n return this.bulgeArc(0, t, n);\n }\n hBulgeArc(t, n) {\n return this.bulgeArc(t, 0, n);\n }\n tangentArcTo(t, n) {\n const e = this.pendingSegments.at(-1);\n if (!e)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n x(\n this.pointer,\n t,\n n ?? e.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, n, e) {\n const [r, s] = this.pointer;\n return this.tangentArcTo([t + r, n + s], e);\n }\n ellipseTo(t, n, e, r, s, o) {\n return this.saveSegment(\n O(this.pointer, t, n, e, r, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, n, e, r, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e,\n r,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, n) {\n const [e, r] = V(P(t, this.pointer));\n return this.ellipseTo(\n t,\n e / 2,\n Math.abs(n),\n r * W,\n !0,\n n > 0\n );\n }\n halfEllipse(t, n, e) {\n return this.halfEllipseTo(\n [t + this.pointer[0], n + this.pointer[1]],\n e\n );\n }\n customCorner(t, n = \"fillet\") {\n if (!this.pendingSegments.length)\n throw new Error(\"You need a segment defined to fillet the angle\");\n return t ? (this._nextCorner = { mode: n, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, n = \"fillet\") {\n if (!t)\n return;\n const e = this.pendingSegments.pop(), r = this.pendingSegments.shift();\n if (!e || !r)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = n === \"chamfer\" ? C : v;\n this.pendingSegments.push(...s(e, r, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], e = this.pendingSegments.at(-1);\n return w(n.firstPoint, e.lastPoint) || this.lineTo(n.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), L(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const n = this.pendingSegments[0], e = this.pendingSegments.at(-1), r = P(\n e.lastPoint,\n n.firstPoint\n ), s = new B().mirrorLine(\n r,\n n.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), L(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new H([...this.pendingSegments]);\n }\n}\nfunction U(i = [0, 0]) {\n return new z(i);\n}\nexport {\n m as D,\n U as d,\n T as o\n};\n//# sourceMappingURL=draw-a830827a.js.map\n","import { o as ht, D } from \"./draw-a830827a.js\";\nimport { d as fn } from \"./draw-a830827a.js\";\nimport { F as p, L as P, D as h, f as C, r as gt, z as pt, s as dt, a as wt, c as Pt, i as mt, S as y, l as Mt, d as m, b as vt, p as St, n as K, e as $, g as It, h as Lt, j as kt, k as At, m as Q, o as w, A as M, q as j, t as v, u as $t, v as bt, E as O, R as Et } from \"./Diagram-d848c815.js\";\nimport { w as un } from \"./Diagram-d848c815.js\";\nfunction S(t) {\n if (t instanceof p)\n return [t];\n if (t instanceof P)\n return [new p(t)];\n if (t instanceof h)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction tt(t, n, e = 1e-9) {\n let s = [];\n const r = [], i = new Array(n.segments.length).fill(0).map(() => []);\n n.segments.forEach((c, f) => {\n t.segments.forEach((a) => {\n const { intersections: u, overlaps: d } = C(\n c,\n a,\n e\n );\n s.push(...u), i[f].push(...u), r.push(...d);\n const g = d.flatMap((l) => [\n l.firstPoint,\n l.lastPoint\n ]);\n s.push(...g), i[f].push(...g);\n });\n }), s = gt(s, e);\n const o = pt([n.segments, i]).flatMap(([c, f]) => f.length ? c.splitAt(f) : [c]);\n return Array.from(\n dt(\n o,\n s,\n r\n )\n );\n}\nfunction G(t, n, e = !1) {\n return tt(n, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return n.onStroke(i) ? !e : !n.contains(i);\n });\n}\nfunction T(t, n, e = !1) {\n return tt(n, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return n.onStroke(i) ? !e : n.contains(i);\n });\n}\nfunction z(t, n, e = !1) {\n const s = G(\n t,\n n.contour,\n e\n ), r = n.holes.flatMap(\n (i) => T(t, i, e)\n );\n return [...s, ...r];\n}\nfunction q(t, n, e = !1) {\n let s = T(\n t,\n n.contour,\n e\n );\n return n.holes.forEach((r) => {\n s = s.flatMap(\n (i) => G(i, r, e)\n );\n }), s;\n}\nfunction yt(t, n) {\n return new h(\n wt(S(t), S(n))\n );\n}\nfunction b(t) {\n return t.reduce(\n (n, e) => yt(n, e),\n new h()\n );\n}\nfunction nt(t, n) {\n return new h(\n Pt(S(t), S(n))\n );\n}\nfunction Kt(t, n) {\n return new h(\n mt(S(t), S(n))\n );\n}\nfunction Qt(t, n, e = !0) {\n if (n instanceof P)\n return G(t, n, e);\n if (n instanceof p)\n return z(t, n, e);\n let s = [new y([...t.segments])];\n return n.figures.forEach((r) => {\n s = s.flatMap((i) => z(i, r, e));\n }), s;\n}\nfunction jt(t, n, e = !1) {\n if (n instanceof P)\n return T(t, n, e);\n if (n instanceof p)\n return q(t, n, e);\n let s = [new y([...t.segments])];\n return n.figures.forEach((r) => {\n s = s.flatMap((i) => q(i, r, e));\n }), s;\n}\nfunction N(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst _ = (t, n, e) => {\n if (e === \"before\")\n return t.distanceFrom(n.firstPoint);\n if (e === \"after\")\n return t.distanceFrom(n.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Ft(t, n) {\n const e = Mt(t, n);\n if (e === \"parallel\")\n return Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = e, i = N(s), o = N(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return _(t, n, o);\n if (o === \"between\" && i !== \"between\")\n return _(n, t, i);\n if (i === \"before\" && o === \"before\")\n return m(t.firstPoint, n.firstPoint);\n if (i === \"after\" && o === \"after\")\n return m(t.lastPoint, n.lastPoint);\n if (i === \"before\" && o === \"after\")\n return m(t.firstPoint, n.lastPoint);\n if (i === \"after\" && o === \"before\")\n return m(t.lastPoint, n.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction J(t, n) {\n if (vt(t, n).length > 0)\n return 0;\n const e = St(t, n.center);\n if (t.isOnSegment(e)) {\n const s = m(e, n.center);\n if (Math.abs(s - n.radius) < t.precision && n.isOnSegment(e))\n return 0;\n if (s - n.radius > t.precision) {\n const r = K(\n $(e, n.center)\n ), i = It(\n n.center,\n Lt(r, n.radius)\n );\n if (n.isOnSegment(i))\n return m(i, e);\n }\n }\n return Math.min(\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint),\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n}\nconst Dt = (t, n) => {\n const e = t.angleToParam(n.firstAngle);\n if (t.isValidParameter(e))\n return !0;\n const s = t.angleToParam(n.lastAngle);\n return !!t.isValidParameter(s);\n};\nfunction xt(t, n) {\n if (kt(t, n, !0).length > 0)\n return 0;\n const e = m(t.center, n.center);\n if (e < t.precision && Dt(t, n))\n return Math.abs(t.radius - n.radius);\n const s = K($(n.center, t.center)), r = e - Math.abs(t.radius - n.radius) < t.precision;\n let i = At(s);\n r && n.radius > t.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, c = t.angleToParam(i), f = n.angleToParam(o);\n return t.isValidParameter(c) && n.isValidParameter(f) ? m(t.paramPoint(c), n.paramPoint(f)) : Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint),\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint)\n );\n}\nfunction Rt(t, n, e) {\n let s = 0, r = t.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = e(t[i], n);\n if (o < 0)\n s = i + 1;\n else if (o > 0)\n r = i - 1;\n else\n return i;\n }\n return -(s + 1);\n}\nfunction Ct(t, n, e) {\n const s = Rt(t, n, e);\n s < 0 ? t.splice(-(s + 1), 0, n) : t.splice(s, 0, n);\n}\nclass Ot {\n constructor() {\n this.buckets = [];\n }\n addInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n e === void 0 ? this.buckets[n.rectangle.diagonalBucketIndex] = [n] : Ct(e, n, (s, r) => s.value - r.value);\n }\n removeInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n if (e === void 0)\n throw new Error(\"Interval not found\");\n e.shift();\n }\n getBottomRightHullIntervals() {\n const n = [];\n for (let e = this.buckets.length - 1; e >= 0; e--) {\n const s = this.buckets[e];\n if (!s === void 0)\n continue;\n const r = s[0];\n if (r !== void 0) {\n if (!n.length) {\n n.push(r);\n continue;\n }\n for (; n.length && n[n.length - 1].value >= r.value; )\n n.pop();\n for (; n.length >= 2; ) {\n const i = n[n.length - 1], o = n[n.length - 2], c = (r.value - o.value) / ((r.rectangle.diagonal - o.rectangle.diagonal) * 2);\n if (o.value + (i.rectangle.diagonal - o.rectangle.diagonal) / 2 * c < i.value)\n n.pop();\n else\n break;\n }\n n.push(r);\n }\n }\n return n;\n }\n}\nclass Gt {\n constructor(n, e) {\n this.x = n, this.y = e, this.xLength = Math.pow(3, -n), this.yLength = Math.pow(3, -e), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = n + e, this.index = `${n},${e}`;\n }\n}\nclass Tt {\n constructor(n, e = 1e-8, s = 1e3, r = 1e-6) {\n this.fcn = n, this.endTolerance = e, this.maxIterations = s, this.epsilon = r, this.fcn = n, this.epsilon = r, this.endTolerance = e, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new Ot();\n const i = [0.5, 0.5], o = this.rect(0, 0), c = this.fcn(i);\n this.buckets.addInterval(new A(i, c, o)), this.fMin = c, this.argMin = i, this.tol = o.diagonal;\n }\n registerInterval(n) {\n this.buckets.addInterval(n), n.value <= this.fMin && (this.fMin = n.value, this.argMin = n.center, this.tol = n.rectangle.diagonal);\n }\n rect(n, e) {\n const s = `${n},${e}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new Gt(n, e)), this.rectangles.get(s);\n }\n splitInterval(n) {\n let e, s, r;\n const [i, o] = n.center;\n return n.rectangle.x <= n.rectangle.y ? (e = this.rect(n.rectangle.x + 1, n.rectangle.y), s = [i - e.xLength, o], r = [i + e.xLength, o]) : (e = this.rect(n.rectangle.x, n.rectangle.y + 1), s = [i, o - e.yLength], r = [i, o + e.yLength]), [\n new A(s, this.fcn(s), e),\n new A(n.center, n.value, e),\n new A(r, this.fcn(r), e)\n ];\n }\n single_iteration() {\n const n = this.buckets.getBottomRightHullIntervals();\n for (; n.length >= 2; ) {\n const e = n[0], s = n[1], r = (s.value - e.value) / ((s.rectangle.diagonal - e.rectangle.diagonal) / 2), i = e.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n n.shift();\n else\n break;\n }\n n.forEach((e) => {\n this.buckets.removeInterval(e);\n });\n for (const e of n) {\n const [s, r, i] = this.splitInterval(e);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let n = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), n++, !(n > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: n\n };\n }\n}\nclass A {\n constructor(n, e, s) {\n this.center = n, this.value = e, this.rectangle = s;\n }\n}\nfunction Vt(t, n = 1e-8, e = 1e3, s = 1e-6) {\n return new Tt(\n t,\n n,\n e,\n s\n ).run();\n}\nfunction Ut(t, n, e = 1e-9) {\n const s = Vt((r) => {\n const i = t.paramPoint(r[0]), o = n.paramPoint(r[1]);\n return Q(i, o);\n }, e);\n return Math.sqrt(s.fMin);\n}\nfunction Bt(t, n) {\n return t instanceof w && n instanceof w ? Ft(t, n) : t instanceof w && n instanceof M ? J(t, n) : t instanceof M && n instanceof w ? J(n, t) : t instanceof M && n instanceof M ? xt(t, n) : Ut(t, n);\n}\nconst V = 1e-8;\nfunction x(t, n, e = !0) {\n const s = t.map((a) => ({\n offset: ht(a, n),\n original: a\n })), r = [];\n let i = e ? null : s.at(-1), o = e ? s.at(-1) : null;\n if (r.length === 1)\n return r;\n const c = (a) => {\n i ? a.offset instanceof D ? v(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new w(a.offset.firstPoint, a.offset.lastPoint)\n ) : r.push(a.offset) : i = a;\n }, f = function* () {\n for (const a of s.slice(0, -1))\n yield a;\n if (!i)\n throw new Error(\"Bug in the offset algorithm\");\n yield i;\n };\n for (const a of f()) {\n if (!o) {\n o = a;\n continue;\n }\n const u = o.offset.lastPoint, d = a.offset.firstPoint;\n if (v(u, d)) {\n c(o), o = a;\n continue;\n }\n let g = [];\n if (!(o.offset instanceof D) && !(a.offset instanceof D)) {\n const { intersections: I, overlaps: F } = C(\n o.offset,\n a.offset,\n V / 100\n );\n g = [\n ...I,\n ...F.flatMap((L) => [L.firstPoint, L.lastPoint])\n ];\n }\n if (g.length > 0) {\n let I = g[0];\n if (g.length > 1) {\n const lt = o == null ? void 0 : o.original.lastPoint, B = g.map(\n (ut) => Q(ut, lt)\n );\n I = g[B.indexOf(Math.min(...B))];\n }\n const F = o.offset.splitAt([\n I\n ])[0], L = a.offset.splitAt([I]).at(-1);\n if (!L)\n throw new Error(\"Bug in the splitting algo in offset\");\n c({\n offset: F,\n original: o.original\n }), o = { offset: L, original: a.original };\n continue;\n }\n const l = o.original.lastPoint, k = bt(\n $(d, l),\n $(u, l)\n ) > 0, ft = new M(u, d, l, k);\n c(o), r.push(ft), o = a;\n }\n return o && c(o), r;\n}\nfunction et(t) {\n const n = /* @__PURE__ */ new Map(), e = (s, r) => {\n const i = n.get(s) || [];\n n.set(s, [...i, ...r]);\n };\n return t.forEach((s, r) => {\n t.slice(r + 1).forEach((i, o) => {\n const { intersections: c, overlaps: f } = C(s, i, V), a = [\n ...c,\n ...f.flatMap((u) => [u.firstPoint, u.lastPoint])\n ].filter((u) => {\n const d = v(u, s.firstPoint) || v(u, s.lastPoint), g = v(u, i.firstPoint) || v(u, i.lastPoint);\n return !(d && g);\n });\n a.length && (e(r, a), e(o + r + 1, a));\n });\n }), n;\n}\nfunction st(t, n) {\n return n.flatMap((e, s) => {\n if (!t.has(s))\n return e;\n const r = t.get(s);\n return r ? e.splitAt(r) : e;\n });\n}\nfunction it(t, n, e) {\n return t.filter((s) => !n.segments.some((i) => Bt(i, s) < Math.abs(e) - V));\n}\nfunction E(t, n) {\n const e = t.clockwise ? n : -n, s = x(t.segments, e);\n if (s.length < 2)\n return new h();\n const r = et(s);\n if (!r.size) {\n const a = new P(s);\n return new h([new p(a)]);\n }\n const i = st(\n r,\n s\n ), o = it(i, t, n);\n if (!o.length)\n return new h();\n const f = j(o).filter((a) => a.length > 1).filter((a) => v(a[0].firstPoint, a.at(-1).lastPoint)).map((a) => new P(a));\n return f.length ? new h(f.map((a) => new p(a))) : new h();\n}\nfunction zt(t, n, e = \"round\") {\n const s = n / 2, r = x(t.segments, s, !1), i = x(t.segments, -s, !1).map(\n (l) => l.reverse()\n );\n i.reverse();\n const o = (l, k) => e === \"round\" ? $t(\n l.lastPoint,\n k.firstPoint,\n l.tangentAtLastPoint\n ) : new w(l.lastPoint, k.firstPoint), c = [\n ...r,\n o(\n r[r.length - 1],\n i[0]\n ),\n ...i,\n o(\n i[i.length - 1],\n r[0]\n )\n ], f = et(c);\n if (!f.size) {\n const l = new P(c);\n return new h([new p(l)]);\n }\n const a = st(\n f,\n c\n ), u = it(a, t, s);\n if (!u.length)\n return new h();\n const g = j(u).filter((l) => l.length > 1).filter((l) => v(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new P(l));\n return g.length ? new h(g.map((l) => new p(l))) : new h();\n}\nfunction qt(t, n) {\n const e = t.map((s) => {\n const r = b(\n s.holes.map((i) => E(i, n))\n );\n return nt(E(s.contour, n), r);\n });\n return b(e);\n}\nfunction Nt(t, n) {\n const e = Math.abs(n / 2), s = t.map(\n (r) => b(\n r.allLoops.map((i) => nt(E(i, e), E(i, -e)))\n )\n );\n return b(s);\n}\nfunction tn(t, n) {\n return qt(S(t), n);\n}\nfunction nn(t, n, { endCap: e = \"round\" } = {}) {\n return t instanceof y ? zt(t, n, e) : Nt(S(t), n);\n}\nfunction U(t) {\n if (t instanceof w)\n return `L ${t.lastPoint.join(\" \")}`;\n if (t instanceof M)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${t.lastPoint.join(\" \")}`;\n if (t instanceof O)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * Et} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${t.lastPoint.join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction rt(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, e = t.segments.map(U).join(\" \");\n return `${n} ${e} Z`;\n}\nfunction ot(t) {\n return `<path d=\"${t.allLoops.map(rt).join(\" \")}\" />`;\n}\nfunction _t(t) {\n return `<g>\n ${t.figures.map(ot).join(`\n`)}\n</g>`;\n}\nfunction Jt(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, e = t.segments.map(U).join(\" \");\n return `${n} ${e}`;\n}\nfunction Ht(t, n = 1) {\n const e = t.xMin - n, s = t.yMin - n;\n return `${e} ${s} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction H(t, n, e = 1, s) {\n const r = Ht(n, e), i = s ? `width=\"${n.width + 2 * e}${s}\" height=\"${n.height + 2 * e}${s}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${r}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${i}>\n ${t}\n</svg>`;\n}\nfunction W(t) {\n if (t instanceof h)\n return _t(t);\n if (t instanceof p)\n return ot(t);\n if (t instanceof P)\n return `<path d=\"${rt(t)}\" />`;\n if (t instanceof y)\n return `<path d=\"${Jt(t)}\" />`;\n if (t instanceof M || t instanceof w || t instanceof O)\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${U(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst X = (t) => \"shape\" in t ? t.shape : t, Y = (t, n) => {\n if (!(\"shape\" in t))\n return n;\n const { color: e } = t;\n return e ? `<g stroke=\"${e}\">${n}</g>` : n;\n};\nfunction en(t, {\n margin: n = 1,\n unit: e = null\n} = {}) {\n if (Array.isArray(t)) {\n const r = t.map((c) => X(c).mirror()), i = r.map((c, f) => Y(t[f], W(c))).join(`\n`), o = r.slice(1).reduce((c, f) => c.merge(f.boundingBox), r[0].boundingBox);\n return H(i, o, n, e);\n }\n const s = X(t).mirror();\n return H(\n Y(t, W(s)),\n s.boundingBox,\n n,\n e\n );\n}\nconst at = (t) => {\n if (t.type === \"LINE\")\n return new w(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new M(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new O(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { angleUnits: \"rad\" }\n );\n throw new Error(\"Unknown segment type\");\n}, R = (t) => {\n const n = t.segments.map(at);\n return new P(n);\n}, ct = (t) => {\n const n = R(t.contour), e = t.holes.map(R);\n return new p(n, e);\n}, Wt = (t) => {\n const n = t.figures.map(ct);\n return new h(n);\n};\nfunction sn(t) {\n if (t.type === \"DIAGRAM\")\n return Wt(t);\n if (t.type === \"FIGURE\")\n return ct(t);\n if (t.type === \"LOOP\")\n return R(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\")\n return at(t);\n throw new Error(\"Unknown shape type\");\n}\nconst Z = Math.PI / 180, Xt = 180 / Math.PI;\nfunction rn(t, n) {\n const e = Math.cos(n * Z) * t, s = Math.sin(n * Z) * t;\n return [e, s];\n}\nfunction on([t, n]) {\n const e = Math.sqrt(t * t + n * n), s = Math.atan2(n, t) * Xt;\n return [e, s];\n}\nexport {\n Z as DEG2RAD,\n Xt as RAD2DEG,\n on as cartesianToPolar,\n jt as confineStrand,\n nt as cut,\n fn as draw,\n Qt as eraseStrand,\n un as exportJSON,\n en as exportSVG,\n yt as fuse,\n b as fuseAll,\n sn as importJSON,\n Kt as intersect,\n tn as offset,\n nn as outlineStroke,\n rn as polarToCartesian,\n W as svgBody\n};\n//# sourceMappingURL=pantograph.js.map\n","import { cut, eraseStrand, exportSVG } from \"pantograph2d\";\nimport {\n Transformable,\n Diagram,\n Strand,\n TransformationMatrix,\n Stroke,\n} from \"pantograph2d/models\";\n\nexport class Dieline extends Transformable<Dieline> {\n public body: Diagram;\n public cutLines: Stroke[];\n public foldLinesBackwards: Stroke[];\n public foldLinesForwards: Stroke[];\n\n constructor(\n body: Diagram,\n {\n cutLines = [],\n foldLines = [],\n foldLinesForwards = [],\n foldLinesBackwards = [],\n }: {\n cutLines?: Stroke[];\n foldLines?: Stroke[];\n foldLinesBackwards?: Stroke[];\n foldLinesForwards?: Stroke[];\n } = {}\n ) {\n super();\n this.body = body;\n this.cutLines = [...cutLines];\n this.foldLinesBackwards = [...foldLines, ...foldLinesBackwards];\n this.foldLinesForwards = [...foldLinesForwards];\n }\n\n get foldLines() {\n return [...this.foldLinesForwards, ...this.foldLinesBackwards];\n }\n\n clone() {\n return new Dieline(this.body, {\n cutLines: [...this.cutLines],\n foldLinesForwards: [...this.foldLinesForwards],\n foldLinesBackwards: [...this.foldLinesBackwards],\n });\n }\n\n addCutLine(cut: Strand) {\n this.cutLines.push(cut);\n return this;\n }\n\n addFoldLine(fold: Strand, direction: \"forwards\" | \"backwards\" = \"backwards\") {\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(fold);\n } else {\n this.foldLinesBackwards.push(fold);\n }\n }\n\n fuseFold(\n fold: Diagram | Dieline,\n direction: \"forwards\" | \"backwards\" = \"backwards\"\n ) {\n const otherBody: Diagram = fold instanceof Dieline ? fold.body : fold;\n\n const commonLines = this.body.overlappingStrands(otherBody);\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(...commonLines);\n } else {\n this.foldLinesBackwards.push(...commonLines);\n }\n\n this.fuseBody(fold);\n return this;\n }\n\n fuseBody(other: Dieline | Diagram) {\n let otherBody: Diagram;\n\n if (other instanceof Dieline) {\n otherBody = other.body;\n this.cutLines.push(...other.cutLines);\n this.foldLinesForwards.push(...other.foldLinesForwards);\n this.foldLinesBackwards.push(...other.foldLinesBackwards);\n } else {\n otherBody = other;\n }\n\n this.body = this.body.fuse(otherBody);\n return this;\n }\n\n cutShape(shape: Diagram) {\n this.body = cut(this.body, shape);\n this.cutLines = this.cutLines.flatMap((cut) =>\n eraseStrand(cut, shape, true)\n );\n this.eraseFolds(shape);\n return this;\n }\n\n eraseFolds(shape: Diagram) {\n this.foldLinesBackwards = this.foldLinesBackwards.flatMap((fold) =>\n eraseStrand(fold, shape, true)\n );\n this.foldLinesForwards = this.foldLinesForwards.flatMap((fold) =>\n eraseStrand(fold, shape, true)\n );\n }\n\n transform(matrix: TransformationMatrix) {\n const newDieline = new Dieline(this.body.transform(matrix), {\n cutLines: this.cutLines.map((cut) => cut.transform(matrix)),\n foldLinesForwards: this.foldLinesForwards.map((fold) =>\n fold.transform(matrix)\n ),\n foldLinesBackwards: this.foldLinesBackwards.map((fold) =>\n fold.transform(matrix)\n ),\n });\n\n return newDieline;\n }\n\n asSVG() {\n const shapes: { shape: Diagram | Stroke; color: string }[] = [];\n if (this.body) {\n shapes.push({ shape: this.body, color: \"red\" });\n }\n if (this.cutLines.length) {\n this.cutLines.map((shape) => shapes.push({ shape, color: \"red\" }));\n }\n\n if (this.foldLinesBackwards.length) {\n this.foldLinesBackwards.map((shape) =>\n shapes.push({ shape, color: \"green\" })\n );\n }\n\n if (this.foldLinesForwards.length) {\n this.foldLinesForwards.map((shape) =>\n shapes.push({ shape, color: \"blue\" })\n );\n }\n\n return exportSVG(shapes, { unit: \"mm\" });\n }\n}\n","import { draw } from \"pantograph2d\";\n\nexport type FlapContractionMode = \"rounded\" | \"sharp\";\nexport type HorizontalFlapOptions = {\n fillet?: number;\n contraction?: number;\n contractionMode?: FlapContractionMode;\n contractionLeft?: number;\n contractionRight?: number;\n leftContractionMode?: FlapContractionMode;\n rightContractionMode?: FlapContractionMode;\n};\nexport type VerticalFlapTopOptions = HorizontalFlapOptions & {\n contractionTop?: number;\n contractionBottom?: number;\n topContractionMode?: FlapContractionMode;\n bottomContractionMode?: FlapContractionMode;\n};\n\nfunction drawFlap(\n width: number,\n height: number,\n {\n fillet = 1,\n contraction = 1,\n contractionMode = \"rounded\",\n contractionLeft: contractionLeftInput,\n contractionRight: contractionRightInput,\n leftContractionMode,\n rightContractionMode,\n }: HorizontalFlapOptions = {}\n) {\n const contractionLeft = contractionLeftInput ?? contraction;\n const contractionRight = contractionRightInput ?? contraction;\n\n const flapMaker = draw([-width / 2, 0]).hLine(width);\n\n if (contractionRight) {\n if ((rightContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.tangentArc(-contractionRight, contractionRight, [-1, 0]);\n flapMaker.vLine(height - contractionRight);\n } else {\n flapMaker.line(-contractionRight, height);\n }\n } else {\n flapMaker.vLine(height);\n }\n\n flapMaker.customCorner(fillet);\n flapMaker.hLine(-width + contractionLeft + contractionRight);\n flapMaker.customCorner(fillet);\n\n if (contractionLeft) {\n if ((leftContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.vLine(-height + contractionLeft);\n flapMaker.tangentArcTo([-width / 2, 0]);\n } else {\n flapMaker.lineTo([-width / 2, 0]);\n }\n } else {\n flapMaker.vLine(-height);\n }\n\n return flapMaker.close();\n}\n\nexport function topFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {}\n) {\n return drawFlap(width, height, options);\n}\n\nexport function bottomFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {}\n) {\n return drawFlap(width, height, options).mirror(\"x\");\n}\n\nexport function leftFlap(\n width: number,\n height: number,\n {\n contractionTop,\n contractionBottom,\n topContractionMode,\n bottomContractionMode,\n ...options\n }: VerticalFlapTopOptions = {}\n) {\n return drawFlap(width, height, {\n contractionLeft: contractionTop,\n contractionRight: contractionBottom,\n leftContractionMode: topContractionMode,\n rightContractionMode: bottomContractionMode,\n ...options,\n }).rotate(90);\n}\n\nexport function rightFlap(\n width: number,\n height: number,\n options: VerticalFlapTopOptions = {}\n) {\n return leftFlap(width, height, options).mirror(\"y\");\n}\n\nexport const drawFlaps = {\n right: rightFlap,\n left: leftFlap,\n top: topFlap,\n bottom: bottomFlap,\n};\n","import { draw } from \"pantograph2d\";\nimport {\n Diagram,\n Strand,\n Transformable,\n TransformationMatrix,\n} from \"pantograph2d/models\";\nimport { Dieline } from \"./Dieline.js\";\n\nconst drawBump = (width: number, height: number) => {\n return draw([-width / 2, 0])\n .line(height, -height)\n .hLine(width - 2 * height)\n .line(height, height);\n};\n\n// A helper class to create bumps for locking parts together without glue\nexport class FoldLockBump extends Transformable<FoldLockBump> {\n cut: Strand;\n unfold: Diagram;\n bump: Diagram;\n constructor(\n width: number | { cut: Strand; unfold: Diagram; bump: Diagram },\n paperThickness = 0.2\n ) {\n super();\n\n if (typeof width !== \"number\") {\n this.cut = width.cut;\n this.unfold = width.unfold;\n this.bump = width.bump;\n return;\n }\n\n const pen = drawBump(width, paperThickness * 2.5);\n\n this.cut = pen.asStrand();\n this.unfold = pen.close();\n\n this.bump = drawBump(width - 5 * paperThickness, 5 * paperThickness)\n .close()\n .mirror(\"x\");\n }\n\n clone() {\n return new FoldLockBump(this);\n }\n\n transform(matrix: TransformationMatrix) {\n return new FoldLockBump({\n cut: this.cut.transform(matrix),\n unfold: this.unfold.transform(matrix),\n bump: this.bump.transform(matrix),\n });\n }\n\n makeCut(dieline: Dieline) {\n dieline.eraseFolds(this.unfold);\n dieline.addCutLine(this.cut);\n }\n\n fuseBump(dieline: Dieline) {\n dieline.fuseBody(this.bump);\n }\n}\n","import { Vector } from \"pantograph2d\";\nimport { Transformable, TransformationMatrix } from \"pantograph2d/models\";\n\ninterface Clonable {\n clone(): this;\n}\n\ninterface Translatable {\n translateTo(point: Vector): this;\n}\n\nclass PointsDistribution extends Transformable<PointsDistribution> {\n constructor(public points: Vector[]) {\n super();\n this.points = points;\n }\n\n transform(matrix: TransformationMatrix) {\n return new PointsDistribution(this.points.map(matrix.transform));\n }\n\n distribute<T extends Translatable>(s: T): T[] {\n return this.points.map((p) => s.translateTo(p));\n }\n\n cloneDistribute<T extends Translatable & Clonable>(s: T): T[] {\n return this.points.map((p) => s.clone().translateTo(p));\n }\n}\n\nexport function linearDistribution(\n totalWidth: number,\n objectWidth: number,\n gapShare = 3,\n margin = 0\n) {\n if (totalWidth <= objectWidth * 2) {\n throw new Error(\"totalWidth must be greater than twice the objectWidth\");\n }\n\n const objectsCount = Math.max(\n Math.floor((totalWidth - 2 * margin) / (objectWidth * (gapShare + 1))),\n 2\n );\n const freeSpace = totalWidth - 2 * margin - objectsCount * objectWidth;\n const gapSize = freeSpace / (objectsCount - 1);\n const points: number[] = [];\n for (let i = 0; i < objectsCount; i++) {\n points.push(\n margin + i * (objectWidth + gapSize) - totalWidth / 2 + objectWidth / 2\n );\n }\n return new PointsDistribution(points.map((p) => [p, 0]));\n}\n\nexport function linearSpread(\n gap: number,\n count: number,\n direction: \"x\" | \"y\" = \"x\"\n) {\n const totalLength = gap * (count - 1);\n const points: number[] = [];\n for (let i = 0; i < count; i++) {\n points.push(i * gap - totalLength / 2);\n }\n return new PointsDistribution(\n points.map((p) => (direction.toLowerCase() === \"x\" ? [p, 0] : [0, p]))\n );\n}\n"],"names":["yt","i","n","e","it","s","De","Jt","ct","Lt","Ue","T","E","O","A","jt","D","mt","q","at","$t","W","ft","Ye","Xe","Vt","r","J","bt","Ge","ot","o","u","l","a","g","w","m","P","p","We","Je","V","_t$1","zt","_t","R","Ke","nt","st","vt","Ft","ge","Pt","I","h","c","as","cs","Qe","kt","Ze","He","C","en","fs","tn","M","b","x","S","_","F","qt","nn","z","sn","rn","Kt","Mt","on","hn","ln","Qt","un","Y","X","lt","ut","an","cn","Zt","Et","Tt","ht","fn","gn","mn","pn","wn","dn","yn","Pn","Mn","En","Sn","bn","jn","vn","kn","In","xn","Rn","v$1","v","j","B","K","Q","Z","$","N","dt","H","rt","L","Gt","Wt","Re","_e","Fe","Te","Ce","$e","qe","Be","Oe","Ae","Ne","Le","Ve","ze","Ht","_n","Fn","te","Tn","Cn","$n","qn","Bn","St","de","ye","y","k","ee","On","An","Nn","gs","It","Pe","Bt","Me","Ee","Ln","ne","se","Se","G","Vn","be","zn","Dn","Un","et","Yn","je","Ot","ve","Xn","ie","tt","U","Gn","re","Ct","Dt","Jn","At","he","oe","Wn","ke","Kn","Qn","Ie","Zn","Ut","Hn","gt","ts","le","ue","ae","es","ns","ce","ss","is","fe","rs","Yt","os","xt","Xt","hs","d","pt","xe","Rt","ls","Nt","us","f","z$1","t","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","cut","fold","direction","otherBody","commonLines","other","shape","eraseStrand","matrix","shapes","exportSVG","drawFlap","width","height","fillet","contraction","contractionMode","contractionLeftInput","contractionRightInput","leftContractionMode","rightContractionMode","contractionLeft","contractionRight","flapMaker","draw","topFlap","options","bottomFlap","leftFlap","contractionTop","contractionBottom","topContractionMode","bottomContractionMode","rightFlap","drawFlaps","drawBump","FoldLockBump","paperThickness","pen","dieline","PointsDistribution","points","linearDistribution","totalWidth","objectWidth","gapShare","margin","objectsCount","gapSize","linearSpread","gap","count","totalLength"],"mappings":"oOAAA,SAASA,GAAGC,EAAG,EAAGC,EAAGC,EAAG,CACtB,OAAOF,GAAKE,GAAK,GAAKD,CACxB,CACA,MAAME,EAAG,CACP,YAAY,EAAI,EAAI,EAAGF,EAAI,EAAI,EAAGC,EAAI,GAAK,EAAGE,EAAI,GAAK,EAAG,CACxD,KAAK,KAAO,EAAG,KAAK,KAAOH,EAAG,KAAK,KAAOC,EAAG,KAAK,KAAOE,CAC1D,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,KAAO,KAAK,IACzB,CACD,IAAI,QAAS,CACX,OAAO,KAAK,KAAO,KAAK,IACzB,CACD,SAAS,EAAG,CACV,KAAM,CAACH,EAAGC,CAAC,EAAI,EACf,OAAOH,GAAG,KAAK,KAAM,KAAK,KAAME,EAAGA,CAAC,GAAKF,GAAG,KAAK,KAAM,KAAK,KAAMG,EAAGA,CAAC,CACvE,CACD,SAAS,EAAG,CACV,OAAOH,GAAG,KAAK,KAAM,KAAK,KAAM,EAAE,KAAM,EAAE,IAAI,GAAKA,GAAG,KAAK,KAAM,KAAK,KAAM,EAAE,KAAM,EAAE,IAAI,CAC3F,CACD,SAAS,EAAG,CACV,KAAM,CAACE,EAAGC,CAAC,EAAI,EACf,OAAO,IAAIC,GACT,KAAK,IAAI,KAAK,KAAMF,CAAC,EACrB,KAAK,IAAI,KAAK,KAAMC,CAAC,EACrB,KAAK,IAAI,KAAK,KAAMD,CAAC,EACrB,KAAK,IAAI,KAAK,KAAMC,CAAC,CAC3B,CACG,CACD,MAAM,EAAG,CACP,OAAO,IAAIC,GACT,KAAK,IAAI,KAAK,KAAM,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAM,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAM,EAAE,IAAI,EAC1B,KAAK,IAAI,KAAK,KAAM,EAAE,IAAI,CAChC,CACG,CACH,CACA,SAASE,GAAGL,EAAG,CACb,OAAOA,EAAE,OAAO,CAAC,EAAGC,IAAM,EAAE,SAASA,CAAC,EAAG,IAAIE,EAAI,CACnD,CACA,MAAMG,GAAK,CAACN,EAAG,EAAI,OAAS,CAC1B,IAAIC,EAAID,EACR,OAAO,KAAK,IAAIA,CAAC,EAAI,IAAMC,EAAI,GAAIA,EAAE,QAAQ,CAAC,KAAK,MAAM,CAAC,CAAC,CAC7D,EACA,SAASM,GAAGP,EAAG,EAAI,KAAM,CACvB,OAAO,MAAM,KACX,IAAI,IACFA,EAAE,IAAI,CAAC,CAACC,EAAGC,CAAC,IAAM,CAChB,IAAII,GAAGL,EAAG,CAAC,KAAKK,GAAGJ,EAAG,CAAC,KACvB,CAACD,EAAGC,CAAC,CACb,CAAO,CACF,EAAC,OAAQ,CACd,CACA,CACA,MAAMM,GAAK,KAAK,GAAK,IAAKC,GAAK,IAAM,KAAK,GAAIC,EAAKV,GAAM,IAAIA,EAAE,CAAC,MAAMA,EAAE,CAAC,KAAMW,EAAI,CAAC,CAACX,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,EAAGE,EAAI,OAAS,KAAK,IAAIJ,EAAIC,CAAC,GAAKG,GAAK,KAAK,IAAI,EAAIF,CAAC,GAAKE,EAAGQ,EAAI,CAAC,CAACZ,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,IAAM,CAACF,EAAIC,EAAG,EAAIC,CAAC,EAAGW,EAAI,CAAC,CAACb,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,IAAM,CAACF,EAAIC,EAAG,EAAIC,CAAC,EAAGY,GAAK,CAAC,CAACd,EAAG,CAAC,IAAMA,EAAIA,EAAI,EAAI,EAAGe,EAAI,CAAC,CAACf,EAAG,CAAC,EAAGC,IAAM,CAACD,EAAIC,EAAG,EAAIA,CAAC,EAAGe,GAAK,CAAC,CAAChB,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,EAAI,CAAC,EAAG,CAAC,KAAOF,EAAIC,IAAM,GAAK,EAAIC,IAAM,EAAGe,EAAI,CAACjB,EAAG,EAAI,CAAC,EAAG,CAAC,IAAM,KAAK,KAAKgB,GAAGhB,EAAG,CAAC,CAAC,EAC1Z,SAASkB,GAAG,CAAClB,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,EAAG,CAC1B,OAAOF,EAAIE,EAAI,EAAID,CACrB,CACA,SAASkB,GAAG,CAACnB,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,EAAG,CAC1B,OAAOF,EAAIC,EAAI,EAAIC,CACrB,CACA,SAASkB,EAAE,CAACpB,EAAG,CAAC,EAAG,CACjB,MAAMC,EAAIgB,EAAE,CAACjB,EAAG,CAAC,CAAC,EAClB,MAAO,CAACA,EAAIC,EAAG,EAAIA,CAAC,CACtB,CACA,SAASoB,GAAGrB,EAAG,EAAG,CAChB,MAAMC,EAAI,KAAK,IAAI,CAAC,EAAID,EAAGE,EAAI,KAAK,IAAI,CAAC,EAAIF,EAC7C,MAAO,CAACC,EAAGC,CAAC,CACd,CACA,SAASoB,GAAG,CAACtB,EAAG,CAAC,EAAG,CAClB,OAAO,KAAK,MAAM,EAAGA,CAAC,CACxB,CACA,SAASuB,GAAGvB,EAAG,CACb,MAAM,EAAIiB,EAAEjB,CAAC,EAAGC,EAAIqB,GAAGtB,CAAC,EACxB,MAAO,CAAC,EAAGC,CAAC,CACd,CACA,SAASuB,GAAGxB,EAAG,EAAGC,EAAI,KAAM,CAC1B,MAAMC,EAAIgB,GAAGlB,EAAG,CAAC,EAAGI,EAAIU,GAAGd,CAAC,EAAGyB,EAAIX,GAAG,CAAC,EACvC,OAAOZ,EAAIA,EAAIE,EAAIqB,EAAIxB,EAAIA,CAC7B,CACA,SAASyB,EAAE1B,EAAG,CACZ,MAAO,CAAC,CAACA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CACrB,CACA,SAAS2B,GAAG3B,EAAG,CACb,MAAO,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,CAAC,CACrB,CACA,SAAS4B,GAAG5B,EAAG,EAAGC,EAAG,CACnB,OAAOU,EAAEV,EAAGD,CAAC,GAAKwB,GAAGX,EAAEZ,EAAGD,CAAC,EAAG,CAAC,CACjC,CACA,MAAM6B,GAAK,CAAC7B,EAAG,IAAM,CACnB,KAAM,CAACC,EAAGC,EAAGE,EAAGqB,EAAGK,EAAG,EAAGC,EAAGC,EAAG,CAAC,EAAIhC,EAAG,CAACiC,EAAGC,EAAGC,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,CAAC,EAAI,EACrE,MAAO,CACLrC,EAAIgC,EAAI/B,EAAIkC,EAAIhC,EAAI,EACpBH,EAAIiC,EAAIhC,EAAI,EAAIE,EAAIkC,EACpBrC,EAAIkC,EAAIjC,EAAImC,EAAIjC,EAAI,EACpBqB,EAAIQ,EAAIH,EAAIM,EAAI,EAAI,EACpBX,EAAIS,EAAIJ,EAAI,EAAI,EAAIQ,EACpBb,EAAIU,EAAIL,EAAIO,EAAI,EAAI,EACpBN,EAAIE,EAAID,EAAII,EAAI,EAAI,EACpBL,EAAIG,EAAIF,EAAI,EAAI,EAAIM,EACpBP,EAAII,EAAIH,EAAIK,EAAI,EAAI,CACxB,CACA,EAAGE,GAAMvC,GAAM,CACb,KAAM,CAAC,EAAGC,EAAGC,EAAGE,EAAGqB,EAAGK,EAAG,EAAGC,EAAGC,CAAC,EAAIhC,EAAG,EAAI,GAAKyB,EAAIO,EAAIF,EAAIC,GAAK9B,GAAKG,EAAI4B,EAAIF,EAAI,GAAK5B,GAAKE,EAAI2B,EAAIN,EAAI,GACxG,MAAO,EACJA,EAAIO,EAAIF,EAAIC,GAAK,GACjB7B,EAAI6B,EAAI9B,EAAI+B,GAAK,GACjB/B,EAAI6B,EAAI5B,EAAIuB,GAAK,GACjBK,EAAI,EAAI1B,EAAI4B,GAAK,GACjB,EAAIA,EAAI9B,EAAI,GAAK,GACjBA,EAAIE,EAAI,EAAI0B,GAAK,GACjB1B,EAAI2B,EAAIN,EAAI,GAAK,GACjBxB,EAAI,EAAI,EAAI8B,GAAK,GACjB,EAAIN,EAAIxB,EAAIG,GAAK,CACtB,CACA,EAAGoC,GAAMxC,GAAM,CACb,KAAM,CAAC,EAAGC,EAAGC,EAAGE,EAAGqB,EAAGK,EAAG,EAAGC,EAAGC,CAAC,EAAIhC,EACpC,MAAO,CAAC,EAAGI,EAAG,EAAGH,EAAGwB,EAAGM,EAAG7B,EAAG4B,EAAGE,CAAC,CACnC,EACA,MAAMS,CAAE,CACN,YAAY,EAAG,CACb,KAAK,QAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,IAAM,KAAK,QAAU,CAAC,GAAG,CAAC,EACvE,CACD,OAAQ,CACN,OAAO,IAAIA,EAAE,KAAK,OAAO,CAC1B,CACD,WAAY,CACV,OAAO,KAAK,QAAUD,GAAG,KAAK,OAAO,EAAG,IACzC,CACD,SAAU,CACR,OAAO,KAAK,QAAUD,GAAG,KAAK,OAAO,EAAG,IACzC,CACD,UAAU,EAAGtC,EAAG,CACd,OAAO,KAAK,QAAU4B,GAAG,KAAK,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG5B,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,IACtE,CACD,OAAO,EAAGA,EAAG,CACX,MAAMC,EAAI,KAAK,IAAI,CAAC,EAAGE,EAAI,KAAK,IAAI,CAAC,EAAGqB,EAAI,CAACvB,EAAG,CAACE,EAAG,EAAGA,EAAGF,EAAG,EAAG,EAAG,EAAG,CAAC,EACvE,OAAOD,GAAK,KAAK,UAAUA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAG,KAAK,QAAU4B,GAAG,KAAK,QAASJ,CAAC,EAAGxB,GAAK,KAAK,UAAU,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,CAAC,EAAG,IAChH,CACD,SAAU,CACR,OAAO,KAAK,QAAU4B,GAAG,KAAK,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,IACvE,CACD,SAAU,CACR,OAAO,KAAK,QAAUA,GAAG,KAAK,QAAS,CAAC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,IACvE,CACD,WAAW,EAAG5B,EAAG,CACf,KAAM,CAACC,EAAGE,CAAC,EAAI,EAAGqB,EAAI,KAAK,MAAMrB,EAAGF,CAAC,EACrC,OAAOD,GAAK,KAAK,UAAUA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAG,KAAK,OAAOwB,CAAC,EAAG,KAAK,QAAO,EAAI,KAAK,OAAO,CAACA,CAAC,EAAGxB,GAAK,KAAK,UAAU,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,CAAC,EAAG,IAC7H,CACD,aAAa,EAAG,CACd,OAAO,GAAK,KAAK,UAAU,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAG,KAAK,QAAU4B,GAAG,KAAK,QAAS,CAAC,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,GAAK,KAAK,UAAU,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,CAAC,CAAC,EAAG,IAC5I,CACD,MAAM,EAAG5B,EAAG,CACV,OAAOA,GAAK,KAAK,UAAUA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAG,KAAK,QAAU4B,GAAG,KAAK,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG5B,GAAK,KAAK,UAAU,CAACA,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,CAAC,EAAG,IAC1I,CACD,UAAU,EAAG,CACX,KAAM,CAACA,EAAGC,CAAC,EAAI,EAAG,CAACE,EAAGqB,EAAGK,EAAG,EAAGC,EAAGC,CAAC,EAAI,KAAK,QAC5C,MAAO,CAAC5B,EAAIH,EAAIwB,EAAIvB,EAAI4B,EAAG,EAAI7B,EAAI8B,EAAI7B,EAAI8B,CAAC,CAC7C,CACD,eAAe,EAAG,CAChB,KAAM,CAAC/B,EAAGC,CAAC,EAAI,KAAK,UAAU,CAAC,KAAK,IAAI,CAAC,EAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAG,CAACE,EAAGqB,CAAC,EAAI,KAAK,UAAU,CAAC,EAAG,CAAC,CAAC,EACzF,OAAO,KAAK,MAAMvB,EAAIuB,EAAGxB,EAAIG,CAAC,CAC/B,CACD,kBAAmB,CACjB,KAAM,CAAC,EAAS,CAAA,CAAA,CAAAH,CAAC,EAAI,KAAK,QAC1B,OAAO,EAAIA,EAAI,CAChB,CACD,aAAc,CACZ,KAAM,CAAC,EAAO,CAAA,CAAAA,CAAC,EAAI,KAAK,QACxB,OAAO,KAAK,KAAK,EAAI,EAAIA,EAAIA,CAAC,CAC/B,CACH,CACA,IAAAyC,GAAA,KAAS,CACP,WAAW,EAAG,CACZ,MAAMzC,EAAI,IAAIwC,EAAC,EAAG,UAAU,EAAG,CAAC,EAChC,OAAO,KAAK,UAAUxC,CAAC,CACxB,CACD,WAAW,EAAG,CACZ,MAAMA,EAAI,IAAIwC,EAAC,EAAG,UAAU,EAAG,CAAC,EAChC,OAAO,KAAK,UAAUxC,CAAC,CACxB,CACD,UAAU,EAAGA,EAAG,CACd,MAAMC,EAAI,IAAIuC,EAAC,EAAG,UAAU,EAAGxC,CAAC,EAChC,OAAO,KAAK,UAAUC,CAAC,CACxB,CACD,YAAY,CAAC,EAAGD,CAAC,EAAG,CAClB,MAAMC,EAAI,IAAIuC,EAAC,EAAG,UAAU,EAAGxC,CAAC,EAChC,OAAO,KAAK,UAAUC,CAAC,CACxB,CACD,OAAO,EAAGD,EAAG,CACX,MAAMC,EAAI,IAAIuC,EAAC,EAAG,OAChB,EAAIjC,GACJP,CACN,EACI,OAAO,KAAK,UAAUC,CAAC,CACxB,CACD,MAAM,EAAGD,EAAG,CACV,MAAMC,EAAI,IAAIuC,EAAC,EAAG,MAAM,EAAGxC,CAAC,EAC5B,OAAO,KAAK,UAAUC,CAAC,CACxB,CACD,aAAa,EAAG,CACd,MAAMD,EAAI,IAAIwC,EAAG,EAAC,aAAa,CAAC,EAChC,OAAO,KAAK,UAAUxC,CAAC,CACxB,CACD,OAAO,EAAI,IAAKA,EAAG,CACjB,MAAMC,EAAI,IAAIuC,EACd,OAAO,IAAM,IAAMvC,EAAE,QAAO,EAAK,IAAM,IAAMA,EAAE,QAAS,EAAGA,EAAE,WAAW,EAAGD,CAAC,EAAG,KAAK,UAAUC,CAAC,CAChG,CACH,EACA,MAAMyC,WAAWC,EAAG,CAClB,YAAY,EAAG3C,EAAG,CAChB,MAAK,EAAI,KAAK,WAAa,EAAG,KAAK,UAAYA,EAAG,KAAK,UAAY,KAAM,KAAK,WAAa,EAAG,KAAK,UAAYA,CAChH,CACD,IAAI,MAAO,CACT,MAAO,GAAG,KAAK,eAAeS,EAAE,KAAK,UAAU,OAAOA,EACpD,KAAK,SACN,GACF,CACD,IAAI,MAAO,CACT,OAAO,KAAK,IACb,CACD,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAO,KAAK,IACb,CACH,CACA,MAAMmC,UAAUF,EAAG,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,YAAc,OAAQ,KAAK,GAAK,KAAM,KAAK,OAAS,KAAM,KAAK,YAAc,KAAM,KAAK,aAAe,IAClI,CACD,iBAAiB,EAAG,CAClB,MAAM1C,EAAI,KAAK,OAAS,KAAK,UAC7B,OAAO,GAAK,CAACA,GAAK,EAAI,GAAK,CAACA,CAC7B,CACD,WAAW,EAAG,CACZ,OAAOW,EAAE,KAAK,WAAYG,EAAE,KAAK,EAAG,CAAC,CAAC,CACvC,CACD,IAAI,QAAS,CACX,OAAOE,EAAE,KAAK,WAAY,KAAK,SAAS,CACzC,CACD,IAAI,cAAe,CACjB,OAAOD,GAAG,KAAK,WAAY,KAAK,SAAS,CAC1C,CACD,IAAI,GAAI,CACN,OAAO,KAAK,KAAO,OAAS,KAAK,GAAKH,EAAE,KAAK,UAAW,KAAK,UAAU,GAAI,KAAK,EACjF,CACD,IAAI,OAAQ,CACV,GAAI,KAAK,SAAW,KAAM,CACxB,KAAM,CAAC,EAAGZ,CAAC,EAAI,KAAK,EACpB,KAAK,OAASA,EAAI,CACnB,CACD,OAAO,KAAK,MACb,CACD,IAAI,YAAa,CACf,OAAO,KAAK,cAAgB,OAAS,KAAK,YAAc,KAAK,WAAW,CAAC,EAAI,KAAK,MAAQ,KAAK,WAAW,CAAC,GAAI,KAAK,WACrH,CACD,IAAI,UAAW,CACb,OAAOW,EAAE,KAAK,WAAYG,EAAE,KAAK,EAAG,EAAG,CAAC,CACzC,CACD,OAAO,EAAG,CACR,OAAO,aAAa8B,EAAIlC,EAAE,KAAK,WAAY,EAAE,UAAU,GAAKA,EAAE,KAAK,UAAW,EAAE,SAAS,GAAKA,EAAE,KAAK,UAAW,EAAE,UAAU,GAAKA,EAAE,KAAK,WAAY,EAAE,SAAS,EAAI,EACpK,CACD,OAAQ,CACN,OAAO,IAAIkC,EAAE,KAAK,WAAY,KAAK,SAAS,CAC7C,CACD,SAAU,CACR,OAAO,IAAIA,EAAE,KAAK,UAAW,KAAK,UAAU,CAC7C,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,eAAiB,OAAS,KAAK,aAAe,IAAI1C,GAC5D,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACvD,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACvD,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACvD,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,SAC7D,GAAQ,KAAK,YACV,CACD,aAAa,EAAG,CACd,MAAMF,EAAIY,EAAE,EAAG,KAAK,UAAU,EAAGX,EAAIiB,GAAGlB,EAAG,KAAK,CAAC,EAAI,KAAK,aAC1D,GAAIC,EAAI,EACN,OAAOe,EAAE,EAAG,KAAK,UAAU,EAC7B,GAAIf,EAAI,EACN,OAAOe,EAAE,EAAG,KAAK,SAAS,EAC5B,MAAMb,EAAI,KAAK,WAAWF,CAAC,EAC3B,OAAOe,EAAE,EAAGb,CAAC,CACd,CACD,YAAY,EAAG,CACb,GAAIO,EAAE,EAAG,KAAK,WAAY,KAAK,SAAS,EACtC,MAAO,GACT,MAAMV,EAAIY,EAAE,EAAG,KAAK,UAAU,EAC9B,GAAI,CAACW,GAAG,KAAK,EAAGvB,CAAC,EACf,MAAO,GACT,MAAMC,EAAIiB,GAAGlB,EAAG,KAAK,CAAC,EAAI,KAAK,aAC/B,OAAO,KAAK,iBAAiBC,CAAC,CAC/B,CACD,WAAW,EAAG,CACZ,OAAO,KAAK,CACb,CACD,UAAU,EAAG,CACX,GAAI,CAAC,KAAK,YAAY,CAAC,EACrB,MAAM,IAAI,MAAM,yBAAyB,EAC3C,OAAOkB,EAAE,KAAK,CAAC,CAChB,CACD,IAAI,cAAe,CACjB,OAAOM,EAAEN,EAAE,KAAK,CAAC,CAAC,CACnB,CACD,IAAI,qBAAsB,CACxB,OAAOA,EAAE,KAAK,CAAC,CAChB,CACD,IAAI,oBAAqB,CACvB,OAAOA,EAAE,KAAK,CAAC,CAChB,CACD,QAAQ,EAAG,CACT,IAAInB,EACJ,GAAI,MAAM,QAAQ,CAAC,GAAK,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQ,EAAE,CAAC,CAAC,EAAIA,EAAI,EAAIA,EAAI,CAAC,CAAC,EAAGA,EAAE,QAAS8B,GAAM,CACtD,GAAI,CAAC,KAAK,YAAYA,CAAC,EACrB,MAAM,IAAI,MACR,SAASrB,EAAEqB,CAAC,uBAAuB,KAAK,MAClD,CACA,CAAK,EACD,MAAM7B,EAAI,CAAC,KAAK,WAAY,GAAGD,EAAG,KAAK,SAAS,EAAGG,EAAIG,GAAGL,CAAC,EAAGuB,EAAI,KAAK,UAAU,CAAC,EAAI,KAAK,WAAW,CAAC,EACvG,IAAIK,EAAI,KAAK,KAAKL,CAAC,EAAG,EAAI,EAC1B,OAAO,KAAK,IAAIA,CAAC,EAAI,KAAK,YAAcK,EAAI,KAAK,KAAK,KAAK,UAAU,CAAC,EAAI,KAAK,WAAW,CAAC,CAAC,EAAG,EAAI,GAAI1B,EAAE,KACvG,CAAC2B,EAAGC,IAAMF,GAAKC,EAAE,CAAC,EAAIC,EAAE,CAAC,EAC/B,EAAO5B,EAAE,QAAQ,CAAC2B,EAAGC,IAAMA,IAAM5B,EAAE,OAAS,EAAI,CAAE,EAAG,IAAIyC,EAAEd,EAAG3B,EAAE4B,EAAI,CAAC,CAAC,CAAC,CACpE,CACD,UAAU,EAAG,CACX,OAAO,IAAIa,EACT,EAAE,UAAU,KAAK,UAAU,EAC3B,EAAE,UAAU,KAAK,SAAS,CAChC,CACG,CACH,CACA,SAASC,GAAG9C,EAAG,CACb,OAAO,MAAM,KAAK,MAAMA,CAAC,EAAE,KAAI,CAAE,CACnC,CACA,SAAS+C,EAAG/C,EAAG,CACb,MAAM,EAAI,KAAK,IAAI,GAAGA,EAAE,IAAKC,GAAMA,EAAE,MAAM,CAAC,EAC5C,OAAO6C,GAAG,CAAC,EAAE,IAAK7C,GAAMD,EAAE,IAAKE,GAAMA,EAAED,CAAC,CAAC,CAAC,CAC5C,CACA,SAAS+C,GAAGhD,EAAG,EAAI,KAAM,CACvB,OAAOA,EAAI,EAAIA,EAAI,EAAI,KAAK,GAAKA,GAAK,EAAI,KAAK,GAAKA,GAAK,EAAI,KAAK,IAAMA,EAAI,EAAI,KAAK,GAAK,EAAI,EAAIA,CACpG,CACA,SAASiD,GAAGjD,EAAG,EAAGC,EAAGC,EAAI,KAAM,CAC7B,IAAIE,EAAI,EAAIJ,EACZ,OAAOC,IAAMG,EAAI,CAACA,GAAIA,EAAI,IAAMA,GAAK,EAAI,KAAK,IAAKA,EAAI,EAAI,KAAK,GAAKF,EAAI,EAAIE,CAC/E,CACA,MAAM8C,GAAK,CAAClD,EAAG,EAAGC,IAAM,CACtB,MAAMC,EAAIgB,GAAGlB,EAAE,EAAG,EAAE,CAAC,EAAGI,EAAIU,GAAGd,EAAE,CAAC,EAAGyB,EAAIX,GAAG,EAAE,CAAC,EAAGgB,EAAI7B,EAAIA,EAAIA,EAAID,EAAE,UAAY,EAAE,UAClF,GAAIE,EAAIA,EAAIE,EAAIqB,EAAIK,EAClB,MAAO,WACT,MAAM,EAAIjB,EAAE,EAAE,WAAYb,EAAE,UAAU,EAAG+B,EAAIb,GAAG,EAAG,EAAE,CAAC,EAAIhB,EAAG8B,EAAId,GAAG,EAAGlB,EAAE,CAAC,EAAIE,EAC9E,MAAO,CACL,mBAAoB6B,EACpB,mBAAoBC,CACxB,CACA,EACA,SAASmB,GAAGnD,EAAG,EAAGC,EAAI,GAAIC,EAAG,CAC3B,MAAME,EAAI8C,GAAGlD,EAAG,EAAGE,CAAC,EACpB,GAAIE,IAAM,WAAY,CACpB,GAAI,CAACH,EACH,OAAO,KACT,GAAID,EAAE,OAAO,CAAC,EACZ,OAAOA,EACT,MAAM,EAAIO,GACR,CACE,EAAE,YAAYP,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7C,EAAE,YAAYA,EAAE,SAAS,EAAIA,EAAE,UAAY,KAC3CA,EAAE,YAAY,EAAE,UAAU,EAAI,EAAE,WAAa,KAC7CA,EAAE,YAAY,EAAE,SAAS,EAAI,EAAE,UAAY,IAC5C,EAAC,OAAQ+B,GAAMA,IAAM,IAAI,CAChC,EAAM,KAAK,CAACA,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAG5B,GAFI,EAAE,SAAW,GAEb,EAAE,SAAW,EACf,OAAO,KACT,GAAI,EAAE,SAAW,EACf,OAAO,IAAIa,EAAE,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EACzB,MAAM,QAAQ,MAAM,CAAC,EAAG,IAAI,MAC1B,+DACN,CACG,CACD,KAAM,CAAE,mBAAoBpB,EAAG,mBAAoBK,CAAC,EAAK1B,EACzD,MAAO,CAACJ,EAAE,iBAAiByB,CAAC,GAAK,CAAC,EAAE,iBAAiBK,CAAC,EAAI,KAAO9B,EAAE,WAAWyB,CAAC,CACjF,CACA,MAAM2B,GAAK,CAACpD,EAAG,IAAM,CACnB,MAAMC,EAAIY,EAAEb,EAAG,CAAC,EAChB,OAAOuB,GAAGtB,CAAC,CACb,EACA,MAAMoD,UAAUV,EAAG,CACjB,YAAY,EAAG1C,EAAGC,EAAGE,EAAI,GAAI,CAAE,aAAcqB,EAAI,EAAE,EAAK,CAAA,EAAI,CAC1D,GAAI,MAAM,EAAGxB,CAAC,EAAG,KAAK,YAAc,MAAO,KAAK,cAAgB,KAAM,KAAK,eAAiB,KAAM,KAAK,QAAU,KAAM,KAAK,YAAc,KAAM,KAAK,WAAa,KAAM,KAAK,aAAe,KAAM,KAAK,OAASC,EAAG,KAAK,UAAYE,EAAG,CAACqB,EAAG,CACzO,GAAId,EAAE,EAAGV,CAAC,EACR,MAAM,IAAI,MAAM,sCAAsC,EACxD,GAAI,KAAK,IAAI,KAAK,OAASgB,EAAE,KAAK,UAAW,KAAK,MAAM,CAAC,EAAI,KAAK,UAChE,MAAM,IAAI,MACR,8CAA8CP,EAC5C,CACZ,SAAmBA,EAAET,CAAC,cAAcS,EAAER,CAAC,IACvC,CACK,CACF,CACD,IAAI,MAAO,CACT,MAAO,OAAOQ,EAAE,KAAK,UAAU,MAAMA,EACnC,KAAK,SACN,MAAKA,EAAE,KAAK,MAAM,MAAM,KAAK,UAAY,KAAO,QAClD,CACD,IAAI,cAAe,CACjB,GAAI,KAAK,gBAAkB,KAAM,CAC/B,KAAM,CAAC,EAAGT,CAAC,EAAI,KAAK,OAAQC,EAAI,KAAK,OAAS,KAAK,OACnD,KAAK,cAAgB,CACnB,GAAI,EAAIA,EACR,GAAI,EACJ,GAAI,EAAIA,EACR,EAAG,EAAE,EAAI,GAAKA,EACd,EAAG,EAAE,EAAID,GAAKC,EACd,GAAI,EAAI,EAAID,EAAIA,EAAIC,GAAKA,CACjC,CACK,CACD,OAAO,KAAK,aACb,CACD,iBAAiB,EAAG,CAClB,MAAO,GAAI,GAAK,CAAC,KAAK,WAAa,GAAK,CAAC,KAAK,SAC/C,CACD,aAAa,EAAG,CACd,OAAO+C,GAAG,KAAK,WAAYD,GAAG,CAAC,EAAG,KAAK,SAAS,EAAI,KAAK,aAC1D,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,iBAAmB,KAAK,eAAiBC,GACnD,KAAK,WACL,KAAK,UACL,KAAK,SACX,GAAQ,KAAK,cACV,CACD,WAAW,EAAG,CACZ,OAAOrC,EACL,KAAK,OACLS,GACE,KAAK,OACL,KAAK,WAAa,EAAI,KAAK,eAAiB,KAAK,UAAY,GAAK,EACnE,CACP,CACG,CACD,aAAa,EAAG,CACd,KAAM,CAACpB,EAAGC,CAAC,EAAIkD,GAAG,EAAG,KAAK,MAAM,EAChC,GAAI,KAAK,IAAInD,EAAI,KAAK,MAAM,EAAI,KAAK,UACnC,MAAM,IAAI,MACR,SAASS,EAAE,CAAC,uBAAuB,KAAK,MAChD,EACI,MAAMN,EAAI,KAAK,aAAaF,CAAC,EAC7B,GAAI,CAAC,KAAK,iBAAiBE,CAAC,EAC1B,MAAM,IAAI,MACR,SAASM,EAAE,CAAC,uBAAuB,KAAK,MAChD,EACI,OAAON,CACR,CACD,IAAI,QAAS,CACX,OAAO,KAAK,UAAY,OAAS,KAAK,QAAUa,EAAE,KAAK,WAAY,KAAK,MAAM,GAAI,KAAK,OACxF,CACD,IAAI,YAAa,CACf,GAAI,KAAK,cAAgB,KAAM,CAC7B,KAAM,CAAC,EAAGhB,CAAC,EAAIY,EAAE,KAAK,WAAY,KAAK,MAAM,EAC7C,KAAK,YAAcmC,GAAG,KAAK,MAAM/C,EAAG,CAAC,CAAC,CACvC,CACD,OAAO,KAAK,WACb,CACD,IAAI,WAAY,CACd,GAAI,KAAK,aAAe,KAAM,CAC5B,KAAM,CAAC,EAAGA,CAAC,EAAIY,EAAE,KAAK,UAAW,KAAK,MAAM,EAC5C,KAAK,WAAamC,GAAG,KAAK,MAAM/C,EAAG,CAAC,CAAC,CACtC,CACD,OAAO,KAAK,UACb,CACD,IAAI,QAAS,CACX,OAAO,KAAK,OAAS,KAAK,aAC3B,CACD,IAAI,cAAe,CACjB,OAAO,KAAK,OAAS,KAAK,MAC3B,CACD,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,EAAG,CAC3B,CACD,OAAO,EAAG,CACR,MAAO,EAAE,aAAaoD,IAAM,CAAC1C,EAAE,KAAK,OAAQ,EAAE,MAAM,EAAI,GAAKA,EAAE,KAAK,WAAY,EAAE,UAAU,GAAKA,EAAE,KAAK,UAAW,EAAE,SAAS,GAAK,KAAK,YAAc,EAAE,WAAaA,EAAE,KAAK,UAAW,EAAE,UAAU,GAAKA,EAAE,KAAK,WAAY,EAAE,SAAS,GAAK,KAAK,YAAc,CAAC,EAAE,SAClQ,CACD,OAAQ,CACN,OAAO,IAAI0C,EACT,KAAK,WACL,KAAK,UACL,KAAK,OACL,KAAK,SACX,CACG,CACD,SAAU,CACR,OAAO,IAAIA,EACT,KAAK,UACL,KAAK,WACL,KAAK,OACL,CAAC,KAAK,SACZ,CACG,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,KAAM,CAC9B,MAAM,EAAI,KAAK,OAAS,KAAK,UAAWpD,EAAKC,GAAM,KAAK,iBAAiB,KAAK,aAAaA,CAAC,CAAC,EAC7F,KAAK,aAAe,IAAIC,GACtBF,EAAE,KAAK,EAAE,EAAI,KAAK,OAAO,CAAC,EAAI,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACzFA,EAAE,KAAK,GAAK,GAAG,EAAI,KAAK,OAAO,CAAC,EAAI,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UAC/FA,EAAE,CAAC,EAAI,KAAK,OAAO,CAAC,EAAI,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,UACnFA,EAAE,KAAK,GAAK,CAAC,EAAI,KAAK,OAAO,CAAC,EAAI,EAAI,KAAK,IAAI,KAAK,WAAW,CAAC,EAAG,KAAK,UAAU,CAAC,CAAC,EAAI,KAAK,SACrG,CACK,CACD,OAAO,KAAK,YACb,CACD,aAAa,EAAG,CACd,KAAM,CAACA,EAAGC,CAAC,EAAIkD,GAAG,EAAG,KAAK,MAAM,EAChC,OAAO,KAAK,iBAAiB,KAAK,aAAalD,CAAC,CAAC,EAAI,KAAK,IAAID,EAAI,KAAK,MAAM,EAAI,KAAK,KACpF,KAAK,IACHe,GAAG,EAAG,KAAK,UAAU,EACrBA,GAAG,EAAG,KAAK,SAAS,CACrB,CACP,CACG,CACD,YAAY,EAAG,CACb,GAAIL,EAAE,EAAG,KAAK,UAAU,GAAKA,EAAE,EAAG,KAAK,SAAS,EAC9C,MAAO,GACT,KAAM,CAACV,EAAGC,CAAC,EAAIkD,GAAG,EAAG,KAAK,MAAM,EAChC,GAAI,KAAK,IAAInD,EAAI,KAAK,MAAM,EAAI,KAAK,UACnC,MAAO,GACT,MAAMG,EAAI,KAAK,aAAaF,CAAC,EAC7B,OAAO,KAAK,iBAAiBE,CAAC,CAC/B,CACD,WAAW,EAAG,CACZ,MAAMH,EAAI,KAAK,WAAa,EAAI,KAAK,eAAiB,KAAK,UAAY,GAAK,GAAIC,EAAI,KAAK,OAAS,KAAK,cAAeE,EAAI,CAACF,EAAI,KAAK,IAAID,CAAC,EAAGwB,EAAIvB,EAAI,KAAK,IAAID,CAAC,EAC9J,OAAO,KAAK,UAAY,CAAC,CAACG,EAAG,CAACqB,CAAC,EAAI,CAACrB,EAAGqB,CAAC,CACzC,CACD,UAAU,EAAG,CACX,KAAM,CAACxB,EAAGC,CAAC,EAAIkD,GAAG,EAAG,KAAK,MAAM,EAChC,GAAI,KAAK,IAAInD,EAAI,KAAK,MAAM,EAAI,KAAK,UACnC,MAAM,IAAI,MAAM,yBAAyB,EAC3C,MAAMG,EAAI,KAAK,aAAaF,CAAC,EAC7B,GAAI,CAAC,KAAK,iBAAiBE,CAAC,EAC1B,MAAM,IAAI,MAAM,yBAAyB,EAC3C,MAAMqB,EAAIJ,GAAG,EAAGnB,CAAC,EACjB,OAAQ,KAAK,UAAYyB,GAAKD,GAAGN,EAAEK,CAAC,CAAC,CACtC,CACD,IAAI,qBAAsB,CACxB,MAAM,EAAIJ,GAAG,EAAG,KAAK,UAAU,EAC/B,OAAQ,KAAK,UAAYM,GAAKD,GAAGN,EAAE,CAAC,CAAC,CACtC,CACD,IAAI,oBAAqB,CACvB,MAAM,EAAIC,GAAG,EAAG,KAAK,SAAS,EAC9B,OAAQ,KAAK,UAAYM,GAAKD,GAAGN,EAAE,CAAC,CAAC,CACtC,CACD,QAAQ,EAAG,CACT,IAAInB,EACJ,GAAI,MAAM,QAAQ,CAAC,GAAK,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQ,EAAE,CAAC,CAAC,EAAIA,EAAI,EAAIA,EAAI,CAAC,CAAC,EACpC,MAAM,EAAI,CAAC,EAAG,EAAG,GAAGA,EAAE,IAAKqD,GAAM,KAAK,aAAaA,CAAC,CAAC,CAAC,EAAG7B,EAAI,IAAI,IAC/DsB,EAAG,CAAC,EAAG,CAAC,KAAK,WAAY,KAAK,UAAW,GAAG9C,CAAC,CAAC,CAAC,CACrD,EACI,EAAE,KAAK,CAACqD,EAAGvB,IAAMuB,EAAIvB,CAAC,EACtB,IAAI,EAAI,KACR,OAAO,EAAE,QAAQ,CAACuB,EAAGvB,IAAM,CACzB,GAAIA,IAAM,EAAE,OAAS,EACnB,MAAO,GACT,MAAM,EAAI,EAAEA,EAAI,CAAC,EACjB,GAAI,EAAIuB,EAAI,KAAK,UACf,OAAO,IAAM,OAAS,EAAIA,GAAI,CAAA,EAChC,MAAMC,EAAI,IAAM,KAAOD,EAAI,EAAGrB,EAAI,IAAIoB,EACpC5B,EAAE,IAAI8B,CAAC,GAAK,KAAK,WAAWA,CAAC,EAC7B9B,EAAE,IAAI,CAAC,GAAK,KAAK,WAAW,CAAC,EAC7B,KAAK,OACL,KAAK,SACb,EACM,OAAO,EAAI,KAAMQ,CACvB,CAAK,CACF,CACD,UAAU,EAAG,CACX,OAAO,IAAIoB,EACT,EAAE,UAAU,KAAK,UAAU,EAC3B,EAAE,UAAU,KAAK,SAAS,EAC1B,EAAE,UAAU,KAAK,MAAM,EACvB,EAAE,iBAAgB,EAAK,KAAK,UAAY,CAAC,KAAK,SACpD,CACG,CACH,CACA,SAASG,GAAGxD,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAI,IAAI2C,EAAE,EAAG7C,CAAC,EAAGI,EAAI,IAAIyC,EAAE,EAAG5C,CAAC,EAAGwB,EAAIC,EAAExB,EAAE,mBAAmB,EAAG4B,EAAIJ,EAAEtB,EAAE,kBAAkB,EAAG,EAAI8C,GACrG,CAAE,WAAYhD,EAAE,SAAU,EAAGuB,EAAG,UAAW,IAAM,EACjD,CAAE,WAAYrB,EAAE,SAAU,EAAG0B,EAAG,UAAW,IAAM,CACrD,EACE,GAAI,IAAM,WACR,MAAM,IAAI,MAAM,iDAAiD,EACnE,MAAMC,EAAIb,GACRL,EAAEb,EAAG,CAAC,EACNa,EAAEZ,EAAG,CAAC,CACP,EAAG,EACJ,OAAO,IAAIoD,EACTrD,EACAC,EACAW,EAAEV,EAAE,SAAUa,EAAEU,EAAG,EAAE,kBAAkB,CAAC,EACxCM,EACA,CAAE,aAAc,EAAI,CACxB,CACA,CACA,SAAS0B,GAAGzD,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAI,IAAI2C,EAAE,EAAG7C,CAAC,EAAGI,EAAIsB,EAAExB,EAAE,mBAAmB,EAAGuB,EAAIyB,GACvD,CAAE,WAAYhD,EAAE,SAAU,EAAGE,EAAG,UAAW,IAAM,EACjD,CACE,WAAYJ,EACZ,EAAG0B,EAAEzB,CAAC,EACN,UAAW,IACZ,CACL,EACE,GAAIwB,IAAM,WACR,MAAM,IAAI,MAAM,iDAAiD,EACnE,MAAMK,EAAIlB,EACRV,EAAE,SACFa,EAAEX,EAAGqB,EAAE,kBAAkB,CAC1B,EAAE,EAAIP,GACLL,EAAEiB,EAAG9B,CAAC,EACNa,EAAEiB,EAAGlB,EAAEZ,EAAGC,CAAC,CAAC,CACb,EAAG,EACJ,OAAO,IAAIoD,EAAErD,EAAG,EAAG8B,EAAG,EAAG,CACvB,aAAc,EAClB,CAAG,CACH,CACA,SAAS4B,GAAG1D,EAAG,EAAG,CAChB,MAAMC,EAAIY,EAAE,EAAGb,EAAE,UAAU,EAAGE,EAAIiB,GAAGlB,EAAGD,EAAE,CAAC,EAAIA,EAAE,aACjD,OAAOA,EAAE,WAAWE,CAAC,CACvB,CACA,SAASyD,GAAG3D,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAID,GAAKD,EAAE,UAAWI,EAAIsD,GAAG1D,EAAG,EAAE,MAAM,EAAGyB,EAAIR,EAAEb,EAAG,EAAE,MAAM,EAClE,GAAIqB,EAAI,EAAE,OAASvB,EACjB,MAAO,GACT,GAAI,KAAK,IAAIuB,EAAI,EAAE,MAAM,EAAIvB,EAAG,CAC9B,MAAM+B,EAAI7B,EACV,OAAOJ,EAAE,YAAYiC,CAAC,GAAK,EAAE,YAAYA,CAAC,EAAI,CAACA,CAAC,EAAI,EACrD,CACD,MAAMH,EAAI,CAAA,EAAI,EAAI,KAAK,KACrB,EAAE,OAAS,EAAE,OAASL,EAAIA,CAC3B,EAAEM,EAAI/B,EAAE,oBAAqBgC,EAAIpB,EAAER,EAAGW,EAAEgB,EAAG,CAAC,CAAC,EAC9C/B,EAAE,YAAYgC,CAAC,GAAK,EAAE,YAAYA,CAAC,GAAKF,EAAE,KAAKE,CAAC,EAChD,MAAM,EAAIpB,EAAER,EAAGW,EAAEgB,EAAG,CAAC,CAAC,CAAC,EACvB,OAAO/B,EAAE,YAAY,CAAC,GAAK,EAAE,YAAY,CAAC,GAAK8B,EAAE,KAAK,CAAC,EAAGA,CAC5D,CACA,MAAM8B,GAAM5D,GAAM,CAChB,KAAM,CAAE,WAAY,EAAG,UAAWC,EAAG,OAAQC,EAAG,UAAWE,CAAG,EAAGJ,EACjE,OAAO,IAAIqD,EAAEpD,EAAG,EAAGC,EAAGE,EAAG,CACvB,aAAc,EAClB,CAAG,CACH,EAAGyD,GAAK,CAAC7D,EAAG,IAAM,CAChB,GAAIA,EAAE,OAAO,CAAC,EACZ,MAAO,CAACA,CAAC,EACX,MAAMC,EAAIM,GACR,CACE,EAAE,YAAYP,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7C,EAAE,YAAYA,EAAE,SAAS,EAAIA,EAAE,UAAY,KAC3CA,EAAE,YAAY,EAAE,UAAU,EAAI,EAAE,WAAa,KAC7CA,EAAE,YAAY,EAAE,SAAS,EAAI,EAAE,UAAY,IAC5C,EAAC,OAAQE,GAAMA,IAAM,IAAI,CAG3B,EAAC,KAAK,CAACA,EAAGE,IAAMJ,EAAE,aAAaE,CAAC,EAAIF,EAAE,aAAaI,CAAC,CAAC,EACtD,GAAIH,EAAE,SAAW,EACf,MAAO,GACT,GAAIA,EAAE,SAAW,EACf,MAAO,GACT,GAAIA,EAAE,SAAW,EACf,OAAOD,EAAE,OAAO4D,GAAG,CAAC,CAAC,EAAI,CAAE,EAAG,CAAC,IAAIP,EAAEpD,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGD,EAAE,OAAQA,EAAE,SAAS,CAAC,EACzE,GAAIC,EAAE,SAAW,EAAG,CAClB,MAAMC,EAAIS,EAAEV,EAAE,CAAC,EAAG,EAAE,SAAS,GAAKU,EAAEV,EAAE,CAAC,EAAG,EAAE,UAAU,EAAI,EAAI,EAC9D,MAAO,CACL,IAAIoD,EACFpD,EAAE,EAAIC,CAAC,EACPD,EAAE,EAAIC,CAAC,EACPF,EAAE,OACFA,EAAE,SACH,CACP,CACA,SAAaC,EAAE,SAAW,EACtB,MAAO,CACL,IAAIoD,EAAEpD,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGD,EAAE,OAAQA,EAAE,SAAS,EACvC,IAAIqD,EAAEpD,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGD,EAAE,OAAQA,EAAE,SAAS,CAC7C,EACE,MAAM,IAAI,MAAM,sCAAsC,CACxD,EACA,SAAS,GAAGA,EAAG,EAAGC,EAAI,GAAIC,EAAG,CAC3B,MAAME,EAAIF,GAAKF,EAAE,UAAWyB,EAAIR,EAAEjB,EAAE,OAAQ,EAAE,MAAM,EAAG8B,EAAI9B,EAAE,OAAS,EAAE,OACxE,GAAIyB,EAAIK,EAAI1B,EACV,MAAO,GACT,MAAM,EAAI,KAAK,IAAIJ,EAAE,OAAS,EAAE,MAAM,EACtC,GAAIyB,EAAI,EAAIrB,EACV,MAAO,GACT,GAAIqB,EAAIrB,EACN,OAAO,EAAIA,EAAI,GAAKH,EAAI4D,GAAG7D,EAAG,CAAC,EAAI,GACrC,MAAM+B,EAAIX,EAAEP,EAAE,EAAE,OAAQb,EAAE,MAAM,CAAC,EAAGgC,EAAIP,EAAIK,EAAI1B,EAChD,GAEE4B,GACA,KAAK,IAAIP,EAAI,CAAC,EAAIrB,EAClB,CACA,MAAM,EAAI4B,GAAKhC,EAAE,OAAS,EAAE,OAAS,EAAI,GAAIsC,EAAI1B,EAC/CZ,EAAE,OACFe,EAAEgB,EAAG,EAAI/B,EAAE,MAAM,CACvB,EACI,OAAOA,EAAE,YAAYsC,CAAC,GAAK,EAAE,YAAYA,CAAC,EAAI,CAACA,CAAC,EAAI,EACrD,CACD,MAAM,EAAItC,EAAE,OAASA,EAAE,QAAU,EAAIyB,GAAK,EAAE,OAAS,EAAE,QAAU,EAAIA,GAAKA,EAAI,EAAGQ,EAAIrB,EACnFZ,EAAE,OACFe,EAAEgB,EAAG,CAAC,CACV,EAAKG,EAAI,KAAK,KACVlC,EAAE,OAASA,EAAE,OAAS,EAAI,CAC9B,EAAKmC,EAAIT,EAAEK,CAAC,EAAGK,EAAIxB,EAAEqB,EAAGlB,EAAEoB,EAAGD,CAAC,CAAC,EAAG,EAAItB,EAAEqB,EAAGlB,EAAEoB,EAAG,CAACD,CAAC,CAAC,EAAGG,EAAI,GACxD,OAAOrC,EAAE,YAAYoC,CAAC,GAAK,EAAE,YAAYA,CAAC,GAAKC,EAAE,KAAKD,CAAC,EAAGpC,EAAE,YAAY,CAAC,GAAK,EAAE,YAAY,CAAC,GAAKqC,EAAE,KAAK,CAAC,EAAGA,CAC/G,OACA,MAAMyB,WAAUnB,EAAG,CACjB,YAAY,EAAG1C,EAAGC,EAAGE,EAAGqB,EAAGK,EAAG,EAAI,GAAI,CACpC,aAAcC,EAAI,GAClB,WAAYC,EAAI,KACjB,EAAG,GAAI,CACN,MAAM,EAAG/B,CAAC,EAAG,KAAK,YAAc,cAAe,KAAK,UAAY,KAAM,KAAK,cAAgB,KAAM,KAAK,OAASC,EAC/G,MAAM,EAAIE,GAAKqB,EACf,KAAK,YAAc,EAAIrB,EAAIqB,EAAG,KAAK,YAAc,EAAIA,EAAIrB,EACzD,MAAM6B,EAAID,IAAM,MAAQF,EAAItB,GAAKsB,EACjC,GAAI,KAAK,UAAYkB,GACnB,EAAIf,EAAIA,EAAI,KAAK,GAAK,CACvB,EAAE,KAAK,UAAY,EAAG,CAACF,EAAG,CACzB,GAAIpB,EAAE,EAAGV,CAAC,EACR,MAAM,IAAI,MAAM,sCAAsC,EACxD,GAAI,CAAC,KAAK,iBAAiB,CAAC,EAC1B,MAAM,IAAI,MACR,eAAeS,EACb,CACZ,mCAA6C,KAAK,MAClD,EACM,GAAI,CAAC,KAAK,iBAAiBT,CAAC,EAC1B,MAAM,IAAI,MACR,cAAcS,EAAET,CAAC,mCAAmC,KAAK,MACnE,EACM,GAAI,KAAK,IAAI,KAAK,YAAc,KAAK,WAAW,EAAI,KAAK,UACvD,MAAM,IAAI,MACR,uDACV,CACK,CACF,CACD,IAAI,cAAe,CACjB,GAAI,KAAK,gBAAkB,KAAM,CAC/B,KAAM,CAAC,EAAGA,CAAC,EAAI,KAAK,OAAQC,EAAI,KAAK,YAAc,KAAK,YAAaE,EAAI,KAAK,YAAc,KAAK,YAAaqB,EAAI,KAAK,IAAI,KAAK,SAAS,EAAGK,EAAI,KAAK,IAAI,KAAK,SAAS,EAAG,EAAI5B,EAAI4B,EAAIA,EAAI1B,EAAIqB,EAAIA,EAAGM,EAAI,GAAK3B,EAAIF,GAAK4B,EAAIL,EAAGO,EAAI9B,EAAIuB,EAAIA,EAAIrB,EAAI0B,EAAIA,EACtP,KAAK,cAAgB,CACnB,GAAI,EACJ,GAAIC,EACJ,GAAIC,EACJ,EAAG,GAAK,EAAI,EAAID,EAAI9B,EACpB,EAAG,GAAK+B,EAAI/B,EAAI8B,EAAI,EACpB,EAAG,EAAI,EAAI,EAAIA,EAAI,EAAI9B,EAAI+B,EAAI/B,EAAIA,EAAIC,EAAIE,CACnD,CACK,CACD,OAAO,KAAK,aACb,CACD,IAAI,MAAO,CACT,MAAO,eAAeM,EAAE,KAAK,UAAU,MAAMA,EAC3C,KAAK,SACX,MAAUA,EAAE,KAAK,MAAM,MAAM,KAAK,gBAAgB,KAAK,gBAAgB,KAAK,UAAYD,OAAO,KAAK,UAAY,KAAO,QACpH,CACD,SAAU,CACR,OAAO,IAAIqD,GACT,KAAK,UACL,KAAK,WACL,KAAK,OACL,KAAK,YACL,KAAK,YACL,KAAK,UACL,CAAC,KAAK,UACN,CAAE,aAAc,GAAI,WAAY,KAAO,CAC7C,CACG,CACD,OAAQ,CACN,OAAO,IAAIA,GACT,KAAK,WACL,KAAK,UACL,KAAK,OACL,KAAK,YACL,KAAK,YACL,KAAK,UACL,KAAK,UACL,CAAE,aAAc,GAAI,WAAY,KAAO,CAC7C,CACG,CACD,uBAAwB,CACtB,MAAM,EAAI,KAAK,IAAI,KAAK,SAAS,EAAG7D,EAAI,KAAK,YAAc,KAAK,YAAaC,EAAI,CAAC,KAAK,KAAKD,EAAI,CAAC,EAAGG,EAAI,KAAK,KAAKH,EAAI,CAAC,EACvH,MAAO,CAACC,EAAG,KAAK,GAAKA,EAAGE,EAAG,KAAK,GAAKA,CAAC,EAAE,IAAK,GAAM,KAAK,aAAa,CAAC,CAAC,EAAE,OAAQ,GAAM,KAAK,iBAAiB,CAAC,CAAC,EAAE,IAAK,GAAM,KAAK,WAAW,CAAC,CAAC,CAC/I,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,OAAQ,CAChC,MAAM,EAAI,KAAK,sBAAqB,EAAIH,EAAI,CAC1C,KAAK,WACL,KAAK,UACL,GAAG,CACX,EACM,KAAK,aAAeI,GAAGJ,CAAC,CACzB,CACD,OAAO,KAAK,YACb,CACD,IAAI,mBAAoB,CACtB,OAAO,KAAK,qBAAuB,SAAW,KAAK,mBAAqB,KAAK,KAC3E,KAAK,YAAc,KAAK,YAAc,KAAK,YAAc,KAAK,WACpE,GAAQ,KAAK,kBACV,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,eAAiB,SAAW,KAAK,aAAe,KAAK,kBAAoB,KAAK,aAAc,KAAK,YAC9G,CACD,IAAI,QAAS,CACX,GAAI,KAAK,UAAY,OAAQ,CAC3B,MAAM,EAAI,KAAK,UACf,KAAK,QAAU,CACbW,EAAE,KAAK,OAAQG,EAAE,EAAG,KAAK,iBAAiB,CAAC,EAC3CH,EAAE,KAAK,OAAQG,EAAE,EAAG,CAAC,KAAK,iBAAiB,CAAC,CACpD,CACK,CACD,OAAO,KAAK,OACb,CACD,IAAI,WAAY,CACd,OAAOM,GAAG,EAAG,KAAK,SAAS,CAC5B,CACD,WAAW,EAAG,CACZ,MAAMpB,EAAI,KAAK,WAAa,EAAI,KAAK,YAAc,KAAK,UAAY,GAAK,GACzE,OAAO,KAAK,sCAAsC,UAAU,CAC1D,KAAK,YAAc,KAAK,IAAIA,CAAC,EAC7B,KAAK,YAAc,KAAK,IAAIA,CAAC,CACnC,CAAK,CACF,CACD,aAAa,EAAG,CACd,GAAI,CAAC,KAAK,iBAAiB,CAAC,EAC1B,MAAM,IAAI,MACR,SAASS,EAAE,CAAC,mCAAmC,KAAK,MAC5D,EACI,MAAMT,EAAI,KAAK,aAAa,KAAK,WAAW,CAAC,CAAC,EAC9C,GAAI,CAAC,KAAK,iBAAiBA,CAAC,EAC1B,MAAM,IAAI,MACR,SAASS,EAAE,CAAC,uBAAuB,KAAK,MAChD,EACI,OAAOT,CACR,CACD,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,EAAG,CAC3B,CACD,iBAAiB,EAAG,CAClB,MAAO,GAAI,GAAK,CAAC,KAAK,WAAa,GAAK,CAAC,KAAK,SAC/C,CACD,OAAO,EAAG,CACR,OAAOU,EAAE,KAAK,OAAQ,EAAE,MAAM,GAAK,KAAK,IAAI,KAAK,YAAc,EAAE,WAAW,EAAI,KAAK,WAAa,KAAK,IAAI,KAAK,YAAc,EAAE,WAAW,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,UAAY,EAAE,SAAS,EAAI,KAAK,WAAa,KAAK,IAAI,KAAK,IAAI,KAAK,UAAY,EAAE,SAAS,EAAI,KAAK,EAAE,EAAI,KAAK,aAAeA,EAAE,KAAK,WAAY,EAAE,UAAU,GAAK,KAAK,YAAc,EAAE,WAAaA,EAAE,KAAK,WAAY,EAAE,SAAS,GAAK,KAAK,YAAc,EAAE,UAC7a,CACD,WAAW,EAAG,CACZ,MAAMV,EAAI,KAAK,+BAA+B,UAAU,CAAC,EAAGC,EAAI,KAAK,MACnED,EAAE,CAAC,EAAI,KAAK,YACZA,EAAE,CAAC,EAAI,KAAK,WAClB,EACI,OAAO+C,GAAG9C,CAAC,CACZ,CACD,aAAa,EAAG,CACd,OAAO+C,GAAG,KAAK,WAAYD,GAAG,CAAC,EAAG,KAAK,SAAS,EAAI,KAAK,UAC1D,CACD,iBAAiB,EAAG,CAClB,KAAM,CAAC/C,EAAGC,CAAC,EAAI,KAAK,OAAQE,EAAIa,EAAE,EAAGhB,CAAC,EAAGwB,EAAIR,EAAE,EAAGf,CAAC,EACnD,OAAO,KAAK,IAAI,EAAI,KAAK,YAAcE,EAAIqB,CAAC,EAAI,KAAK,SACtD,CACD,YAAY,EAAG,CACb,OAAO,KAAK,iBAAiB,CAAC,EAAI,KAAK,iBAAiB,KAAK,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,EAAI,EAClG,CACD,aAAa,EAAG,CACd,IAAIxB,EACJ,GAAIU,EAAE,EAAG,KAAK,MAAM,EAAIV,EAAIW,EAC1B,KAAK,OACLG,EAAEW,EAAE,KAAK,SAAS,EAAG,KAAK,WAAW,CAC3C,EAAQzB,EAAI,KAAK,sCAAsC,UACjD8D,GACE,KAAK,YACL,KAAK,YACL,KAAK,+BAA+B,UAAU,CAAC,CAChD,CACP,EAAO,KAAK,iBAAiB,KAAK,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,EAC5D,OAAO9C,EAAE,EAAGhB,CAAC,EACf,GAAI2B,GAAG,EAAG,KAAK,UAAW,KAAK,MAAM,EAAG,CACtC,MAAM1B,EAAI8C,GACR,EAAI,KAAK,GAAK,KAAK,WAAW,CAAC,CAChC,EAAE5C,EAAI,KAAK,aAAaF,CAAC,EAC1B,GAAI,KAAK,iBAAiBE,CAAC,EACzB,OAAOa,EAAE,EAAG,KAAK,WAAWb,CAAC,CAAC,CACjC,CACD,OAAO,KAAK,IACVa,EAAE,EAAG,KAAK,UAAU,EACpBA,EAAE,EAAG,KAAK,SAAS,CACzB,CACG,CACD,IAAI,gCAAiC,CACnC,OAAO,KAAK,kCAAoC,SAAW,KAAK,gCAAkC,IAAIwB,EAAG,EAAC,OAAO,CAAC,KAAK,SAAS,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,EAAG,CAAC,KAAK,OAAO,CAAC,CAAC,GAAI,KAAK,+BACtL,CACD,IAAI,uCAAwC,CAC1C,OAAO,KAAK,yCAA2C,SAAW,KAAK,uCAAyC,IAAIA,EAAG,EAAC,UAAU,KAAK,OAAO,CAAC,EAAG,KAAK,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK,SAAS,GAAI,KAAK,sCACjM,CACD,IAAI,iCAAkC,CACpC,OAAO,KAAK,mCAAqC,SAAW,KAAK,iCAAmC,IAAIA,EAAC,EAAG,OAC1G,KAAK,SACX,GAAQ,KAAK,gCACV,CACD,IAAI,YAAa,CACf,OAAO,KAAK,cAAgB,SAAW,KAAK,YAAc,KAAK,WAAW,KAAK,UAAU,GAAI,KAAK,WACnG,CACD,IAAI,WAAY,CACd,OAAO,KAAK,aAAe,SAAW,KAAK,WAAa,KAAK,WAAW,KAAK,SAAS,GAAI,KAAK,UAChG,CACD,IAAI,YAAa,CACf,OAAO,KAAK,cAAgB,SAAW,KAAK,YAAcQ,GACxD,KAAK,WACL,KAAK,UACL,KAAK,SACX,GAAQ,KAAK,WACV,CACD,SAAS,EAAG,CACV,MAAMhD,EAAI,KAAK,UAAU,CAAC,EAC1B,OAAO,KAAK,UAAYyB,EAAEzB,CAAC,EAAI0B,GAAG1B,CAAC,CACpC,CACD,WAAW,EAAG,CACZ,MAAMA,EAAI,KAAK,WAAa,EAAI,KAAK,YAAc,KAAK,UAAY,GAAK,GAAIC,EAAI,CAAC,KAAK,YAAc,KAAK,WAAa,KAAK,IAAID,CAAC,EAAGG,EAAI,KAAK,YAAc,KAAK,WAAa,KAAK,IAAIH,CAAC,EAAGwB,EAAI,KAAK,UAAY,CAAC,CAACvB,EAAG,CAACE,CAAC,EAAI,CAACF,EAAGE,CAAC,EAC/N,OAAO,KAAK,gCAAgC,UAAUqB,CAAC,CACxD,CACD,UAAU,EAAG,CACX,MAAMxB,EAAI,KAAK,WAAW,CAAC,EAAGC,EAAI,CAAC,KAAK,YAAc,KAAK,IAAID,CAAC,EAAGG,EAAI,KAAK,YAAc,KAAK,IAAIH,CAAC,EAAGwB,EAAI,KAAK,UAAY,CAAC,CAACvB,EAAG,CAACE,CAAC,EAAI,CAACF,EAAGE,CAAC,EAC5I,OAAOgB,EAAE,KAAK,gCAAgC,UAAUK,CAAC,CAAC,CAC3D,CACD,IAAI,qBAAsB,CACxB,MAAM,EAAI,CAAC,KAAK,YAAc,KAAK,IAAI,KAAK,UAAU,EAAGxB,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,UAAU,EAAGC,EAAI,KAAK,UAAY,CAAC,CAAC,EAAG,CAACD,CAAC,EAAI,CAAC,EAAGA,CAAC,EAChJ,OAAOmB,EAAE,KAAK,gCAAgC,UAAUlB,CAAC,CAAC,CAC3D,CACD,IAAI,oBAAqB,CACvB,MAAM,EAAI,CAAC,KAAK,YAAc,KAAK,IAAI,KAAK,SAAS,EAAGD,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,SAAS,EAAGC,EAAI,KAAK,UAAY,CAAC,CAAC,EAAG,CAACD,CAAC,EAAI,CAAC,EAAGA,CAAC,EAC9I,OAAOmB,EAAE,KAAK,gCAAgC,UAAUlB,CAAC,CAAC,CAC3D,CACD,UAAU,EAAG,CACX,MAAMD,EAAI,EAAE,eAAe,KAAK,SAAS,EAAGC,EAAI,EAAE,cAClD,OAAO,IAAI4D,GACT,EAAE,UAAU,KAAK,UAAU,EAC3B,EAAE,UAAU,KAAK,SAAS,EAC1B,EAAE,UAAU,KAAK,MAAM,EACvB,KAAK,YAAc5D,EACnB,KAAK,YAAcA,EACnBD,EACA,EAAE,iBAAgB,EAAK,KAAK,UAAY,CAAC,KAAK,UAC9C,CAAE,WAAY,KAAO,CAC3B,CACG,CACD,QAAQ,EAAG,CACT,IAAIA,EACJ,GAAI,MAAM,QAAQ,CAAC,GAAK,EAAE,SAAW,EACnC,MAAO,CAAC,IAAI,EACd,MAAM,QAAQ,EAAE,CAAC,CAAC,EAAIA,EAAI,EAAIA,EAAI,CAAC,CAAC,EACpC,MAAM,EAAI,CAAC,EAAG,EAAG,GAAGA,EAAE,IAAKqD,GAAM,KAAK,aAAaA,CAAC,CAAC,CAAC,EAAG7B,EAAI,IAAI,IAC/DsB,EAAG,CAAC,EAAG,CAAC,KAAK,WAAY,KAAK,UAAW,GAAG9C,CAAC,CAAC,CAAC,CACrD,EACI,EAAE,KAAK,CAACqD,EAAGvB,IAAMuB,EAAIvB,CAAC,EACtB,IAAI,EAAI,KACR,OAAO,EAAE,QAAQ,CAACuB,EAAGvB,IAAM,CACzB,GAAIA,IAAM,EAAE,OAAS,EACnB,MAAO,GACT,MAAM,EAAI,EAAEA,EAAI,CAAC,EACjB,GAAI,EAAIuB,EAAI,KAAK,UACf,OAAO,IAAM,OAAS,EAAIA,GAAI,CAAA,EAChC,MAAMC,EAAI,IAAM,KAAOD,EAAI,EAAGrB,EAAI,IAAI6B,GACpCrC,EAAE,IAAI8B,CAAC,GAAK,KAAK,WAAWA,CAAC,EAC7B9B,EAAE,IAAI,CAAC,GAAK,KAAK,WAAW,CAAC,EAC7B,KAAK,OACL,KAAK,YACL,KAAK,YACL,KAAK,UACL,KAAK,UACL,CAAE,WAAY,KAAO,CAC7B,EACM,OAAO,EAAI,KAAMQ,CACvB,CAAK,CACF,CACH,EACA,SAAS+B,GAAGhE,EAAG,EAAGC,EAAGC,EAAGE,EAAGqB,EAAGK,EAAG,CAC/B,KAAM,CAAE,OAAQ,EAAG,GAAIC,EAAG,GAAIC,CAAC,EAAKiC,GAClCjE,EACA,EACAC,EACAC,EACAE,EAAII,GACJ,CAACiB,EACDK,CACJ,EACE,OAAO,KAAK,IAAIC,EAAIC,CAAC,EAAI,KAAO,IAAIqB,EAAErD,EAAG,EAAG,EAAG8B,CAAC,EAAI,IAAIgC,EAAE9D,EAAG,EAAG,EAAG+B,EAAGC,EAAG5B,EAAG0B,CAAC,CAC/E,CACA,SAASmC,GAAG,CAACjE,EAAG,CAAC,EAAG,CAACC,EAAGC,CAAC,EAAGE,EAAGqB,EAAGK,EAAG,EAAGC,EAAG,CACzC,GAAI3B,EAAI,IAAMA,EAAI,CAACA,GAAIqB,EAAI,IAAMA,EAAI,CAACA,GAAIrB,GAAK,GAAKqB,GAAK,EACvD,MAAM,MAAM,wBAAwB,EACtC,MAAMO,EAAI,KAAK,IAAIF,CAAC,EAAG,EAAI,KAAK,IAAIA,CAAC,EAAGG,GAAKjC,EAAIC,GAAK,EAAGiC,GAAK,EAAIhC,GAAK,EAAGiC,GAAKnC,EAAIC,GAAK,EAAGmC,GAAK,EAAIlC,GAAK,EAAG,EAAI,EAAI+B,EAAID,EAAIE,EAAGG,EAAI,EAAIH,EAAIF,EAAIC,EAAG,EAAI,EAAI,GAAK7B,EAAIA,GAAKiC,EAAIA,GAAKZ,EAAIA,GACrL,EAAI,IAAMrB,EAAIA,EAAI,KAAK,KAAK,CAAC,EAAGqB,EAAIA,EAAI,KAAK,KAAK,CAAC,GACnD,MAAMa,EAAIlC,EAAIqB,EAAG,EAAIrB,EAAIiC,EAAG6B,EAAIzC,EAAI,EAAG0C,EAAI,EAAI,EAAID,EAAIA,EACvD,GAAI,CAACC,EACH,MAAM,MAAM,0CAA0C,EACxD,IAAIC,EAAI,KAAK,KAAK,KAAK,KAAK9B,EAAIA,EAAI6B,GAAKA,CAAC,CAAC,EAC3C,GAAKpC,IAAMqC,EAAI,CAACA,GAChB,MAAM,EAAIA,EAAI,EAAI3C,EAAG4C,EAAI,CAACD,EAAIF,EAAI9D,EAAGkE,EAAI,EAAI,EAAItC,EAAIqC,EAAIlC,EAAGoC,EAAIvC,EAAI,EAAI,EAAIqC,EAAIjC,EAChF,MAAO,CACL,OAAQ,CAACkC,EAAGC,CAAC,EACb,GAAInE,EACJ,GAAIqB,CACR,CACA,CACA,SAASsC,GAAG/D,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAI,KAAK,IAAID,EAAE,CAAC,CAAC,EAAGG,EAAI,KAAK,IAAIH,EAAE,CAAC,CAAC,EAC3C,IAAIwB,EAAI,KAAOK,EAAI,KACnB,MAAM,EAAI9B,EAAG+B,EAAI,EACjB,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM,EAAI,EAAIP,EAAGQ,EAAIF,EAAID,EAAGI,GAAK,EAAI,EAAIH,EAAIA,GAAKN,GAAK,EAAI,EAAGU,GAAKJ,EAAIA,EAAI,EAAI,GAAKD,GAAK,EAAIC,EAAGK,EAAI,EAAIF,EAAG,EAAID,EAAIE,EAAGE,EAAInC,EAAIgC,EAAG,EAAI9B,EAAI+B,EAAGG,EAAI,KAAK,MAAMF,EAAG,CAAC,EAAG,EAAI,KAAK,MAAMC,EAAG,CAAC,EACrLZ,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAIY,EAAIC,EAAI,EAAIJ,GAAK,CAAC,CAAC,EAAGJ,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,EAAIQ,EAAI,EAAIH,GAAKJ,CAAC,CAAC,EACnG,MAAMmC,EAAI,KAAK,MAAMzC,EAAGK,CAAC,EACzBL,GAAKyC,EAAGpC,GAAKoC,CACd,CACD,MAAO,CAAC,EAAIzC,EAAI,KAAK,KAAKxB,EAAE,CAAC,CAAC,EAAG8B,EAAID,EAAI,KAAK,KAAK7B,EAAE,CAAC,CAAC,CAAC,CAC1D,CACA,SAASuE,GAAGxE,EAAG,EAAGC,EAAI,KAAM,CAC1B,MAAMC,EAAIF,EAAE,UAAU,EAAE,8BAA8B,EAAGI,EAAIF,EAAE,MAAOuB,EAAIvB,EAAE,WAAY4B,EAAI,EAAE,YAAc,EAAE,YAAa,EAAI,EAAE,YAAc,EAAE,YAAaC,EAAI,EAAE,YAAc,EAAE,YAAaC,EAAI9B,EAAE,MAAQA,EAAE,MAAO,EAAIA,EAAE,WAAaA,EAAE,WAAY+B,EAAK,GAAM,EAAE,IACnQK,GAAM,EAAE,sCAAsC,UAAUA,CAAC,CAC3D,EAAC,OAAQA,GAAMtC,EAAE,YAAYsC,CAAC,GAAK,EAAE,YAAYA,CAAC,CAAC,EACpD,GAAI,CAAC,OAAO,SAASlC,CAAC,EAAG,CACvB,MAAM,EAAIF,EAAE,WAAW,CAAC,EACxB,GAAI,KAAK,IAAI,CAAC,EAAI,EAAE,YAAcD,EAChC,MAAO,GACT,GAAI,KAAK,IAAI,KAAK,IAAI,CAAC,EAAI,EAAE,WAAW,EAAIA,EAC1C,OAAOgC,EAAE,CAAC,CAAC,EAAG,CAAC,CAAC,CAAC,EACnB,MAAMK,EAAI,EAAE,YAAc,KAAK,KAAK,EAAI,EAAI,EAAIR,CAAC,EAAG,EAAI,CAAC,EAAGQ,CAAC,EAAG4B,EAAI,CAAC,EAAG,CAAC5B,CAAC,EAC1E,OAAOL,EAAE,CAAC,EAAGiC,CAAC,CAAC,CAChB,CACD,MAAMhC,EAAIJ,EAAIE,EAAI,EAAI,EACtB,GAAIE,EAAI,CAACjC,EACP,MAAO,GACT,MAAMkC,EAAIL,EAAIE,EAAI,EAClB,GAAI,KAAK,IAAIE,CAAC,EAAIjC,EAAG,CACnB,MAAM,EAAI,EAAE6B,EAAI1B,EAAIqB,GAAKU,EAAGG,EAAI,EAAIb,EAAIU,EACxC,OAAOF,EAAE,CAAC,CAAC,EAAGK,CAAC,CAAC,CAAC,CAClB,CACD,MAAMF,EAAI,KAAK,KAAKF,CAAC,EAAG,EAAI,CAC1B,EAAEJ,EAAI1B,EAAIqB,EAAIM,EAAIK,GAAKD,GACtB,EAAIV,EAAIM,EAAI3B,EAAIgC,GAAKD,CACvB,EAAEE,EAAI,CACL,EAAEP,EAAI1B,EAAIqB,EAAIM,EAAIK,GAAKD,GACtB,EAAIV,EAAIM,EAAI3B,EAAIgC,GAAKD,CAC1B,EACE,OAAOF,EAAE,CAAC,EAAGI,CAAC,CAAC,CACjB,CACA,MAAMoC,GAAK,OAAO,UAAU,SAC5B,SAASC,EAAE1E,EAAG,CACZ,MAAM,EAAIyE,GAAG,KAAKzE,CAAC,EACnB,OAAO,EAAE,SAAS,QAAQ,GAAK,CAAC,EAAE,SAAS,KAAK,CAClD,CACA,SAAS2E,GAAG3E,EAAG,CACb,IAAI,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAS,UAAU,CAAC,EAAI,CAAA,EACzE,GAAI,CAAC0E,EAAE1E,CAAC,EACN,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,yBAAyB,EAC/C,IAAIC,EAAI,EAAE,UAAWC,EAAID,IAAM,OAAS,EAAIA,EAAGG,EAAI,EAAE,QAASqB,EAAIrB,IAAM,OAASJ,EAAE,OAASI,EAC5F,GAAIF,EAAI,GAAKA,GAAKF,EAAE,QAAU,CAAC,OAAO,UAAUE,CAAC,EAC/C,MAAM,IAAI,MAAM,0DAA0D,EAC5E,GAAIuB,GAAKvB,GAAKuB,EAAIzB,EAAE,QAAU,CAAC,OAAO,UAAUyB,CAAC,EAC/C,MAAM,IAAI,MAAM,+EAA+E,EACjG,QAASK,EAAI9B,EAAEE,CAAC,EAAG,EAAIA,EAAI,EAAG,EAAIuB,EAAG,IACnCzB,EAAE,CAAC,EAAI8B,IAAMA,EAAI9B,EAAE,CAAC,GACtB,OAAO8B,CACT,CACA,SAAS8C,GAAG5E,EAAG,CACb,IAAI,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAS,UAAU,CAAC,EAAI,CAAA,EACzE,GAAI,CAAC0E,EAAE1E,CAAC,EACN,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,yBAAyB,EAC/C,IAAIC,EAAI,EAAE,UAAWC,EAAID,IAAM,OAAS,EAAIA,EAAGG,EAAI,EAAE,QAASqB,EAAIrB,IAAM,OAASJ,EAAE,OAASI,EAC5F,GAAIF,EAAI,GAAKA,GAAKF,EAAE,QAAU,CAAC,OAAO,UAAUE,CAAC,EAC/C,MAAM,IAAI,MAAM,0DAA0D,EAC5E,GAAIuB,GAAKvB,GAAKuB,EAAIzB,EAAE,QAAU,CAAC,OAAO,UAAUyB,CAAC,EAC/C,MAAM,IAAI,MAAM,+EAA+E,EACjG,QAASK,EAAI9B,EAAEE,CAAC,EAAG,EAAIA,EAAI,EAAG,EAAIuB,EAAG,IACnCzB,EAAE,CAAC,EAAI8B,IAAMA,EAAI9B,EAAE,CAAC,GACtB,OAAO8B,CACT,CACA,SAAS+C,GAAG7E,EAAG,CACb,IAAI,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAS,UAAU,CAAC,EAAI,CAAA,EACzE,GAAI0E,EAAE1E,CAAC,GACL,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,UAAU,yBAAyB,MAE/C,OAAM,IAAI,UAAU,wBAAwB,EAC9C,IAAIC,EACJ,GAAI,EAAE,SAAW,OAAQ,CACvB,GAAI,CAACyE,EAAE,EAAE,MAAM,EACb,MAAM,IAAI,UAAU,6CAA6C,EACnEzE,EAAI,EAAE,MACP,MACCA,EAAI,IAAI,MAAMD,EAAE,MAAM,EACxB,IAAIE,EAAI0E,GAAG5E,CAAC,EAAGI,EAAIuE,GAAG3E,CAAC,EACvB,GAAIE,IAAME,EACR,MAAM,IAAI,WAAW,6EAA6E,EACpG,IAAIqB,EAAI,EAAE,IAAKK,EAAIL,IAAM,OAAS,EAAE,WAAavB,EAAI,EAAIuB,EAAG,EAAI,EAAE,IAAKM,EAAI,IAAM,OAAS,EAAE,WAAa3B,EAAI,EAAI,EACjH,GAAI0B,GAAKC,EACP,MAAM,IAAI,WAAW,4CAA4C,EACnE,QAASC,GAAKD,EAAID,IAAM1B,EAAIF,GAAI,EAAI,EAAG,EAAIF,EAAE,OAAQ,IACnDC,EAAE,CAAC,GAAKD,EAAE,CAAC,EAAIE,GAAK8B,EAAIF,EAC1B,OAAO7B,CACT,CACA,MAAM6E,GAAK,IAAI,OAAO,CAAC,EAAG,GAAK,IAAI,OAAO,CAAC,EAC3C,SAASC,IAAK,CACZ,OAAO,GAAG,IAAI,CAChB,CACA,SAAS,GAAG/E,EAAG,EAAI,GAAI,CACrB,KAAM,CACJ,QAASC,EAAI,GACb,WAAYC,EAAI,GAChB,WAAYE,EAAI,EAChB,SAAUqB,EAAI,MACf,EAAG,EACJ,MAAO,GAAGzB,EAAE,YAAY;AAAA,EACxB8E;AAAA,EACA,KAAKE,GAAGhF,EAAGC,EAAGC,EAAGE,EAAGqB,CAAC;AAAA,EACrBqD;AAAA,EACAA,WAAW9E,EAAE;AAAA,EACb8E,cAAc9E,EAAE;AAAA,EAElB,CACA,SAASgF,GAAGhF,EAAG,EAAGC,EAAGC,EAAGE,EAAG,CACzB,KAAM,CAAE,KAAMqB,EAAG,QAASK,CAAC,EAAK9B,EAAG,EAAI,KAAK,IAAIyB,EAAG,CAAC,EAAGM,EAAI,KAAK,IAAID,EAAG7B,CAAC,EAAG+B,EAAI,GAC/E,GAAI5B,IAAM,OAAQ,CAChBA,EAAI,GACJ,EACE,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,QAAS6B,EAAI,EAAGA,EAAIF,EAAGE,IACrB,GAAIjC,EAAE,IAAI,EAAGiC,CAAC,EAAI,EAAG,CACnB7B,EAAI,GACJ,MAAM,CACP,CACR,CACD,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAI6B,EAAI,CAAA,EACR,QAASC,EAAI,EAAGA,EAAIH,EAAGG,IACrBD,EAAE,KAAKgD,GAAGjF,EAAE,IAAI,EAAGkC,CAAC,EAAGhC,EAAGE,CAAC,CAAC,EAC9B4B,EAAE,KAAK,GAAGC,EAAE,KAAK,GAAG,GAAG,CACxB,CACD,OAAOF,IAAMD,IAAME,EAAEA,EAAE,OAAS,CAAC,GAAK,QAAQF,EAAI7B,kBAAmB,IAAMwB,GAAKO,EAAE,KAAK,OAAOP,EAAI,aAAa,EAAGO,EAAE,KAAK;AAAA,EACzH,IAAI,CACN,CACA,SAASiD,GAAGjF,EAAG,EAAGC,EAAG,CACnB,OAAQD,GAAK,GAAKC,EAAI,IAAIiF,GAAGlF,EAAG,EAAI,CAAC,IAAMkF,GAAGlF,EAAG,CAAC,GAAG,OAAO,CAAC,CAC/D,CACA,SAASkF,GAAGlF,EAAG,EAAG,CAChB,IAAIC,EAAID,EAAE,WACV,GAAIC,EAAE,QAAU,EACd,OAAOA,EACT,IAAIC,EAAIF,EAAE,QAAQ,CAAC,EACnB,GAAIE,EAAE,OAAS,IAAMA,EAAIF,EAAE,QAAQ,KAAK,IAAI,EAAG,GAAKE,EAAE,OAAS,EAAE,CAAC,GAAIA,EAAE,QAAU,GAAK,CAACA,EAAE,WAAW,OAAO,GAAK,CAACA,EAAE,WAAW,QAAQ,EACrI,OAAOA,EACT,IAAIE,EAAIJ,EAAE,cAAc,CAAC,EACzB,OAAOI,EAAE,OAAS,IAAMA,EAAIJ,EAAE,cAAc,KAAK,IAAI,EAAG,GAAKI,EAAE,OAAS,EAAE,CAAC,GAAIA,EAAE,MAAM,CAAC,CAC1F,CACA,SAAS+E,GAAGnF,EAAG,EAAG,CAChBA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC5B,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/B,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,SAAWA,EAAE,UAAU,IAAKA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,SAAWA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/K,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,SAAWA,EAAE,UAAU,IAAKA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,UAAU,UAAYA,EAAE,UAAU,KAAMA,EAAE,SAAWA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/K,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,OAASA,EAAE,UAAU,IAAKA,EAAE,UAAU,QAAUA,EAAE,UAAU,KAAMA,EAAE,UAAU,QAAUA,EAAE,UAAU,KAAMA,EAAE,OAASA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAAS,EAAG,CACvK,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,QAAUA,EAAE,UAAU,IAAKA,EAAE,UAAU,SAAWA,EAAE,UAAU,KAAMA,EAAE,UAAU,SAAWA,EAAE,UAAU,KAAMA,EAAE,QAAUA,EAAE,IAAKA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC3K,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,GAAK,SAAS,EAAG,CAC9B,OAAO,OAAO,GAAK,SAAW,KAAK,IAAI,CAAC,EAAI,KAAK,IAAI,CAAC,CACvD,EAAEA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/B,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,GAAK,SAAS,EAAG,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CACrB,EAAEA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/B,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,CAAC,EACrC,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAI,EAAGA,CAAC,CAAC,EAC/C,OAAO,IACR,EAAEzB,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,UAAY,SAAS,EAAG,CACrC,OAAO,OAAO,GAAK,SAAW,KAAK,WAAW,CAAC,EAAI,KAAK,WAAW,CAAC,CACrE,EAAEA,EAAE,UAAU,WAAa,SAAS,EAAG,CACtC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAK,CAAC,EACtC,OAAO,IACR,EAAEzB,EAAE,UAAU,WAAa,SAAS,EAAG,CACtC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAK,EAAE,IAAI,EAAGA,CAAC,CAAC,EAChD,OAAO,IACR,EAAEzB,EAAE,UAAY,SAAS,EAAG,EAAG,CAC9B,OAAO,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAC5B,EAAEA,EAAE,UAAU,0BAA4B,SAAS,EAAG,CACrD,OAAO,OAAO,GAAK,SAAW,KAAK,2BAA2B,CAAC,EAAI,KAAK,2BAA2B,CAAC,CACrG,EAAEA,EAAE,UAAU,2BAA6B,SAAS,EAAG,CACtD,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAK,CAAC,EACtC,OAAO,IACR,EAAEzB,EAAE,UAAU,2BAA6B,SAAS,EAAG,CACtD,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,GAAK,EAAE,IAAI,EAAGA,CAAC,CAAC,EAChD,OAAO,IACR,EAAEzB,EAAE,0BAA4B,SAAS,EAAG,EAAG,CAC9C,OAAO,IAAI,EAAE,CAAC,EAAE,0BAA0B,CAAC,CAC5C,EAAEA,EAAE,UAAU,WAAa,SAAS,EAAG,CACtC,OAAO,OAAO,GAAK,SAAW,KAAK,YAAY,CAAC,EAAI,KAAK,YAAY,CAAC,CACvE,EAAEA,EAAE,UAAU,YAAc,SAAS,EAAG,CACvC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,IAAM,CAAC,EACvC,OAAO,IACR,EAAEzB,EAAE,UAAU,YAAc,SAAS,EAAG,CACvC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,IAAM,EAAE,IAAI,EAAGA,CAAC,CAAC,EACjD,OAAO,IACR,EAAEzB,EAAE,WAAa,SAAS,EAAG,EAAG,CAC/B,OAAO,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAC7B,EAAEA,EAAE,UAAU,mBAAqBA,EAAE,UAAU,WAAYA,EAAE,UAAU,oBAAsBA,EAAE,UAAU,YAAaA,EAAE,UAAU,oBAAsBA,EAAE,UAAU,YAAaA,EAAE,mBAAqBA,EAAE,WAAYA,EAAE,UAAU,IAAM,UAAW,CAClP,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,CAAC,KAAK,IAAI,EAAG,CAAC,CAAC,EAClC,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,IAAM,UAAW,CAC9B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,IAAM,UAAW,CAC9B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,IAAM,UAAW,CAC9B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,OAAS,UAAW,CACjC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,OAAO,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC9C,OAAO,IACX,EAAKA,EAAE,OAAS,SAAS,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,OAAM,CAC1B,EAAKA,EAAE,UAAU,IAAM,UAAW,CAC9B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACzB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,IAAM,UAAW,CAC9B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,IAAM,UAAW,CAC9B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,IAAI,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC3C,OAAO,IACX,EAAKA,EAAE,IAAM,SAAS,EAAG,CACrB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAG,CACvB,EAAKA,EAAE,UAAU,KAAO,UAAW,CAC/B,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC5C,OAAO,IACX,EAAKA,EAAE,KAAO,SAAS,EAAG,CACtB,OAAO,IAAI,EAAE,CAAC,EAAE,KAAI,CACxB,EAAKA,EAAE,UAAU,MAAQ,UAAW,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAAS,EAAI,EAAG,EAAI,KAAK,QAAS,IAChC,KAAK,IAAI,EAAG,EAAG,KAAK,MAAM,KAAK,IAAI,EAAG,CAAC,CAAC,CAAC,EAC7C,OAAO,IACX,EAAKA,EAAE,MAAQ,SAAS,EAAG,CACvB,OAAO,IAAI,EAAE,CAAC,EAAE,MAAK,CACtB,EAAEA,EAAE,IAAM,SAAS,EAAG,EAAG,CACxB,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CACtB,EAAEA,EAAE,UAAU,IAAM,SAAS,EAAG,CAC/B,OAAO,OAAO,GAAK,SAAW,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,CACzD,EAAEA,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAG,CAAC,CAAC,EAC9C,OAAO,IACR,EAAEzB,EAAE,UAAU,KAAO,SAAS,EAAG,CAChC,GAAI,EAAI,EAAE,YAAY,CAAC,EAAG,KAAK,OAAS,EAAE,MAAQ,KAAK,UAAY,EAAE,QACnE,MAAM,IAAI,WAAW,mCAAmC,EAC1D,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASyB,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,KAAK,IAAI,EAAGA,CAAC,EAAG,EAAE,IAAI,EAAGA,CAAC,CAAC,CAAC,EACxD,OAAO,IACX,CACA,CACA,SAAS2D,EAAEpF,EAAG,EAAGC,EAAG,CAClB,IAAIC,EAAID,EAAID,EAAE,KAAOA,EAAE,KAAO,EAC9B,GAAI,EAAI,GAAK,EAAIE,EACf,MAAM,IAAI,WAAW,wBAAwB,CACjD,CACA,SAASmF,EAAErF,EAAG,EAAGC,EAAG,CAClB,IAAIC,EAAID,EAAID,EAAE,QAAUA,EAAE,QAAU,EACpC,GAAI,EAAI,GAAK,EAAIE,EACf,MAAM,IAAI,WAAW,2BAA2B,CACpD,CACA,SAASoF,GAAGtF,EAAG,EAAG,CAChB,GAAI,EAAE,YAAc,EAAI,EAAE,UAAW,GAAG,EAAE,SAAWA,EAAE,QACrD,MAAM,IAAI,WACR,uDACN,EACE,OAAO,CACT,CACA,SAASuF,GAAGvF,EAAG,EAAG,CAChB,GAAI,EAAE,YAAc,EAAI,EAAE,UAAW,GAAG,EAAE,SAAWA,EAAE,KACrD,MAAM,IAAI,WAAW,oDAAoD,EAC3E,OAAO,CACT,CACA,SAASwF,GAAGxF,EAAG,EAAG,CAChB,GAAI,CAAC0E,EAAE,CAAC,EACN,MAAM,IAAI,UAAU,8BAA8B,EACpD,QAASzE,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5B,GAAI,EAAEA,CAAC,EAAI,GAAK,EAAEA,CAAC,GAAKD,EAAE,KACxB,MAAM,IAAI,WAAW,8BAA8B,CACzD,CACA,SAASyF,GAAGzF,EAAG,EAAG,CAChB,GAAI,CAAC0E,EAAE,CAAC,EACN,MAAM,IAAI,UAAU,iCAAiC,EACvD,QAASzE,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5B,GAAI,EAAEA,CAAC,EAAI,GAAK,EAAEA,CAAC,GAAKD,EAAE,QACxB,MAAM,IAAI,WAAW,iCAAiC,CAC5D,CACA,SAAS0F,GAAG1F,EAAG,EAAGC,EAAGC,EAAGE,EAAG,CACzB,GAAI,UAAU,SAAW,EACvB,MAAM,IAAI,WAAW,sBAAsB,EAC7C,GAAIuF,GAAG,WAAY,CAAC,EAAGA,GAAG,SAAU1F,CAAC,EAAG0F,GAAG,cAAezF,CAAC,EAAGyF,GAAG,YAAavF,CAAC,EAAG,EAAIH,GAAKC,EAAIE,GAAK,EAAI,GAAK,GAAKJ,EAAE,MAAQC,EAAI,GAAKA,GAAKD,EAAE,MAAQE,EAAI,GAAKA,GAAKF,EAAE,SAAWI,EAAI,GAAKA,GAAKJ,EAAE,QAC7L,MAAM,IAAI,WAAW,oCAAoC,CAC7D,CACA,SAAS4F,GAAG5F,EAAG,EAAI,EAAG,CACpB,IAAIC,EAAI,CAAA,EACR,QAASC,EAAI,EAAGA,EAAIF,EAAGE,IACrBD,EAAE,KAAK,CAAC,EACV,OAAOA,CACT,CACA,SAAS0F,GAAG3F,EAAG,EAAG,CAChB,GAAI,OAAO,GAAK,SACd,MAAM,IAAI,UAAU,GAAGA,oBAAoB,CAC/C,CACA,SAAS6F,GAAG7F,EAAG,CACb,GAAIA,EAAE,QAAS,EACb,MAAM,IAAI,MAAM,uCAAuC,CAC3D,CACA,SAAS8F,GAAG9F,EAAG,CACb,IAAI,EAAI4F,GAAG5F,EAAE,IAAI,EACjB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAM,EAAEC,EAC5B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAAS,EAAEE,EAC/B,EAAED,CAAC,GAAKD,EAAE,IAAIC,EAAGC,CAAC,EACtB,OAAO,CACT,CACA,SAAS6F,GAAG/F,EAAG,CACb,IAAI,EAAI4F,GAAG5F,EAAE,OAAO,EACpB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAM,EAAEC,EAC5B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAAS,EAAEE,EAC/B,EAAEA,CAAC,GAAKF,EAAE,IAAIC,EAAGC,CAAC,EACtB,OAAO,CACT,CACA,SAAS8F,GAAGhG,EAAG,CACb,IAAI,EAAI,EACR,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7B,GAAKF,EAAE,IAAIC,EAAGC,CAAC,EACnB,OAAO,CACT,CACA,SAAS+F,GAAGjG,EAAG,CACb,IAAI,EAAI4F,GAAG5F,EAAE,KAAM,CAAC,EACpB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAM,EAAEC,EAC5B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAAS,EAAEE,EAC/B,EAAED,CAAC,GAAKD,EAAE,IAAIC,EAAGC,CAAC,EACtB,OAAO,CACT,CACA,SAASgG,GAAGlG,EAAG,CACb,IAAI,EAAI4F,GAAG5F,EAAE,QAAS,CAAC,EACvB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAM,EAAEC,EAC5B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAAS,EAAEE,EAC/B,EAAEA,CAAC,GAAKF,EAAE,IAAIC,EAAGC,CAAC,EACtB,OAAO,CACT,CACA,SAASiG,GAAGnG,EAAG,CACb,IAAI,EAAI,EACR,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7B,GAAKF,EAAE,IAAIC,EAAGC,CAAC,EACnB,OAAO,CACT,CACA,SAASkG,GAAGpG,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAIF,EAAE,KAAMI,EAAIJ,EAAE,QAASyB,EAAI,GACrC,QAASK,EAAI,EAAGA,EAAI5B,EAAG4B,IAAK,CAC1B,IAAI,EAAI,EAAGC,EAAI,EAAGC,EAAI,EACtB,QAAS,EAAI,EAAG,EAAI5B,EAAG,IACrB4B,EAAIhC,EAAE,IAAI8B,EAAG,CAAC,EAAI7B,EAAE6B,CAAC,EAAG,GAAKE,EAAGD,GAAKC,EAAIA,EAC3C,EAAIP,EAAE,MAAMM,EAAI,EAAI,EAAI3B,IAAMA,EAAI,EAAE,EAAIqB,EAAE,MAAMM,EAAI,EAAI,EAAI3B,GAAKA,CAAC,CACnE,CACD,OAAOqB,CACT,CACA,SAAS4E,GAAGrG,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAIF,EAAE,KAAMI,EAAIJ,EAAE,QAASyB,EAAI,GACrC,QAASK,EAAI,EAAGA,EAAI1B,EAAG0B,IAAK,CAC1B,IAAI,EAAI,EAAGC,EAAI,EAAGC,EAAI,EACtB,QAAS,EAAI,EAAG,EAAI9B,EAAG,IACrB8B,EAAIhC,EAAE,IAAI,EAAG8B,CAAC,EAAI7B,EAAE6B,CAAC,EAAG,GAAKE,EAAGD,GAAKC,EAAIA,EAC3C,EAAIP,EAAE,MAAMM,EAAI,EAAI,EAAI7B,IAAMA,EAAI,EAAE,EAAIuB,EAAE,MAAMM,EAAI,EAAI,EAAI7B,GAAKA,CAAC,CACnE,CACD,OAAOuB,CACT,CACA,SAAS6E,GAAGtG,EAAG,EAAGC,EAAG,CACnB,MAAMC,EAAIF,EAAE,KAAMI,EAAIJ,EAAE,QAASyB,EAAIvB,EAAIE,EACzC,IAAI0B,EAAI,EAAG,EAAI,EAAGC,EAAI,EACtB,QAASC,EAAI,EAAGA,EAAI9B,EAAG8B,IACrB,QAAS,EAAI,EAAG,EAAI5B,EAAG,IACrB2B,EAAI/B,EAAE,IAAIgC,EAAG,CAAC,EAAI/B,EAAG6B,GAAKC,EAAG,GAAKA,EAAIA,EAC1C,OAAO,GAAK,EAAID,EAAIA,EAAIL,IAAMA,EAAI,IAAM,EAAIK,EAAIA,EAAIL,GAAKA,CAC3D,CACA,SAAS8E,GAAGvG,EAAG,EAAG,CAChB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7BF,EAAE,IAAIC,EAAGC,EAAGF,EAAE,IAAIC,EAAGC,CAAC,EAAI,EAAED,CAAC,CAAC,CACpC,CACA,SAASuG,GAAGxG,EAAG,EAAG,CAChB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7BF,EAAE,IAAIC,EAAGC,EAAGF,EAAE,IAAIC,EAAGC,CAAC,EAAI,EAAEA,CAAC,CAAC,CACpC,CACA,SAASuG,GAAGzG,EAAG,EAAG,CAChB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7BF,EAAE,IAAIC,EAAGC,EAAGF,EAAE,IAAIC,EAAGC,CAAC,EAAI,CAAC,CACjC,CACA,SAASwG,GAAG1G,EAAG,CACb,MAAM,EAAI,CAAA,EACV,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAAK,CAC/B,IAAIC,EAAI,EACR,QAASE,EAAI,EAAGA,EAAIJ,EAAE,QAASI,IAC7BF,GAAK,KAAK,IAAIF,EAAE,IAAIC,EAAGG,CAAC,EAAG,CAAC,GAAKJ,EAAE,QAAU,GAC/C,EAAE,KAAK,KAAK,KAAKE,CAAC,CAAC,CACpB,CACD,OAAO,CACT,CACA,SAASyG,GAAG3G,EAAG,EAAG,CAChB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7BF,EAAE,IAAIC,EAAGC,EAAGF,EAAE,IAAIC,EAAGC,CAAC,EAAI,EAAED,CAAC,CAAC,CACpC,CACA,SAAS2G,GAAG5G,EAAG,CACb,MAAM,EAAI,CAAA,EACV,QAASC,EAAI,EAAGA,EAAID,EAAE,QAASC,IAAK,CAClC,IAAIC,EAAI,EACR,QAASE,EAAI,EAAGA,EAAIJ,EAAE,KAAMI,IAC1BF,GAAK,KAAK,IAAIF,EAAE,IAAII,EAAGH,CAAC,EAAG,CAAC,GAAKD,EAAE,KAAO,GAC5C,EAAE,KAAK,KAAK,KAAKE,CAAC,CAAC,CACpB,CACD,OAAO,CACT,CACA,SAAS2G,GAAG7G,EAAG,EAAG,CAChB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7BF,EAAE,IAAIC,EAAGC,EAAGF,EAAE,IAAIC,EAAGC,CAAC,EAAI,EAAEA,CAAC,CAAC,CACpC,CACA,SAAS4G,GAAG9G,EAAG,CACb,MAAM,EAAIA,EAAE,KAAO,EACnB,IAAIC,EAAI,EACR,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7B,QAASE,EAAI,EAAGA,EAAIJ,EAAE,KAAMI,IAC1BH,GAAK,KAAK,IAAID,EAAE,IAAII,EAAGF,CAAC,EAAG,CAAC,EAAI,EACpC,OAAO,KAAK,KAAKD,CAAC,CACpB,CACA,SAAS8G,GAAG/G,EAAG,EAAG,CAChB,QAASC,EAAI,EAAGA,EAAID,EAAE,KAAMC,IAC1B,QAASC,EAAI,EAAGA,EAAIF,EAAE,QAASE,IAC7BF,EAAE,IAAIC,EAAGC,EAAGF,EAAE,IAAIC,EAAGC,CAAC,EAAI,CAAC,CACjC,CACA,IAAA8G,EAAA,MAAMC,CAAE,CACN,OAAO,YAAY,EAAGhH,EAAGC,EAAG,CAC1B,GAAI,EAAID,IAAMC,EAAE,OACd,MAAM,IAAI,WAAW,6CAA6C,EACpE,IAAIuB,EAAI,IAAIyF,EAAE,EAAGjH,CAAC,EAClB,QAAS,EAAI,EAAG,EAAI,EAAG,IACrB,QAASqD,EAAI,EAAGA,EAAIrD,EAAGqD,IACrB7B,EAAE,IAAI,EAAG6B,EAAGpD,EAAE,EAAID,EAAIqD,CAAC,CAAC,EAC5B,OAAO7B,CACR,CACD,OAAO,UAAU,EAAG,CAClB,IAAIxB,EAAI,IAAIiH,EAAE,EAAG,EAAE,MAAM,EACzB,QAAShH,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5BD,EAAE,IAAI,EAAGC,EAAG,EAAEA,CAAC,CAAC,EAClB,OAAOD,CACR,CACD,OAAO,aAAa,EAAG,CACrB,IAAIA,EAAI,IAAIiH,EAAE,EAAE,OAAQ,CAAC,EACzB,QAAShH,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5BD,EAAE,IAAIC,EAAG,EAAG,EAAEA,CAAC,CAAC,EAClB,OAAOD,CACR,CACD,OAAO,MAAM,EAAGA,EAAG,CACjB,OAAO,IAAIiH,EAAE,EAAGjH,CAAC,CAClB,CACD,OAAO,KAAK,EAAGA,EAAG,CAChB,OAAO,IAAIiH,EAAE,EAAGjH,CAAC,EAAE,KAAK,CAAC,CAC1B,CACD,OAAO,KAAK,EAAGA,EAAGC,EAAI,CAAA,EAAI,CACxB,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,OAAQE,EAAI,KAAK,MAAM,EAAKF,EACpC,IAAIuB,EAAI,IAAIyF,EAAE,EAAGjH,CAAC,EAClB,QAAS6B,EAAI,EAAGA,EAAI,EAAGA,IACrB,QAAS,EAAI,EAAG,EAAI7B,EAAG,IACrBwB,EAAE,IAAIK,EAAG,EAAG1B,EAAG,CAAA,EACnB,OAAOqB,CACR,CACD,OAAO,QAAQ,EAAGxB,EAAGC,EAAI,CAAA,EAAI,CAC3B,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,IAAKE,EAAI,EAAG,IAAKqB,EAAI,IAAK,OAAQK,EAAI,KAAK,MAAM,EAAK5B,EAC9D,GAAI,CAAC,OAAO,UAAUE,CAAC,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAI,CAAC,OAAO,UAAUqB,CAAC,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAC9C,GAAIrB,GAAKqB,EACP,MAAM,IAAI,WAAW,8BAA8B,EACrD,IAAI,EAAIA,EAAIrB,EAAG2B,EAAI,IAAImF,EAAE,EAAGjH,CAAC,EAC7B,QAAS+B,EAAI,EAAGA,EAAI,EAAGA,IACrB,QAAS,EAAI,EAAG,EAAI/B,EAAG,IAAK,CAC1B,IAAIgC,EAAI7B,EAAI,KAAK,MAAM0B,EAAC,EAAK,CAAC,EAC9BC,EAAE,IAAIC,EAAG,EAAGC,CAAC,CACd,CACH,OAAOF,CACR,CACD,OAAO,IAAI,EAAG9B,EAAGC,EAAG,CAClBD,IAAM,SAAWA,EAAI,GAAIC,IAAM,SAAWA,EAAI,GAC9C,IAAIE,EAAI,KAAK,IAAI,EAAGH,CAAC,EAAGwB,EAAI,KAAK,MAAM,EAAGxB,CAAC,EAC3C,QAAS6B,EAAI,EAAGA,EAAI1B,EAAG0B,IACrBL,EAAE,IAAIK,EAAGA,EAAG5B,CAAC,EACf,OAAOuB,CACR,CACD,OAAO,KAAK,EAAGxB,EAAGC,EAAG,CACnB,IAAIE,EAAI,EAAE,OACVH,IAAM,SAAWA,EAAIG,GAAIF,IAAM,SAAWA,EAAID,GAC9C,IAAIwB,EAAI,KAAK,IAAIrB,EAAGH,EAAGC,CAAC,EAAG4B,EAAI,KAAK,MAAM7B,EAAGC,CAAC,EAC9C,QAAS,EAAI,EAAG,EAAIuB,EAAG,IACrBK,EAAE,IAAI,EAAG,EAAG,EAAE,CAAC,CAAC,EAClB,OAAOA,CACR,CACD,OAAO,IAAI,EAAG7B,EAAG,CACf,EAAI,KAAK,YAAY,CAAC,EAAGA,EAAI,KAAK,YAAYA,CAAC,EAC/C,IAAIC,EAAI,EAAE,KAAME,EAAI,EAAE,QAASqB,EAAI,IAAIyF,EAAEhH,EAAGE,CAAC,EAC7C,QAAS0B,EAAI,EAAGA,EAAI5B,EAAG4B,IACrB,QAAS,EAAI,EAAG,EAAI1B,EAAG,IACrBqB,EAAE,IAAIK,EAAG,EAAG,KAAK,IAAI,EAAE,IAAIA,EAAG,CAAC,EAAG7B,EAAE,IAAI6B,EAAG,CAAC,CAAC,CAAC,EAClD,OAAOL,CACR,CACD,OAAO,IAAI,EAAGxB,EAAG,CACf,EAAI,KAAK,YAAY,CAAC,EAAGA,EAAI,KAAK,YAAYA,CAAC,EAC/C,IAAIC,EAAI,EAAE,KAAME,EAAI,EAAE,QAASqB,EAAI,IAAI,KAAKvB,EAAGE,CAAC,EAChD,QAAS0B,EAAI,EAAGA,EAAI5B,EAAG4B,IACrB,QAAS,EAAI,EAAG,EAAI1B,EAAG,IACrBqB,EAAE,IAAIK,EAAG,EAAG,KAAK,IAAI,EAAE,IAAIA,EAAG,CAAC,EAAG7B,EAAE,IAAI6B,EAAG,CAAC,CAAC,CAAC,EAClD,OAAOL,CACR,CACD,OAAO,YAAY,EAAG,CACpB,OAAOwF,EAAE,SAAS,CAAC,EAAI,EAAI,IAAIC,EAAE,CAAC,CACnC,CACD,OAAO,SAAS,EAAG,CACjB,OAAO,GAAK,MAAQ,EAAE,QAAU,QACjC,CACD,IAAI,MAAO,CACT,OAAO,KAAK,KAAO,KAAK,OACzB,CACD,MAAM,EAAG,CACP,GAAI,OAAO,GAAK,WACd,MAAM,IAAI,UAAU,6BAA6B,EACnD,QAASjH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAE,KAAK,KAAMD,EAAGC,CAAC,EACrB,OAAO,IACR,CACD,WAAY,CACV,IAAI,EAAI,CAAA,EACR,QAASD,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAE,KAAK,KAAK,IAAID,EAAGC,CAAC,CAAC,EACzB,OAAO,CACR,CACD,WAAY,CACV,IAAI,EAAI,CAAA,EACR,QAASD,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,EAAE,KAAK,CAAA,CAAE,EACT,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAED,CAAC,EAAE,KAAK,KAAK,IAAIA,EAAGC,CAAC,CAAC,CAC3B,CACD,OAAO,CACR,CACD,QAAS,CACP,OAAO,KAAK,WACb,CACD,aAAc,CACZ,OAAO,KAAK,OAAS,CACtB,CACD,gBAAiB,CACf,OAAO,KAAK,UAAY,CACzB,CACD,UAAW,CACT,OAAO,KAAK,OAAS,GAAK,KAAK,UAAY,CAC5C,CACD,UAAW,CACT,OAAO,KAAK,OAAS,KAAK,OAC3B,CACD,SAAU,CACR,OAAO,KAAK,OAAS,GAAK,KAAK,UAAY,CAC5C,CACD,aAAc,CACZ,GAAI,KAAK,WAAY,CACnB,QAAS,EAAI,EAAG,EAAI,KAAK,KAAM,IAC7B,QAASD,EAAI,EAAGA,GAAK,EAAGA,IACtB,GAAI,KAAK,IAAI,EAAGA,CAAC,IAAM,KAAK,IAAIA,EAAG,CAAC,EAClC,MAAO,GACb,MAAO,EACR,CACD,MAAO,EACR,CACD,eAAgB,CACd,IAAI,EAAI,EAAGA,EAAI,EAAGC,EAAI,GAAIE,EAAI,GAAIqB,EAAI,GACtC,KAAO,EAAI,KAAK,MAAQrB,GAAK,CAC3B,IAAKH,EAAI,EAAGwB,EAAI,GAAIxB,EAAI,KAAK,SAAWwB,IAAM,IAC5C,KAAK,IAAI,EAAGxB,CAAC,IAAM,EAAIA,IAAM,KAAK,IAAI,EAAGA,CAAC,IAAM,GAAKA,EAAIC,GAAKuB,EAAI,GAAIvB,EAAID,IAAMG,EAAI,GAAIqB,EAAI,IAC9F,GACD,CACD,OAAOrB,CACR,CACD,sBAAuB,CACrB,IAAI,EAAI,EAAGH,EAAI,EAAGC,EAAI,GAAIE,EAAI,GAAIqB,EAAI,GACtC,KAAO,EAAI,KAAK,MAAQrB,GAAK,CAC3B,IAAKH,EAAI,EAAGwB,EAAI,GAAIxB,EAAI,KAAK,SAAWwB,IAAM,IAC5C,KAAK,IAAI,EAAGxB,CAAC,IAAM,EAAIA,IAAM,KAAK,IAAI,EAAGA,CAAC,IAAM,GAAKA,EAAIC,GAAKuB,EAAI,GAAIvB,EAAID,IAAMG,EAAI,GAAIqB,EAAI,IAC9F,QAASK,EAAI7B,EAAI,EAAG6B,EAAI,KAAK,KAAMA,IACjC,KAAK,IAAI,EAAGA,CAAC,IAAM,IAAM1B,EAAI,IAC/B,GACD,CACD,OAAOA,CACR,CACD,aAAc,CACZ,IAAI,EAAI,KAAK,MAAK,EAAIH,EAAI,EAAGC,EAAI,EACjC,KAAOD,EAAI,EAAE,MAAQC,EAAI,EAAE,SAAW,CACpC,IAAIE,EAAIH,EACR,QAASwB,EAAIxB,EAAGwB,EAAI,EAAE,KAAMA,IAC1B,EAAE,IAAIA,EAAGvB,CAAC,EAAI,EAAE,IAAIE,EAAGF,CAAC,IAAME,EAAIqB,GACpC,GAAI,EAAE,IAAIrB,EAAGF,CAAC,IAAM,EAClBA,QACG,CACH,EAAE,SAASD,EAAGG,CAAC,EACf,IAAIqB,EAAI,EAAE,IAAIxB,EAAGC,CAAC,EAClB,QAAS4B,EAAI5B,EAAG4B,EAAI,EAAE,QAASA,IAC7B,EAAE,IAAI7B,EAAG6B,EAAG,EAAE,IAAI7B,EAAG6B,CAAC,EAAIL,CAAC,EAC7B,QAASK,EAAI7B,EAAI,EAAG6B,EAAI,EAAE,KAAMA,IAAK,CACnC,IAAI,EAAI,EAAE,IAAIA,EAAG5B,CAAC,EAAI,EAAE,IAAID,EAAGC,CAAC,EAChC,EAAE,IAAI4B,EAAG5B,EAAG,CAAC,EACb,QAAS6B,EAAI7B,EAAI,EAAG6B,EAAI,EAAE,QAASA,IACjC,EAAE,IAAID,EAAGC,EAAG,EAAE,IAAID,EAAGC,CAAC,EAAI,EAAE,IAAI9B,EAAG8B,CAAC,EAAI,CAAC,CAC5C,CACD9B,IAAKC,GACN,CACF,CACD,OAAO,CACR,CACD,oBAAqB,CACnB,IAAI,EAAI,KAAK,YAAa,EAAED,EAAI,EAAE,QAASC,EAAI,EAAE,KAAME,EAAIF,EAAI,EAC/D,KAAOE,GAAK,GACV,GAAI,EAAE,OAAOA,CAAC,IAAM,EAClBA,QACG,CACH,IAAIqB,EAAI,EAAGK,EAAI,GACf,KAAOL,EAAIvB,GAAK4B,IAAM,IACpB,EAAE,IAAI1B,EAAGqB,CAAC,IAAM,EAAIK,EAAI,GAAKL,IAC/B,QAAS,EAAI,EAAG,EAAIrB,EAAG,IAAK,CAC1B,IAAI2B,EAAI,EAAE,IAAI,EAAGN,CAAC,EAClB,QAASO,EAAIP,EAAGO,EAAI/B,EAAG+B,IAAK,CAC1B,IAAI,EAAI,EAAE,IAAI,EAAGA,CAAC,EAAID,EAAI,EAAE,IAAI3B,EAAG4B,CAAC,EACpC,EAAE,IAAI,EAAGA,EAAG,CAAC,CACd,CACF,CACD5B,GACD,CACH,OAAO,CACR,CACD,KAAM,CACJ,MAAM,IAAI,MAAM,6BAA6B,CAC9C,CACD,KAAM,CACJ,MAAM,IAAI,MAAM,6BAA6B,CAC9C,CACD,OAAO,EAAI,GAAI,CACb,GAAI,OAAO,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,KAAMH,EAAI,EAAG,QAASC,EAAI,CAAG,EAAG,EACxC,GAAI,CAAC,OAAO,UAAUD,CAAC,GAAKA,GAAK,EAC/B,MAAM,IAAI,UAAU,iCAAiC,EACvD,GAAI,CAAC,OAAO,UAAUC,CAAC,GAAKA,GAAK,EAC/B,MAAM,IAAI,UAAU,oCAAoC,EAC1D,IAAIE,EAAI,IAAI8G,EAAE,KAAK,KAAOjH,EAAG,KAAK,QAAUC,CAAC,EAC7C,QAASuB,EAAI,EAAGA,EAAIxB,EAAGwB,IACrB,QAASK,EAAI,EAAGA,EAAI5B,EAAG4B,IACrB1B,EAAE,aAAa,KAAM,KAAK,KAAOqB,EAAG,KAAK,QAAUK,CAAC,EACxD,OAAO1B,CACR,CACD,KAAK,EAAG,CACN,QAASH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,CAAC,EACpB,OAAO,IACR,CACD,KAAM,CACJ,OAAO,KAAK,KAAK,EAAE,CACpB,CACD,OAAO,EAAG,CACRkF,EAAE,KAAM,CAAC,EACT,IAAInF,EAAI,CAAA,EACR,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCD,EAAE,KAAK,KAAK,IAAI,EAAGC,CAAC,CAAC,EACvB,OAAOD,CACR,CACD,aAAa,EAAG,CACd,OAAOiH,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAClC,CACD,OAAO,EAAGjH,EAAG,CACXmF,EAAE,KAAM,CAAC,EAAGnF,EAAIqF,GAAG,KAAMrF,CAAC,EAC1B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAGD,EAAEC,CAAC,CAAC,EACrB,OAAO,IACR,CACD,SAAS,EAAGD,EAAG,CACbmF,EAAE,KAAM,CAAC,EAAGA,EAAE,KAAMnF,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAAK,CACrC,IAAIE,EAAI,KAAK,IAAI,EAAGF,CAAC,EACrB,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAID,EAAGC,CAAC,CAAC,EAAG,KAAK,IAAID,EAAGC,EAAGE,CAAC,CACjD,CACD,OAAO,IACR,CACD,UAAU,EAAG,CACXiF,EAAE,KAAM,CAAC,EACT,IAAIpF,EAAI,CAAA,EACR,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7BD,EAAE,KAAK,KAAK,IAAIC,EAAG,CAAC,CAAC,EACvB,OAAOD,CACR,CACD,gBAAgB,EAAG,CACjB,OAAOiH,EAAE,aAAa,KAAK,UAAU,CAAC,CAAC,CACxC,CACD,UAAU,EAAGjH,EAAG,CACdoF,EAAE,KAAM,CAAC,EAAGpF,EAAIsF,GAAG,KAAMtF,CAAC,EAC1B,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAG,EAAGD,EAAEC,CAAC,CAAC,EACrB,OAAO,IACR,CACD,YAAY,EAAGD,EAAG,CAChBoF,EAAE,KAAM,CAAC,EAAGA,EAAE,KAAMpF,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,IAAIE,EAAI,KAAK,IAAIF,EAAG,CAAC,EACrB,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAIA,EAAGD,CAAC,CAAC,EAAG,KAAK,IAAIC,EAAGD,EAAGG,CAAC,CACjD,CACD,OAAO,IACR,CACD,aAAa,EAAG,CACd,EAAIkF,GAAG,KAAM,CAAC,EACd,QAASrF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAEA,CAAC,CAAC,EACxC,OAAO,IACR,CACD,aAAa,EAAG,CACd,EAAIoF,GAAG,KAAM,CAAC,EACd,QAASrF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAEA,CAAC,CAAC,EACxC,OAAO,IACR,CACD,aAAa,EAAG,CACd,EAAIoF,GAAG,KAAM,CAAC,EACd,QAASrF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAEA,CAAC,CAAC,EACxC,OAAO,IACR,CACD,aAAa,EAAG,CACd,EAAIoF,GAAG,KAAM,CAAC,EACd,QAASrF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAEA,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgB,EAAG,CACjB,EAAIqF,GAAG,KAAM,CAAC,EACd,QAAStF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAED,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgB,EAAG,CACjB,EAAIsF,GAAG,KAAM,CAAC,EACd,QAAStF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAED,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgB,EAAG,CACjB,EAAIsF,GAAG,KAAM,CAAC,EACd,QAAStF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAED,CAAC,CAAC,EACxC,OAAO,IACR,CACD,gBAAgB,EAAG,CACjB,EAAIsF,GAAG,KAAM,CAAC,EACd,QAAStF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,EAAI,EAAED,CAAC,CAAC,EACxC,OAAO,IACR,CACD,OAAO,EAAGA,EAAG,CACXmF,EAAE,KAAM,CAAC,EACT,QAASlF,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAID,CAAC,EACnC,OAAO,IACR,CACD,UAAU,EAAGA,EAAG,CACdoF,EAAE,KAAM,CAAC,EACT,QAASnF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAG,EAAG,KAAK,IAAIA,EAAG,CAAC,EAAID,CAAC,EACnC,OAAO,IACR,CACD,IAAI,EAAG,CACL,GAAI,KAAK,QAAS,EAChB,MAAO,KACT,OAAQ,EAAC,CACP,IAAK,MAAO,CACV,MAAMA,EAAI,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,OAAO,iBAAiB,EAC5D,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAIH,EAAEC,CAAC,IAAMD,EAAEC,CAAC,EAAI,KAAK,IAAIA,EAAGE,CAAC,GAClD,OAAOH,CACR,CACD,IAAK,SAAU,CACb,MAAMA,EAAI,IAAI,MAAM,KAAK,OAAO,EAAE,KAAK,OAAO,iBAAiB,EAC/D,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAIH,EAAEG,CAAC,IAAMH,EAAEG,CAAC,EAAI,KAAK,IAAIF,EAAGE,CAAC,GAClD,OAAOH,CACR,CACD,KAAK,OAAQ,CACX,IAAIA,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAIH,IAAMA,EAAI,KAAK,IAAIC,EAAGE,CAAC,GAC5C,OAAOH,CACR,CACD,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,UAAW,CACT4F,GAAG,IAAI,EACP,IAAI,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG5F,EAAI,CAAC,EAAG,CAAC,EACjC,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIF,EAAGE,CAAC,EAAGH,EAAE,CAAC,EAAIC,EAAGD,EAAE,CAAC,EAAIG,GAChE,OAAOH,CACR,CACD,IAAI,EAAG,CACL,GAAI,KAAK,QAAS,EAChB,MAAO,KACT,OAAQ,EAAC,CACP,IAAK,MAAO,CACV,MAAMA,EAAI,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,OAAO,iBAAiB,EAC5D,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAIH,EAAEC,CAAC,IAAMD,EAAEC,CAAC,EAAI,KAAK,IAAIA,EAAGE,CAAC,GAClD,OAAOH,CACR,CACD,IAAK,SAAU,CACb,MAAMA,EAAI,IAAI,MAAM,KAAK,OAAO,EAAE,KAAK,OAAO,iBAAiB,EAC/D,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAIH,EAAEG,CAAC,IAAMH,EAAEG,CAAC,EAAI,KAAK,IAAIF,EAAGE,CAAC,GAClD,OAAOH,CACR,CACD,KAAK,OAAQ,CACX,IAAIA,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAIH,IAAMA,EAAI,KAAK,IAAIC,EAAGE,CAAC,GAC5C,OAAOH,CACR,CACD,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,UAAW,CACT4F,GAAG,IAAI,EACP,IAAI,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG5F,EAAI,CAAC,EAAG,CAAC,EACjC,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAIF,EAAGE,CAAC,EAAI,IAAM,EAAI,KAAK,IAAIF,EAAGE,CAAC,EAAGH,EAAE,CAAC,EAAIC,EAAGD,EAAE,CAAC,EAAIG,GAChE,OAAOH,CACR,CACD,OAAO,EAAG,CACR,GAAImF,EAAE,KAAM,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAInF,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,CAAC,EAAID,IAAMA,EAAI,KAAK,IAAI,EAAGC,CAAC,GAC1C,OAAOD,CACR,CACD,YAAY,EAAG,CACbmF,EAAE,KAAM,CAAC,EAAGS,GAAG,IAAI,EACnB,IAAI5F,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,CAAC,EAAG,CAAC,EACjC,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,CAAC,EAAIH,IAAMA,EAAI,KAAK,IAAI,EAAGG,CAAC,EAAGF,EAAE,CAAC,EAAIE,GACpD,OAAOF,CACR,CACD,OAAO,EAAG,CACR,GAAIkF,EAAE,KAAM,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAInF,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,CAAC,EAAID,IAAMA,EAAI,KAAK,IAAI,EAAGC,CAAC,GAC1C,OAAOD,CACR,CACD,YAAY,EAAG,CACbmF,EAAE,KAAM,CAAC,EAAGS,GAAG,IAAI,EACnB,IAAI5F,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,CAAC,EAAG,CAAC,EACjC,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,IAAI,EAAGA,CAAC,EAAIH,IAAMA,EAAI,KAAK,IAAI,EAAGG,CAAC,EAAGF,EAAE,CAAC,EAAIE,GACpD,OAAOF,CACR,CACD,UAAU,EAAG,CACX,GAAImF,EAAE,KAAM,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAIpF,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAG,CAAC,EAAID,IAAMA,EAAI,KAAK,IAAIC,EAAG,CAAC,GAC1C,OAAOD,CACR,CACD,eAAe,EAAG,CAChBoF,EAAE,KAAM,CAAC,EAAGQ,GAAG,IAAI,EACnB,IAAI5F,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,CAAC,EAAG,CAAC,EACjC,QAASE,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAG,CAAC,EAAIH,IAAMA,EAAI,KAAK,IAAIG,EAAG,CAAC,EAAGF,EAAE,CAAC,EAAIE,GACpD,OAAOF,CACR,CACD,UAAU,EAAG,CACX,GAAImF,EAAE,KAAM,CAAC,EAAG,KAAK,QAAS,EAC5B,MAAO,KACT,IAAIpF,EAAI,KAAK,IAAI,EAAG,CAAC,EACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAG,CAAC,EAAID,IAAMA,EAAI,KAAK,IAAIC,EAAG,CAAC,GAC1C,OAAOD,CACR,CACD,eAAe,EAAG,CAChBoF,EAAE,KAAM,CAAC,EAAGQ,GAAG,IAAI,EACnB,IAAI5F,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,CAAC,EAAG,CAAC,EACjC,QAASE,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,IAAIA,EAAG,CAAC,EAAIH,IAAMA,EAAI,KAAK,IAAIG,EAAG,CAAC,EAAGF,EAAE,CAAC,EAAIE,GACpD,OAAOF,CACR,CACD,MAAO,CACL,IAAI,EAAI,KAAK,IAAI,KAAK,KAAM,KAAK,OAAO,EAAGD,EAAI,GAC/C,QAASC,EAAI,EAAGA,EAAI,EAAGA,IACrBD,EAAE,KAAK,KAAK,IAAIC,EAAGA,CAAC,CAAC,EACvB,OAAOD,CACR,CACD,KAAK,EAAI,YAAa,CACpB,IAAIA,EAAI,EACR,GAAI,IAAM,MACR,OAAO,KAAK,MACd,GAAI,IAAM,YAAa,CACrB,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASE,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCH,EAAIA,EAAI,KAAK,IAAIC,EAAGE,CAAC,EAAI,KAAK,IAAIF,EAAGE,CAAC,EAC1C,OAAO,KAAK,KAAKH,CAAC,CACnB,KACC,OAAM,IAAI,WAAW,sBAAsB,GAAG,CACjD,CACD,eAAgB,CACd,IAAI,EAAI,EACR,QAASA,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,GAAK,KAAK,IAAID,EAAGC,CAAC,EAAG,KAAK,IAAID,EAAGC,EAAG,CAAC,EACzC,OAAO,IACR,CACD,IAAI,EAAG,CACL+G,EAAE,SAAS,CAAC,IAAM,EAAI,EAAE,UAAS,GACjC,IAAIhH,EAAI,KAAK,YACb,GAAIA,EAAE,SAAW,EAAE,OACjB,MAAM,IAAI,WAAW,mCAAmC,EAC1D,IAAIC,EAAI,EACR,QAASE,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAC5BF,GAAKD,EAAEG,CAAC,EAAI,EAAEA,CAAC,EACjB,OAAOF,CACR,CACD,KAAK,EAAG,CACN,EAAIgH,EAAE,YAAY,CAAC,EACnB,IAAIjH,EAAI,KAAK,KAAMC,EAAI,KAAK,QAASE,EAAI,EAAE,QAASqB,EAAI,IAAIyF,EAAEjH,EAAGG,CAAC,EAAG0B,EAAI,IAAI,aAAa5B,CAAC,EAC3F,QAAS,EAAI,EAAG,EAAIE,EAAG,IAAK,CAC1B,QAAS2B,EAAI,EAAGA,EAAI7B,EAAG6B,IACrBD,EAAEC,CAAC,EAAI,EAAE,IAAIA,EAAG,CAAC,EACnB,QAASA,EAAI,EAAGA,EAAI9B,EAAG8B,IAAK,CAC1B,IAAIC,EAAI,EACR,QAAS,EAAI,EAAG,EAAI9B,EAAG,IACrB8B,GAAK,KAAK,IAAID,EAAG,CAAC,EAAID,EAAE,CAAC,EAC3BL,EAAE,IAAIM,EAAG,EAAGC,CAAC,CACd,CACF,CACD,OAAOP,CACR,CACD,YAAY,EAAG,CACb,EAAIyF,EAAE,YAAY,CAAC,EACnB,IAAIjH,EAAI,IAAIiH,EAAE,EAAG,CAAC,EAClB,MAAMhH,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGE,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGqB,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGK,EAAI,EAAE,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,GAAK/B,EAAI8B,IAAM5B,EAAI,GAAI8B,GAAK,EAAIF,GAAK5B,EAAG+B,EAAIjC,GAAK4B,EAAI,GAAIM,EAAIJ,GAAKD,EAAI3B,GAAI,GAAKF,EAAIuB,GAAK,EAAGY,GAAK,EAAInC,IAAME,EAAI0B,GAAI,GAAKL,EAAIO,IAAMD,EAAI,GAAIO,EAAIL,EAAIG,EAAI,EAAI,EAAG,EAAID,EAAI,EAAG+B,EAAIhC,EAAIE,EAAG+B,EAAIlC,EAAIC,EAAIC,EAAIE,EAC5V,OAAOpC,EAAE,IAAI,EAAG,EAAGqC,CAAC,EAAGrC,EAAE,IAAI,EAAG,EAAG,CAAC,EAAGA,EAAE,IAAI,EAAG,EAAGiE,CAAC,EAAGjE,EAAE,IAAI,EAAG,EAAGkE,CAAC,EAAGlE,CACxE,CACD,YAAY,EAAG,CACb,EAAIiH,EAAE,YAAY,CAAC,EACnB,IAAIjH,EAAI,IAAIiH,EAAE,EAAG,CAAC,EAClB,MAAMhH,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGE,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGqB,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGK,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,EAAI,EAAE,IAAI,EAAG,CAAC,EAAG,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,EAAI,EAAE,IAAI,EAAG,CAAC,EAAG,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,EAAI,EAAE,IAAI,EAAG,CAAC,EAAG,EAAI,EAAE,IAAI,EAAG,CAAC,EAAG4B,EAAI,EAAE,IAAI,EAAG,CAAC,EAAGC,GAAKjE,EAAIE,EAAIqB,EAAIK,EAAI,EAAI,EAAIG,GAAKI,EAAG+B,GAAKlE,EAAI4B,IAAM,CAACK,EAAIE,GAAI,EAAI,GAAK,CAACH,EAAIC,EAAI,EAAIE,EAAI,EAAIC,EAAI4B,GAAIG,GAAK,CAACnE,EAAI4B,EAAI,IAAMI,EAAIC,EAAIE,GAAIiC,GAAKxC,EAAI,IAAM,CAACI,EAAIC,GAAIoC,EAAIrE,EAAIgC,EAAGiF,GAAK,CAACjH,EAAI8B,EAAI,IAAME,EAAIE,EAAI,GAAIgF,GAAK,CAAClH,EAAI8B,IAAMI,EAAI,GAAIiF,IAAKrF,EAAI,IAAM,CAACE,EAAIE,GAAIkF,IAAKpH,EAAIE,EAAIqB,EAAI,EAAIM,EAAIC,EAAI,GAAK,EAAGuF,EAAI,GAAK,CAACrF,EAAIE,EAAI,EAAIC,EAAI,EAAIC,EAAI,GAAIkF,GAAK,CAAC/F,EAAI,EAAIQ,IAAMI,EAAIC,EAAI,GAAImF,IAAMhG,EAAIQ,IAAMI,EAAI,GAAIqF,GAAIjG,EAAIa,EAAGqF,IAAM,EAAI1F,IAAM,CAACK,EAAI,GAAIsF,GAAK,CAACnG,EAAI,EAAIM,IAAM,EAAIO,EAAI4B,GAAI2D,IAAMpG,EAAIM,IAAM,EAAImC,GAAI4D,IAAM,EAAI/F,IAAM,CAACO,EAAI4B,GAAI6D,GAAK3H,EAAI,EAAG4H,GAAKjG,EAAI,EAAGkG,GAAKnG,EAAIM,EAAG8F,GAAKlG,EAAIG,EAAGgG,GAAKlG,EAAIiC,EAAGkE,GAAK7D,EAAImD,GAAIK,GAAIM,GAAKlE,EAAIE,EAAIC,EAAIC,EAAIiD,EAAIE,GAAIC,GAAIW,GAAK/D,EAAI4C,EAAIE,GAAIC,GAAII,GAAIE,EAAIE,GAAIS,GAAKnE,EAAI,EAAIC,EAAIE,EAAImD,GAAIE,EAAIC,GAAIW,GAAKpE,EAAIC,EAAIC,EAAIC,EAAIyD,GAAIS,GAAKf,GAAIE,EAAIC,GAAKC,GAAKG,GAAIS,GAAKnE,EAAI4C,EAAIC,EAAIG,EAAIC,EAAIC,GAAKC,GAAGiB,GAAKnB,EAAIC,GAAKC,GAAIC,GAAKO,GAAIU,GAAKrE,EAAI4C,EAAIC,EAAIC,GAAIc,GACtnC,OAAOlI,EAAE,IAAI,EAAG,EAAGmI,EAAE,EAAGnI,EAAE,IAAI,EAAG,EAAGoI,EAAE,EAAGpI,EAAE,IAAI,EAAG,EAAGqI,EAAE,EAAGrI,EAAE,IAAI,EAAG,EAAGsI,EAAE,EAAGtI,EAAE,IAAI,EAAG,EAAGuI,EAAE,EAAGvI,EAAE,IAAI,EAAG,EAAGwI,EAAE,EAAGxI,EAAE,IAAI,EAAG,EAAGyI,EAAE,EAAGzI,EAAE,IAAI,EAAG,EAAG0I,EAAE,EAAG1I,EAAE,IAAI,EAAG,EAAG2I,EAAE,EAAG3I,CACjK,CACD,aAAa,EAAG,CACd,EAAIiH,EAAE,YAAY,CAAC,EACnB,IAAIjH,EAAI,KAAK,MAAO,EAAEC,EAAID,EAAE,KAAMG,EAAIH,EAAE,QAASwB,EAAI,EAAE,KAAMK,EAAI,EAAE,QACnE1B,IAAMqB,GAAK,QAAQ,KACjB,eAAevB,OAAOE,SAASqB,OAAOK,oCAC5C,EACI,SAAS,EAAEG,EAAGC,EAAGC,EAAG,CAClB,IAAIC,EAAIH,EAAE,KAAM,EAAIA,EAAE,QACtB,GAAIG,IAAMF,GAAK,IAAMC,EACnB,OAAOF,EACT,CACE,IAAII,EAAI4E,EAAE,MAAM/E,EAAGC,CAAC,EACpB,OAAOE,EAAIA,EAAE,aAAaJ,EAAG,EAAG,CAAC,EAAGI,CACrC,CACF,CACD,IAAIN,EAAI,KAAK,IAAI7B,EAAGuB,CAAC,EAAGO,EAAI,KAAK,IAAI5B,EAAG0B,CAAC,EACzC7B,EAAI,EAAEA,EAAG8B,EAAGC,CAAC,EAAG,EAAI,EAAE,EAAGD,EAAGC,CAAC,EAC7B,SAAS,EAAEC,EAAGC,EAAGC,EAAGC,EAAG,CACrB,GAAID,GAAK,KAAOC,GAAK,IACnB,OAAOH,EAAE,KAAKC,CAAC,EACjBC,EAAI,IAAM,GAAKC,EAAI,IAAM,GAAKH,EAAI,EAAEA,EAAGE,EAAI,EAAGC,EAAI,CAAC,EAAGF,EAAI,EAAEA,EAAGC,EAAI,EAAGC,EAAI,CAAC,GAAKD,EAAI,IAAM,GAAKF,EAAI,EAAEA,EAAGE,EAAI,EAAGC,CAAC,EAAGF,EAAI,EAAEA,EAAGC,EAAI,EAAGC,CAAC,GAAKA,EAAI,IAAM,IAAMH,EAAI,EAAEA,EAAGE,EAAGC,EAAI,CAAC,EAAGF,EAAI,EAAEA,EAAGC,EAAGC,EAAI,CAAC,GAC9L,IAAI,EAAI,SAASH,EAAE,KAAO,EAAG,EAAE,EAAGI,EAAI,SAASJ,EAAE,QAAU,EAAG,EAAE,EAAG,EAAIA,EAAE,UAAU,EAAG,EAAI,EAAG,EAAGI,EAAI,CAAC,EAAGC,EAAIJ,EAAE,UAAU,EAAG,EAAI,EAAG,EAAGG,EAAI,CAAC,EAAG,EAAIJ,EAAE,UAAU,EAAG,EAAI,EAAGI,EAAGJ,EAAE,QAAU,CAAC,EAAGiC,EAAIhC,EAAE,UAAU,EAAG,EAAI,EAAGG,EAAGH,EAAE,QAAU,CAAC,EAAGiC,EAAIlC,EAAE,UAAU,EAAGA,EAAE,KAAO,EAAG,EAAGI,EAAI,CAAC,EAAG+B,EAAIlC,EAAE,UAAU,EAAGA,EAAE,KAAO,EAAG,EAAGG,EAAI,CAAC,EAAG,EAAIJ,EAAE,UAAU,EAAGA,EAAE,KAAO,EAAGI,EAAGJ,EAAE,QAAU,CAAC,EAAGoC,EAAInC,EAAE,UAAU,EAAGA,EAAE,KAAO,EAAGG,EAAGH,EAAE,QAAU,CAAC,EAAGoC,EAAI,EACja2C,EAAE,IAAI,EAAG,CAAC,EACVA,EAAE,IAAI3E,EAAG+B,CAAC,EACV,EACAhC,CACR,EAASkC,EAAI,EAAE0C,EAAE,IAAI9C,EAAG,CAAC,EAAG7B,EAAG,EAAGD,CAAC,EAAG8E,EAAI,EAAE,EAAGF,EAAE,IAAI/C,EAAGG,CAAC,EAAG,EAAGhC,CAAC,EAAG+E,EAAI,EAAE,EAAGH,EAAE,IAAI7C,EAAG9B,CAAC,EAAG,EAAGD,CAAC,EAAGgF,GAAI,EAAEJ,EAAE,IAAI,EAAG,CAAC,EAAG5C,EAAG,EAAGhC,CAAC,EAAGiF,GAAI,EACzHL,EAAE,IAAI9C,EAAG,CAAC,EACV8C,EAAE,IAAI3E,EAAG4B,CAAC,EACV,EACA7B,CACD,EAAEkF,EAAI,EACLN,EAAE,IAAI,EAAG,CAAC,EACVA,EAAE,IAAI7C,EAAGC,CAAC,EACV,EACAhC,CACD,EAAEmF,EAAIP,EAAE,IAAI3C,EAAG8C,CAAC,EACjBI,EAAE,IAAIH,EAAC,EAAGG,EAAE,IAAID,CAAC,EACjB,IAAIE,GAAKR,EAAE,IAAIE,EAAGE,EAAC,EAAGK,GAAIT,EAAE,IAAI1C,EAAG6C,CAAC,EAAGO,GAAKV,EAAE,IAAI3C,EAAGC,CAAC,EACtDoD,GAAG,IAAIR,CAAC,EAAGQ,GAAG,IAAIL,EAAC,EACnB,IAAIM,EAAIX,EAAE,MAAM,EAAIO,EAAE,KAAM,EAAIA,EAAE,OAAO,EACzC,OAAOI,EAAIA,EAAE,aAAaJ,EAAG,EAAG,CAAC,EAAGI,EAAIA,EAAE,aAAaH,GAAID,EAAE,KAAM,CAAC,EAAGI,EAAIA,EAAE,aAAaF,GAAG,EAAGF,EAAE,OAAO,EAAGI,EAAIA,EAAE,aAAaD,GAAIH,EAAE,KAAMA,EAAE,OAAO,EAAGI,EAAE,UAAU,EAAGzF,EAAI,EAAG,EAAGC,EAAI,CAAC,CACtL,CACD,OAAO,EAAEnC,EAAG,EAAG8B,EAAGC,CAAC,CACpB,CACD,UAAU,EAAI,GAAI,CAChB,GAAI,OAAO,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,IAAK/B,EAAI,EAAG,IAAKC,EAAI,CAAG,EAAG,EACnC,GAAI,CAAC,OAAO,SAASD,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAI,CAAC,OAAO,SAASC,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAID,GAAKC,EACP,MAAM,IAAI,WAAW,8BAA8B,EACrD,IAAIE,EAAI,IAAI8G,EAAE,KAAK,KAAM,KAAK,OAAO,EACrC,QAASzF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,MAAMK,EAAI,KAAK,OAAOL,CAAC,EACvBK,EAAE,OAAS,GAAK+C,GAAG/C,EAAG,CAAE,IAAK7B,EAAG,IAAKC,EAAG,OAAQ4B,EAAG,EAAG1B,EAAE,OAAOqB,EAAGK,CAAC,CACpE,CACD,OAAO1B,CACR,CACD,aAAa,EAAI,GAAI,CACnB,GAAI,OAAO,GAAK,SACd,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,IAAKH,EAAI,EAAG,IAAKC,EAAI,CAAG,EAAG,EACnC,GAAI,CAAC,OAAO,SAASD,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAI,CAAC,OAAO,SAASC,CAAC,EACpB,MAAM,IAAI,UAAU,sBAAsB,EAC5C,GAAID,GAAKC,EACP,MAAM,IAAI,WAAW,8BAA8B,EACrD,IAAIE,EAAI,IAAI8G,EAAE,KAAK,KAAM,KAAK,OAAO,EACrC,QAASzF,EAAI,EAAGA,EAAI,KAAK,QAASA,IAAK,CACrC,MAAMK,EAAI,KAAK,UAAUL,CAAC,EAC1BK,EAAE,QAAU+C,GAAG/C,EAAG,CAChB,IAAK7B,EACL,IAAKC,EACL,OAAQ4B,CACT,CAAA,EAAG1B,EAAE,UAAUqB,EAAGK,CAAC,CACrB,CACD,OAAO1B,CACR,CACD,UAAW,CACT,MAAM,EAAI,KAAK,KAAK,KAAK,QAAU,CAAC,EACpC,QAASH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIE,EAAI,KAAK,IAAIH,EAAGC,CAAC,EAAGuB,EAAI,KAAK,IAAIxB,EAAG,KAAK,QAAU,EAAIC,CAAC,EAC5D,KAAK,IAAID,EAAGC,EAAGuB,CAAC,EAAG,KAAK,IAAIxB,EAAG,KAAK,QAAU,EAAIC,EAAGE,CAAC,CACvD,CACH,OAAO,IACR,CACD,aAAc,CACZ,MAAM,EAAI,KAAK,KAAK,KAAK,KAAO,CAAC,EACjC,QAASH,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,QAASC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIE,EAAI,KAAK,IAAIF,EAAGD,CAAC,EAAGwB,EAAI,KAAK,IAAI,KAAK,KAAO,EAAIvB,EAAGD,CAAC,EACzD,KAAK,IAAIC,EAAGD,EAAGwB,CAAC,EAAG,KAAK,IAAI,KAAK,KAAO,EAAIvB,EAAGD,EAAGG,CAAC,CACpD,CACH,OAAO,IACR,CACD,iBAAiB,EAAG,CAClB,EAAI8G,EAAE,YAAY,CAAC,EACnB,IAAIjH,EAAI,KAAK,KAAMC,EAAI,KAAK,QAASE,EAAI,EAAE,KAAMqB,EAAI,EAAE,QAASK,EAAI,IAAIoF,EAAEjH,EAAIG,EAAGF,EAAIuB,CAAC,EACtF,QAAS,EAAI,EAAG,EAAIxB,EAAG,IACrB,QAAS8B,EAAI,EAAGA,EAAI7B,EAAG6B,IACrB,QAASC,EAAI,EAAGA,EAAI5B,EAAG4B,IACrB,QAAS,EAAI,EAAG,EAAIP,EAAG,IACrBK,EAAE,IAAI1B,EAAI,EAAI4B,EAAGP,EAAIM,EAAI,EAAG,KAAK,IAAI,EAAGA,CAAC,EAAI,EAAE,IAAIC,EAAG,CAAC,CAAC,EAChE,OAAOF,CACR,CACD,aAAa,EAAG,CACd,GAAI,EAAIoF,EAAE,YAAY,CAAC,EAAG,CAAC,KAAK,SAAU,GAAI,CAAC,EAAE,SAAU,EACzD,MAAM,IAAI,MAAM,yCAAyC,EAC3D,IAAIjH,EAAI,KAAK,KAAMC,EAAI,EAAE,KAAME,EAAI,KAAK,iBAAiB8G,EAAE,IAAIhH,EAAGA,CAAC,CAAC,EAAGuB,EAAIyF,EAAE,IAAIjH,EAAGA,CAAC,EAAE,iBAAiB,CAAC,EACzG,OAAOG,EAAE,IAAIqB,CAAC,CACf,CACD,WAAY,CACV,IAAI,EAAI,IAAIyF,EAAE,KAAK,QAAS,KAAK,IAAI,EACrC,QAASjH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAE,IAAIA,EAAGD,EAAG,KAAK,IAAIA,EAAGC,CAAC,CAAC,EAC9B,OAAO,CACR,CACD,SAAS,EAAI2I,GAAI,CACf,QAAS5I,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,KAAK,OAAOA,EAAG,KAAK,OAAOA,CAAC,EAAE,KAAK,CAAC,CAAC,EACvC,OAAO,IACR,CACD,YAAY,EAAI4I,GAAI,CAClB,QAAS5I,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,KAAK,UAAUA,EAAG,KAAK,UAAUA,CAAC,EAAE,KAAK,CAAC,CAAC,EAC7C,OAAO,IACR,CACD,UAAU,EAAGA,EAAGC,EAAGE,EAAG,CACpBsF,GAAG,KAAM,EAAGzF,EAAGC,EAAGE,CAAC,EACnB,IAAIqB,EAAI,IAAIyF,EACVjH,EAAI,EAAI,EACRG,EAAIF,EAAI,CACd,EACI,QAAS4B,EAAI,EAAGA,GAAK7B,EAAG6B,IACtB,QAAS,EAAI5B,EAAG,GAAKE,EAAG,IACtBqB,EAAE,IAAIK,EAAI,EAAG,EAAI5B,EAAG,KAAK,IAAI4B,EAAG,CAAC,CAAC,EACtC,OAAOL,CACR,CACD,aAAa,EAAGxB,EAAGC,EAAG,CACpB,GAAID,IAAM,SAAWA,EAAI,GAAIC,IAAM,SAAWA,EAAI,KAAK,QAAU,GAAID,EAAIC,GAAKD,EAAI,GAAKA,GAAK,KAAK,SAAWC,EAAI,GAAKA,GAAK,KAAK,QAC7H,MAAM,IAAI,WAAW,uBAAuB,EAC9C,IAAIE,EAAI,IAAI8G,EAAE,EAAE,OAAQhH,EAAID,EAAI,CAAC,EACjC,QAASwB,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5B,QAASK,EAAI7B,EAAG6B,GAAK5B,EAAG4B,IAAK,CAC3B,GAAI,EAAEL,CAAC,EAAI,GAAK,EAAEA,CAAC,GAAK,KAAK,KAC3B,MAAM,IAAI,WAAW,2BAA2B,EAAEA,CAAC,GAAG,EACxDrB,EAAE,IAAIqB,EAAGK,EAAI7B,EAAG,KAAK,IAAI,EAAEwB,CAAC,EAAGK,CAAC,CAAC,CAClC,CACH,OAAO1B,CACR,CACD,gBAAgB,EAAGH,EAAGC,EAAG,CACvB,GAAID,IAAM,SAAWA,EAAI,GAAIC,IAAM,SAAWA,EAAI,KAAK,KAAO,GAAID,EAAIC,GAAKD,EAAI,GAAKA,GAAK,KAAK,MAAQC,EAAI,GAAKA,GAAK,KAAK,KACvH,MAAM,IAAI,WAAW,uBAAuB,EAC9C,IAAIE,EAAI,IAAI8G,EAAEhH,EAAID,EAAI,EAAG,EAAE,MAAM,EACjC,QAASwB,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5B,QAASK,EAAI7B,EAAG6B,GAAK5B,EAAG4B,IAAK,CAC3B,GAAI,EAAEL,CAAC,EAAI,GAAK,EAAEA,CAAC,GAAK,KAAK,QAC3B,MAAM,IAAI,WAAW,8BAA8B,EAAEA,CAAC,GAAG,EAC3DrB,EAAE,IAAI0B,EAAI7B,EAAGwB,EAAG,KAAK,IAAIK,EAAG,EAAEL,CAAC,CAAC,CAAC,CAClC,CACH,OAAOrB,CACR,CACD,aAAa,EAAGH,EAAGC,EAAG,CACpB,GAAI,EAAIgH,EAAE,YAAY,CAAC,EAAG,EAAE,QAAS,EACnC,OAAO,KACT,IAAI9G,EAAIH,EAAI,EAAE,KAAO,EAAGwB,EAAIvB,EAAI,EAAE,QAAU,EAC5CwF,GAAG,KAAMzF,EAAGG,EAAGF,EAAGuB,CAAC,EACnB,QAASK,EAAI,EAAGA,EAAI,EAAE,KAAMA,IAC1B,QAAS,EAAI,EAAG,EAAI,EAAE,QAAS,IAC7B,KAAK,IAAI7B,EAAI6B,EAAG5B,EAAI,EAAG,EAAE,IAAI4B,EAAG,CAAC,CAAC,EACtC,OAAO,IACR,CACD,UAAU,EAAG7B,EAAG,CACduF,GAAG,KAAM,CAAC,EAAGC,GAAG,KAAMxF,CAAC,EACvB,IAAIC,EAAI,IAAIgH,EAAE,EAAE,OAAQjH,EAAE,MAAM,EAChC,QAASG,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACjC,IAAIqB,EAAI,EAAErB,CAAC,EACX,QAAS0B,EAAI,EAAGA,EAAI7B,EAAE,OAAQ6B,IAAK,CACjC,IAAI,EAAI7B,EAAE6B,CAAC,EACX5B,EAAE,IAAIE,EAAG0B,EAAG,KAAK,IAAIL,EAAG,CAAC,CAAC,CAC3B,CACF,CACD,OAAOvB,CACR,CACD,OAAQ,CACN,IAAI,EAAI,KAAK,IAAI,KAAK,KAAM,KAAK,OAAO,EAAGD,EAAI,EAC/C,QAASC,EAAI,EAAGA,EAAI,EAAGA,IACrBD,GAAK,KAAK,IAAIC,EAAGA,CAAC,EACpB,OAAOD,CACR,CACD,OAAQ,CACN,IAAI,EAAI,IAAIiH,EAAE,KAAK,KAAM,KAAK,OAAO,EACrC,QAASjH,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7B,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChC,EAAE,IAAID,EAAGC,EAAG,KAAK,IAAID,EAAGC,CAAC,CAAC,EAC9B,OAAO,CACR,CACD,IAAI,EAAG,CACL,OAAQ,EAAC,CACP,IAAK,MACH,OAAO4F,GAAG,IAAI,EAChB,IAAK,SACH,OAAOC,GAAG,IAAI,EAChB,KAAK,OACH,OAAOC,GAAG,IAAI,EAChB,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,QAAQ,EAAG,CACT,OAAQ,EAAC,CACP,IAAK,MACH,OAAOC,GAAG,IAAI,EAChB,IAAK,SACH,OAAOC,GAAG,IAAI,EAChB,KAAK,OACH,OAAOC,GAAG,IAAI,EAChB,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,KAAK,EAAG,CACN,MAAMlG,EAAI,KAAK,IAAI,CAAC,EACpB,OAAQ,EAAC,CACP,IAAK,MAAO,CACV,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAC7BD,EAAEC,CAAC,GAAK,KAAK,QACf,OAAOD,CACR,CACD,IAAK,SAAU,CACb,QAASC,EAAI,EAAGA,EAAI,KAAK,QAASA,IAChCD,EAAEC,CAAC,GAAK,KAAK,KACf,OAAOD,CACR,CACD,KAAK,OACH,OAAOA,EAAI,KAAK,KAClB,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,SAAS,EAAGA,EAAI,GAAI,CAClB,GAAI,OAAO,GAAK,WAAaA,EAAI,EAAG,EAAI,QAAS,OAAOA,GAAK,SAC3D,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,SAAUC,EAAI,GAAI,KAAME,EAAI,KAAK,KAAK,CAAC,CAAC,EAAKH,EACrD,GAAI,OAAOC,GAAK,UACd,MAAM,IAAI,UAAU,4BAA4B,EAClD,OAAQ,EAAC,CACP,IAAK,MAAO,CACV,GAAI,CAACwE,EAAEtE,CAAC,EACN,MAAM,IAAI,UAAU,uBAAuB,EAC7C,OAAOgG,GAAG,KAAMlG,EAAGE,CAAC,CACrB,CACD,IAAK,SAAU,CACb,GAAI,CAACsE,EAAEtE,CAAC,EACN,MAAM,IAAI,UAAU,uBAAuB,EAC7C,OAAOiG,GAAG,KAAMnG,EAAGE,CAAC,CACrB,CACD,KAAK,OAAQ,CACX,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,uBAAuB,EAC7C,OAAOkG,GAAG,KAAMpG,EAAGE,CAAC,CACrB,CACD,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,kBAAkB,EAAGH,EAAG,CACtB,OAAO,GAAK,WAAaA,EAAI,EAAG,EAAI,QACpC,MAAMC,EAAI,KAAK,SAAS,EAAGD,CAAC,EAC5B,GAAI,IAAM,OACR,OAAO,KAAK,KAAKC,CAAC,EACpB,QAASE,EAAI,EAAGA,EAAIF,EAAE,OAAQE,IAC5BF,EAAEE,CAAC,EAAI,KAAK,KAAKF,EAAEE,CAAC,CAAC,EACvB,OAAOF,CACR,CACD,OAAO,EAAGD,EAAI,GAAI,CAChB,GAAI,OAAO,GAAK,WAAaA,EAAI,EAAG,EAAI,QAAS,OAAOA,GAAK,SAC3D,MAAM,IAAI,UAAU,2BAA2B,EACjD,KAAM,CAAE,OAAQC,EAAI,KAAK,KAAK,CAAC,CAAG,EAAGD,EACrC,OAAQ,EAAC,CACP,IAAK,MAAO,CACV,GAAI,CAACyE,EAAExE,CAAC,EACN,MAAM,IAAI,UAAU,yBAAyB,EAC/C,OAAOqG,GAAG,KAAMrG,CAAC,EAAG,IACrB,CACD,IAAK,SAAU,CACb,GAAI,CAACwE,EAAExE,CAAC,EACN,MAAM,IAAI,UAAU,yBAAyB,EAC/C,OAAOsG,GAAG,KAAMtG,CAAC,EAAG,IACrB,CACD,KAAK,OAAQ,CACX,GAAI,OAAOA,GAAK,SACd,MAAM,IAAI,UAAU,yBAAyB,EAC/C,OAAOuG,GAAG,KAAMvG,CAAC,EAAG,IACrB,CACD,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,MAAM,EAAGD,EAAI,GAAI,CACf,GAAI,OAAO,GAAK,WAAaA,EAAI,EAAG,EAAI,QAAS,OAAOA,GAAK,SAC3D,MAAM,IAAI,UAAU,2BAA2B,EACjD,IAAIC,EAAID,EAAE,MACV,OAAQ,EAAC,CACP,IAAK,MAAO,CACV,GAAIC,IAAM,OACRA,EAAIwG,GAAG,IAAI,UACJ,CAAChC,EAAExE,CAAC,EACX,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAOyG,GAAG,KAAMzG,CAAC,EAAG,IACrB,CACD,IAAK,SAAU,CACb,GAAIA,IAAM,OACRA,EAAI0G,GAAG,IAAI,UACJ,CAAClC,EAAExE,CAAC,EACX,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAO2G,GAAG,KAAM3G,CAAC,EAAG,IACrB,CACD,KAAK,OAAQ,CACX,GAAIA,IAAM,OACRA,EAAI4G,GAAG,IAAI,UACJ,OAAO5G,GAAK,SACnB,MAAM,IAAI,UAAU,wBAAwB,EAC9C,OAAO6G,GAAG,KAAM7G,CAAC,EAAG,IACrB,CACD,QACE,MAAM,IAAI,MAAM,mBAAmB,GAAG,CACzC,CACF,CACD,SAAS,EAAG,CACV,OAAO,GAAG,KAAM,CAAC,CAClB,CACH,EACA+G,EAAE,UAAU,MAAQ,SACpB,OAAO,OAAS,MAAQA,EAAE,UAAU,OAAO,IAAI,4BAA4B,CAAC,EAAIlC,IAChF,SAAS8D,GAAG7I,EAAG,EAAG,CAChB,OAAOA,EAAI,CACb,CACA,SAAS8I,GAAG9I,EAAG,CACb,OAAOA,EAAE,MAAO,GAAM,OAAO,GAAK,QAAQ,CAC5C,CACAiH,EAAE,OAASA,EAAE,KACbA,EAAE,UAAYA,EAAE,QAChBA,EAAE,SAAWA,EAAE,KACdD,EAAC,UAAU,SAAWC,EAAE,UAAU,KACnCA,EAAE,SAAWA,EAAE,IACdD,EAAC,UAAU,OAASC,EAAE,UAAU,IAChCD,EAAC,UAAU,cAAgBC,EAAE,UAAU,uBACxC,MAAMC,WAAUD,CAAE,CAChB,YAAY,EAAGhH,EAAG,CAChB,GAAI,MAAO,EAAEiH,GAAE,SAAS,CAAC,EACvB,OAAO,EAAE,QACX,GAAI,OAAO,UAAU,CAAC,GAAK,GAAK,EAC9B,GAAI,KAAK,KAAO,GAAI,OAAO,UAAUjH,CAAC,GAAKA,GAAK,EAC9C,QAASC,EAAI,EAAGA,EAAI,EAAGA,IACrB,KAAK,KAAK,KAAK,IAAI,aAAaD,CAAC,CAAC,MAEpC,OAAM,IAAI,UAAU,qCAAqC,UACpDyE,EAAE,CAAC,EAAG,CACb,MAAMxE,EAAI,EACV,GAAI,EAAIA,EAAE,OAAQD,EAAI,EAAIC,EAAE,CAAC,EAAE,OAAS,EAAG,OAAOD,GAAK,SACrD,MAAM,IAAI,UACR,mDACV,EACM,KAAK,KAAO,GACZ,QAASG,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,GAAIF,EAAEE,CAAC,EAAE,SAAWH,EAClB,MAAM,IAAI,WAAW,+BAA+B,EACtD,GAAI,CAAC6I,GAAG5I,EAAEE,CAAC,CAAC,EACV,MAAM,IAAI,UAAU,wCAAwC,EAC9D,KAAK,KAAK,KAAK,aAAa,KAAKF,EAAEE,CAAC,CAAC,CAAC,CACvC,CACF,KACC,OAAM,IAAI,UACR,sDACR,EACI,KAAK,KAAO,EAAG,KAAK,QAAUH,CAC/B,CACD,IAAI,EAAGA,EAAGC,EAAG,CACX,OAAO,KAAK,KAAK,CAAC,EAAED,CAAC,EAAIC,EAAG,IAC7B,CACD,IAAI,EAAGD,EAAG,CACR,OAAO,KAAK,KAAK,CAAC,EAAEA,CAAC,CACtB,CACD,UAAU,EAAG,CACX,OAAOmF,EAAE,KAAM,CAAC,EAAG,KAAK,KAAK,OAAO,EAAG,CAAC,EAAG,KAAK,MAAQ,EAAG,IAC5D,CACD,OAAO,EAAGnF,EAAG,CACX,OAAOA,IAAM,SAAWA,EAAI,EAAG,EAAI,KAAK,MAAOmF,EAAE,KAAM,EAAG,EAAE,EAAGnF,EAAI,aAAa,KAAKqF,GAAG,KAAMrF,CAAC,CAAC,EAAG,KAAK,KAAK,OAAO,EAAG,EAAGA,CAAC,EAAG,KAAK,MAAQ,EAAG,IAC/I,CACD,aAAa,EAAG,CACdoF,EAAE,KAAM,CAAC,EACT,QAASpF,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,MAAMC,EAAI,IAAI,aAAa,KAAK,QAAU,CAAC,EAC3C,QAASE,EAAI,EAAGA,EAAI,EAAGA,IACrBF,EAAEE,CAAC,EAAI,KAAK,KAAKH,CAAC,EAAEG,CAAC,EACvB,QAASA,EAAI,EAAI,EAAGA,EAAI,KAAK,QAASA,IACpCF,EAAEE,EAAI,CAAC,EAAI,KAAK,KAAKH,CAAC,EAAEG,CAAC,EAC3B,KAAK,KAAKH,CAAC,EAAIC,CAChB,CACD,OAAO,KAAK,SAAW,EAAG,IAC3B,CACD,UAAU,EAAGD,EAAG,CACd,OAAOA,EAAI,MAAQA,EAAI,EAAG,EAAI,KAAK,SAAUoF,EAAE,KAAM,EAAG,EAAE,EAAGpF,EAAIsF,GAAG,KAAMtF,CAAC,EAC3E,QAASC,EAAI,EAAGA,EAAI,KAAK,KAAMA,IAAK,CAClC,MAAME,EAAI,IAAI,aAAa,KAAK,QAAU,CAAC,EAC3C,IAAIqB,EAAI,EACR,KAAOA,EAAI,EAAGA,IACZrB,EAAEqB,CAAC,EAAI,KAAK,KAAKvB,CAAC,EAAEuB,CAAC,EACvB,IAAKrB,EAAEqB,GAAG,EAAIxB,EAAEC,CAAC,EAAGuB,EAAI,KAAK,QAAU,EAAGA,IACxCrB,EAAEqB,CAAC,EAAI,KAAK,KAAKvB,CAAC,EAAEuB,EAAI,CAAC,EAC3B,KAAK,KAAKvB,CAAC,EAAIE,CAChB,CACD,OAAO,KAAK,SAAW,EAAG,IAC3B,CACH,EACA+E,GAAG8B,EAAGC,CAAC,EACP,MAAM6B,WAAW9B,CAAE,CACjB,YAAY,EAAG,CACb,MAAO,EAAE,KAAK,KAAO,EAAG,KAAK,KAAO,EAAE,OAAQ,KAAK,QAAU,EAAE,CAAC,EAAE,MACnE,CACD,IAAI,EAAGhH,EAAGC,EAAG,CACX,OAAO,KAAK,KAAK,CAAC,EAAED,CAAC,EAAIC,EAAG,IAC7B,CACD,IAAI,EAAGD,EAAG,CACR,OAAO,KAAK,KAAK,CAAC,EAAEA,CAAC,CACtB,CACH,CACA,SAAS+I,GAAGhJ,EAAG,EAAG,CAChB,IAAIC,EAAI,EACR,OAAO,KAAK,IAAID,CAAC,EAAI,KAAK,IAAI,CAAC,GAAKC,EAAI,EAAID,EAAG,KAAK,IAAIA,CAAC,EAAI,KAAK,KAAK,EAAIC,EAAIA,CAAC,GAAK,IAAM,GAAKA,EAAID,EAAI,EAAG,KAAK,IAAI,CAAC,EAAI,KAAK,KAAK,EAAIC,EAAIA,CAAC,GAAK,CACnJ,CACA,MAAMgJ,EAAG,CACP,YAAY,EAAGhJ,EAAI,GAAI,CACrB,KAAM,CAAE,gBAAiBC,EAAI,EAAE,EAAKD,EACpC,GAAI,EAAI8I,GAAG,YAAY,CAAC,EAAG,CAAC,EAAE,SAAU,EACtC,MAAM,IAAI,MAAM,+BAA+B,EACjD,GAAI,EAAE,QAAS,EACb,MAAM,IAAI,MAAM,0BAA0B,EAC5C,IAAI3I,EAAI,EAAE,QAASqB,EAAI,IAAIyF,EAAE9G,EAAGA,CAAC,EAAG0B,EAAI,IAAI,aAAa1B,CAAC,EAAG,EAAI,IAAI,aAAaA,CAAC,EAAG2B,EAAI,EAAGC,EAAG,EAAGC,EAAI,GACvG,GAAI/B,EAAI+B,EAAI,GAAKA,EAAI,EAAE,YAAa,EAAEA,EAAG,CACvC,IAAKD,EAAI,EAAGA,EAAI5B,EAAG4B,IACjB,IAAK,EAAI,EAAG,EAAI5B,EAAG,IACjBqB,EAAE,IAAIO,EAAG,EAAGD,EAAE,IAAIC,EAAG,CAAC,CAAC,EAC3BkH,GAAG9I,EAAG,EAAG0B,EAAGL,CAAC,EAAG0H,GAAG/I,EAAG,EAAG0B,EAAGL,CAAC,CACnC,KAAW,CACL,IAAIS,EAAI,IAAIgF,EAAE9G,EAAGA,CAAC,EAAG+B,EAAI,IAAI,aAAa/B,CAAC,EAC3C,IAAK,EAAI,EAAG,EAAIA,EAAG,IACjB,IAAK4B,EAAI,EAAGA,EAAI5B,EAAG4B,IACjBE,EAAE,IAAIF,EAAG,EAAGD,EAAE,IAAIC,EAAG,CAAC,CAAC,EAC3BoH,GAAGhJ,EAAG8B,EAAGC,EAAGV,CAAC,EAAG4H,GAAGjJ,EAAG,EAAG0B,EAAGL,EAAGS,CAAC,CACjC,CACD,KAAK,EAAI9B,EAAG,KAAK,EAAI,EAAG,KAAK,EAAI0B,EAAG,KAAK,EAAIL,CAC9C,CACD,IAAI,iBAAkB,CACpB,OAAO,MAAM,KAAK,KAAK,CAAC,CACzB,CACD,IAAI,sBAAuB,CACzB,OAAO,MAAM,KAAK,KAAK,CAAC,CACzB,CACD,IAAI,mBAAoB,CACtB,OAAO,KAAK,CACb,CACD,IAAI,gBAAiB,CACnB,IAAI,EAAI,KAAK,EAAGxB,EAAI,KAAK,EAAGC,EAAI,KAAK,EAAGE,EAAI,IAAI8G,EAAE,EAAG,CAAC,EAAGzF,EAAGK,EAC5D,IAAKL,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAKK,EAAI,EAAGA,EAAI,EAAGA,IACjB1B,EAAE,IAAIqB,EAAGK,EAAG,CAAC,EACf1B,EAAE,IAAIqB,EAAGA,EAAGvB,EAAEuB,CAAC,CAAC,EAAGxB,EAAEwB,CAAC,EAAI,EAAIrB,EAAE,IAAIqB,EAAGA,EAAI,EAAGxB,EAAEwB,CAAC,CAAC,EAAIxB,EAAEwB,CAAC,EAAI,GAAKrB,EAAE,IAAIqB,EAAGA,EAAI,EAAGxB,EAAEwB,CAAC,CAAC,CACvF,CACD,OAAOrB,CACR,CACH,CACA,SAAS8I,GAAGlJ,EAAG,EAAGC,EAAGC,EAAG,CACtB,IAAIE,EAAGqB,EAAGK,EAAG,EAAGC,EAAGC,EAAG,EAAGC,EACzB,IAAKF,EAAI,EAAGA,EAAI/B,EAAG+B,IACjB9B,EAAE8B,CAAC,EAAI7B,EAAE,IAAIF,EAAI,EAAG+B,CAAC,EACvB,IAAK,EAAI/B,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAKiC,EAAI,EAAGH,EAAI,EAAGE,EAAI,EAAGA,EAAI,EAAGA,IAC/BC,EAAIA,EAAI,KAAK,IAAIhC,EAAE+B,CAAC,CAAC,EACvB,GAAIC,IAAM,EACR,IAAK,EAAE,CAAC,EAAIhC,EAAE,EAAI,CAAC,EAAG8B,EAAI,EAAGA,EAAI,EAAGA,IAClC9B,EAAE8B,CAAC,EAAI7B,EAAE,IAAI,EAAI,EAAG6B,CAAC,EAAG7B,EAAE,IAAI,EAAG6B,EAAG,CAAC,EAAG7B,EAAE,IAAI6B,EAAG,EAAG,CAAC,MACpD,CACH,IAAKC,EAAI,EAAGA,EAAI,EAAGA,IACjB/B,EAAE+B,CAAC,GAAKC,EAAGH,GAAK7B,EAAE+B,CAAC,EAAI/B,EAAE+B,CAAC,EAC5B,IAAK5B,EAAIH,EAAE,EAAI,CAAC,EAAGwB,EAAI,KAAK,KAAKK,CAAC,EAAG1B,EAAI,IAAMqB,EAAI,CAACA,GAAI,EAAE,CAAC,EAAIQ,EAAIR,EAAGK,EAAIA,EAAI1B,EAAIqB,EAAGxB,EAAE,EAAI,CAAC,EAAIG,EAAIqB,EAAGM,EAAI,EAAGA,EAAI,EAAGA,IACnH,EAAEA,CAAC,EAAI,EACT,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAK3B,EAAIH,EAAE8B,CAAC,EAAG7B,EAAE,IAAI6B,EAAG,EAAG3B,CAAC,EAAGqB,EAAI,EAAEM,CAAC,EAAI7B,EAAE,IAAI6B,EAAGA,CAAC,EAAI3B,EAAG4B,EAAID,EAAI,EAAGC,GAAK,EAAI,EAAGA,IAChFP,GAAKvB,EAAE,IAAI8B,EAAGD,CAAC,EAAI9B,EAAE+B,CAAC,EAAG,EAAEA,CAAC,GAAK9B,EAAE,IAAI8B,EAAGD,CAAC,EAAI3B,EACjD,EAAE2B,CAAC,EAAIN,CACR,CACD,IAAKrB,EAAI,EAAG2B,EAAI,EAAGA,EAAI,EAAGA,IACxB,EAAEA,CAAC,GAAKD,EAAG1B,GAAK,EAAE2B,CAAC,EAAI9B,EAAE8B,CAAC,EAC5B,IAAK,EAAI3B,GAAK0B,EAAIA,GAAIC,EAAI,EAAGA,EAAI,EAAGA,IAClC,EAAEA,CAAC,GAAK,EAAI9B,EAAE8B,CAAC,EACjB,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACtB,IAAK3B,EAAIH,EAAE8B,CAAC,EAAGN,EAAI,EAAEM,CAAC,EAAGC,EAAID,EAAGC,GAAK,EAAI,EAAGA,IAC1C9B,EAAE,IAAI8B,EAAGD,EAAG7B,EAAE,IAAI8B,EAAGD,CAAC,GAAK3B,EAAI,EAAE4B,CAAC,EAAIP,EAAIxB,EAAE+B,CAAC,EAAE,EACjD/B,EAAE8B,CAAC,EAAI7B,EAAE,IAAI,EAAI,EAAG6B,CAAC,EAAG7B,EAAE,IAAI,EAAG6B,EAAG,CAAC,CACtC,CACF,CACD9B,EAAE,CAAC,EAAI6B,CACR,CACD,IAAK,EAAI,EAAG,EAAI9B,EAAI,EAAG,IAAK,CAC1B,GAAIE,EAAE,IAAIF,EAAI,EAAG,EAAGE,EAAE,IAAI,EAAG,CAAC,CAAC,EAAGA,EAAE,IAAI,EAAG,EAAG,CAAC,EAAG4B,EAAI7B,EAAE,EAAI,CAAC,EAAG6B,IAAM,EAAG,CACvE,IAAKE,EAAI,EAAGA,GAAK,EAAGA,IAClB/B,EAAE+B,CAAC,EAAI9B,EAAE,IAAI8B,EAAG,EAAI,CAAC,EAAIF,EAC3B,IAAKC,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACvB,IAAKN,EAAI,EAAGO,EAAI,EAAGA,GAAK,EAAGA,IACzBP,GAAKvB,EAAE,IAAI8B,EAAG,EAAI,CAAC,EAAI9B,EAAE,IAAI8B,EAAGD,CAAC,EACnC,IAAKC,EAAI,EAAGA,GAAK,EAAGA,IAClB9B,EAAE,IAAI8B,EAAGD,EAAG7B,EAAE,IAAI8B,EAAGD,CAAC,EAAIN,EAAIxB,EAAE+B,CAAC,CAAC,CACrC,CACF,CACD,IAAKA,EAAI,EAAGA,GAAK,EAAGA,IAClB9B,EAAE,IAAI8B,EAAG,EAAI,EAAG,CAAC,CACpB,CACD,IAAKD,EAAI,EAAGA,EAAI/B,EAAG+B,IACjB9B,EAAE8B,CAAC,EAAI7B,EAAE,IAAIF,EAAI,EAAG+B,CAAC,EAAG7B,EAAE,IAAIF,EAAI,EAAG+B,EAAG,CAAC,EAC3C7B,EAAE,IAAIF,EAAI,EAAGA,EAAI,EAAG,CAAC,EAAG,EAAE,CAAC,EAAI,CACjC,CACA,SAASmJ,GAAGnJ,EAAG,EAAGC,EAAGC,EAAG,CACtB,IAAIE,EAAGqB,EAAGK,EAAG,EAAGC,EAAGC,EAAG,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,EAAGC,EAAG,EAAGC,EAAG,EACjD,IAAKR,EAAI,EAAGA,EAAI9B,EAAG8B,IACjB,EAAEA,EAAI,CAAC,EAAI,EAAEA,CAAC,EAChB,EAAE9B,EAAI,CAAC,EAAI,EACX,IAAIkE,EAAI,EAAGC,EAAI,EAAGC,EAAI,OAAO,QAC7B,IAAKpC,EAAI,EAAGA,EAAIhC,EAAGgC,IAAK,CACtB,IAAKmC,EAAI,KAAK,IAAIA,EAAG,KAAK,IAAIlE,EAAE+B,CAAC,CAAC,EAAI,KAAK,IAAI,EAAEA,CAAC,CAAC,CAAC,EAAG,EAAIA,EAAG,EAAIhC,GAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAKoE,EAAID,IAC7F,IACF,GAAI,EAAInC,EACN,EAAG,CACD,IAAK5B,EAAIH,EAAE+B,CAAC,EAAGC,GAAKhC,EAAE+B,EAAI,CAAC,EAAI5B,IAAM,EAAI,EAAE4B,CAAC,GAAIE,EAAI8G,GAAG/G,EAAG,CAAC,EAAGA,EAAI,IAAMC,EAAI,CAACA,GAAIjC,EAAE+B,CAAC,EAAI,EAAEA,CAAC,GAAKC,EAAIC,GAAIjC,EAAE+B,EAAI,CAAC,EAAI,EAAEA,CAAC,GAAKC,EAAIC,GAAIC,EAAIlC,EAAE+B,EAAI,CAAC,EAAGP,EAAIrB,EAAIH,EAAE+B,CAAC,EAAGF,EAAIE,EAAI,EAAGF,EAAI9B,EAAG8B,IAC/K7B,EAAE6B,CAAC,GAAKL,EACV,IAAKyC,EAAIA,EAAIzC,EAAGQ,EAAIhC,EAAE,CAAC,EAAGmC,EAAI,EAAG,EAAIA,EAAGC,EAAID,EAAG,EAAI,EAAEJ,EAAI,CAAC,EAAGM,EAAI,EAAG,EAAI,EAAGR,EAAI,EAAI,EAAGA,GAAKE,EAAGF,IAC5F,IAAKO,EAAI,EAAG,EAAID,EAAG,EAAIE,EAAGlC,EAAIgC,EAAI,EAAEN,CAAC,EAAGL,EAAIW,EAAIH,EAAGC,EAAI8G,GAAG/G,EAAG,EAAEH,CAAC,CAAC,EAAG,EAAEA,EAAI,CAAC,EAAIQ,EAAIJ,EAAGI,EAAI,EAAER,CAAC,EAAII,EAAGE,EAAIH,EAAIC,EAAGD,EAAIG,EAAInC,EAAE6B,CAAC,EAAIQ,EAAIlC,EAAGH,EAAE6B,EAAI,CAAC,EAAIL,EAAIa,GAAKF,EAAIhC,EAAIkC,EAAIrC,EAAE6B,CAAC,GAAIC,EAAI,EAAGA,EAAI/B,EAAG+B,IACxLN,EAAIvB,EAAE,IAAI6B,EAAGD,EAAI,CAAC,EAAG5B,EAAE,IAAI6B,EAAGD,EAAI,EAAGQ,EAAIpC,EAAE,IAAI6B,EAAGD,CAAC,EAAIM,EAAIX,CAAC,EAAGvB,EAAE,IAAI6B,EAAGD,EAAGM,EAAIlC,EAAE,IAAI6B,EAAGD,CAAC,EAAIQ,EAAIb,CAAC,EACtGQ,EAAI,CAACK,EAAI,EAAID,EAAI,EAAI,EAAEL,CAAC,EAAIG,EAAG,EAAEH,CAAC,EAAIM,EAAIL,EAAGhC,EAAE+B,CAAC,EAAII,EAAIH,CAChE,OAAe,KAAK,IAAI,EAAED,CAAC,CAAC,EAAIoC,EAAID,GAChClE,EAAE+B,CAAC,EAAI/B,EAAE+B,CAAC,EAAIkC,EAAG,EAAElC,CAAC,EAAI,CACzB,CACD,IAAKF,EAAI,EAAGA,EAAI9B,EAAI,EAAG8B,IAAK,CAC1B,IAAKC,EAAID,EAAGG,EAAIhC,EAAE6B,CAAC,EAAG,EAAIA,EAAI,EAAG,EAAI9B,EAAG,IACtCC,EAAE,CAAC,EAAIgC,IAAMF,EAAI,EAAGE,EAAIhC,EAAE,CAAC,GAC7B,GAAI8B,IAAMD,EACR,IAAK7B,EAAE8B,CAAC,EAAI9B,EAAE6B,CAAC,EAAG7B,EAAE6B,CAAC,EAAIG,EAAG,EAAI,EAAG,EAAIjC,EAAG,IACxCiC,EAAI/B,EAAE,IAAI,EAAG4B,CAAC,EAAG5B,EAAE,IAAI,EAAG4B,EAAG5B,EAAE,IAAI,EAAG6B,CAAC,CAAC,EAAG7B,EAAE,IAAI,EAAG6B,EAAGE,CAAC,CAC7D,CACH,CACA,SAASmH,GAAGpJ,EAAG,EAAGC,EAAGC,EAAG,CACtB,IAAIE,EAAI,EAAGqB,EAAIzB,EAAI,EAAG8B,EAAG,EAAGC,EAAGC,EAAG,EAAGC,EAAGC,EACxC,IAAKD,EAAI7B,EAAI,EAAG6B,GAAKR,EAAI,EAAGQ,IAAK,CAC/B,IAAKC,EAAI,EAAGF,EAAIC,EAAGD,GAAKP,EAAGO,IACzBE,EAAIA,EAAI,KAAK,IAAI,EAAE,IAAIF,EAAGC,EAAI,CAAC,CAAC,EAClC,GAAIC,IAAM,EAAG,CACX,IAAKH,EAAI,EAAGC,EAAIP,EAAGO,GAAKC,EAAGD,IACzB/B,EAAE+B,CAAC,EAAI,EAAE,IAAIA,EAAGC,EAAI,CAAC,EAAIC,EAAGH,GAAK9B,EAAE+B,CAAC,EAAI/B,EAAE+B,CAAC,EAC7C,IAAK,EAAI,KAAK,KAAKD,CAAC,EAAG9B,EAAEgC,CAAC,EAAI,IAAM,EAAI,CAAC,GAAIF,EAAIA,EAAI9B,EAAEgC,CAAC,EAAI,EAAGhC,EAAEgC,CAAC,EAAIhC,EAAEgC,CAAC,EAAI,EAAG,EAAIA,EAAG,EAAIjC,EAAG,IAAK,CACjG,IAAK8B,EAAI,EAAGE,EAAIP,EAAGO,GAAKC,EAAGD,IACzBF,GAAK7B,EAAE+B,CAAC,EAAI,EAAE,IAAIA,EAAG,CAAC,EACxB,IAAKF,EAAIA,EAAIC,EAAGC,EAAIC,EAAGD,GAAKP,EAAGO,IAC7B,EAAE,IAAIA,EAAG,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAIF,EAAI7B,EAAE+B,CAAC,CAAC,CACrC,CACD,IAAKA,EAAI,EAAGA,GAAKP,EAAGO,IAAK,CACvB,IAAKF,EAAI,EAAG,EAAIL,EAAG,GAAKQ,EAAG,IACzBH,GAAK7B,EAAE,CAAC,EAAI,EAAE,IAAI+B,EAAG,CAAC,EACxB,IAAKF,EAAIA,EAAIC,EAAG,EAAIE,EAAG,GAAKR,EAAG,IAC7B,EAAE,IAAIO,EAAG,EAAG,EAAE,IAAIA,EAAG,CAAC,EAAIF,EAAI7B,EAAE,CAAC,CAAC,CACrC,CACDA,EAAEgC,CAAC,EAAIC,EAAIjC,EAAEgC,CAAC,EAAG,EAAE,IAAIA,EAAGA,EAAI,EAAGC,EAAI,CAAC,CACvC,CACF,CACD,IAAKF,EAAI,EAAGA,EAAIhC,EAAGgC,IACjB,IAAK,EAAI,EAAG,EAAIhC,EAAG,IACjBE,EAAE,IAAI8B,EAAG,EAAGA,IAAM,EAAI,EAAI,CAAC,EAC/B,IAAKC,EAAIR,EAAI,EAAGQ,GAAK7B,EAAI,EAAG6B,IAC1B,GAAI,EAAE,IAAIA,EAAGA,EAAI,CAAC,IAAM,EAAG,CACzB,IAAKD,EAAIC,EAAI,EAAGD,GAAKP,EAAGO,IACtB/B,EAAE+B,CAAC,EAAI,EAAE,IAAIA,EAAGC,EAAI,CAAC,EACvB,IAAK,EAAIA,EAAG,GAAKR,EAAG,IAAK,CACvB,IAAK,EAAI,EAAGO,EAAIC,EAAGD,GAAKP,EAAGO,IACzB,GAAK/B,EAAE+B,CAAC,EAAI9B,EAAE,IAAI8B,EAAG,CAAC,EACxB,IAAK,EAAI,EAAI/B,EAAEgC,CAAC,EAAI,EAAE,IAAIA,EAAGA,EAAI,CAAC,EAAGD,EAAIC,EAAGD,GAAKP,EAAGO,IAClD9B,EAAE,IAAI8B,EAAG,EAAG9B,EAAE,IAAI8B,EAAG,CAAC,EAAI,EAAI/B,EAAE+B,CAAC,CAAC,CACrC,CACF,CACL,CACA,SAASqH,GAAGrJ,EAAG,EAAGC,EAAGC,EAAGE,EAAG,CACzB,IAAIqB,EAAIzB,EAAI,EAAG8B,EAAI,EAAG,EAAI9B,EAAI,EAAG+B,EAAI,OAAO,QAASC,EAAI,EAAG,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAG,EAAI,EAAGC,EAAI,EAAG,EAAGC,EAAG,EAAG4B,EAAGC,EAAGC,EAAG,EAAGC,EAAGC,EAAGC,EAAG4C,EAAGC,EAAGC,GAAGC,GAAGC,EACvJ,IAAK,EAAI,EAAG,EAAIvH,EAAG,IACjB,KAAM,EAAI8B,GAAK,EAAI,KAAO7B,EAAE,CAAC,EAAIG,EAAE,IAAI,EAAG,CAAC,EAAG,EAAE,CAAC,EAAI,GAAIkC,EAAI,KAAK,IAAI,EAAI,EAAG,CAAC,EAAGA,EAAItC,EAAGsC,IACtF,EAAI,EAAI,KAAK,IAAIlC,EAAE,IAAI,EAAGkC,CAAC,CAAC,EAChC,KAAOb,GAAKK,GAAK,CACf,IAAKoC,EAAIzC,EAAGyC,EAAIpC,IAAMM,EAAI,KAAK,IAAIhC,EAAE,IAAI8D,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAI9D,EAAE,IAAI8D,EAAGA,CAAC,CAAC,EAAG9B,IAAM,IAAMA,EAAI,GAAI,EAAE,KAAK,IAAIhC,EAAE,IAAI8D,EAAGA,EAAI,CAAC,CAAC,EAAInC,EAAIK,KACrI8B,IACF,GAAIA,IAAMzC,EACRrB,EAAE,IAAIqB,EAAGA,EAAGrB,EAAE,IAAIqB,EAAGA,CAAC,EAAIO,CAAC,EAAG/B,EAAEwB,CAAC,EAAIrB,EAAE,IAAIqB,EAAGA,CAAC,EAAG,EAAEA,CAAC,EAAI,EAAGA,IAAKY,EAAI,UAC9D6B,IAAMzC,EAAI,EAAG,CACpB,GAAI,EAAIrB,EAAE,IAAIqB,EAAGA,EAAI,CAAC,EAAIrB,EAAE,IAAIqB,EAAI,EAAGA,CAAC,EAAGQ,GAAK7B,EAAE,IAAIqB,EAAI,EAAGA,EAAI,CAAC,EAAIrB,EAAE,IAAIqB,EAAGA,CAAC,GAAK,EAAGS,EAAID,EAAIA,EAAI,EAAG,EAAI,KAAK,KAAK,KAAK,IAAIC,CAAC,CAAC,EAAG9B,EAAE,IAAIqB,EAAGA,EAAGrB,EAAE,IAAIqB,EAAGA,CAAC,EAAIO,CAAC,EAAG5B,EAAE,IAAIqB,EAAI,EAAGA,EAAI,EAAGrB,EAAE,IAAIqB,EAAI,EAAGA,EAAI,CAAC,EAAIO,CAAC,EAAGqC,EAAIjE,EAAE,IAAIqB,EAAGA,CAAC,EAAGS,GAAK,EAAG,CACtO,IAAK,EAAID,GAAK,EAAIA,EAAI,EAAIA,EAAI,EAAGhC,EAAEwB,EAAI,CAAC,EAAI4C,EAAI,EAAGpE,EAAEwB,CAAC,EAAIxB,EAAEwB,EAAI,CAAC,EAAG,IAAM,IAAMxB,EAAEwB,CAAC,EAAI4C,EAAI,EAAI,GAAI,EAAE5C,EAAI,CAAC,EAAI,EAAG,EAAEA,CAAC,EAAI,EAAG4C,EAAIjE,EAAE,IAAIqB,EAAGA,EAAI,CAAC,EAAGW,EAAI,KAAK,IAAIiC,CAAC,EAAI,KAAK,IAAI,CAAC,EAAGpC,EAAIoC,EAAIjC,EAAGF,EAAI,EAAIE,EAAGD,EAAI,KAAK,KAAKF,EAAIA,EAAIC,EAAIA,CAAC,EAAGD,EAAIA,EAAIE,EAAGD,EAAIA,EAAIC,EAAGG,EAAIb,EAAI,EAAGa,EAAItC,EAAGsC,IACzQ,EAAIlC,EAAE,IAAIqB,EAAI,EAAGa,CAAC,EAAGlC,EAAE,IAAIqB,EAAI,EAAGa,EAAGJ,EAAI,EAAID,EAAI7B,EAAE,IAAIqB,EAAGa,CAAC,CAAC,EAAGlC,EAAE,IAAIqB,EAAGa,EAAGJ,EAAI9B,EAAE,IAAIqB,EAAGa,CAAC,EAAIL,EAAI,CAAC,EACpG,IAAK,EAAI,EAAG,GAAKR,EAAG,IAClB,EAAIrB,EAAE,IAAI,EAAGqB,EAAI,CAAC,EAAGrB,EAAE,IAAI,EAAGqB,EAAI,EAAGS,EAAI,EAAID,EAAI7B,EAAE,IAAI,EAAGqB,CAAC,CAAC,EAAGrB,EAAE,IAAI,EAAGqB,EAAGS,EAAI9B,EAAE,IAAI,EAAGqB,CAAC,EAAIQ,EAAI,CAAC,EACpG,IAAK,EAAIH,EAAG,GAAK,EAAG,IAClB,EAAI5B,EAAE,IAAI,EAAGuB,EAAI,CAAC,EAAGvB,EAAE,IAAI,EAAGuB,EAAI,EAAGS,EAAI,EAAID,EAAI/B,EAAE,IAAI,EAAGuB,CAAC,CAAC,EAAGvB,EAAE,IAAI,EAAGuB,EAAGS,EAAIhC,EAAE,IAAI,EAAGuB,CAAC,EAAIQ,EAAI,CAAC,CACrG,MACChC,EAAEwB,EAAI,CAAC,EAAI4C,EAAIpC,EAAGhC,EAAEwB,CAAC,EAAI4C,EAAIpC,EAAG,EAAER,EAAI,CAAC,EAAI,EAAG,EAAEA,CAAC,EAAI,CAAC,EACxDA,EAAIA,EAAI,EAAGY,EAAI,CACrB,KAAW,CACL,GAAIgC,EAAIjE,EAAE,IAAIqB,EAAGA,CAAC,EAAG6C,EAAI,EAAG,EAAI,EAAGJ,EAAIzC,IAAM6C,EAAIlE,EAAE,IAAIqB,EAAI,EAAGA,EAAI,CAAC,EAAG,EAAIrB,EAAE,IAAIqB,EAAGA,EAAI,CAAC,EAAIrB,EAAE,IAAIqB,EAAI,EAAGA,CAAC,GAAIY,IAAM,GAAI,CACtH,IAAKL,GAAKqC,EAAG,EAAIvC,EAAG,GAAKL,EAAG,IAC1BrB,EAAE,IAAI,EAAG,EAAGA,EAAE,IAAI,EAAG,CAAC,EAAIiE,CAAC,EAC7BjC,EAAI,KAAK,IAAIhC,EAAE,IAAIqB,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAIrB,EAAE,IAAIqB,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAG4C,EAAIC,EAAI,IAAOlC,EAAG,EAAI,OAAUA,EAAIA,CACpG,CACD,GAAIC,IAAM,KAAOD,GAAKkC,EAAID,GAAK,EAAGjC,EAAIA,EAAIA,EAAI,EAAGA,EAAI,GAAI,CACvD,IAAKA,EAAI,KAAK,KAAKA,CAAC,EAAGkC,EAAID,IAAMjC,EAAI,CAACA,GAAIA,EAAIiC,EAAI,IAAMC,EAAID,GAAK,EAAIjC,GAAI,EAAIN,EAAG,GAAKL,EAAG,IACtFrB,EAAE,IAAI,EAAG,EAAGA,EAAE,IAAI,EAAG,CAAC,EAAIgC,CAAC,EAC7BJ,GAAKI,EAAGiC,EAAIC,EAAI,EAAI,IACrB,CACD,IAAKjC,EAAIA,EAAI,EAAG8B,EAAI1C,EAAI,EAAG0C,GAAKD,IAAM,EAAI9D,EAAE,IAAI+D,EAAGA,CAAC,EAAGhC,EAAIkC,EAAI,EAAGjC,EAAIkC,EAAI,EAAGrC,GAAKE,EAAIC,EAAI,GAAKhC,EAAE,IAAI+D,EAAI,EAAGA,CAAC,EAAI/D,EAAE,IAAI+D,EAAGA,EAAI,CAAC,EAAGjC,EAAI9B,EAAE,IAAI+D,EAAI,EAAGA,EAAI,CAAC,EAAI,EAAIhC,EAAIC,EAAGD,EAAI/B,EAAE,IAAI+D,EAAI,EAAGA,EAAI,CAAC,EAAG/B,EAAI,KAAK,IAAIH,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAGF,EAAIA,EAAIG,EAAGF,EAAIA,EAAIE,EAAGD,EAAIA,EAAIC,EAAG,EAAE+B,IAAMD,GAAK,KAAK,IAAI9D,EAAE,IAAI+D,EAAGA,EAAI,CAAC,CAAC,GAAK,KAAK,IAAIjC,CAAC,EAAI,KAAK,IAAIC,CAAC,GAAKJ,GAAK,KAAK,IAAIE,CAAC,GAAK,KAAK,IAAI7B,EAAE,IAAI+D,EAAI,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAI/D,EAAE,IAAI+D,EAAI,EAAGA,EAAI,CAAC,CAAC,OACjbA,IACF,IAAK,EAAIA,EAAI,EAAG,GAAK1C,EAAG,IACtBrB,EAAE,IAAI,EAAG,EAAI,EAAG,CAAC,EAAG,EAAI+D,EAAI,GAAK/D,EAAE,IAAI,EAAG,EAAI,EAAG,CAAC,EACpD,IAAK,EAAI+D,EAAG,GAAK1C,EAAI,IAAM6F,GAAI,IAAM7F,EAAI,EAAG,IAAM0C,IAAMlC,EAAI7B,EAAE,IAAI,EAAG,EAAI,CAAC,EAAG8B,EAAI9B,EAAE,IAAI,EAAI,EAAG,EAAI,CAAC,EAAG+B,EAAImF,GAAIlH,EAAE,IAAI,EAAI,EAAG,EAAI,CAAC,EAAI,EAAGiE,EAAI,KAAK,IAAIpC,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAGkC,IAAM,IAAMpC,EAAIA,EAAIoC,EAAGnC,EAAIA,EAAImC,EAAGlC,EAAIA,EAAIkC,IAAKA,IAAM,GAAI,IAC3O,GAAIjC,EAAI,KAAK,KAAKH,EAAIA,EAAIC,EAAIA,EAAIC,EAAIA,CAAC,EAAGF,EAAI,IAAMG,EAAI,CAACA,GAAIA,IAAM,EAAG,CACpE,IAAK,IAAM+B,EAAI/D,EAAE,IAAI,EAAG,EAAI,EAAG,CAACgC,EAAIiC,CAAC,EAAIH,IAAMC,GAAK/D,EAAE,IAAI,EAAG,EAAI,EAAG,CAACA,EAAE,IAAI,EAAG,EAAI,CAAC,CAAC,EAAG6B,EAAIA,EAAIG,EAAGiC,EAAIpC,EAAIG,EAAGkC,EAAIpC,EAAIE,EAAG,EAAID,EAAIC,EAAGF,EAAIA,EAAID,EAAGE,EAAIA,EAAIF,EAAGK,EAAI,EAAGA,EAAItC,EAAGsC,IACrKL,EAAI7B,EAAE,IAAI,EAAGkC,CAAC,EAAIJ,EAAI9B,EAAE,IAAI,EAAI,EAAGkC,CAAC,EAAGgF,KAAMrF,EAAIA,EAAIE,EAAI/B,EAAE,IAAI,EAAI,EAAGkC,CAAC,EAAGlC,EAAE,IAAI,EAAI,EAAGkC,EAAGlC,EAAE,IAAI,EAAI,EAAGkC,CAAC,EAAIL,EAAI,CAAC,GAAI7B,EAAE,IAAI,EAAGkC,EAAGlC,EAAE,IAAI,EAAGkC,CAAC,EAAIL,EAAIoC,CAAC,EAAGjE,EAAE,IAAI,EAAI,EAAGkC,EAAGlC,EAAE,IAAI,EAAI,EAAGkC,CAAC,EAAIL,EAAIqC,CAAC,EAChM,IAAK,EAAI,EAAG,GAAK,KAAK,IAAI7C,EAAG,EAAI,CAAC,EAAG,IACnCQ,EAAIoC,EAAIjE,EAAE,IAAI,EAAG,CAAC,EAAIkE,EAAIlE,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGkH,KAAMrF,EAAIA,EAAI,EAAI7B,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGA,EAAE,IAAI,EAAG,EAAI,EAAGA,EAAE,IAAI,EAAG,EAAI,CAAC,EAAI6B,EAAIE,CAAC,GAAI/B,EAAE,IAAI,EAAG,EAAGA,EAAE,IAAI,EAAG,CAAC,EAAI6B,CAAC,EAAG7B,EAAE,IAAI,EAAG,EAAI,EAAGA,EAAE,IAAI,EAAG,EAAI,CAAC,EAAI6B,EAAIC,CAAC,EAChM,IAAK,EAAIJ,EAAG,GAAK,EAAG,IAClBG,EAAIoC,EAAInE,EAAE,IAAI,EAAG,CAAC,EAAIoE,EAAIpE,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGoH,KAAMrF,EAAIA,EAAI,EAAI/B,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGA,EAAE,IAAI,EAAG,EAAI,EAAGA,EAAE,IAAI,EAAG,EAAI,CAAC,EAAI+B,EAAIE,CAAC,GAAIjC,EAAE,IAAI,EAAG,EAAGA,EAAE,IAAI,EAAG,CAAC,EAAI+B,CAAC,EAAG/B,EAAE,IAAI,EAAG,EAAI,EAAGA,EAAE,IAAI,EAAG,EAAI,CAAC,EAAI+B,EAAIC,CAAC,CACjM,CACJ,CACF,CACD,GAAI,IAAM,EAAG,CACX,IAAKT,EAAIzB,EAAI,EAAGyB,GAAK,EAAGA,IACtB,GAAIQ,EAAIhC,EAAEwB,CAAC,EAAGS,EAAI,EAAET,CAAC,EAAGS,IAAM,EAC5B,IAAKgC,EAAIzC,EAAGrB,EAAE,IAAIqB,EAAGA,EAAG,CAAC,EAAG,EAAIA,EAAI,EAAG,GAAK,EAAG,IAAK,CAClD,IAAK,EAAIrB,EAAE,IAAI,EAAG,CAAC,EAAI6B,EAAGE,EAAI,EAAGG,EAAI4B,EAAG5B,GAAKb,EAAGa,IAC9CH,EAAIA,EAAI/B,EAAE,IAAI,EAAGkC,CAAC,EAAIlC,EAAE,IAAIkC,EAAGb,CAAC,EAClC,GAAI,EAAE,CAAC,EAAI,EACT,EAAI,EAAGW,EAAID,UACJ+B,EAAI,EAAG,EAAE,CAAC,IAAM,EAAI9D,EAAE,IAAI,EAAGqB,EAAG,IAAM,EAAI,CAACU,EAAI,EAAI,CAACA,GAAKJ,EAAI,EAAE,GAAKsC,EAAIjE,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGkE,EAAIlE,EAAE,IAAI,EAAI,EAAG,CAAC,EAAG8B,GAAKjC,EAAE,CAAC,EAAIgC,IAAMhC,EAAE,CAAC,EAAIgC,GAAK,EAAE,CAAC,EAAI,EAAE,CAAC,EAAGmC,GAAKC,EAAIjC,EAAI,EAAID,GAAKD,EAAG9B,EAAE,IAAI,EAAGqB,EAAG2C,CAAC,EAAGhE,EAAE,IAC3M,EAAI,EACJqB,EACA,KAAK,IAAI4C,CAAC,EAAI,KAAK,IAAI,CAAC,GAAK,CAAClC,EAAI,EAAIiC,GAAKC,GAAK,CAACjC,EAAIkC,EAAIF,GAAK,CAC/D,GAAGA,EAAI,KAAK,IAAIhE,EAAE,IAAI,EAAGqB,CAAC,CAAC,EAAGM,EAAIqC,EAAIA,EAAI,EACzC,IAAK9B,EAAI,EAAGA,GAAKb,EAAGa,IAClBlC,EAAE,IAAIkC,EAAGb,EAAGrB,EAAE,IAAIkC,EAAGb,CAAC,EAAI2C,CAAC,CAChC,SACMlC,EAAI,EACX,IAAKgC,EAAIzC,EAAI,EAAG,KAAK,IAAIrB,EAAE,IAAIqB,EAAGA,EAAI,CAAC,CAAC,EAAI,KAAK,IAAIrB,EAAE,IAAIqB,EAAI,EAAGA,CAAC,CAAC,GAAKrB,EAAE,IAAIqB,EAAI,EAAGA,EAAI,EAAGS,EAAI9B,EAAE,IAAIqB,EAAGA,EAAI,CAAC,CAAC,EAAGrB,EAAE,IAAIqB,EAAI,EAAGA,EAAG,EAAErB,EAAE,IAAIqB,EAAGA,CAAC,EAAIQ,GAAK7B,EAAE,IAAIqB,EAAGA,EAAI,CAAC,CAAC,IAAM8F,EAAI+B,GAAG,EAAG,CAAClJ,EAAE,IAAIqB,EAAI,EAAGA,CAAC,EAAGrB,EAAE,IAAIqB,EAAI,EAAGA,EAAI,CAAC,EAAIQ,EAAGC,CAAC,EAAG9B,EAAE,IAAIqB,EAAI,EAAGA,EAAI,EAAG8F,EAAE,CAAC,CAAC,EAAGnH,EAAE,IAAIqB,EAAI,EAAGA,EAAG8F,EAAE,CAAC,CAAC,GAAInH,EAAE,IAAIqB,EAAGA,EAAI,EAAG,CAAC,EAAGrB,EAAE,IAAIqB,EAAGA,EAAG,CAAC,EAAG,EAAIA,EAAI,EAAG,GAAK,EAAG,IAAK,CACnV,IAAK8C,EAAI,EAAG4C,EAAI,EAAG7E,EAAI4B,EAAG5B,GAAKb,EAAGa,IAChCiC,EAAIA,EAAInE,EAAE,IAAI,EAAGkC,CAAC,EAAIlC,EAAE,IAAIkC,EAAGb,EAAI,CAAC,EAAG0F,EAAIA,EAAI/G,EAAE,IAAI,EAAGkC,CAAC,EAAIlC,EAAE,IAAIkC,EAAGb,CAAC,EACzE,GAAI,EAAIrB,EAAE,IAAI,EAAG,CAAC,EAAI6B,EAAG,EAAE,CAAC,EAAI,EAC9B,EAAI,EAAGE,EAAIoC,EAAGnC,EAAI+E,UACXjD,EAAI,EAAG,EAAE,CAAC,IAAM,GAAKqD,EAAI+B,GAAG,CAAC/E,EAAG,CAAC4C,EAAG,EAAGjF,CAAC,EAAG9B,EAAE,IAAI,EAAGqB,EAAI,EAAG8F,EAAE,CAAC,CAAC,EAAGnH,EAAE,IAAI,EAAGqB,EAAG8F,EAAE,CAAC,CAAC,IAAMlD,EAAIjE,EAAE,IAAI,EAAG,EAAI,CAAC,EAAGkE,EAAIlE,EAAE,IAAI,EAAI,EAAG,CAAC,EAAGgH,GAAKnH,EAAE,CAAC,EAAIgC,IAAMhC,EAAE,CAAC,EAAIgC,GAAK,EAAE,CAAC,EAAI,EAAE,CAAC,EAAIC,EAAIA,EAAGmF,IAAKpH,EAAE,CAAC,EAAIgC,GAAK,EAAIC,EAAGkF,IAAM,GAAKC,KAAM,IAAMD,EAAIrF,EAAI,GAAK,KAAK,IAAI,CAAC,EAAI,KAAK,IAAIG,CAAC,EAAI,KAAK,IAAImC,CAAC,EAAI,KAAK,IAAIC,CAAC,EAAI,KAAK,IAAI,CAAC,IAAKiD,EAAI+B,GACnUjF,EAAIlC,EAAI,EAAIoC,EAAIrC,EAAIiF,EACpB9C,EAAIjC,EAAI,EAAI+E,EAAIjF,EAAIqC,EACpB6C,EACAC,EACD,EAAEjH,EAAE,IAAI,EAAGqB,EAAI,EAAG8F,EAAE,CAAC,CAAC,EAAGnH,EAAE,IAAI,EAAGqB,EAAG8F,EAAE,CAAC,CAAC,EAAG,KAAK,IAAIlD,CAAC,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAInC,CAAC,GAAK9B,EAAE,IACxF,EAAI,EACJqB,EAAI,GACH,CAAC8C,EAAI,EAAInE,EAAE,IAAI,EAAGqB,EAAI,CAAC,EAAIS,EAAI9B,EAAE,IAAI,EAAGqB,CAAC,GAAK4C,CAChD,EAAEjE,EAAE,IACH,EAAI,EACJqB,GACC,CAAC0F,EAAI,EAAI/G,EAAE,IAAI,EAAGqB,CAAC,EAAIS,EAAI9B,EAAE,IAAI,EAAGqB,EAAI,CAAC,GAAK4C,CAChD,IAAKkD,EAAI+B,GACR,CAACnH,EAAImC,EAAIlE,EAAE,IAAI,EAAGqB,EAAI,CAAC,EACvB,CAACW,EAAIkC,EAAIlE,EAAE,IAAI,EAAGqB,CAAC,EACnB,EACAS,CACZ,EAAa9B,EAAE,IAAI,EAAI,EAAGqB,EAAI,EAAG8F,EAAE,CAAC,CAAC,EAAGnH,EAAE,IAAI,EAAI,EAAGqB,EAAG8F,EAAE,CAAC,CAAC,IAAKnD,EAAI,KAAK,IAAI,KAAK,IAAIhE,EAAE,IAAI,EAAGqB,EAAI,CAAC,CAAC,EAAG,KAAK,IAAIrB,EAAE,IAAI,EAAGqB,CAAC,CAAC,CAAC,EAAGM,EAAIqC,EAAIA,EAAI,EACjI,IAAK9B,EAAI,EAAGA,GAAKb,EAAGa,IAClBlC,EAAE,IAAIkC,EAAGb,EAAI,EAAGrB,EAAE,IAAIkC,EAAGb,EAAI,CAAC,EAAI2C,CAAC,EAAGhE,EAAE,IAAIkC,EAAGb,EAAGrB,EAAE,IAAIkC,EAAGb,CAAC,EAAI2C,CAAC,CACtE,CACL,IAAK,EAAI,EAAG,EAAIpE,EAAG,IACjB,GAAI,EAAI8B,GAAK,EAAI,EACf,IAAKQ,EAAI,EAAGA,EAAItC,EAAGsC,IACjBpC,EAAE,IAAI,EAAGoC,EAAGlC,EAAE,IAAI,EAAGkC,CAAC,CAAC,EAC7B,IAAKA,EAAItC,EAAI,EAAGsC,GAAKR,EAAGQ,IACtB,IAAK,EAAIR,EAAG,GAAK,EAAG,IAAK,CACvB,IAAK,EAAI,EAAG,EAAIA,EAAG,GAAK,KAAK,IAAIQ,EAAG,CAAC,EAAG,IACtC,EAAI,EAAIpC,EAAE,IAAI,EAAG,CAAC,EAAIE,EAAE,IAAI,EAAGkC,CAAC,EAClCpC,EAAE,IAAI,EAAGoC,EAAG,CAAC,CACd,CACJ,CACH,CACA,SAASgH,GAAGtJ,EAAG,EAAGC,EAAGC,EAAG,CACtB,IAAIE,EAAGqB,EACP,OAAO,KAAK,IAAIxB,CAAC,EAAI,KAAK,IAAIC,CAAC,GAAKE,EAAIF,EAAID,EAAGwB,EAAIxB,EAAIG,EAAIF,EAAG,EAAEF,EAAII,EAAI,GAAKqB,GAAI,EAAIrB,EAAIJ,GAAKyB,CAAC,IAAMrB,EAAIH,EAAIC,EAAGuB,EAAIvB,EAAIE,EAAIH,EAAG,EAAEG,EAAIJ,EAAI,GAAKyB,GAAIrB,EAAI,EAAIJ,GAAKyB,CAAC,EAClK,CACA,SAAS8H,GAAGvJ,EAAG,EAAI,KAAM,CACvB,GAAIA,EAAEA,EAAE,OAAS,CAAC,GAAK,EACrB,OAAOuJ,GAAGvJ,EAAE,MAAM,EAAG,EAAE,EAAG,CAAC,EAC7B,MAAMC,EAAI,IAAIiH,EAAE,CACdlH,EAAE,MAAM,EAAG,EAAE,EAAE,QAAO,EAAG,IAAKI,GAAM,CAACA,EAAIJ,EAAEA,EAAE,OAAS,CAAC,CAAC,EACxD,GAAG,MAAM,KAAK,CAAE,OAAQA,EAAE,OAAS,CAAG,EAAE,CAACI,EAAGqB,IAAM,CAChD,MAAMK,EAAI,IAAI,MAAM9B,EAAE,OAAS,CAAC,EAAE,KAAK,CAAC,EACxC,OAAO8B,EAAEL,CAAC,EAAI,EAAGK,CACvB,CAAK,CACF,CAAA,EAAG5B,EAAI,IAAI+I,GAAGhJ,CAAC,EAChB,OAAOC,EAAE,gBAAgB,OACvB,CAACE,EAAGqB,IAAM,KAAK,IAAIvB,EAAE,qBAAqBuB,CAAC,CAAC,EAAI,CACpD,CACA,CACA,SAAS+H,GAAGxJ,EAAG,EAAG,CAChB,MAAMC,EAAI,KAAK,IAAID,EAAE,UAAW,EAAE,SAAS,EAAGE,EAAIF,EAAE,aAAcI,EAAIF,EAAE,GAAIuB,EAAIvB,EAAE,GAAI4B,EAAI5B,EAAE,GAAI,EAAIA,EAAE,EAAG6B,EAAI7B,EAAE,EAAG8B,EAAI9B,EAAE,EAAG,EAAI,EAAE,aAAc+B,EAAI,EAAE,GAAIC,EAAI,EAAE,GAAIC,EAAI,EAAE,GAAIC,EAAI,EAAE,EAAG,EAAI,EAAE,EAAGC,EAAI,EAAE,EAAG,EAAI,CAC1M,GAAIL,EAAI5B,EAAIgC,EAAIA,EAAIhC,EAAIA,EAAIiC,EAAIA,EAAI,EAAIjC,EAAIgC,EAAIC,EAAIJ,EAAIA,EAAID,EAAIA,EAAI,EAAI5B,EAAIiC,EAAIJ,EAAID,EAAI,EAAII,EAAIH,EAAID,EAAIC,EAAI,EAAI,EAAII,EACpH,GAAI,EAAI,EAAI,EAAIJ,EAAII,EAAID,EAAIhC,EAAIqB,EAAI,EAAIrB,EAAIiC,EAAIJ,EAAIF,EAAIC,EAAIC,EAAIC,EAAI,EAAI,EAAIE,EAAIF,EAAI9B,EAAI4B,EAAI,EAAI,EAAIK,EAAIjC,EAAIA,EAAIgC,EAAIA,EAAIhC,EAAI2B,EAAI,EAAIK,EAAIhC,EAAI,EAAI,EAAIA,EAAI,EAAI6B,EAAID,EAAIA,EAAIC,EAAIG,EAAIX,EAAI,EAAIO,EAAID,EAAIE,EAAIA,EAAII,EAAIH,EAAI9B,EAAI,EAAI2B,EAAIE,EAAIG,EAAI,EAAI,EAAIC,EAAIZ,EAAIQ,EAAI,EACxP,GAAI,EAAI,EAAI7B,EAAIA,EAAI,EAAI+B,EAAIE,EAAIjC,EAAIA,EAAI2B,EAAIE,EAAIG,EAAIX,EAAIY,EAAIJ,EAAIR,EAAIA,EAAIM,EAAIE,EAAIC,EAAI,EAAIG,EAAIH,EAAI9B,EAAIqB,EAAI,EAAIrB,EAAI,EAAI6B,EAAIF,EAAI,EAAIK,EAAIF,EAAI9B,EAAI2B,EAAII,EAAIC,EAAIhC,EAAI,EAAI,EAAIA,EAAI+B,EAAIF,EAAID,EAAIE,EAAIA,EAAI9B,EAAI4B,EAAI,EAAI,EAAIP,EAAIQ,EAAI,EAAIF,EAAIA,EAAIE,EAAIA,EAAIH,EAAIG,EAAIG,EAAI,EAAI,EAAIF,EAAI9B,EAAI,EAAI,EAAI4B,EAAIF,EAAIG,EAAIA,EAAID,EAAIC,EAAIC,EAAIT,EAAIU,EAAI,EAAI,EAAIF,EAAIG,EAAIA,EAAIhC,EAAI0B,EAAI,EAAIM,EAAIhC,EAAIqB,EAAI,EAAIrB,EAAIiC,EAAIJ,EAAIH,EAC5W,GAAI,GAAK1B,EAAI6B,EAAIH,EAAI,EAAI,EAAIG,EAAIR,EAAIA,EAAI,EAAIU,EAAIV,EAAIQ,EAAI,EAAIH,EAAIG,EAAIC,EAAI,EAAIA,EAAIA,EAAI9B,EAAI2B,EAAI,EAAIG,EAAI9B,EAAIqB,EAAI,EAAIrB,EAAI+B,EAAIF,EAAIF,EAAIA,EAAIE,EAAIC,EAAIT,EAAIU,EAAID,EAAI9B,EAAI,EAAI,EAAI,EAAI+B,EAAI/B,EAAIA,EAAI,EAAI2B,EAAID,EAAIG,EAAIA,EAAIH,EAAIG,EAAIG,EAAIX,EAAI,EAAIW,EAAIF,EAAI9B,EAAI0B,EAAIK,EAAIC,EAAIhC,EAAIqB,EACzP,GAAIrB,EAAIA,EAAI+B,EAAIA,EAAI,EAAI/B,EAAI+B,EAAIF,EAAIH,EAAIG,EAAIA,EAAIH,EAAIA,EAAIL,EAAIrB,EAAI8B,EAAIC,EAAIV,EAAIS,EAAID,EAAIH,EAAIL,EAAIA,EAAIQ,EAAIE,EAAIL,EAAI1B,EAAI8B,EAAIA,CACrH,EAAEuH,EAAIF,GACL,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,GAAI,EAAE,EAAE,EAC7BtJ,CACJ,EAAI,QAASiE,GAAM,CACf,MAAMC,EAAI/D,EAAI8B,EAAIgC,EAAI9D,EAAIgC,EAAIH,EAAIR,EAAIyC,EAAIjC,EAAI,EAC9C,GAAIkC,EACF,MAAO,CAAC,CAAC,EAAE/D,EAAIiC,EAAIjC,EAAI+B,EAAI+B,EAAIA,EAAIjC,EAAIH,EAAIoC,EAAIA,EAAI9D,EAAI,EAAI8D,EAAIjC,EAAIF,EAAImC,EAAIjC,EAAID,GAAKmC,EAAGD,CAAC,CAAC,EAC3F,MAAME,EAAI3C,EAAIyC,EAAI,EAAGwF,EAAI,CAACtF,GAAK,EAAIhE,GAAIiE,EAAIvC,EAAIoC,EAAIA,EAAInC,EAAImC,EAAIlC,EAAGsC,EAAIF,EAAIA,GAAK,EAAIhE,EAAIA,GAAKiE,EAAIjE,EAChG,GAAI,KAAK,IAAIkE,CAAC,EAAIrE,EAChB,MAAO,CAAC,CAACyJ,EAAGxF,CAAC,CAAC,EAChB,GAAII,EAAI,EAAG,CACT,MAAMC,EAAI,KAAK,KAAKD,CAAC,EACrB,MAAO,CAAC,CAACoF,EAAInF,EAAGL,CAAC,EAAG,CAACwF,EAAInF,EAAGL,CAAC,CAAC,CAC/B,CACD,MAAO,EACX,CAAG,EACD,OAAO3D,GAAGkJ,EAAGxJ,CAAC,CAChB,CACA,SAAS0J,GAAG3J,EAAG,EAAG,CAChB,OAAOwJ,GAAGxJ,EAAG,CAAC,EAAE,OAAQ,GAAMA,EAAE,YAAY,CAAC,GAAK,EAAE,YAAY,CAAC,CAAC,CACpE,CACA,MAAM4J,GAAM5J,GAAM,CAChB,KAAM,CACJ,WAAY,EACZ,UAAWC,EACX,OAAQC,EACR,YAAaE,EACb,YAAaqB,EACb,UAAWK,EACX,UAAW,CACZ,EAAG9B,EACJ,OAAO,IAAI8D,EACT7D,EACA,EACAC,EACAE,EACAqB,EACAK,EACA,EACA,CACE,aAAc,GACd,WAAY,KACb,CACL,CACA,EAAG+H,GAAK,CAAC7J,EAAG,IAAM,CAChB,GAAIA,EAAE,OAAO,CAAC,EACZ,MAAO,CAACA,CAAC,EACX,MAAMC,EAAI,CAACG,EAAGqB,IAAM,IAAIqC,EACtB1D,EACAqB,EACAzB,EAAE,OACFA,EAAE,YACFA,EAAE,YACFA,EAAE,UACFA,EAAE,UACF,CAAE,aAAc,GAAI,WAAY,KAAO,CACxC,EAAEE,EAAIK,GACL,CACE,EAAE,YAAYP,EAAE,UAAU,EAAIA,EAAE,WAAa,KAC7C,EAAE,YAAYA,EAAE,SAAS,EAAIA,EAAE,UAAY,KAC3CA,EAAE,YAAY,EAAE,UAAU,EAAI,EAAE,WAAa,KAC7CA,EAAE,YAAY,EAAE,SAAS,EAAI,EAAE,UAAY,IAC5C,EAAC,OAAQI,GAAMA,IAAM,IAAI,CAG3B,EAAC,KAAK,CAACA,EAAGqB,IAAMzB,EAAE,aAAaI,CAAC,EAAIJ,EAAE,aAAayB,CAAC,CAAC,EACtD,GAAIvB,EAAE,SAAW,EACf,MAAO,GACT,GAAIA,EAAE,SAAW,EACf,MAAO,GACT,GAAIA,EAAE,SAAW,EACf,OAAOF,EAAE,OAAO4J,GAAG,CAAC,CAAC,EAAI,CAAE,EAAG,CAAC3J,EAAEC,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,EAC9C,GAAIA,EAAE,SAAW,EAAG,CAClB,MAAME,EAAIO,EAAET,EAAE,CAAC,EAAG,EAAE,SAAS,GAAKS,EAAET,EAAE,CAAC,EAAG,EAAE,UAAU,EAAI,EAAI,EAC9D,MAAO,CAACD,EAAEC,EAAE,EAAIE,CAAC,EAAGF,EAAE,EAAIE,CAAC,CAAC,CAAC,CACjC,SAAaF,EAAE,SAAW,EACtB,MAAO,CAACD,EAAEC,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAGD,EAAEC,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAAC,EACtC,MAAM,IAAI,MAAM,sDAAsD,CACxE,EACA,SAAS4J,GAAG9J,EAAG,EAAGC,EAAI,GAAI,CACxB,MAAMC,EAAI,KAAK,IAAIF,EAAE,UAAW,EAAE,SAAS,EAC3C,OAAOW,EAAEX,EAAE,OAAQ,EAAE,MAAM,GAAK,KAAK,IAAIA,EAAE,YAAc,EAAE,WAAW,EAAIE,GAAK,KAAK,IAAIF,EAAE,YAAc,EAAE,WAAW,EAAIE,IAAM,KAAK,IAAIF,EAAE,UAAY,EAAE,SAAS,EAAIE,GAAK,KAAK,IAAI,KAAK,IAAIF,EAAE,UAAY,EAAE,SAAS,EAAI,KAAK,EAAE,EAAIE,GAAKD,EAAI4J,GAAG7J,EAAG,CAAC,EAAI,CAAE,EAAGwJ,GAAGxJ,EAAG,CAAC,EAAE,OAAQ8B,GAAM9B,EAAE,YAAY8B,CAAC,GAAK,EAAE,YAAYA,CAAC,CAAC,CAC1T,CACA,SAASiI,GAAG/J,EAAG,EAAGC,EAAG,CACnB,GAAID,aAAa6C,GAAK,aAAaA,EAAG,CACpC,MAAM3C,EAAIiD,GACRnD,EACA,EACA,GACAC,CACN,EACI,OAAOC,IAAM,KAAO,GAAK,CAACA,CAAC,CAC5B,CACD,GAAIF,aAAa6C,GAAK,aAAaQ,EACjC,OAAOM,GAAG3D,EAAG,EAAGC,CAAC,EACnB,GAAID,aAAaqD,GAAK,aAAaR,EACjC,OAAOc,GAAG,EAAG3D,EAAGC,CAAC,EACnB,GAAID,aAAaqD,GAAK,aAAaA,EACjC,OAAO,GAAGrD,EAAG,EAAG,GAAIC,CAAC,EACvB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAAS+J,GAAGhK,EAAG,EAAGC,EAAG,CACnB,GAAID,aAAa6C,GAAK,aAAaA,EAAG,CACpC,MAAM3C,EAAIiD,GACRnD,EACA,EACA,GACAC,CACN,EACI,OAAOC,IAAM,KAAO,CAAE,cAAe,CAAE,EAAE,SAAU,GAAI,MAAO,CAAG,EAAGA,aAAa2C,EAAI,CAAE,cAAe,CAAA,EAAI,SAAU,CAAC3C,CAAC,EAAG,MAAO,CAAG,EAAG,CAAE,cAAe,CAACA,CAAC,EAAG,SAAU,CAAE,EAAE,MAAO,CAAC,CACnL,CACD,GAAI,CAACF,EAAE,YAAY,SAAS,EAAE,WAAW,EACvC,MAAO,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,GACnD,GAAIA,aAAa6C,GAAK,aAAaQ,EAAG,CACpC,MAAMnD,EAAIyD,GAAG3D,EAAG,EAAGC,CAAC,EACpB,MAAO,CAAE,cAAeC,EAAG,SAAU,CAAE,EAAE,MAAOA,EAAE,OACnD,CACD,GAAIF,aAAaqD,GAAK,aAAaR,EAAG,CACpC,MAAM3C,EAAIyD,GAAG,EAAG3D,EAAGC,CAAC,EACpB,MAAO,CAAE,cAAeC,EAAG,SAAU,CAAE,EAAE,MAAOA,EAAE,OACnD,CACD,GAAIF,aAAaqD,GAAK,aAAaA,EAAG,CACpC,MAAMnD,EAAI,GACRF,EACA,EACA,GACAC,CACN,EACI,OAAOC,EAAE,OAASA,EAAE,CAAC,YAAamD,EAAI,CACpC,cAAe,CAAE,EACjB,SAAUnD,EACV,MAAOA,EAAE,MACf,EAAQ,CACF,cAAeA,EACf,SAAU,CAAE,EACZ,MAAOA,EAAE,MACf,EAAQ,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,EAC/C,CACD,GAAIF,aAAa6C,GAAK,aAAaiB,EAAG,CACpC,MAAM5D,EAAIsE,GACRxE,EACA,EACAC,CACN,EACI,MAAO,CAAE,cAAeC,EAAG,SAAU,CAAE,EAAE,MAAOA,EAAE,OACnD,CACD,GAAI,aAAa2C,GAAK7C,aAAa8D,EAAG,CACpC,MAAM5D,EAAIsE,GACR,EACAxE,EACAC,CACN,EACI,MAAO,CAAE,cAAeC,EAAG,SAAU,CAAE,EAAE,MAAOA,EAAE,OACnD,CACD,GAAIF,aAAaqD,GAAK,aAAaS,EAAG,CACpC,MAAM5D,EAAIyJ,GAAG3J,EAAG,CAAC,EACjB,MAAO,CAAE,cAAeE,EAAG,SAAU,CAAE,EAAE,MAAOA,EAAE,OACnD,CACD,GAAI,aAAamD,GAAKrD,aAAa8D,EAAG,CACpC,MAAM5D,EAAIyJ,GAAG,EAAG3J,CAAC,EACjB,MAAO,CAAE,cAAeE,EAAG,SAAU,CAAE,EAAE,MAAOA,EAAE,OACnD,CACD,GAAIF,aAAa8D,GAAK,aAAaA,EAAG,CACpC,MAAM5D,EAAI4J,GACR9J,EACA,EACA,EACN,EACI,OAAOE,EAAE,OAASA,EAAE,CAAC,YAAa4D,EAAI,CACpC,cAAe,CAAE,EACjB,SAAU5D,EACV,MAAOA,EAAE,MACf,EAAQ,CACF,cAAeA,EACf,SAAU,CAAE,EACZ,MAAOA,EAAE,MACf,EAAQ,CAAE,cAAe,GAAI,SAAU,CAAA,EAAI,MAAO,EAC/C,CACD,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAAS+J,GAAGjK,EAAG,CACb,MAAM,EAAI,CAAA,EACV,QAASC,EAAI,EAAGA,EAAID,EAAGC,IACrB,QAASC,EAAI,EAAGA,GAAKD,EAAGC,IACtB,EAAE,KAAK,CAACD,EAAGC,CAAC,CAAC,EACjB,OAAO,CACT,CACA,SAAUgK,GAAGlK,EAAG,CACd,SAAW,CAAC,EAAGC,CAAC,IAAKgK,GAAGjK,EAAE,MAAM,EAC9B,IAAMC,IAAM,KAAM,CAACD,EAAE,CAAC,EAAGA,EAAEC,CAAC,CAAC,EACjC,CACA,MAAMkK,WAAWvH,EAAG,CAClB,YAAY,EAAG,CAAE,aAAc3C,EAAI,EAAI,EAAG,GAAI,CAC5C,QAAS,KAAK,aAAe,KAAMA,GAAKmK,GAAG,CAAC,EAAG,KAAK,SAAW,CAChE,CACD,IAAI,MAAO,CACT,OAAO,KAAK,SAAS,IAAK,GAAM,EAAE,IAAI,EAAE,KAAK;AAAA,CAChD,EAAI;AAAA,CAEF,CACD,IAAI,MAAO,CACT,OAAO,KAAK,IACb,CACD,IAAI,YAAa,CACf,OAAO,KAAK,SAAS,CAAC,EAAE,UACzB,CACD,IAAI,WAAY,CACd,OAAO,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,SAChD,CACD,IAAI,eAAgB,CAClB,OAAO,KAAK,SAAS,MACtB,CACD,SAAS,EAAG,CACV,OAAO,KAAK,SAAS,KAAMnK,GAAMA,EAAE,YAAY,CAAC,CAAC,CAClD,CACD,WAAW,EAAG,CACZ,OAAO,KAAK,YAAY,SAAS,EAAE,WAAW,EAAI,KAAK,SAAS,KAC7DA,GAAM,EAAE,SAAS,KACfC,GAAM8J,GAAG/J,EAAGC,CAAC,EAAE,MAAQ,CACzB,CACF,EAAG,EACL,CACD,oBAAoB,EAAG,CACrB,OAAO,KAAK,SAAS,QAASD,GAAM,EAAE,SAAS,QAASC,GAAMD,EAAE,YAAY,SAASC,EAAE,WAAW,EAAI8J,GAAG/J,EAAGC,CAAC,EAAE,SAAW,CAAE,CAAA,CAAC,CAC9H,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,eAAiB,KAAM,CAC9B,IAAI,EAAI,KAAK,SAAS,CAAC,EAAE,YACzB,KAAK,SAAS,MAAM,CAAC,EAAE,QAASD,GAAM,CACpC,EAAI,EAAE,MAAMA,EAAE,WAAW,CACjC,CAAO,EAAG,KAAK,aAAe,CACzB,CACD,OAAO,KAAK,YACb,CACD,CAAC,OAAO,IAAI,4BAA4B,CAAC,GAAI,CAC3C,OAAO,KAAK,IACb,CACH,CACA,SAASoK,GAAGrK,EAAG,EAAI,SAAU,CAC3BiK,GAAGjK,EAAE,MAAM,EAAE,QACX,CAAC,CAACC,EAAGC,CAAC,IAAM,CACV,GAAID,IAAMC,EACR,OACF,MAAME,EAAIJ,EAAEC,CAAC,EAAGwB,EAAIzB,EAAEE,CAAC,EAAG4B,EAAIkI,GAAG5J,EAAGqB,CAAC,EAAG,EAAI,KAAK,IAAIrB,EAAE,UAAWqB,EAAE,SAAS,EAC7E,GAAIK,EAAE,QAAU,EAAG,CACjB,GAAIA,EAAE,QAAU,GAAK,CAACA,EAAE,SAAS,OAAQ,CACvC,MAAMC,EAAI9B,EAAIC,EAAG8B,EAAIF,EAAE,cAAc,CAAC,EACtC,GAAIC,IAAM,GAAKpB,EAAEP,EAAE,WAAY4B,EAAG,CAAC,GAAKD,IAAM,IAAMpB,EAAEP,EAAE,UAAW4B,EAAG,CAAC,GAAKD,IAAM/B,EAAE,OAAS,GAAKW,EAAEP,EAAE,UAAW4B,EAAG,CAAC,GAAKrB,EAAEc,EAAE,WAAYO,EAAG,CAAC,GAAK,CAACD,IAAM/B,EAAE,OAAS,GAAKW,EAAEP,EAAE,WAAY4B,EAAG,CAAC,GAAKrB,EAAEc,EAAE,UAAWO,EAAG,CAAC,EACpN,MACH,CACD,GAAI,EAAEF,EAAE,QAAU,GAAK9B,EAAE,SAAW,IAAMW,EACxCP,EAAE,WACF0B,EAAE,cAAc,CAAC,EACjB,CACV,GAAanB,EACHP,EAAE,UACF0B,EAAE,cAAc,CAAC,EACjB,CACV,GAAanB,EACHP,EAAE,WACF0B,EAAE,cAAc,CAAC,EACjB,CACV,GAAanB,EACHP,EAAE,UACF0B,EAAE,cAAc,CAAC,EACjB,CACV,IACU,MAAM,IAAI,MACR,GAAG,+CAA+C1B,EAAE,YAAYqB,EAAE,cAAc,KAAK,UACnFK,EAAE,aAChB,GACA,CACO,CACF,CACL,CACA,CACA,SAASsI,GAAGpK,EAAG,EAAI,SAAU,CAC3B,GAAIA,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,GAAG,kCAAkC,EACvD+C,EAAG,CAAC/C,EAAE,MAAM,EAAG,EAAE,EAAGA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAC/B,CAAC,CAACC,EAAGC,CAAC,IAAM,CACV,GAAI,CAACS,EAAEV,EAAE,UAAWC,EAAE,UAAU,EAC9B,MAAM,IAAI,MACR,GAAG,qCAAqCD,EAAE,YAAYC,EAAE,cAClE,CACK,CACL,EAAKmK,GAAGrK,EAAG,CAAC,CACZ,CACA,SAASsK,GAAGtK,EAAG,EAAG,CAChB,MAAO,CAAC,EAAEA,aAAa6C,GAAK,aAAaA,GAAKrB,GAAGxB,EAAE,EAAG,EAAE,CAAC,GAAKA,aAAaqD,GAAK,aAAaA,GAAK1C,EAAEX,EAAE,OAAQ,EAAE,MAAM,GAAKA,EAAE,OAAS,EAAE,OAASA,EAAE,UACrJ,CACA,SAASuK,GAAGvK,EAAG,EAAG,CAChB,GAAIA,aAAa6C,GAAK,aAAaA,EACjC,OAAO,IAAIA,EAAE7C,EAAE,WAAY,EAAE,SAAS,EACxC,GAAIA,aAAaqD,GAAK,aAAaA,EACjC,OAAO,IAAIA,EACTrD,EAAE,WACF,EAAE,UACFA,EAAE,OACFA,EAAE,SACR,EACE,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAASwK,GAAGxK,EAAG,CACb,IAAI,EAAI,GACR,MAAMC,EAAI,CAAA,EACV,UAAWC,KAAKF,EAAE,SAAU,CAC1B,GAAIC,EAAE,SAAW,EAAG,CAClBA,EAAE,KAAKC,CAAC,EACR,QACD,CACD,MAAME,EAAIH,EAAEA,EAAE,OAAS,CAAC,EACxBqK,GAAGlK,EAAGF,CAAC,GAAK,EAAI,GAAID,EAAE,IAAK,EAAEA,EAAE,KAAKsK,GAAGnK,EAAGF,CAAC,CAAC,GAAKD,EAAE,KAAKC,CAAC,CAC1D,CACD,GAAIS,EAAEX,EAAE,WAAYA,EAAE,SAAS,GAAKsK,GAClCrK,EAAE,CAAC,EACHA,EAAEA,EAAE,OAAS,CAAC,CAClB,EAAK,CACD,EAAI,GACJ,MAAMC,EAAID,EAAE,MACZA,EAAE,CAAC,EAAIsK,GAAGrK,EAAGD,EAAE,CAAC,CAAC,CAClB,CACD,OAAO,EAAIA,EAAI,IACjB,QACA,MAAMwK,WAAUN,EAAG,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,WAAa,QACxC,CACD,SAAU,CACR,MAAM,EAAI,KAAK,SAAS,IAAKlK,GAAMA,EAAE,QAAO,CAAE,EAC9C,OAAO,EAAE,QAAS,EAAE,IAAIwK,GAAE,EAAG,CAAE,aAAc,EAAE,CAAE,CAClD,CACD,OAAQ,CACN,OAAO,IAAIA,GACT,KAAK,SAAS,IAAK,GAAM,EAAE,OAAO,EAClC,CAAE,aAAc,EAAI,CAC1B,CACG,CACD,OAAO,EAAG,CACR,GAAI,CAAC9J,EAAE,KAAK,UAAW,EAAE,UAAU,EACjC,MAAM,QAAQ,MAAM,KAAK,KAAM,EAAE,IAAI,EAAG,IAAI,MAAM,wDAAwD,EAC5G,OAAO,IAAI8J,GAAE,CAAC,GAAG,KAAK,SAAU,GAAG,EAAE,QAAQ,CAAC,CAC/C,CACD,UAAW,CACT,MAAM,EAAID,GAAG,IAAI,EACjB,OAAO,EAAI,IAAIC,GAAE,EAAG,CAAE,aAAc,GAAI,EAAI,IAC7C,CACD,UAAU,EAAG,CACX,OAAO,IAAIA,GACT,KAAK,SAAS,IAAKxK,GAAMA,EAAE,UAAU,CAAC,CAAC,EACvC,CAAE,aAAc,EAAI,CAC1B,CACG,CACH,EACA,MAAMyK,GAAK,CAAC1K,EAAG,IAAM,CACnB,MAAMC,EAAIiD,GAAG,EAAG,CACd,EAAG,CAAC,EAAG,CAAC,EACR,WAAYlD,EACZ,UAAW,EAAE,SACjB,CAAG,EACD,GAAIC,IAAM,WACR,MAAO,GACT,KAAM,CAAE,mBAAoBC,EAAG,mBAAoBE,CAAC,EAAKH,EACzD,GAAI,CAAC,EAAE,iBAAiBC,CAAC,GAAKE,GAAK,CAAC,EAAE,UACpC,MAAO,GACT,GAAI,KAAK,IAAIF,CAAC,EAAI,EAAE,WAAa,KAAK,IAAIA,EAAI,CAAC,EAAI,EAAE,UAAW,CAC9D,KAAM,EAAGuB,CAAC,EAAI,EAAE,SAChB,OAAOzB,EAAE,CAAC,EAAIyB,EAAI,EAAI,EAAI,CAC3B,CACD,MAAO,EACT,EACA,MAAMkJ,EAAG,CACP,YAAY,EAAG,CACb,KAAK,OAAS,EAAG,KAAK,QAAU,CACjC,CACD,OAAO,EAAG1K,EAAI,GAAI,CAChB,CAACA,GAAK,CAAC,KAAK,QAAQ,YAAY,CAAC,IAAMU,EAAE,EAAG,KAAK,QAAQ,UAAU,EAAI,KAAK,QAAU,KAAK,QAAQ,oBAAoB,CAAC,EAAI,EAAI,EAAI,EAAIA,EAAE,EAAG,KAAK,QAAQ,SAAS,EAAI,KAAK,QAAU,KAAK,QAAQ,mBAAmB,CAAC,EAAI,EAAI,EAAI,EAAI,KAAK,QAAU,EACvP,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,MACb,CACH,CACA,MAAMiK,GAAK,CAAC5K,EAAG,IAAM,CACnB,MAAMC,EAAI,EAAE,UAAWC,EAAI,KAAK,IAAIF,EAAE,CAAC,EAAI,EAAE,OAAO,CAAC,CAAC,EACtD,GAAIE,EAAI,EAAE,OAASD,EACjB,MAAO,GACT,MAAMG,EAAIY,GAAGhB,EAAG,EAAE,MAAM,EAAGyB,EAAI,EAAE,OAAS,EAAE,OAAQK,EAAI7B,EAAIA,EAC5D,GAAI,KAAK,IAAIG,EAAIqB,CAAC,EAAIK,GAAK,EAAE,YAAY9B,CAAC,EACxC,MAAO,GACT,MAAM,EAAII,EAAIqB,EAAIK,EAClB,GAAI,GAAK,EAAE,OAAO,CAAC,EAAI9B,EAAE,CAAC,EACxB,MAAO,GACT,MAAM+B,EAAI,KAAK,KACb,EAAE,OAAS,EAAE,OAAS7B,EAAIA,CAC3B,EAAE8B,EAAI,IAAI2I,GAAG,CAAC,EACf,OAAO3I,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAID,EAAG/B,EAAE,CAAC,CAAC,CAAC,EAAG,GAAKgC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAID,EAAG/B,EAAE,CAAC,CAAC,CAAC,EAAGgC,EAAE,KACtF,EAAG6I,GAAK,CAAC7K,EAAG,IAAM,CAChB,MAAMC,EAAI,EAAE,YAAY,KAAO,EAAE,YAAY,MAAQ,EAAGC,EAAI,IAAI2C,EAAE7C,EAAG,CAACC,EAAGD,EAAE,CAAC,CAAC,CAAC,EAAGI,EAAI,IAAIuK,GAAG,CAAC,EAC7F,OAAOnG,GAAGtE,EAAG,CAAC,EAAE,QAASuB,GAAM,CAC7BrB,EAAE,OAAOqB,EAAG,EAAE,CAClB,CAAG,EAAGrB,EAAE,KACR,EACA,SAAS0K,GAAG9K,EAAG,EAAG,CAChB,GAAI,aAAa6C,EACf,OAAO6H,GAAG1K,EAAG,CAAC,EAChB,GAAI,aAAaqD,EACf,OAAOuH,GAAG5K,EAAG,CAAC,EAChB,GAAI,aAAa8D,EACf,OAAO+G,GAAG7K,EAAG,CAAC,EAChB,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,MAAM+K,UAAWZ,EAAG,CAClB,YAAY,EAAG,CAAE,aAAclK,EAAI,EAAI,EAAG,GAAI,CAC5C,MAAM,EAAG,CAAE,aAAc,EAAE,CAAE,EAAG,KAAK,WAAa,OAAQ,KAAK,WAAa,KAAMA,GAAK+K,GAAG,CAAC,CAC5F,CACD,IAAI,WAAY,CACd,GAAI,KAAK,aAAe,KAAM,CAC5B,MAAM,EAAI,KAAK,SAAS,QAAS9K,GAAMA,aAAa2C,EAAI,CAAC3C,EAAE,UAAU,EAAI,CAACA,EAAE,WAAYA,EAAE,WAAW,EAAG,CAAC,CAAC,EAAGD,EAAI,EAAE,IAAI,CAACC,EAAGE,IAAM,CAC/H,MAAMqB,EAAI,GAAGrB,EAAI,GAAK,EAAE,MAAM,EAC9B,OAAQqB,EAAE,CAAC,EAAIvB,EAAE,CAAC,IAAMuB,EAAE,CAAC,EAAIvB,EAAE,CAAC,EAC1C,CAAO,EAAE,OAAO,CAACA,EAAGE,IAAMF,EAAIE,EAAG,CAAC,EAC5B,KAAK,WAAaH,EAAI,CACvB,CACD,OAAO,KAAK,UACb,CACD,OAAQ,CACN,OAAO,IAAI8K,EACT,KAAK,SAAS,IAAK,GAAM,EAAE,OAAO,EAClC,CAAE,aAAc,EAAI,CAC1B,CACG,CACD,SAAU,CACR,MAAM,EAAI,KAAK,SAAS,IAAK9K,GAAMA,EAAE,QAAO,CAAE,EAC9C,OAAO,EAAE,QAAS,EAAE,IAAI8K,EAAG,EAAG,CAAE,aAAc,EAAE,CAAE,CACnD,CACD,UAAU,EAAG,CACX,OAAO,IAAIA,EACT,KAAK,SAAS,IAAK9K,GAAMA,EAAE,UAAU,CAAC,CAAC,EACvC,CAAE,aAAc,EAAI,CAC1B,CACG,CACD,SAAS,EAAG,CACV,OAAO,KAAK,SAAS,CAAC,GAAK,CAAC,KAAK,YAAY,SAAS,CAAC,EAAI,GAAK,KAAK,SAAS,OAAO,CAAC,EAAG,IAAM,EAAI6K,GAAG,EAAG,CAAC,EAAG,CAAC,EAAI,IAAM,CACzH,CACD,UAAW,CACT,MAAM,EAAIN,GAAG,IAAI,EACjB,OAAO,EAAI,IAAIO,EAAG,EAAG,CAAE,aAAc,GAAI,EAAI,IAC9C,CACH,CACA,SAASC,GAAGhL,EAAG,CACb,GAAIoK,GAAGpK,EAAG,MAAM,EAAG,CAACW,EAAEX,EAAE,CAAC,EAAE,WAAYA,EAAEA,EAAE,OAAS,CAAC,EAAE,SAAS,EAC9D,MAAM,IAAI,MAAM,6BAA6B,CACjD,CACA,SAASiL,GAAGjL,EAAG,CACb,GAAIA,aAAa6C,EACf,MAAO,CACL,KAAM7C,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,SACnB,EACE,GAAIA,aAAaqD,EACf,MAAO,CACL,KAAMrD,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,OAAQA,EAAE,OACV,UAAWA,EAAE,SACnB,EACE,GAAIA,aAAa8D,EACf,MAAO,CACL,KAAM9D,EAAE,YACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,OAAQA,EAAE,OACV,UAAWA,EAAE,UACb,YAAaA,EAAE,YACf,YAAaA,EAAE,YACf,UAAWA,EAAE,SACnB,EACE,MAAM,IAAI,MAAM,sBAAsB,CACxC,CACA,SAASkL,GAAGlL,EAAG,CACb,MAAO,CACL,KAAM,OACN,SAAUA,EAAE,SAAS,IAAIiL,EAAE,CAC/B,CACA,CACA,SAASE,GAAGnL,EAAG,CACb,MAAO,CACL,KAAM,SACN,QAASkL,GAAGlL,EAAE,OAAO,EACrB,MAAOA,EAAE,MAAM,IAAIkL,EAAE,CACzB,CACA,CACA,SAASE,GAAGpL,EAAG,CACb,MAAO,CACL,KAAM,UACN,QAASA,EAAE,QAAQ,IAAImL,EAAE,CAC7B,CACA,CACA,SAASE,GAAGrL,EAAG,CACb,GAAIA,aAAasL,GACf,OAAOF,GAAGpL,CAAC,EACb,GAAIA,aAAauL,EACf,OAAOJ,GAAGnL,CAAC,EACb,GAAIA,aAAa+K,EACf,OAAOG,GAAGlL,CAAC,EACb,GAAIA,aAAaqD,GAAKrD,aAAa6C,EACjC,OAAOoI,GAAGjL,CAAC,EACb,MAAM,IAAI,MAAM,oBAAoB,CACtC,CACA,MAAMwL,EAAG,CACP,aAAc,CACZ,KAAK,IAAM,CAAA,EAAI,KAAK,OAAS,GAAI,KAAK,OAAS,CAChD,CACD,OAAQ,CACN,KAAK,OAAS,CACf,CACD,KAAK,EAAGvL,EAAG,CACT,IAAIC,EAAI,KAAK,SACb,KAAOA,EAAI,GAAK,CACd,MAAME,EAAIF,EAAI,GAAK,EAAGuB,EAAI,KAAK,OAAOrB,CAAC,EACvC,GAAIH,GAAKwB,EACP,MACF,KAAK,IAAIvB,CAAC,EAAI,KAAK,IAAIE,CAAC,EAAG,KAAK,OAAOF,CAAC,EAAIuB,EAAGvB,EAAIE,CACpD,CACD,KAAK,IAAIF,CAAC,EAAI,EAAG,KAAK,OAAOA,CAAC,EAAID,CACnC,CACD,KAAM,CACJ,GAAI,KAAK,SAAW,EAClB,OACF,MAAM,EAAI,KAAK,IAAI,CAAC,EACpB,GAAI,KAAK,SAAU,KAAK,OAAS,EAAG,CAClC,MAAMA,EAAI,KAAK,IAAI,CAAC,EAAI,KAAK,IAAI,KAAK,MAAM,EAAGC,EAAI,KAAK,OAAO,CAAC,EAAI,KAAK,OAAO,KAAK,MAAM,EAAGE,EAAI,KAAK,QAAU,EACjH,IAAIqB,EAAI,EACR,KAAOA,EAAIrB,GAAK,CACd,IAAI0B,GAAKL,GAAK,GAAK,EACnB,MAAM,EAAIK,EAAI,EACd,IAAIC,EAAI,KAAK,IAAID,CAAC,EAAGE,EAAI,KAAK,OAAOF,CAAC,EACtC,MAAM,EAAI,KAAK,OAAO,CAAC,EACvB,GAAI,EAAI,KAAK,QAAU,EAAIE,IAAMF,EAAI,EAAGC,EAAI,KAAK,IAAI,CAAC,EAAGC,EAAI,GAAIA,GAAK9B,EACpE,MACF,KAAK,IAAIuB,CAAC,EAAIM,EAAG,KAAK,OAAON,CAAC,EAAIO,EAAGP,EAAIK,CAC1C,CACD,KAAK,IAAIL,CAAC,EAAIxB,EAAG,KAAK,OAAOwB,CAAC,EAAIvB,CACnC,CACD,OAAO,CACR,CACD,MAAO,CACL,GAAI,KAAK,SAAW,EAClB,OAAO,KAAK,IAAI,CAAC,CACpB,CACD,WAAY,CACV,GAAI,KAAK,SAAW,EAClB,OAAO,KAAK,OAAO,CAAC,CACvB,CACD,QAAS,CACP,KAAK,IAAI,OAAS,KAAK,OAAO,OAAS,KAAK,MAC7C,CACH,CACA,MAAMuL,GAAK,CACT,UACA,WACA,kBACA,WACA,YACA,WACA,YACA,aACA,YACF,EAAGC,GAAK,EACR,MAAMC,EAAG,CACP,OAAO,KAAK,EAAG,CACb,GAAI,CAAC,GAAK,EAAE,aAAe,QAAU,EAAE,OACrC,MAAM,IAAI,MAAM,+DAA+D,EACjF,KAAM,CAAC1L,EAAGC,CAAC,EAAI,IAAI,WAAW,EAAG,EAAG,CAAC,EACrC,GAAID,IAAM,IACR,MAAM,IAAI,MAAM,kDAAkD,EACpE,GAAIC,GAAK,IAAMwL,GACb,MAAM,IAAI,MAAM,QAAQxL,GAAK,yBAAyBwL,KAAK,EAC7D,KAAM,CAACtL,CAAC,EAAI,IAAI,YAAY,EAAG,EAAG,CAAC,EAAG,CAACqB,CAAC,EAAI,IAAI,YAAY,EAAG,EAAG,CAAC,EACnE,OAAO,IAAIkK,GAAGlK,EAAGrB,EAAGqL,GAAGvL,EAAI,EAAE,EAAG,OAAQ,CAAC,CAC1C,CACD,YAAY,EAAGD,EAAI,GAAIC,EAAI,aAAcE,EAAI,YAAaqB,EAAG,CAC3D,GAAI,IAAM,OACR,MAAM,IAAI,MAAM,sCAAsC,EACxD,GAAI,MAAM,CAAC,GAAK,GAAK,EACnB,MAAM,IAAI,MAAM,8BAA8B,IAAI,EACpD,KAAK,SAAW,CAAC,EAAG,KAAK,SAAW,KAAK,IAAI,KAAK,IAAI,CAACxB,EAAG,CAAC,EAAG,KAAK,EACnE,IAAI6B,EAAI,EAAG,EAAIA,EACf,KAAK,aAAe,CAACA,EAAI,CAAC,EAC1B,GACEA,EAAI,KAAK,KAAKA,EAAI,KAAK,QAAQ,EAAG,GAAKA,EAAG,KAAK,aAAa,KAAK,EAAI,CAAC,QACjEA,IAAM,GACb,KAAK,UAAY5B,GAAK,aAAc,KAAK,eAAiB,EAAI,MAAQ,YAAc,YACpF,MAAM6B,EAAI0J,GAAG,QAAQ,KAAK,SAAS,EAAGzJ,EAAI,EAAI,EAAI,KAAK,UAAU,kBACjE,GAAID,EAAI,EACN,MAAM,IAAI,MAAM,iCAAiC7B,IAAI,EACvDuB,GAAKA,EAAE,aAAe,QAAU,CAACA,EAAE,QAAU,KAAK,KAAOA,EAAG,KAAK,OAAS,IAAI,KAAK,UAAU,KAAK,KAAM,EAAG,EAAI,CAAC,EAAG,KAAK,SAAW,IAAI,KAAK,eAAe,KAAK,KAAM,EAAIO,EAAG,CAAC,EAAG,KAAK,KAAO,EAAI,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,EAAG,KAAK,KAAO,KAAK,OAAO,KAAK,KAAO,CAAC,IAAM,KAAK,KAAO,IAAI5B,EAAE,EAAI4B,EAAI,EAAI,KAAK,eAAe,iBAAiB,EAAG,KAAK,OAAS,IAAI,KAAK,UAAU,KAAK,KAAM,EAAG,EAAI,CAAC,EAAG,KAAK,SAAW,IAAI,KAAK,eAAe,KAAK,KAAM,EAAIA,EAAG,CAAC,EAAG,KAAK,KAAO,EAAG,KAAK,KAAO,EAAI,EAAG,KAAK,KAAO,EAAI,EAAG,KAAK,KAAO,GAAK,EAAG,KAAK,KAAO,GAAK,EAAG,IAAI,WAAW,KAAK,KAAM,EAAG,CAAC,EAAE,IAAI,CAAC,KAAM0J,IAAM,GAAK3J,CAAC,CAAC,EAAG,IAAI,YAAY,KAAK,KAAM,EAAG,CAAC,EAAE,CAAC,EAAI9B,EAAG,IAAI,YAAY,KAAK,KAAM,EAAG,CAAC,EAAE,CAAC,EAAI,GAAI,KAAK,OAAS,IAAIuL,EAChyB,CACD,IAAI,EAAGvL,EAAGC,EAAGE,EAAG,CACd,MAAMqB,EAAI,KAAK,MAAQ,EAAGK,EAAI,KAAK,OACnC,OAAO,KAAK,SAASL,CAAC,EAAIA,EAAGK,EAAE,KAAK,MAAM,EAAI,EAAGA,EAAE,KAAK,MAAM,EAAI7B,EAAG6B,EAAE,KAAK,MAAM,EAAI5B,EAAG4B,EAAE,KAAK,MAAM,EAAI1B,EAAG,EAAI,KAAK,OAAS,KAAK,KAAO,GAAIH,EAAI,KAAK,OAAS,KAAK,KAAOA,GAAIC,EAAI,KAAK,OAAS,KAAK,KAAOA,GAAIE,EAAI,KAAK,OAAS,KAAK,KAAOA,GAAIqB,CACtP,CACD,QAAS,CACP,GAAI,KAAK,MAAQ,IAAM,KAAK,SAC1B,MAAM,IAAI,MAAM,SAAS,KAAK,MAAQ,yBAAyB,KAAK,WAAW,EACjF,MAAM,EAAI,KAAK,OACf,GAAI,KAAK,UAAY,KAAK,SAAU,CAClC,EAAE,KAAK,MAAM,EAAI,KAAK,KAAM,EAAE,KAAK,MAAM,EAAI,KAAK,KAAM,EAAE,KAAK,MAAM,EAAI,KAAK,KAAM,EAAE,KAAK,MAAM,EAAI,KAAK,KAC1G,MACD,CACD,MAAMxB,EAAI,KAAK,KAAO,KAAK,MAAQ,EAAGC,EAAI,KAAK,KAAO,KAAK,MAAQ,EAAGE,EAAI,IAAI,YAAY,KAAK,QAAQ,EAAGqB,GAAK,GAAK,IAAM,EAC1H,QAASK,EAAI,EAAG,EAAI,EAAGA,EAAI,KAAK,SAAUA,IAAK,CAC7C,MAAMC,EAAI,EAAE,GAAG,EAAGC,EAAI,EAAE,GAAG,EAAG,EAAI,EAAE,GAAG,EAAGC,EAAI,EAAE,GAAG,EAAGC,EAAI,KAAK,MAAMT,IAAMM,EAAI,GAAK,EAAI,KAAK,MAAQ9B,CAAC,EAAGkC,EAAI,KAAK,MAAMV,IAAMO,EAAIC,GAAK,EAAI,KAAK,MAAQ/B,CAAC,EACzJE,EAAE0B,CAAC,EAAI8J,GAAG1J,EAAGC,CAAC,CACf,CACD0J,GAAGzL,EAAG,EAAG,KAAK,SAAU,EAAG,KAAK,SAAW,EAAG,KAAK,QAAQ,EAC3D,QAAS0B,EAAI,EAAG,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAS,EAAGA,IAAK,CAC5D,MAAMC,EAAI,KAAK,aAAaD,CAAC,EAC7B,KAAO,EAAIC,GAAK,CACd,MAAMC,EAAI,EACV,IAAI,EAAI,EAAE,GAAG,EAAGC,EAAI,EAAE,GAAG,EAAGC,EAAI,EAAE,GAAG,EAAGC,EAAI,EAAE,GAAG,EACjD,QAASC,EAAI,EAAGA,EAAI,KAAK,UAAY,EAAIL,EAAGK,IAC1C,EAAI,KAAK,IAAI,EAAG,EAAE,GAAG,CAAC,EAAGH,EAAI,KAAK,IAAIA,EAAG,EAAE,GAAG,CAAC,EAAGC,EAAI,KAAK,IAAIA,EAAG,EAAE,GAAG,CAAC,EAAGC,EAAI,KAAK,IAAIA,EAAG,EAAE,GAAG,CAAC,EACnG,KAAK,SAAS,KAAK,MAAQ,CAAC,EAAIH,EAAG,EAAE,KAAK,MAAM,EAAI,EAAG,EAAE,KAAK,MAAM,EAAIC,EAAG,EAAE,KAAK,MAAM,EAAIC,EAAG,EAAE,KAAK,MAAM,EAAIC,CACjH,CACF,CACF,CACD,OAAO,EAAGlC,EAAGC,EAAGE,EAAGqB,EAAG,CACpB,GAAI,KAAK,OAAS,KAAK,OAAO,OAC5B,MAAM,IAAI,MAAM,6CAA6C,EAC/D,IAAIK,EAAI,KAAK,OAAO,OAAS,EAC7B,MAAM,EAAI,CAAA,EAAIC,EAAI,GAClB,KAAOD,IAAM,QAAU,CACrB,MAAME,EAAI,KAAK,IAAIF,EAAI,KAAK,SAAW,EAAGgK,GAAGhK,EAAG,KAAK,YAAY,CAAC,EAClE,QAAS,EAAIA,EAAG,EAAIE,EAAG,GAAK,EAAG,CAC7B,GAAI9B,EAAI,KAAK,OAAO,CAAC,GAAKE,EAAI,KAAK,OAAO,EAAI,CAAC,GAAK,EAAI,KAAK,OAAO,EAAI,CAAC,GAAKH,EAAI,KAAK,OAAO,EAAI,CAAC,EACjG,SACF,MAAMgC,EAAI,KAAK,SAAS,GAAK,CAAC,EAAI,EAClCH,GAAK,KAAK,SAAW,EAAI,EAAE,KAAKG,CAAC,GAAKR,IAAM,QAAUA,EAAEQ,CAAC,IAAMF,EAAE,KAAKE,CAAC,CACxE,CACDH,EAAI,EAAE,KACP,CACD,OAAOC,CACR,CACD,UAAU,EAAG9B,EAAGC,EAAI,EAAI,EAAGE,EAAI,EAAI,EAAGqB,EAAG,CACvC,GAAI,KAAK,OAAS,KAAK,OAAO,OAC5B,MAAM,IAAI,MAAM,6CAA6C,EAC/D,IAAIK,EAAI,KAAK,OAAO,OAAS,EAC7B,MAAM,EAAI,KAAK,OAAQC,EAAI,CAAA,EAAIC,EAAI5B,EAAIA,EACvC,KAAO0B,IAAM,QAAU,CACrB,MAAM,EAAI,KAAK,IAAIA,EAAI,KAAK,SAAW,EAAGgK,GAAGhK,EAAG,KAAK,YAAY,CAAC,EAClE,QAASG,EAAIH,EAAGG,EAAI,EAAGA,GAAK,EAAG,CAC7B,MAAMC,EAAI,KAAK,SAASD,GAAK,CAAC,EAAI,EAAGE,EAAI4J,GAAG,EAAG,KAAK,OAAO9J,CAAC,EAAG,KAAK,OAAOA,EAAI,CAAC,CAAC,EAAGG,EAAI2J,GAAG9L,EAAG,KAAK,OAAOgC,EAAI,CAAC,EAAG,KAAK,OAAOA,EAAI,CAAC,CAAC,EAAG,EAAIE,EAAIA,EAAIC,EAAIA,EACvJN,GAAK,KAAK,SAAW,EAAI,EAAE,KAAKI,GAAK,EAAG,CAAC,GAAKT,IAAM,QAAUA,EAAES,CAAC,IAAM,EAAE,MAAMA,GAAK,GAAK,EAAG,CAAC,CAC9F,CACD,KAAO,EAAE,QAAU,EAAE,KAAM,EAAG,GAC5B,GAAI,EAAE,UAAS,EAAKF,IAAMD,EAAE,KAAK,EAAE,IAAK,GAAI,CAAC,EAAGA,EAAE,SAAW7B,GAC3D,OAAO,EAAE,MAAO,EAAE6B,EACtBD,EAAI,EAAE,IAAK,GAAI,CAChB,CACD,OAAO,EAAE,MAAO,EAAEC,CACnB,CACH,CACA,SAASgK,GAAG/L,EAAG,EAAGC,EAAG,CACnB,OAAOD,EAAI,EAAI,EAAIA,EAAIA,GAAKC,EAAI,EAAID,EAAIC,CAC1C,CACA,SAAS6L,GAAG9L,EAAG,EAAG,CAChB,IAAIC,EAAI,EAAGC,EAAI,EAAE,OAAS,EAC1B,KAAOD,EAAIC,GAAK,CACd,MAAME,EAAIH,EAAIC,GAAK,EACnB,EAAEE,CAAC,EAAIJ,EAAIE,EAAIE,EAAIH,EAAIG,EAAI,CAC5B,CACD,OAAO,EAAEH,CAAC,CACZ,CACA,SAAS4L,GAAG7L,EAAG,EAAGC,EAAGC,EAAGE,EAAGqB,EAAG,CAC5B,GAAI,KAAK,MAAMvB,EAAIuB,CAAC,GAAK,KAAK,MAAMrB,EAAIqB,CAAC,EACvC,OACF,MAAMK,EAAI9B,EAAEE,EAAIE,GAAK,CAAC,EACtB,IAAI,EAAIF,EAAI,EAAG6B,EAAI3B,EAAI,EACvB,OAAW,CACT,GACE,UACKJ,EAAE,CAAC,EAAI8B,GACd,GACEC,UACK/B,EAAE+B,CAAC,EAAID,GACd,GAAI,GAAKC,EACP,MACFiK,GAAGhM,EAAG,EAAGC,EAAG,EAAG8B,CAAC,CACjB,CACD8J,GAAG7L,EAAG,EAAGC,EAAGC,EAAG6B,EAAGN,CAAC,EAAGoK,GAAG7L,EAAG,EAAGC,EAAG8B,EAAI,EAAG3B,EAAGqB,CAAC,CAC/C,CACA,SAASuK,GAAGhM,EAAG,EAAGC,EAAGC,EAAGE,EAAG,CACzB,MAAMqB,EAAIzB,EAAEE,CAAC,EACbF,EAAEE,CAAC,EAAIF,EAAEI,CAAC,EAAGJ,EAAEI,CAAC,EAAIqB,EACpB,MAAMK,EAAI,EAAI5B,EAAG,EAAI,EAAIE,EAAG2B,EAAI,EAAED,CAAC,EAAGE,EAAI,EAAEF,EAAI,CAAC,EAAG,EAAI,EAAEA,EAAI,CAAC,EAAGG,EAAI,EAAEH,EAAI,CAAC,EAC7E,EAAEA,CAAC,EAAI,EAAE,CAAC,EAAG,EAAEA,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAG,EAAEA,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAG,EAAEA,EAAI,CAAC,EAAI,EAAE,EAAI,CAAC,EAAG,EAAE,CAAC,EAAIC,EAAG,EAAE,EAAI,CAAC,EAAIC,EAAG,EAAE,EAAI,CAAC,EAAI,EAAG,EAAE,EAAI,CAAC,EAAIC,EAC7H,MAAMC,EAAIjC,EAAEC,CAAC,EACbD,EAAEC,CAAC,EAAID,EAAEG,CAAC,EAAGH,EAAEG,CAAC,EAAI8B,CACtB,CACA,SAAS0J,GAAG5L,EAAG,EAAG,CAChB,IAAIC,EAAID,EAAI,EAAGE,EAAI,MAAQD,EAAGG,EAAI,OAASJ,EAAI,GAAIyB,EAAIzB,GAAK,EAAI,OAAQ8B,EAAI7B,EAAIC,GAAK,EAAG,EAAID,GAAK,EAAIA,EAAG8B,EAAI3B,GAAK,EAAIF,EAAIuB,GAAK,EAAIrB,EAAG4B,EAAI/B,EAAIG,GAAK,EAAIqB,GAAK,EAAIA,EAC/JxB,EAAI6B,EAAG5B,EAAI,EAAGE,EAAI2B,EAAGN,EAAIO,EAAGF,EAAI7B,EAAIA,GAAK,EAAIC,EAAIA,GAAK,EAAG,EAAID,EAAIC,GAAK,EAAIA,GAAKD,EAAIC,IAAM,EAAG6B,GAAK9B,EAAIG,GAAK,EAAIF,EAAIuB,GAAK,EAAGO,GAAK9B,EAAIE,GAAK,GAAKH,EAAIC,GAAKuB,GAAK,EAAGxB,EAAI6B,EAAG5B,EAAI,EAAGE,EAAI2B,EAAGN,EAAIO,EAAGF,EAAI7B,EAAIA,GAAK,EAAIC,EAAIA,GAAK,EAAG,EAAID,EAAIC,GAAK,EAAIA,GAAKD,EAAIC,IAAM,EAAG6B,GAAK9B,EAAIG,GAAK,EAAIF,EAAIuB,GAAK,EAAGO,GAAK9B,EAAIE,GAAK,GAAKH,EAAIC,GAAKuB,GAAK,EAAGxB,EAAI6B,EAAG5B,EAAI,EAAGE,EAAI2B,EAAGN,EAAIO,EAAGD,GAAK9B,EAAIG,GAAK,EAAIF,EAAIuB,GAAK,EAAGO,GAAK9B,EAAIE,GAAK,GAAKH,EAAIC,GAAKuB,GAAK,EAAGxB,EAAI8B,EAAIA,GAAK,EAAG7B,EAAI8B,EAAIA,GAAK,EACvb,IAAI,EAAIhC,EAAI,EAAGiC,EAAI/B,EAAI,OAAS,EAAID,GACpC,OAAO,GAAK,EAAI,GAAK,GAAK,SAAU,GAAK,EAAI,GAAK,GAAK,UAAW,GAAK,EAAI,GAAK,GAAK,UAAW,GAAK,EAAI,GAAK,GAAK,WAAYgC,GAAKA,EAAIA,GAAK,GAAK,SAAUA,GAAKA,EAAIA,GAAK,GAAK,UAAWA,GAAKA,EAAIA,GAAK,GAAK,UAAWA,GAAKA,EAAIA,GAAK,GAAK,YAAaA,GAAK,EAAI,KAAO,CAC1Q,CACA,SAASgK,GAAGjM,EAAG,EAAI,KAAM,CACvB,GAAIA,EAAE,SAAW,EACf,MAAO,GACT,GAAIA,EAAE,SAAW,EACf,MAAO,CAACA,CAAC,EACX,MAAMC,EAAI,IAAI0L,GAAG3L,EAAE,MAAM,EACzBA,EAAE,QAASyB,GAAM,CACf,KAAM,CAACK,EAAG,CAAC,EAAIL,EAAE,WACjBxB,EAAE,IAAI6B,EAAI,EAAG,EAAI,EAAGA,EAAI,EAAG,EAAI,CAAC,CACpC,CAAG,EAAG7B,EAAE,SACN,MAAMC,EAAI,CAAE,EAAEE,EAAoB,IAAI,IACtC,OAAOJ,EAAE,QAAQ,CAACyB,EAAGK,IAAM,CACzB,GAAI1B,EAAE,IAAI0B,CAAC,EACT,OACF,MAAM,EAAI,CAACL,CAAC,EACZ,IAAIM,EAAID,EACR1B,EAAE,IAAI0B,CAAC,EACP,IAAIE,EAAIhC,EAAE,OACV,OAAW,CACT,GAAIgC,IAAM,EACR,MAAM,IAAI,MAAM,wBAAwB,EAC1C,MAAM,EAAI,EAAE,EAAE,OAAS,CAAC,EAAE,UAAW,CAACC,EAAGC,CAAC,EAAI,EAAGC,EAAIlC,EAAE,OACrDgC,EAAI,EACJC,EAAI,EACJD,EAAI,EACJC,EAAI,CACZ,EAASE,EAAKE,GAAM,KAAK,KAAKP,EAAIO,GAAKtC,EAAE,MAAM,EAAG,EAAImC,EAAE,OAAQG,GAAM,CAAClC,EAAE,IAAIkC,CAAC,CAAC,EAAE,IAAKA,GAAM,CACpFtC,EAAEsC,CAAC,EACHA,EACAF,EAAEE,CAAC,CACJ,CAAA,EAAE,KAAK,CAAC,CAAK,CAAA,CAAAA,CAAC,EAAG,CAAK,CAAA,CAAA,CAAC,IAAMF,EAAEE,CAAC,EAAIF,EAAE,CAAC,CAAC,EACzC,GAAI,EAAE,SAAW,EAAG,CAClBlC,EAAE,KAAK,CAAC,EACR,KACD,CACD,KAAM,CAACmC,EAAG,CAAC,EAAI,EAAE,CAAC,EAClB,EAAE,KAAKA,CAAC,EAAGjC,EAAE,IAAI,CAAC,EAAG2B,EAAI,CAC1B,CACF,CAAA,EAAG7B,CACN,OACA,MAAMqL,WAAU3I,EAAG,CACjB,YAAY,EAAG3C,EAAI,GAAI,CAAE,aAAcC,EAAI,EAAI,EAAG,GAAI,CACpD,QAASA,GAAKgM,GAAG,EAAGjM,CAAC,EAAG,KAAK,QAAU,EAAG,KAAK,MAAQA,CACxD,CACD,IAAI,aAAc,CAChB,OAAO,KAAK,QAAQ,WACrB,CACD,IAAI,QAAS,CACX,OAAO,KAAK,MAAM,SAAW,CAC9B,CACD,IAAI,UAAW,CACb,MAAO,CAAC,KAAK,QAAS,GAAG,KAAK,KAAK,CACpC,CACD,OAAQ,CACN,OAAO,IAAIsL,GACT,KAAK,QAAQ,MAAO,EACpB,KAAK,MAAM,IAAK,GAAM,EAAE,OAAO,CACrC,CACG,CACD,UAAU,EAAG,CACX,OAAO,IAAIA,GACT,KAAK,QAAQ,UAAU,CAAC,EACxB,KAAK,MAAM,IAAKtL,GAAMA,EAAE,UAAU,CAAC,CAAC,CAC1C,CACG,CACD,SAAS,EAAG,CACV,OAAO,KAAK,QAAQ,SAAS,CAAC,GAAK,CAAC,KAAK,MAAM,KAAMA,GAAMA,EAAE,SAAS,CAAC,CAAC,CACzE,CACD,WAAW,EAAG,CACZ,OAAO,KAAK,SAAS,KAClBA,GAAM,EAAE,SAAS,KAAMC,GAAMD,EAAE,WAAWC,CAAC,CAAC,CACnD,CACG,CACD,mBAAmB,EAAG,CACpB,MAAMD,EAAI,aAAasL,GAAI,EAAE,SAAW,CAAC,CAAC,EAAGrL,EAAI,KAAK,SAAS,QAASE,GAAMH,EAAE,QAASwB,GAAMrB,EAAE,oBAAoBqB,CAAC,CAAC,CAAC,EACxH,OAAOwK,GAAG/L,CAAC,EAAE,IAAKE,GAAM,IAAIqK,GAAErK,CAAC,CAAC,CACjC,CACH,EACA,SAAS8L,GAAGlM,EAAG,EAAI,GAAI,CACrB,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,4BAA4B,EAC9C,SAAW,CAACC,EAAGC,CAAC,IAAKgK,GAAG,CAAClK,EAAG,GAAG,CAAC,CAAC,EAC/B,GAAIC,EAAE,WAAWC,CAAC,EAChB,MAAM,IAAI,MAAM,sCAAsC,EAC1D,GAAI,EAAE,KACHD,GAAM,CAACD,EAAE,SAASC,EAAE,UAAU,GAAK,CAACD,EAAE,SAASC,EAAE,UAAU,CAC7D,EACC,MAAM,IAAI,MAAM,kCAAkC,EACpD,SAAW,CAACA,EAAGC,CAAC,IAAKgK,GAAG,CAAC,EACvB,GAAIjK,EAAE,SAASC,EAAE,UAAU,EACzB,MAAM,QAAQ,MAAMmL,GAAGpL,CAAC,EAAGoL,GAAGnL,CAAC,CAAC,EAAG,IAAI,MAAM,sCAAsC,CACzF,CACA,MAAMiM,GAAMnM,GAAM,CAChB,MAAM,EAAIA,EAAE,IAAI,CAACI,EAAGqB,IAAMzB,EAAE,MAAMyB,EAAI,CAAC,EAAE,IAAI,CAACK,EAAG,IAAM,CAAC,EAAIL,EAAI,EAAGK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAGA,CAAC,IAAM1B,EAAE,YAAY,SAAS0B,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAACA,CAAC,IAAMA,CAAC,CAAC,EAAG7B,EAAI,CAAA,EAAIC,EAAI,MAAM,EAAE,MAAM,EAC5K,OAAO,EAAE,QAAQ,CAACE,EAAGqB,IAAM,CACzB,IAAIK,EAAI5B,EAAEuB,CAAC,EACXK,IAAMA,EAAI,GAAI7B,EAAE,KAAK6B,CAAC,GAAIA,EAAE,KAAK9B,EAAEyB,CAAC,CAAC,EAAGrB,EAAE,QAAUA,EAAE,QAAS,GAAM,CACnEF,EAAE,CAAC,EAAI4B,CACb,CAAK,CACF,CAAA,EAAG7B,CACN,EAAGmM,GAAMpM,GAAMA,EAAE,IAAI,CAAC,EAAGC,IAAM,CAC7B,MAAM,EAAI,EAAE,SAAS,CAAC,EAAE,SAAUwB,EAAIzB,EAAE,OAAO,CAAC,EAAGsD,IAAMrD,IAAMqD,EAAI,GAAK,EAAE,SAAS,CAAC,CAAC,EACrF,MAAO,CACL,KAAM,EACN,KAAM7B,CACV,CACA,CAAC,EAAG4K,GAAK,CAACrM,EAAG,IAAMA,EAAE,QAAQ,CAAC,CAAE,KAAMC,CAAC,IAAOqM,GAC5C,EAAE,OACA,CAAC,CAAE,KAAMpM,EAAG,KAAME,CAAG,IAAKF,IAAMD,GAAKG,EAAE,QAAQH,CAAC,IAAM,EACvD,CACH,CAAC,EAAGsM,GAAK,CAACvM,EAAG,IAAM,CACjB,MAAMC,EAAI,EAAE,OAAO,CAAC,CAAE,KAAMG,CAAG,IAAKA,EAAE,QAAU,CAAC,EAAGF,EAAIoM,GACtDF,GAAGpM,EAAE,IAAI,CAAC,CAAE,KAAMI,CAAC,IAAOA,CAAC,CAAC,CAChC,EACE,MAAO,CAACH,EAAG,GAAGC,CAAC,CACjB,EAAGoM,GAAMtM,GAAM,CACb,GAAI,CAACA,EAAE,OACL,MAAO,GACT,MAAM,EAAIA,EAAE,OAAO,CAAC,CAAE,KAAME,CAAC,IAAO,CAACA,EAAE,MAAM,EAAGD,EAAID,EAAE,OAAO,CAAC,CAAE,KAAME,CAAC,IAAOA,EAAE,OAAS,CAAC,EAC1F,OAAO,EAAE,SAAW,GAAKD,EAAE,SAAW,EAAI,CAACD,CAAC,EAAI,EAAE,OAAS,EAAIqM,GAAG,EAAGrM,CAAC,EAAIuM,GAAGtM,EAAGD,CAAC,CACnF,EACA,SAASwM,GAAGxM,EAAG,CACb,OAAOmM,GAAGnM,CAAC,EAAE,IAAIoM,EAAE,EAAE,QAAQE,EAAE,EAAE,IAAKrM,GAAM,CAC1C,GAAIA,EAAE,SAAW,EACf,OAAO,IAAIsL,EAAEtL,EAAE,CAAC,EAAE,IAAI,EACxBA,EAAE,KAAK,CAACwB,EAAG,IAAMA,EAAE,KAAK,OAAS,EAAE,KAAK,MAAM,EAC9C,KAAM,CAAC,EAAG,GAAG,CAAC,EAAIxB,EAAE,IAAI,CAAC,CAAE,KAAMwB,CAAG,IAAKA,CAAC,EAC1C,OAAO,IAAI8J,EAAE,EAAG,CAAC,CACrB,CAAG,CACH,CACA,SAASkB,GAAGzM,EAAG,EAAG,CAChB,MAAMC,EAAI,CAAA,EACV,UAAWC,KAAKF,EACd,UAAWI,KAAK,EACdH,EAAE,KAAK,CAACC,EAAGE,CAAC,CAAC,EACjB,OAAOH,CACT,CACA,SAAUyM,GAAG1M,EAAG,EAAGC,EAAG,CACpB,MAAMC,EAAK4B,GAAM,EAAE,KAAM,GAAMnB,EAAE,EAAGmB,EAAE,SAAS,CAAC,EAAG1B,EAAK0B,GAAM7B,EAAE,KAAM,GAAM6B,EAAE,OAAO,CAAC,CAAC,EACvF,IAAIL,EAAI,CAAA,EACR,UAAWK,KAAK9B,EACdE,EAAE4B,CAAC,GAAKL,EAAE,KAAKK,CAAC,EAAG,MAAM,IAAI2I,GAAEhJ,EAAG,CAAE,aAAc,EAAE,CAAE,EAAGA,EAAI,CAAA,GAAMrB,EAAE0B,CAAC,GAAKL,EAAE,SAAW,MAAM,IAAIgJ,GAAEhJ,EAAG,CAAE,aAAc,EAAI,CAAA,EAAGA,EAAI,IAAK,MAAM,IAAIgJ,GAAE,CAAC3I,CAAC,EAAG,CAAE,aAAc,EAAI,CAAA,GAAKL,EAAE,KAAKK,CAAC,EAC3LL,EAAE,SAAW,MAAM,IAAIgJ,GAAEhJ,EAAG,CAAE,aAAc,EAAI,CAAA,EAClD,CACA,MAAMkL,GAAK,CAAC3M,EAAG,IAAM,CACnB,MAAMC,EAAID,EAAE,UAAWyB,GAAMd,EAAE,EAAGc,EAAE,UAAU,CAAC,EAAGvB,EAAIF,EAAE,MAAM,EAAGC,CAAC,EAClE,OAAOD,EAAE,MAAMC,CAAC,EAAE,OAAOC,CAAC,CAC5B,EAAG0M,GAAK,CAAC5M,EAAG,IAAM,CAChB,IAAIC,EAAID,EACR,MAAME,EAAKoD,GAAM3C,EAAE2C,EAAE,WAAY,EAAE,UAAU,GAAK3C,EAAE2C,EAAE,UAAW,EAAE,SAAS,EAC5E,IAAIlD,EAAIJ,EAAE,UAAUE,CAAC,EACrB,GAAIE,IAAM,GAAI,CACZ,MAAMkD,EAAItD,EAAE,IAAK+B,GAAMA,EAAE,QAAO,CAAE,EAClC,GAAIuB,EAAE,QAAS,EAAElD,EAAIkD,EAAE,UAAUpD,CAAC,EAAGE,IAAM,GACzC,MAAM,QAAQ,MACZkD,EAAE,IAAKvB,GAAMA,EAAE,IAAI,EACnB,EAAE,IACV,EAAS,IAAI,MAAM,mCAAmC,EAClD9B,EAAIqD,CACL,CACD,MAAM7B,EAAIxB,EAAE,MAAM,EAAGG,CAAC,EACtB,OAAOH,EAAE,MAAMG,CAAC,EAAE,OAAOqB,CAAC,CAC5B,EACA,SAASoL,GAAG7M,EAAG,EAAGC,EAAG,CACnB,OAAOD,EAAE,OAAQE,GAAM,CACrB,MAAME,EAAI,EAAE,OAAQkD,GAAM3C,EAAE2C,EAAE,WAAYpD,CAAC,GAAKS,EAAE2C,EAAE,UAAWpD,CAAC,CAAC,EACjE,GAAIE,EAAE,OAAS,EACb,MAAM,IAAI,MAAM,oDAAoD,EACtE,MAAMqB,EAAIrB,EAAE,IAAKkD,GAAMrD,EAAE,SAASqD,EAAE,QAAQ,CAAC,EAC7C,MAAO,EAAE7B,EAAE,MAAO6B,GAAMA,CAAC,GAAK,CAAC7B,EAAE,KAAM6B,GAAMA,CAAC,EAClD,CAAG,CACH,CACA,SAASwJ,GAAG9M,EAAG,EAAGC,EAAG,CACnB,IAAIC,EAAI,CAAA,EACR,MAAME,EAAI,CAAA,EAAIqB,EAAI,IAAI,MAAMzB,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,IAAM,EAAE,EAAG8B,EAAI,IAAI,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,IAAM,CAAE,CAAA,EAC3H,GAAI9B,EAAE,SAAS,QAAQ,CAACkC,EAAGC,IAAM,CAC/B,EAAE,SAAS,QAAQ,CAACC,EAAG,IAAM,CAC3B,KAAM,CAAE,cAAeC,EAAG,SAAU,CAAG,EAAG2H,GACxC9H,EACAE,EACAnC,CACR,EACMC,EAAE,KAAK,GAAGmC,CAAC,EAAGZ,EAAEU,CAAC,EAAE,KAAK,GAAGE,CAAC,EAAGP,EAAE,CAAC,EAAE,KAAK,GAAGO,CAAC,EAAGjC,EAAE,KAAK,GAAG,CAAC,EAC3D,MAAMkC,EAAI,EAAE,QAAS,GAAM,CACzB,EAAE,WACF,EAAE,SACV,CAAO,EACDpC,EAAE,KAAK,GAAGoC,CAAC,EAAGb,EAAEU,CAAC,EAAE,KAAK,GAAGG,CAAC,EAAGR,EAAE,CAAC,EAAE,KAAK,GAAGQ,CAAC,CACnD,CAAK,CACF,CAAA,EAAGpC,EAAIK,GAAGL,EAAGD,CAAC,EAAG,CAACC,EAAE,QAAUA,EAAE,SAAW,EAC1C,OAAO,KACT,MAAM,EAAI,CAAC,CAACgC,EAAGC,CAAC,IAAMA,EAAE,OAASD,EAAE,QAAQC,CAAC,EAAI,CAACD,CAAC,EAClD,IAAIH,EAAIgB,EAAG,CAAC/C,EAAE,SAAUyB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAGO,EAAIe,EAAG,CAAC,EAAE,SAAUjB,CAAC,CAAC,EAAE,QAAQ,CAAC,EACzE,GAAI5B,EAAI2M,GACN3M,EACA6B,EACA,CACD,EAAE,CAAC7B,EAAE,QAAU,CAACE,EAAE,OACjB,OAAO,KACT,GAAIA,EAAE,OAAQ,CACZ,MAAM8B,EAAI9B,EAAE,CAAC,EACb2B,EAAI6K,GACF7K,EACAG,CACD,EAAEF,EAAI4K,GACL5K,EACAE,CACN,CACA,KAAS,CACL,MAAMA,EAAIhC,EAAE,CAAC,EACb6B,EAAI4K,GAAG5K,EAAGG,CAAC,EAAGF,EAAI2K,GAAG3K,EAAGE,CAAC,CAC1B,CACD,IAAI,EAAI,MAAM,KACZwK,GACE3K,EACA7B,EACAE,CACD,CACL,EAAK6B,EAAI,MAAM,KACXyK,GACE1K,EACA9B,EACAE,CACD,CACL,EACE,OAAQ,CAACO,EACPsB,EAAE,CAAC,EAAE,UACL,EAAE,CAAC,EAAE,SACT,GAAO7B,EAAE,OAAS,GAAK6B,EAAE,CAAC,EAAE,gBAAkB,KAAOA,EAAIA,EAAE,IAAKC,GAAMA,EAAE,QAAS,CAAA,EAAE,QAAS,EAAEvB,EAAEsB,EAAE,CAAC,EAAE,UAAW,EAAE,CAAC,EAAE,SAAS,IAAM,EAAI,EAAE,IAAKC,GAAMA,EAAE,QAAS,CAAA,EAAE,QAAS,IAAIa,EAAG,CAAC,EAAGd,CAAC,CAAC,EAAE,IAAI,CAAC,CAACC,EAAGC,CAAC,IAAMD,EAAE,gBAAkB,GAAK9B,EAAE,KAAMgC,GAAMF,EAAE,SAAS,CAAC,EAAE,OAAOE,CAAC,CAAC,EAAI,CAACF,EAAG,MAAM,EAAI,CAACA,EAAGC,CAAC,CAAC,CAChS,CACA,SAAS4K,GAAG/M,EAAG,CACb,IAAI,EAAIA,EAAE,CAAC,EACX,UAAWC,KAAKD,EAAE,MAAM,CAAC,EACvB,EAAI,EAAE,OAAOC,CAAC,EAChB,GAAI,CAACU,EAAE,EAAE,WAAY,EAAE,SAAS,EAC9B,MAAM,QAAQ,MACZD,EAAE,EAAE,UAAU,EACdA,EAAE,EAAE,SAAS,CACnB,EAAO,IAAI,MAAM,oDAAoD,EACnE,OAAO,IAAIqK,EAAG,EAAE,QAAQ,CAC1B,CACA,SAASiC,GAAGhN,EAAG,EAAG,CAChB,MAAMC,EAAI8C,EAAG,CACX,EAAE,MAAM,EAAG,EAAE,EACb,EAAE,MAAM,CAAC,CACV,CAAA,EAAE,IAAI,CAAC,CAAC3C,EAAGqB,CAAC,IAAMsL,GAAG/M,EAAE,MAAMI,EAAGqB,CAAC,CAAC,CAAC,EACpC,IAAIvB,EAAIF,EAAE,MACR,EAAE,EAAE,OAAS,CAAC,CAClB,EACE,OAAO,EAAE,CAAC,IAAM,IAAME,EAAIA,EAAE,OAAOF,EAAE,MAAM,EAAG,EAAE,CAAC,CAAC,CAAC,GAAIC,EAAE,KAAK8M,GAAG7M,CAAC,CAAC,EAAGD,CACxE,CACA,SAASgN,GAAGjN,EAAG,CACb,GAAI,CAACA,EAAE,OACL,MAAO,GACT,MAAM,EAAIA,EAAE,IAAKI,GAAMA,EAAE,UAAU,EACnC,IAAIH,EAAID,EAAE,IAAKI,GAAMA,EAAE,SAAS,EAChCH,EAAIA,EAAE,MAAM,EAAE,EAAE,OAAOA,EAAE,MAAM,EAAG,EAAE,CAAC,EACrC,MAAMC,EAAI6C,EAAG,CAAC,EAAG9C,CAAC,CAAC,EAAE,QACnB,CAAC,CAACG,EAAGqB,CAAC,EAAGK,IAAMnB,EAAEP,EAAGqB,CAAC,EAAI,CAAA,EAAKK,CAClC,EACE,GAAI,CACF,OAAOkL,GAAGhN,EAAGE,CAAC,CAClB,MAAI,CACA,OAAO+L,GAAGjM,EAAE,QAASyB,GAAMA,EAAE,QAAQ,CAAC,EAAE,OAAQA,GAAMA,EAAE,OAAS,CAAC,EAAE,OAAQA,GAAMd,EAAEc,EAAE,CAAC,EAAE,WAAYA,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,IAAKA,GAAM,IAAIsJ,EAAGtJ,CAAC,CAAC,CAC/I,CACH,CACA,MAAMyL,GAAK,CAAClN,EAAG,IAAM,CACnB,GAAIA,EAAE,SAAW,EACf,MAAO,CAAC,CAAC,EACX,MAAMC,EAAID,EAAE,GAAG,EAAE,EACjB,OAAOW,EAAEV,EAAE,UAAW,EAAE,UAAU,EAAID,EAAE,MAAM,EAAG,EAAE,EAAE,OAAO,CAACC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAIU,EAAEV,EAAE,UAAW,EAAE,SAAS,EAAID,EAAE,MAAM,EAAG,EAAE,EAAE,OAAO,CAACC,EAAE,OAAO,EAAE,QAAO,CAAE,CAAC,CAAC,EAAID,EAAE,OAAO,CAAC,CAAC,CAAC,CAC1K,EAAGmN,GAAK,CAACnN,EAAG,IAAMA,EAAE,SAAW,EAAI,CAAC,CAAC,EAAIW,EAAEX,EAAE,CAAC,EAAE,WAAY,EAAE,SAAS,EAAI,CAAC,EAAE,OAAOA,EAAE,CAAC,CAAC,CAAC,EAAE,OAAOA,EAAE,MAAM,CAAC,CAAC,EAAI,CAAC,CAAC,EAAE,OAAOA,CAAC,EAC7H,SAASoN,GAAGpN,EAAG,EAAG,CAChB,YAAaC,EACb,aAAcC,CAChB,EAAG,CACD,MAAME,EAAI0M,GAAG9M,EAAG,CAAC,EACjB,GAAI,CAACI,EAAG,CACN,MAAM2B,EAAI/B,EAAE,SAAS,CAAC,EAAE,SAAUgC,EAAI,EAAE,SAASD,CAAC,EAAG,EAAI,EAAE,SAAS,CAAC,EAAE,SAAUE,EAAIjC,EAAE,SAAS,CAAC,EACjG,MAAO,CACL,UAAW,GACX,mBAAoBgC,EACpB,mBAAoBC,CAC1B,CACG,CACD,GAAI7B,EAAE,MAAM,CAAC,CAAG,CAAA2B,CAAC,IAAMA,IAAM,MAAM,EACjC,MAAO,CAAE,UAAW,IACtB,IAAIN,EAAI,KAAMK,EAAI,KAClB,MAAM,EAAI1B,EAAE,QAAQ,CAAC,CAAC2B,EAAGC,CAAC,IAAM,CAC9B,IAAI,EAAI,CAAA,EAAIC,EAAI,EAChB,GAAID,IAAM,OACR,OAAOF,IAAM,GAAKA,EAAI,EAAGC,GAAKD,IAAM,GAAKA,IAAM,GAAKA,EAAI,KAAM,CAAE,GAAIA,IAAM,MAAQL,EAAIA,EAAIA,EAAE,OAAOM,CAAC,EAAIN,EAAIM,EAAG,CAAA,IAAO,QAAQ,MAAM,iBAAiB,EAAG,CAAE,GAC5J,MAAMG,EAAIH,EAAE,SAAS,CAAC,EAAE,SAAUI,EAAI,EAAE,SAASD,CAAC,GACjDjC,IAAM,QAAUkC,GAAKlC,IAAM,UAAY,CAACkC,KAAOF,GAAK,EAAG,EAAIiL,GAAG,EAAGnL,CAAC,GACnE,MAAMK,EAAIJ,EAAE,SAAS,CAAC,EAAE,SAAU,EAAIhC,EAAE,SAASoC,CAAC,EAClD,GAAIlC,IAAM,QAAU,GAAKA,IAAM,UAAY,CAAC,EAAG,CAC7C,MAAMmC,EAAIL,EACVC,GAAK,EAAGA,IAAM,GAAK,EAAE,QAAU,EAAIiL,GAAG,EAAG7K,CAAC,EAAGZ,EAAI,MAAQ,EAAI,CAACY,CAAC,CAChE,CACD,OAAOP,IAAM,MAAQG,IAAM,GAAKR,IAAM,EAAI0L,GAAG,EAAG1L,CAAC,GAAIQ,IAAM,IAAMH,EAAIG,EAAGR,EAAI,MAAO,EAAE,OAAS,GAAKA,EAAI,KAAM,CAAE,EACnH,CAAG,EACD,OAAOwL,GAAG,CAAC,CACb,CACA,MAAMI,GAAK,CAACrN,EAAG,IAAM,CACnB,MAAMC,EAAImN,GAAGpN,EAAG,EAAG,CACjB,YAAa,SACb,aAAc,QAClB,CAAG,EACD,OAAO,MAAM,QAAQC,CAAC,EAAIA,EAAIA,EAAE,UAAY,CAACD,CAAC,EAAIC,EAAE,mBAAqB,CAAC,CAAC,EAAIA,EAAE,mBAAqB,CAACD,CAAC,EAAI,CAACA,EAAG,CAAC,CACnH,EAAGsN,GAAK,CAACtN,EAAG,IAAM,CAChB,MAAMC,EAAImN,GAAGpN,EAAG,EAAG,CACjB,YAAa,SACb,aAAc,MAClB,CAAG,EACD,OAAO,MAAM,QAAQC,CAAC,EAAIA,EAAIA,EAAE,UAAY,GAAKA,EAAE,mBAAqB,CAAE,EAAGA,EAAE,mBAAqB,CAACD,EAAG,CAAC,EAAI,CAACA,CAAC,CACjH,EAAGuN,GAAK,CAACvN,EAAG,IAAM,CAChB,MAAMC,EAAImN,GAAGpN,EAAG,EAAG,CACjB,YAAa,OACb,aAAc,MAClB,CAAG,EACD,OAAO,MAAM,QAAQC,CAAC,EAAIA,EAAIA,EAAE,UAAY,CAACD,CAAC,EAAIC,EAAE,mBAAqB,CAACD,CAAC,EAAIC,EAAE,mBAAqB,CAAC,CAAC,EAAI,EAC9G,EACA,SAASuN,GAAGxN,EAAG,CACb,MAAM,EAAoB,IAAI,IAAOC,EAAI,CAAA,EACzC,OAAOD,EAAE,QAAQ,CAACE,EAAGE,IAAM,CACzB,IAAIqB,EACJ,EAAE,IAAIrB,CAAC,EAAIqB,EAAI,EAAE,IAAIrB,CAAC,GAAKqB,EAAI,CAAE,QAAS,CAACvB,CAAC,EAAG,UAA2B,IAAI,IAAI,CAACE,CAAC,CAAC,CAAC,EAAIH,EAAE,KAAKwB,CAAC,GAAIzB,EAAE,MAAMI,EAAI,CAAC,EAAE,QAAQ,CAAC0B,EAAG,IAAM,CACrI,MAAMC,EAAIN,EAAE,QAASO,EAAI5B,EAAI,EAAI,EACjC,GAAIqB,EAAE,UAAU,IAAIO,CAAC,EACnB,OACF,IAAI,EAAI,CAACF,CAAC,EAAGG,EAAI,GACjB,GAAI,EAAE,IAAID,CAAC,IAAM,EAAI,EAAE,IAAIA,CAAC,EAAE,QAASC,EAAI,IAAK,CAACF,EAAE,KAChDK,GAAM,EAAE,KAAMqL,GAAMrL,EAAE,WAAWqL,CAAC,CAAC,CACrC,EACC,OACF,IAAItL,EACJJ,EAAE,OAAS,GAAK,EAAE,OAAS,EAAII,EAAIuL,GAAG3L,EAAG,CAAC,EAAII,EAAIwL,GAAG5L,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAGN,EAAE,UAAU,IAAIO,CAAC,EAAGP,EAAE,QAAUU,EAAGF,GAAK,EAAE,IAAID,EAAGP,CAAC,CAC1H,CAAK,CACL,CAAG,EAAGxB,EAAE,QAAQ,CAAC,CAAE,QAASC,CAAC,IAAOA,CAAC,CACrC,CACA,SAASyN,GAAG3N,EAAG,EAAG,CAChB,MAAMC,EAAIoN,GAAGrN,EAAE,QAAS,EAAE,OAAO,EAAGE,EAAI,EAAE,MAAM,QAAS4B,GAAMwL,GAAGxL,EAAG9B,EAAE,OAAO,CAAC,EAAGI,EAAIJ,EAAE,MAAM,QAAS8B,GAAMwL,GAAGxL,EAAG,EAAE,OAAO,CAAC,EAAGL,EAAIgL,GAAGzM,EAAE,MAAO,EAAE,KAAK,EAAE,QACvJ,CAAC,CAAC8B,EAAG,CAAC,IAAMyL,GAAGzL,EAAG,CAAC,CACvB,EACE,OAAO0K,GAAG,CACR,GAAGvM,EACH,GAAGC,EACH,GAAGE,EACH,GAAGqB,CACP,CAAG,CACH,CACA,SAASmM,GAAG5N,EAAG,EAAG,CAChB,GAAIA,EAAE,QAAU,EAAE,OAChB,OAAOwM,GAAGc,GAAGtN,EAAE,QAAS,EAAE,OAAO,CAAC,EACpC,GAAIA,EAAE,OAAQ,CACZ,MAAME,EAAIoN,GAAGtN,EAAE,QAAS,EAAE,OAAO,EAAGI,EAAI,EAAE,MAAM,QAC7CqB,GAAM8L,GAAG9L,EAAGzB,EAAE,OAAO,CAC5B,EACI,OAAOwM,GAAG,CAAC,GAAGtM,EAAG,GAAGE,CAAC,CAAC,CAC1B,SAAa,EAAE,QAAU,CAACJ,EAAE,QAAQ,WAAW,EAAE,OAAO,EACpD,GAAIA,EAAE,QAAQ,SAAS,EAAE,QAAQ,UAAU,EAAG,CAC5C,MAAME,EAAIwN,GACR1N,EAAE,MAAM,IAAKI,GAAM,IAAImL,EAAEnL,CAAC,CAAC,EAC3B,CAAC,CAAC,CACV,EACM,OAAOoM,GAAG,CACRxM,EAAE,QACF,GAAGE,EAAE,QAASE,GAAMA,EAAE,QAAQ,CACtC,CAAO,CACF,KACC,OAAO,CAACJ,CAAC,EACb,IAAIC,EAAI2N,GAAG,IAAIrC,EAAEvL,EAAE,OAAO,EAAG,CAAC,EAC9B,OAAOA,EAAE,MAAM,QAASE,GAAM,CAC5BD,EAAIA,EAAE,QAASG,GAAMwN,GAAGxN,EAAG,IAAImL,EAAErL,CAAC,CAAC,CAAC,CACrC,CAAA,EAAGD,CACN,CACA,SAAS4N,GAAG7N,EAAG,EAAG,CAChB,MAAMC,EAAIsN,GAAGvN,EAAE,QAAS,EAAE,OAAO,EACjC,GAAI,CAACC,EAAE,OACL,MAAO,GACT,IAAIC,EAAIsM,GAAGvM,CAAC,EACZ,OAAOC,EAAI,GACTA,EACAF,EAAE,MAAM,IAAKI,GAAM,IAAImL,EAAEnL,CAAC,CAAC,CAC/B,EAAK,GACDF,EACA,EAAE,MAAM,IAAKE,GAAM,IAAImL,EAAEnL,CAAC,CAAC,CAC/B,CACA,CACA,SAASsN,GAAG1N,EAAG,EAAG,CAChB,GAAI,CAACA,EAAE,OACL,OAAO,EACT,GAAI,CAAC,EAAE,OACL,OAAOA,EACT,GAAIA,EAAE,SAAW,GAAK,EAAE,OAAS,GAAK,EAAE,SAAW,GAAKA,EAAE,OAAS,EACjE,OAAOwN,GAAG,CAAC,GAAGxN,EAAG,GAAG,CAAC,CAAC,EACxB,GAAIA,EAAE,OAAS,GAAK,EAAE,OAAS,EAAG,CAChC,IAAIC,EAAIyN,GAAG,CAAC1N,EAAE,CAAC,CAAC,EAAG,CAAC,EACpB,OAAOA,EAAE,MAAM,CAAC,EAAE,QAASE,GAAM,CAC/BD,EAAIyN,GAAG,CAACxN,CAAC,EAAGD,CAAC,CACd,CAAA,EAAGA,CACL,CACD,OAAOD,EAAE,SAAW,GAAK,EAAE,SAAW,EAAI2N,GAAG3N,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAI,CAAA,CAC7D,CACA,SAAS,GAAGA,EAAG,EAAG,CAChB,GAAI,CAACA,EAAE,OACL,MAAO,GACT,GAAI,CAAC,EAAE,OACL,OAAOA,EACT,GAAIA,EAAE,SAAW,GAAK,EAAE,SAAW,EACjC,OAAO4N,GAAG5N,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EACtB,GAAIA,EAAE,OAAS,EACb,OAAOA,EAAE,QAASE,GAAM,GAAG,CAACA,CAAC,EAAG,CAAC,CAAC,EACpC,IAAID,EAAI2N,GAAG5N,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EACrB,OAAO,EAAE,MAAM,CAAC,EAAE,QAASE,GAAM,CAC/BD,EAAI,GAAGA,EAAG,CAACC,CAAC,CAAC,CACd,CAAA,EAAGD,CACN,CACA,SAAS6N,GAAG9N,EAAG,EAAG,CAChB,MAAO,CAACA,EAAE,QAAU,CAAC,EAAE,OAAS,CAAE,EAAGA,EAAE,SAAW,GAAK,EAAE,SAAW,EAAI6N,GAAG7N,EAAE,CAAC,EAAG,EAAE,CAAC,CAAC,EAAIA,EAAE,OAAS,EAAIA,EAAE,QAASC,GAAM6N,GAAG,CAAC7N,CAAC,EAAG,CAAC,CAAC,EAAI,EAAE,QAASA,GAAM6N,GAAG9N,EAAG,CAACC,CAAC,CAAC,CAAC,CACpK,QACA,MAAMqL,WAAW1I,EAAG,CAClB,YAAY,EAAI,CAAA,EAAI,CAAE,aAAc3C,EAAI,EAAI,EAAG,GAAI,CACjD,QAAS,KAAK,aAAe,KAAMA,GAAK8N,GAAG,CAAC,EAAG,KAAK,QAAU,CAC/D,CACD,IAAI,SAAU,CACZ,OAAO,KAAK,QAAQ,SAAW,CAChC,CACD,IAAI,aAAc,CAChB,GAAI,KAAK,QACP,OAAO,IAAI5N,GACb,GAAI,KAAK,eAAiB,KAAM,CAC9B,IAAI,EAAI,KAAK,QAAQ,CAAC,EAAE,YACxB,UAAWF,KAAK,KAAK,QAAQ,MAAM,CAAC,EAClC,EAAI,EAAE,MAAMA,EAAE,WAAW,EAC3B,KAAK,aAAe,CACrB,CACD,OAAO,KAAK,YACb,CACD,OAAQ,CACN,OAAO,IAAIqL,GAAG,KAAK,QAAQ,IAAK,GAAM,EAAE,MAAO,CAAA,CAAC,CACjD,CACD,UAAU,EAAG,CACX,OAAO,IAAIA,GAAG,KAAK,QAAQ,IAAKrL,GAAMA,EAAE,UAAU,CAAC,CAAC,CAAC,CACtD,CACD,SAAS,EAAG,CACV,OAAO,KAAK,QAAQ,KAAMA,GAAMA,EAAE,SAAS,CAAC,CAAC,CAC9C,CACD,WAAW,EAAG,CACZ,OAAO,KAAK,QAAQ,KACjBA,GAAM,EAAE,QAAQ,KAAMC,GAAMD,EAAE,WAAWC,CAAC,CAAC,CAClD,CACG,CACD,mBAAmB,EAAG,CACpB,OAAO,KAAK,QAAQ,QAASD,GAAM,aAAaqL,GAAK,EAAE,QAAQ,QAC5DpL,GAAMD,EAAE,mBAAmBC,CAAC,CAC9B,EAAGD,EAAE,mBAAmB,CAAC,CAAC,CAC5B,CACD,KAAK,EAAG,CACN,OAAO,IAAIqL,GAAGoC,GAAG,KAAK,QAAS,EAAE,OAAO,CAAC,CAC1C,CACD,IAAI,EAAG,CACL,OAAO,IAAIpC,GAAG,GAAG,KAAK,QAAS,EAAE,OAAO,CAAC,CAC1C,CACD,UAAU,EAAG,CACX,OAAO,IAAIA,GAAGwC,GAAG,KAAK,QAAS,EAAE,OAAO,CAAC,CAC1C,CACH,EACA,SAASC,GAAG/N,EAAG,CACb,SAAW,CAAC,EAAGC,CAAC,IAAKiK,GAAGlK,CAAC,EACvB,GAAI,EAAE,WAAWC,CAAC,EAChB,MAAM,IAAI,MAAM,oCAAoC,CAC1D,CC7mIA,MAAMmC,EAAE,CACN,YAAY,EAAGnC,EAAG,CAChB,KAAK,WAAa,EAAG,KAAK,UAAYA,CACvC,CACH,CACA,SAASS,GAAEV,EAAG,EAAG,CACf,GAAIA,aAAagC,EACf,OAAOkF,GAAElH,EAAG,CAAC,EACf,GAAIA,aAAaW,EACf,OAAOM,GAAEjB,EAAG,CAAC,EACf,MAAM,IAAI,MAAM,iBAAiB,CACnC,CACA,SAASkH,GAAElH,EAAG,EAAG,CACf,KAAM,CAAE,WAAYC,EAAG,UAAWC,CAAG,EAAGF,EAAGyB,EAAIzB,EAAE,aACjD,OAAO,IAAIgC,EACTsB,EAAErD,EAAGsD,EAAE9B,EAAG,CAAC,CAAC,EACZ6B,EAAEpD,EAAGqD,EAAE9B,EAAG,CAAC,CAAC,CAChB,CACA,CACA,SAASR,GAAEjB,EAAG,EAAG,CACf,MAAMC,EAAIqD,EACRtD,EAAE,WACFuD,EAAEyK,EAAEhO,EAAE,mBAAmB,EAAG,CAAC,CAC9B,EAAEE,EAAIoD,EACLtD,EAAE,UACFuD,EAAEyK,EAAEhO,EAAE,kBAAkB,EAAG,CAAC,CAChC,EAAKyB,EAAI,GAAKzB,EAAE,UAAY,EAAI,IAC9B,OAAOA,EAAE,OAASyB,EAAIzB,EAAE,UAAY,IAAIoC,GAAEnC,EAAGC,CAAC,EAAI,IAAIS,EAAEV,EAAGC,EAAGF,EAAE,OAAQA,EAAE,SAAS,CACrF,CACA,SAASmE,GAAEnE,EAAG,EAAGC,EAAG,CAClB,MAAMC,EAAIgE,GACRlE,EAAE,mBACF,EAAE,mBACN,EACE,GAAI,KAAK,IAAIE,CAAC,EAAI,MAChB,OAAO,KACT,MAAMuB,EAAIvB,EAAI,EAAI,EAAI,GAAIE,EAAI,KAAK,IAAIH,CAAC,EAAIwB,EAAGK,EAAIpB,GAAEV,EAAGI,CAAC,EAAG6B,EAAIvB,GAAE,EAAGN,CAAC,EACtE,GAAI0B,aAAaM,IAAKH,aAAaG,GACjC,OAAO,KACT,IAAIL,EACJ,GAAI,CACFA,EAAIsB,GAAEvB,EAAGG,EAAG,IAAI,EAAE,GAAG,EAAE,CAC3B,MAAI,CACA,OAAO,IACR,CACD,GAAI,CAACF,EACH,OAAO,KACT,MAAMG,EAAIH,EAAG0L,EAAI,CAAC,EAAGhE,IAAM,CACzB,MAAMlF,EAAIkF,EAAE,UAAUvH,CAAC,EAAGW,EAAI2E,GAAEjD,CAAC,EAAGmF,EAAIpG,EAAEpB,EAAGqB,EAAEV,EAAGzC,CAAC,CAAC,EACpD,OAAO,EAAE,QAAQsJ,CAAC,CACnB,EAAE,CAAC3I,CAAC,EAAI0M,EAAEzN,EAAG8B,CAAC,EAAG,CAAG,CAAAwC,CAAC,EAAImJ,EAAE,EAAGxL,CAAC,EAChC,MAAO,CAAE,MAAOlB,EAAG,OAAQuD,EAAG,OAAQpC,EACxC,CACA,SAAS+E,GAAEjH,EAAG,EAAGC,EAAG,CAClB,MAAMC,EAAIiE,GAAEnE,EAAG,EAAGC,CAAC,EACnB,GAAI,CAACC,EACH,OAAO,QAAQ,KACb,iCACAF,EAAE,KACF,EAAE,IACR,EAAO,CAACA,EAAG,CAAC,EACV,KAAM,CAAE,MAAOyB,EAAG,OAAQrB,CAAC,EAAKF,EAChC,MAAO,CACLuB,EACA2C,GAAE3C,EAAE,UAAWrB,EAAE,WAAYqB,EAAE,kBAAkB,EACjDrB,CACJ,CACA,CACA,SAAS0D,GAAE9D,EAAG,EAAGC,EAAG,CAClB,MAAMC,EAAIiE,GAAEnE,EAAG,EAAGC,CAAC,EACnB,GAAI,CAACC,EACH,OAAO,QAAQ,KACb,kCACAF,EAAE,KACF,EAAE,IACR,EAAO,CAACA,EAAG,CAAC,EACV,KAAM,CAAE,MAAOyB,EAAG,OAAQrB,CAAC,EAAKF,EAChC,MAAO,CAACuB,EAAG,IAAIO,EAAEP,EAAE,UAAWrB,EAAE,UAAU,EAAGA,CAAC,CAChD,CACA,SAASwH,GAAE5H,EAAG,CAAE,aAAc,EAAI,EAAI,EAAG,GAAI,CAC3C,OAAO,IAAI0B,GAAE,CAAC,IAAI0F,EAAE,IAAIG,EAAE,CAAC,GAAGvH,CAAC,EAAG,CAAE,aAAc,CAAC,CAAE,CAAC,CAAC,CAAC,CAC1D,CACA,IAAAiO,GAAA,KAAQ,CACN,YAAY,EAAI,CAAC,EAAG,CAAC,EAAG,CACtB,KAAK,QAAU,EAAG,KAAK,WAAa,EAAG,KAAK,gBAAkB,CAAE,EAAE,KAAK,YAAc,IACtF,CACD,cAAc,EAAG,CACf,GAAI,KAAK,gBAAgB,OACvB,MAAM,IAAI,MACR,8DACR,EACI,OAAO,KAAK,QAAU,EAAG,KAAK,WAAa,EAAG,IAC/C,CACD,YAAY,EAAG,CACb,GAAI9L,EAAE,EAAE,WAAY,EAAE,SAAS,EAC7B,MAAM,IAAI,MAAM,0BAA0B,EAAE,MAAM,EACpD,GAAI,CAAC,KAAK,YACR,OAAO,KAAK,gBAAgB,KAAK,CAAC,EAAG,KACvC,MAAMlC,EAAI,KAAK,gBAAgB,IAAG,EAClC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,oCAAoC,EACtD,MAAMC,EAAI,KAAK,YAAY,OAAS,UAAY4D,GAAImD,GACpD,OAAO,KAAK,gBAAgB,KAC1B,GAAG/G,EAAED,EAAG,EAAG,KAAK,YAAY,MAAM,CACnC,EAAE,KAAK,YAAc,KAAM,IAC7B,CACD,OAAO,EAAG,CACR,MAAMA,EAAI,IAAI+B,EAAE,KAAK,QAAS,CAAC,EAC/B,OAAO,KAAK,QAAU,EAAG,KAAK,YAAY/B,CAAC,CAC5C,CACD,KAAK,EAAGA,EAAG,CACT,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAI,EAAG,KAAK,QAAQ,CAAC,EAAIA,CAAC,CAAC,CAC9D,CACD,MAAM,EAAG,CACP,OAAO,KAAK,KAAK,EAAG,CAAC,CACtB,CACD,MAAM,EAAG,CACP,OAAO,KAAK,KAAK,EAAG,CAAC,CACtB,CACD,QAAQ,EAAG,CACT,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAG,CAAC,CAAC,CACxC,CACD,QAAQ,EAAG,CACT,OAAO,KAAK,OAAO,CAAC,EAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CACxC,CACD,YAAY,CAAC,EAAGA,CAAC,EAAG,CAClB,MAAMC,EAAID,EAAIoE,GAAG5C,EAAIZ,GAAE,EAAGX,CAAC,EAC3B,OAAO,KAAK,OAAOuB,CAAC,CACrB,CACD,UAAU,EAAGxB,EAAG,CACd,MAAMC,EAAID,EAAIoE,GAAG,CAAC5C,EAAGrB,CAAC,EAAIS,GAAE,EAAGX,CAAC,EAChC,OAAO,KAAK,KAAKuB,EAAGrB,CAAC,CACtB,CACD,YAAY,EAAG,CACb,MAAMH,EAAI,KAAK,gBAAgB,GAAG,EAAE,EACpC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,sDAAsD,EACxE,KAAM,CAACC,EAAGuB,CAAC,EAAIxB,EAAE,mBACjB,OAAO,KAAK,KAAKC,EAAI,EAAGuB,EAAI,CAAC,CAC9B,CACD,iBAAiB,EAAGxB,EAAG,CACrB,OAAO,KAAK,YAAYmF,GAAE,KAAK,QAASnF,EAAG,CAAC,CAAC,EAAG,KAAK,QAAU,EAAG,IACnE,CACD,eAAe,EAAGA,EAAGC,EAAGuB,EAAG,CACzB,KAAM,CAACrB,EAAG0B,CAAC,EAAI,KAAK,QACpB,OAAO,KAAK,iBACV,CAAC1B,EAAI,EAAG0B,EAAI7B,CAAC,EACb,CAACG,EAAIF,EAAG4B,EAAIL,CAAC,CACnB,CACG,CACD,aAAa,EAAGxB,EAAG,CACjB,GAAI,CAACA,EACH,OAAO,KAAK,OAAO,CAAC,EACtB,MAAMC,EAAI,IAAI8B,EAAE,KAAK,QAAS,CAAC,EAAGP,EAAIuM,EAAE9N,EAAE,mBAAmB,EAAGE,EAAIkD,EAAEpD,EAAE,SAAUqD,EAAE9B,EAAGxB,CAAC,CAAC,EACzF,OAAO,KAAK,iBAAiB,EAAGG,CAAC,CAClC,CACD,WAAW,EAAGH,EAAGC,EAAG,CAClB,OAAO,KAAK,aACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAGD,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCC,CACN,CACG,CACD,YAAY,EAAGD,EAAG,CAChB,OAAO,KAAK,WAAW,EAAG,EAAGA,CAAC,CAC/B,CACD,YAAY,EAAGA,EAAG,CAChB,OAAO,KAAK,WAAW,EAAG,EAAGA,CAAC,CAC/B,CACD,WAAW,EAAGA,EAAG,CACf,GAAI,CAACA,EACH,OAAO,KAAK,OAAO,CAAC,EACtB,MAAMC,EAAIuK,EAAE,KAAK,QAAS,CAAC,EAAI,EAAGhJ,EAAI,CAACxB,EAAIC,EAC3C,OAAO,KAAK,aAAa,EAAGuB,CAAC,CAC9B,CACD,SAAS,EAAGxB,EAAGC,EAAG,CAChB,OAAO,KAAK,WACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAGD,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCC,CACN,CACG,CACD,UAAU,EAAGD,EAAG,CACd,OAAO,KAAK,SAAS,EAAG,EAAGA,CAAC,CAC7B,CACD,UAAU,EAAGA,EAAG,CACd,OAAO,KAAK,SAAS,EAAG,EAAGA,CAAC,CAC7B,CACD,aAAa,EAAGA,EAAG,CACjB,MAAMC,EAAI,KAAK,gBAAgB,GAAG,EAAE,EACpC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,mDAAmD,EACrE,OAAO,KAAK,YACVkE,GACE,KAAK,QACL,EACAnE,GAAKC,EAAE,kBACR,CACF,EAAE,KAAK,QAAU,EAAG,IACtB,CACD,WAAW,EAAGD,EAAGC,EAAG,CAClB,KAAM,CAACuB,EAAGrB,CAAC,EAAI,KAAK,QACpB,OAAO,KAAK,aAAa,CAAC,EAAIqB,EAAGxB,EAAIG,CAAC,EAAGF,CAAC,CAC3C,CACD,UAAU,EAAGD,EAAGC,EAAGuB,EAAGrB,EAAG0B,EAAG,CAC1B,OAAO,KAAK,YACVlB,GAAE,KAAK,QAAS,EAAGX,EAAGC,EAAGuB,EAAGrB,EAAG0B,CAAC,CACjC,EAAE,KAAK,QAAU,EAAG,IACtB,CACD,QAAQ,EAAG7B,EAAGC,EAAGuB,EAAGrB,EAAG0B,EAAGG,EAAG,CAC3B,OAAO,KAAK,UACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAGhC,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCC,EACAuB,EACArB,EACA0B,EACAG,CACN,CACG,CACD,cAAc,EAAGhC,EAAG,CAClB,KAAM,CAACC,EAAGuB,CAAC,EAAIgB,GAAEJ,EAAE,EAAG,KAAK,OAAO,CAAC,EACnC,OAAO,KAAK,UACV,EACAnC,EAAI,EACJ,KAAK,IAAID,CAAC,EACVwB,EAAIL,GACJ,GACAnB,EAAI,CACV,CACG,CACD,YAAY,EAAGA,EAAGC,EAAG,CACnB,OAAO,KAAK,cACV,CAAC,EAAI,KAAK,QAAQ,CAAC,EAAGD,EAAI,KAAK,QAAQ,CAAC,CAAC,EACzCC,CACN,CACG,CACD,aAAa,EAAGD,EAAI,SAAU,CAC5B,GAAI,CAAC,KAAK,gBAAgB,OACxB,MAAM,IAAI,MAAM,gDAAgD,EAClE,OAAO,GAAK,KAAK,YAAc,CAAE,KAAMA,EAAG,OAAQ,CAAC,EAAI,MAAQ,IAChE,CACD,2BAA2B,EAAGA,EAAI,SAAU,CAC1C,GAAI,CAAC,EACH,OACF,MAAMC,EAAI,KAAK,gBAAgB,IAAG,EAAIuB,EAAI,KAAK,gBAAgB,QAC/D,GAAI,CAACvB,GAAK,CAACuB,EACT,MAAM,IAAI,MAAM,uCAAuC,EACzD,MAAMrB,EAAIH,IAAM,UAAY6D,GAAImD,GAChC,KAAK,gBAAgB,KAAK,GAAG7G,EAAEF,EAAGuB,EAAG,CAAC,CAAC,CACxC,CACD,MAAM,EAAI,GAAI,CACZ,GAAI,CAAC,KAAK,gBAAgB,OACxB,MAAM,IAAI,MAAM,sBAAsB,EACxC,MAAMxB,EAAI,KAAK,gBAAgB,CAAC,EAAGC,EAAI,KAAK,gBAAgB,GAAG,EAAE,EACjE,OAAOiC,EAAElC,EAAE,WAAYC,EAAE,SAAS,GAAK,KAAK,OAAOD,EAAE,UAAU,EAAG,KAAK,cAAgB,OAAS,KAAK,2BACnG,KAAK,YAAY,OACjB,KAAK,YAAY,IAClB,EAAE,KAAK,YAAc,MAAO2H,GAAE,KAAK,gBAAiB,CAAE,aAAc,CAAC,CAAE,CACzE,CACD,gBAAgB,EAAI,GAAI,CACtB,GAAI,CAAC,KAAK,gBAAgB,OACxB,MAAM,IAAI,MAAM,sBAAsB,EACxC,MAAM3H,EAAI,KAAK,gBAAgB,CAAC,EAAGC,EAAI,KAAK,gBAAgB,GAAG,EAAE,EAAGuB,EAAIY,EACtEnC,EAAE,UACFD,EAAE,UACR,EAAOG,EAAI,IAAI+G,EAAC,EAAG,WACb1F,EACAxB,EAAE,UACR,EAAO6B,EAAI,KAAK,gBAAgB,IACzBG,GAAMA,EAAE,UAAU7B,CAAC,EAAE,QAAS,CACrC,EACI,OAAO0B,EAAE,QAAO,EAAI8F,GAClB,CAAC,GAAG,KAAK,gBAAiB,GAAG9F,CAAC,EAC9B,CAAE,aAAc,CAAG,CACzB,CACG,CACD,UAAW,CACT,OAAO,IAAI4F,GAAE,CAAC,GAAG,KAAK,eAAe,CAAC,CACvC,CACH,EACA,SAAS6D,GAAEvL,EAAI,CAAC,EAAG,CAAC,EAAG,CACrB,OAAO,IAAI0E,GAAE1E,CAAC,CAChB,CCrRA,SAASqE,GAAE6J,EAAG,CACZ,GAAIA,aAAa5L,EACf,MAAO,CAAC4L,CAAC,EACX,GAAIA,aAAa7L,EACf,MAAO,CAAC,IAAIC,EAAE4L,CAAC,CAAC,EAClB,GAAIA,aAAa5K,GACf,OAAO4K,EAAE,QACX,MAAM,IAAI,MAAM,eAAe,CACjC,CACA,SAAS5C,GAAG4C,EAAGjO,EAAG,EAAI,KAAM,CAC1B,IAAI,EAAI,CAAA,EACR,MAAMwB,EAAI,CAAE,EAAEzB,EAAI,IAAI,MAAMC,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,IAAM,CAAE,CAAA,EACnEA,EAAE,SAAS,QAAQ,CAACsD,EAAGyK,IAAM,CAC3BE,EAAE,SAAS,QAAS,GAAM,CACxB,KAAM,CAAE,cAAenM,EAAG,SAAU0L,CAAG,EAAG3J,GACxCP,EACA,EACA,CACR,EACM,EAAE,KAAK,GAAGxB,CAAC,EAAG/B,EAAEgO,CAAC,EAAE,KAAK,GAAGjM,CAAC,EAAGN,EAAE,KAAK,GAAGgM,CAAC,EAC1C,MAAMvL,EAAIuL,EAAE,QAASzL,GAAM,CACzBA,EAAE,WACFA,EAAE,SACV,CAAO,EACD,EAAE,KAAK,GAAGE,CAAC,EAAGlC,EAAEgO,CAAC,EAAE,KAAK,GAAG9L,CAAC,CAClC,CAAK,CACF,CAAA,EAAG,EAAIsK,GAAG,EAAG,CAAC,EACf,MAAM1K,EAAI4L,EAAG,CAACzN,EAAE,SAAUD,CAAC,CAAC,EAAE,QAAQ,CAAC,CAACuD,EAAGyK,CAAC,IAAMA,EAAE,OAASzK,EAAE,QAAQyK,CAAC,EAAI,CAACzK,CAAC,CAAC,EAC/E,OAAO,MAAM,KACXkE,GACE3F,EACA,EACAL,CACD,CACL,CACA,CACA,SAASgJ,GAAEyD,EAAGjO,EAAG,EAAI,GAAI,CACvB,OAAOqL,GAAGrL,EAAGiO,CAAC,EAAE,OAAQzM,GAAM,CAC5B,MAAMzB,EAAIyB,EAAE,SAAS,CAAC,EAAE,SACxB,OAAOxB,EAAE,SAASD,CAAC,EAAI,CAAC,EAAI,CAACC,EAAE,SAASD,CAAC,CAC7C,CAAG,CACH,CACA,SAASU,GAAEwN,EAAGjO,EAAG,EAAI,GAAI,CACvB,OAAOqL,GAAGrL,EAAGiO,CAAC,EAAE,OAAQzM,GAAM,CAC5B,MAAMzB,EAAIyB,EAAE,SAAS,CAAC,EAAE,SACxB,OAAOxB,EAAE,SAASD,CAAC,EAAI,CAAC,EAAIC,EAAE,SAASD,CAAC,CAC5C,CAAG,CACH,CACA,SAAS0E,GAAEwJ,EAAGjO,EAAG,EAAI,GAAI,CACvB,MAAM,EAAIwK,GACRyD,EACAjO,EAAE,QACF,CACJ,EAAKwB,EAAIxB,EAAE,MAAM,QACZD,GAAMU,GAAEwN,EAAGlO,EAAG,CAAC,CACpB,EACE,MAAO,CAAC,GAAG,EAAG,GAAGyB,CAAC,CACpB,CAwBA,SAASsB,GAAGmL,EAAGjO,EAAG,CAChB,OAAO,IAAIqD,GACTF,GAAGiB,GAAE6J,CAAC,EAAG7J,GAAEpE,CAAC,CAAC,CACjB,CACA,CAMA,SAASiF,GAAGgJ,EAAGjO,EAAG,EAAI,GAAI,CACxB,GAAIA,aAAaoC,EACf,OAAOoI,GAAEyD,EAAGjO,EAAG,CAAC,EAClB,GAAIA,aAAaqC,EACf,OAAOoC,GAAEwJ,EAAGjO,EAAG,CAAC,EAClB,IAAI,EAAI,CAAC,IAAIwJ,GAAE,CAAC,GAAGyE,EAAE,QAAQ,CAAC,CAAC,EAC/B,OAAOjO,EAAE,QAAQ,QAASwB,GAAM,CAC9B,EAAI,EAAE,QAASzB,GAAM0E,GAAE1E,EAAGyB,EAAG,CAAC,CAAC,CAChC,CAAA,EAAG,CACN,CAuZA,SAAS8J,GAAE2C,EAAG,CACZ,GAAIA,aAAa/L,EACf,MAAO,KAAK+L,EAAE,UAAU,KAAK,GAAG,IAClC,GAAIA,aAAahK,EACf,MAAO,KAAKgK,EAAE,UAAUA,EAAE,YAAYA,EAAE,cAAgB,KAAK,GAAK,IAAM,OAAOA,EAAE,UAAY,IAAM,OAAOA,EAAE,UAAU,KAAK,GAAG,IAChI,GAAIA,aAAatN,EACf,MAAO,KAAKsN,EAAE,eAAeA,EAAE,eAAeA,EAAE,UAAYvI,MAAMuI,EAAE,WAAa,KAAK,GAAK,IAAM,OAAOA,EAAE,UAAY,IAAM,OAAOA,EAAE,UAAU,KAAK,GAAG,IACzJ,MAAM,IAAI,MAAM,sBAAsB,CACxC,CACA,SAASvG,GAAGuG,EAAG,CACb,MAAMjO,EAAI,KAAKiO,EAAE,WAAW,KAAK,GAAG,IAAK,EAAIA,EAAE,SAAS,IAAI3C,EAAC,EAAE,KAAK,GAAG,EACvE,MAAO,GAAGtL,KAAK,KACjB,CACA,SAAS4B,GAAGqM,EAAG,CACb,MAAO,YAAYA,EAAE,SAAS,IAAIvG,EAAE,EAAE,KAAK,GAAG,OAChD,CACA,SAAS/E,GAAGsL,EAAG,CACb,MAAO;AAAA,IACLA,EAAE,QAAQ,IAAIrM,EAAE,EAAE,KAAK;AAAA,CAC1B;AAAA,KAED,CACA,SAASvB,GAAG4N,EAAG,CACb,MAAMjO,EAAI,KAAKiO,EAAE,WAAW,KAAK,GAAG,IAAK,EAAIA,EAAE,SAAS,IAAI3C,EAAC,EAAE,KAAK,GAAG,EACvE,MAAO,GAAGtL,KAAK,GACjB,CACA,SAAS4I,GAAGqF,EAAGjO,EAAI,EAAG,CACpB,MAAM,EAAIiO,EAAE,KAAOjO,EAAG,EAAIiO,EAAE,KAAOjO,EACnC,MAAO,GAAG,KAAK,KAAKiO,EAAE,MAAQ,EAAIjO,KAAKiO,EAAE,OAAS,EAAIjO,GACxD,CACA,SAASyH,GAAEwG,EAAGjO,EAAG,EAAI,EAAG,EAAG,CACzB,MAAMwB,EAAIoH,GAAG5I,EAAG,CAAC,EAAGD,EAAI,EAAI,UAAUC,EAAE,MAAQ,EAAI,IAAI,cAAcA,EAAE,OAAS,EAAI,IAAI,KAAO,GAChG,MAAO;AAAA,iEACwDwB,wFAAwFzB;AAAA,MACnJkO;AAAA,OAEN,CACA,SAAS9M,GAAE8M,EAAG,CACZ,GAAIA,aAAa5K,GACf,OAAOV,GAAGsL,CAAC,EACb,GAAIA,aAAa5L,EACf,OAAOT,GAAGqM,CAAC,EACb,GAAIA,aAAa7L,EACf,MAAO,YAAYsF,GAAGuG,CAAC,QACzB,GAAIA,aAAazE,GACf,MAAO,YAAYnJ,GAAG4N,CAAC,QACzB,GAAIA,aAAahK,GAAKgK,aAAa/L,GAAK+L,aAAatN,EACnD,MAAO,YAAY,KAAKsN,EAAE,WAAW,KAAK,GAAG,OAAO3C,GAClD2C,CACD,QACH,MAAM,IAAI,MAAM,oBAAoB,CACtC,CACA,MAAM7I,GAAK6I,GAAM,UAAWA,EAAIA,EAAE,MAAQA,EAAG9I,GAAI,CAAC8I,EAAGjO,IAAM,CACzD,GAAI,EAAE,UAAWiO,GACf,OAAOjO,EACT,KAAM,CAAE,MAAO,CAAG,EAAGiO,EACrB,OAAO,EAAI,cAAc,MAAMjO,QAAUA,CAC3C,EACA,SAAS8D,GAAGmK,EAAG,CACb,OAAQjO,EAAI,EACZ,KAAM,EAAI,IACZ,EAAI,GAAI,CACN,GAAI,MAAM,QAAQiO,CAAC,EAAG,CACpB,MAAMzM,EAAIyM,EAAE,IAAK3K,GAAM8B,GAAE9B,CAAC,EAAE,QAAQ,EAAGvD,EAAIyB,EAAE,IAAI,CAAC8B,EAAGyK,IAAM5I,GAAE8I,EAAEF,CAAC,EAAG5M,GAAEmC,CAAC,CAAC,CAAC,EAAE,KAAK;AAAA,CAClF,EAAGzB,EAAIL,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC8B,EAAGyK,IAAMzK,EAAE,MAAMyK,EAAE,WAAW,EAAGvM,EAAE,CAAC,EAAE,WAAW,EACxE,OAAOiG,GAAE1H,EAAG8B,EAAG7B,EAAG,CAAC,CACpB,CACD,MAAM,EAAIoF,GAAE6I,CAAC,EAAE,OAAM,EACrB,OAAOxG,GACLtC,GAAE8I,EAAG9M,GAAE,CAAC,CAAC,EACT,EAAE,YACFnB,EACA,CACJ,CACA,CChkBO,MAAMkO,WAAgBC,EAAuB,CAMlD,YACEC,EACA,CACE,SAAAC,EAAW,CAAC,EACZ,UAAAC,EAAY,CAAC,EACb,kBAAAC,EAAoB,CAAC,EACrB,mBAAAC,EAAqB,CAAC,CACxB,EAKI,GACJ,CACM,QACN,KAAK,KAAOJ,EACP,KAAA,SAAW,CAAC,GAAGC,CAAQ,EAC5B,KAAK,mBAAqB,CAAC,GAAGC,EAAW,GAAGE,CAAkB,EACzD,KAAA,kBAAoB,CAAC,GAAGD,CAAiB,CAChD,CAEA,IAAI,WAAY,CACd,MAAO,CAAC,GAAG,KAAK,kBAAmB,GAAG,KAAK,kBAAkB,CAC/D,CAEA,OAAQ,CACC,OAAA,IAAIL,GAAQ,KAAK,KAAM,CAC5B,SAAU,CAAC,GAAG,KAAK,QAAQ,EAC3B,kBAAmB,CAAC,GAAG,KAAK,iBAAiB,EAC7C,mBAAoB,CAAC,GAAG,KAAK,kBAAkB,CAAA,CAChD,CACH,CAEA,WAAWO,EAAa,CACjB,YAAA,SAAS,KAAKA,CAAG,EACf,IACT,CAEA,YAAYC,EAAcC,EAAsC,YAAa,CACvEA,IAAc,WACX,KAAA,kBAAkB,KAAKD,CAAI,EAE3B,KAAA,mBAAmB,KAAKA,CAAI,CAErC,CAEA,SACEA,EACAC,EAAsC,YACtC,CACA,MAAMC,EAAqBF,aAAgBR,GAAUQ,EAAK,KAAOA,EAE3DG,EAAc,KAAK,KAAK,mBAAmBD,CAAS,EAC1D,OAAID,IAAc,WACX,KAAA,kBAAkB,KAAK,GAAGE,CAAW,EAErC,KAAA,mBAAmB,KAAK,GAAGA,CAAW,EAG7C,KAAK,SAASH,CAAI,EACX,IACT,CAEA,SAASI,EAA0B,CAC7B,IAAAF,EAEJ,OAAIE,aAAiBZ,IACnBU,EAAYE,EAAM,KAClB,KAAK,SAAS,KAAK,GAAGA,EAAM,QAAQ,EACpC,KAAK,kBAAkB,KAAK,GAAGA,EAAM,iBAAiB,EACtD,KAAK,mBAAmB,KAAK,GAAGA,EAAM,kBAAkB,GAE5CF,EAAAE,EAGd,KAAK,KAAO,KAAK,KAAK,KAAKF,CAAS,EAC7B,IACT,CAEA,SAASG,EAAgB,CACvB,YAAK,KAAON,GAAI,KAAK,KAAMM,CAAK,EAC3B,KAAA,SAAW,KAAK,SAAS,QAASN,GACrCO,GAAYP,EAAKM,EAAO,EAAI,CAAA,EAE9B,KAAK,WAAWA,CAAK,EACd,IACT,CAEA,WAAWA,EAAgB,CACpB,KAAA,mBAAqB,KAAK,mBAAmB,QAASL,GACzDM,GAAYN,EAAMK,EAAO,EAAI,CAAA,EAE1B,KAAA,kBAAoB,KAAK,kBAAkB,QAASL,GACvDM,GAAYN,EAAMK,EAAO,EAAI,CAAA,CAEjC,CAEA,UAAUE,EAA8B,CAW/B,OAVY,IAAIf,GAAQ,KAAK,KAAK,UAAUe,CAAM,EAAG,CAC1D,SAAU,KAAK,SAAS,IAAKR,GAAQA,EAAI,UAAUQ,CAAM,CAAC,EAC1D,kBAAmB,KAAK,kBAAkB,IAAKP,GAC7CA,EAAK,UAAUO,CAAM,CACvB,EACA,mBAAoB,KAAK,mBAAmB,IAAKP,GAC/CA,EAAK,UAAUO,CAAM,CACvB,CAAA,CACD,CAGH,CAEA,OAAQ,CACN,MAAMC,EAAuD,CAAA,EAC7D,OAAI,KAAK,MACPA,EAAO,KAAK,CAAE,MAAO,KAAK,KAAM,MAAO,MAAO,EAE5C,KAAK,SAAS,QACX,KAAA,SAAS,IAAKH,GAAUG,EAAO,KAAK,CAAE,MAAAH,EAAO,MAAO,KAAM,CAAC,CAAC,EAG/D,KAAK,mBAAmB,QAC1B,KAAK,mBAAmB,IAAKA,GAC3BG,EAAO,KAAK,CAAE,MAAAH,EAAO,MAAO,QAAS,CAAA,EAIrC,KAAK,kBAAkB,QACzB,KAAK,kBAAkB,IAAKA,GAC1BG,EAAO,KAAK,CAAE,MAAAH,EAAO,MAAO,OAAQ,CAAA,EAIjCI,GAAUD,EAAQ,CAAE,KAAM,IAAM,CAAA,CACzC,CACF,CClIA,SAASE,GACPC,EACAC,EACA,CACE,OAAAC,EAAS,EACT,YAAAC,EAAc,EACd,gBAAAC,EAAkB,UAClB,gBAAiBC,EACjB,iBAAkBC,EAClB,oBAAAC,EACA,qBAAAC,CACF,EAA2B,GAC3B,CACA,MAAMC,EAAkBJ,GAAwBF,EAC1CO,EAAmBJ,GAAyBH,EAE5CQ,EAAYC,GAAK,CAAC,CAACZ,EAAQ,EAAG,CAAC,CAAC,EAAE,MAAMA,CAAK,EAEnD,OAAIU,GACGF,GAAwBJ,KAAqB,WAChDO,EAAU,WAAW,CAACD,EAAkBA,EAAkB,CAAC,GAAI,CAAC,CAAC,EACvDC,EAAA,MAAMV,EAASS,CAAgB,GAE/BC,EAAA,KAAK,CAACD,EAAkBT,CAAM,EAG1CU,EAAU,MAAMV,CAAM,EAGxBU,EAAU,aAAaT,CAAM,EAC7BS,EAAU,MAAM,CAACX,EAAQS,EAAkBC,CAAgB,EAC3DC,EAAU,aAAaT,CAAM,EAEzBO,GACGF,GAAuBH,KAAqB,WACrCO,EAAA,MAAM,CAACV,EAASQ,CAAe,EACzCE,EAAU,aAAa,CAAC,CAACX,EAAQ,EAAG,CAAC,CAAC,GAEtCW,EAAU,OAAO,CAAC,CAACX,EAAQ,EAAG,CAAC,CAAC,EAGxBW,EAAA,MAAM,CAACV,CAAM,EAGlBU,EAAU,OACnB,CAEO,SAASE,GACdb,EACAC,EACAa,EAAiC,CAAA,EACjC,CACO,OAAAf,GAASC,EAAOC,EAAQa,CAAO,CACxC,CAEO,SAASC,GACdf,EACAC,EACAa,EAAiC,CAAA,EACjC,CACA,OAAOf,GAASC,EAAOC,EAAQa,CAAO,EAAE,OAAO,GAAG,CACpD,CAEgB,SAAAE,GACdhB,EACAC,EACA,CACE,eAAAgB,EACA,kBAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,GAAGN,CACL,EAA4B,GAC5B,CACO,OAAAf,GAASC,EAAOC,EAAQ,CAC7B,gBAAiBgB,EACjB,iBAAkBC,EAClB,oBAAqBC,EACrB,qBAAsBC,EACtB,GAAGN,CAAA,CACJ,EAAE,OAAO,EAAE,CACd,CAEO,SAASO,GACdrB,EACAC,EACAa,EAAkC,CAAA,EAClC,CACA,OAAOE,GAAShB,EAAOC,EAAQa,CAAO,EAAE,OAAO,GAAG,CACpD,CAEO,MAAMQ,GAAY,CACvB,MAAOD,GACP,KAAML,GACN,IAAKH,GACL,OAAQE,EACV,EC1GMQ,GAAW,CAACvB,EAAeC,IACxBW,GAAK,CAAC,CAACZ,EAAQ,EAAG,CAAC,CAAC,EACxB,KAAKC,EAAQ,CAACA,CAAM,EACpB,MAAMD,EAAQ,EAAIC,CAAM,EACxB,KAAKA,EAAQA,CAAM,EAIjB,MAAMuB,WAAqB1C,EAA4B,CAI5D,YACEkB,EACAyB,EAAiB,GACjB,CAGI,GAFE,QAEF,OAAOzB,GAAU,SAAU,CAC7B,KAAK,IAAMA,EAAM,IACjB,KAAK,OAASA,EAAM,OACpB,KAAK,KAAOA,EAAM,KAClB,MACF,CAEA,MAAM0B,EAAMH,GAASvB,EAAOyB,EAAiB,GAAG,EAE3C,KAAA,IAAMC,EAAI,WACV,KAAA,OAASA,EAAI,QAEb,KAAA,KAAOH,GAASvB,EAAQ,EAAIyB,EAAgB,EAAIA,CAAc,EAChE,MAAA,EACA,OAAO,GAAG,CACf,CAEA,OAAQ,CACC,OAAA,IAAID,GAAa,IAAI,CAC9B,CAEA,UAAU5B,EAA8B,CACtC,OAAO,IAAI4B,GAAa,CACtB,IAAK,KAAK,IAAI,UAAU5B,CAAM,EAC9B,OAAQ,KAAK,OAAO,UAAUA,CAAM,EACpC,KAAM,KAAK,KAAK,UAAUA,CAAM,CAAA,CACjC,CACH,CAEA,QAAQ+B,EAAkB,CAChBA,EAAA,WAAW,KAAK,MAAM,EACtBA,EAAA,WAAW,KAAK,GAAG,CAC7B,CAEA,SAASA,EAAkB,CACjBA,EAAA,SAAS,KAAK,IAAI,CAC5B,CACF,CCrDA,MAAMC,WAA2B9C,EAAkC,CACjE,YAAmB+C,EAAkB,CAC7B,QADW,KAAA,OAAAA,EAEjB,KAAK,OAASA,CAChB,CAEA,UAAUjC,EAA8B,CACtC,OAAO,IAAIgC,GAAmB,KAAK,OAAO,IAAIhC,EAAO,SAAS,CAAC,CACjE,CAEA,WAAmC9O,EAAW,CACrC,OAAA,KAAK,OAAO,IAAKkC,GAAMlC,EAAE,YAAYkC,CAAC,CAAC,CAChD,CAEA,gBAAmDlC,EAAW,CACrD,OAAA,KAAK,OAAO,IAAKkC,GAAMlC,EAAE,QAAQ,YAAYkC,CAAC,CAAC,CACxD,CACF,CAEO,SAAS8O,GACdC,EACAC,EACAC,EAAW,EACXC,EAAS,EACT,CACI,GAAAH,GAAcC,EAAc,EACxB,MAAA,IAAI,MAAM,uDAAuD,EAGzE,MAAMG,EAAe,KAAK,IACxB,KAAK,OAAOJ,EAAa,EAAIG,IAAWF,GAAeC,EAAW,GAAG,EACrE,CAAA,EAGIG,GADYL,EAAa,EAAIG,EAASC,EAAeH,IAC9BG,EAAe,GACtCN,EAAmB,CAAA,EACzB,QAASnR,EAAI,EAAGA,EAAIyR,EAAczR,IACzBmR,EAAA,KACLK,EAASxR,GAAKsR,EAAcI,GAAWL,EAAa,EAAIC,EAAc,CAAA,EAGnE,OAAA,IAAIJ,GAAmBC,EAAO,IAAK7O,GAAM,CAACA,EAAG,CAAC,CAAC,CAAC,CACzD,CAEO,SAASqP,GACdC,EACAC,EACAjD,EAAuB,IACvB,CACM,MAAAkD,EAAcF,GAAOC,EAAQ,GAC7BV,EAAmB,CAAA,EACzB,QAASnR,EAAI,EAAGA,EAAI6R,EAAO7R,IACzBmR,EAAO,KAAKnR,EAAI4R,EAAME,EAAc,CAAC,EAEvC,OAAO,IAAIZ,GACTC,EAAO,IAAK7O,GAAOsM,EAAU,YAAY,IAAM,IAAM,CAACtM,EAAG,CAAC,EAAI,CAAC,EAAGA,CAAC,CAAE,CAAA,CAEzE"}
|
|
1
|
+
{"version":3,"file":"dielines.umd.cjs","sources":["../../pantograph/dist/Diagram-8c3c5e1b.js","../../pantograph/dist/draw-825692f1.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["function Lt(i, t, n, e) {\n return i <= e && t >= n;\n}\nclass ft {\n constructor(t = 1 / 0, n = 1 / 0, e = -1 / 0, s = -1 / 0) {\n this.xMin = t, this.yMin = n, this.xMax = e, this.yMax = s;\n }\n get width() {\n return this.xMax - this.xMin;\n }\n get height() {\n return this.yMax - this.yMin;\n }\n get center() {\n return [(this.xMin + this.xMax) / 2, (this.yMin + this.yMax) / 2];\n }\n grow(t) {\n return new ft(\n this.xMin - t,\n this.yMin - t,\n this.xMax + t,\n this.yMax + t\n );\n }\n contains(t) {\n const [n, e] = t;\n return Lt(this.xMin, this.xMax, n, n) && Lt(this.yMin, this.yMax, e, e);\n }\n overlaps(t) {\n return Lt(this.xMin, this.xMax, t.xMin, t.xMax) && Lt(this.yMin, this.yMax, t.yMin, t.yMax);\n }\n addPoint(t) {\n const [n, e] = t;\n return new ft(\n Math.min(this.xMin, n),\n Math.min(this.yMin, e),\n Math.max(this.xMax, n),\n Math.max(this.yMax, e)\n );\n }\n merge(t) {\n return new ft(\n Math.min(this.xMin, t.xMin),\n Math.min(this.yMin, t.yMin),\n Math.max(this.xMax, t.xMax),\n Math.max(this.yMax, t.yMax)\n );\n }\n intersection(t) {\n return new ft(\n Math.max(this.xMin, t.xMin),\n Math.max(this.yMin, t.yMin),\n Math.min(this.xMax, t.xMax),\n Math.min(this.yMax, t.yMax)\n );\n }\n}\nfunction me(i) {\n return i.reduce((t, n) => t.addPoint(n), new ft());\n}\nconst _e = (i, t = 1e-9) => {\n let n = i;\n return Math.abs(i) < t && (n = 0), n.toFixed(-Math.log10(t));\n};\nfunction dt(i, t = 1e-9) {\n return Array.from(\n new Map(\n i.map(([n, e]) => [\n `[${_e(n, t)},${_e(e, t)}]`,\n [n, e]\n ])\n ).values()\n );\n}\nconst ge = Math.PI / 180, wn = 180 / Math.PI, G = (i) => `[${i[0]}, ${i[1]}]`, E = ([i, t], [n, e], s = 1e-9) => Math.abs(i - n) <= s && Math.abs(t - e) <= s, Z = ([i, t], [n, e]) => [i + n, t + e], L = ([i, t], [n, e]) => [i - n, t - e], at = ([i, t]) => i * i + t * t, dn = ([i, t]) => Math.sqrt(at([i, t])), st = ([i, t], n) => [i * n, t * n], Et = ([i, t], [n, e] = [0, 0]) => (i - n) ** 2 + (t - e) ** 2, W = (i, t = [0, 0]) => Math.sqrt(Et(i, t));\nfunction bt([i, t], [n, e]) {\n return i * e - t * n;\n}\nfunction le([i, t], [n, e]) {\n return i * n + t * e;\n}\nfunction Q([i, t]) {\n const n = W([i, t]);\n return [i / n, t / n];\n}\nfunction xt(i, t) {\n const n = Math.cos(t) * i, e = Math.sin(t) * i;\n return [n, e];\n}\nfunction Pn([i, t]) {\n return Math.atan2(t, i);\n}\nfunction yn(i) {\n const t = W(i), n = Pn(i);\n return [t, n];\n}\nfunction pe(i, t, n = 1e-9) {\n const e = bt(i, t), s = at(i), r = at(t);\n return e * e < s * r * n * n;\n}\nfunction et(i) {\n return [-i[1], i[0]];\n}\nfunction Xt(i) {\n return [i[1], -i[0]];\n}\nfunction Mn(i, t, n) {\n return E(n, i) || pe(L(n, i), t);\n}\nconst St = (i, t) => {\n const [n, e, s, r, o, l, a, h, c] = i, [u, f, p, g, w, P, m, d, y] = t;\n return [\n n * u + e * g + s * m,\n n * f + e * w + s * d,\n n * p + e * P + s * y,\n r * u + o * g + l * m,\n r * f + o * w + l * d,\n r * p + o * P + l * y,\n a * u + h * g + c * m,\n a * f + h * w + c * d,\n a * p + h * P + c * y\n ];\n}, bn = (i) => {\n const [t, n, e, s, r, o, l, a, h] = i, c = t * (r * h - o * a) - n * (s * h - o * l) + e * (s * a - r * l);\n return [\n (r * h - o * a) / c,\n (e * a - n * h) / c,\n (n * o - e * r) / c,\n (o * l - s * h) / c,\n (t * h - e * l) / c,\n (e * s - t * o) / c,\n (s * a - r * l) / c,\n (n * l - t * a) / c,\n (t * r - n * s) / c\n ];\n}, En = (i) => {\n const [t, n, e, s, r, o, l, a, h] = i;\n return [t, s, l, n, r, a, e, o, h];\n};\nclass tt {\n constructor(t) {\n this._matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1], t && (this._matrix = [...t]);\n }\n clone() {\n return new tt(this._matrix);\n }\n transpose() {\n return this._matrix = En(this._matrix), this;\n }\n inverse() {\n return this._matrix = bn(this._matrix), this;\n }\n translate(t, n) {\n return this._matrix = St(this._matrix, [1, 0, t, 0, 1, n, 0, 0, 1]), this;\n }\n rotate(t, n) {\n const e = Math.cos(t), s = Math.sin(t), r = [e, -s, 0, s, e, 0, 0, 0, 1];\n return n && this.translate(n[0], n[1]), this._matrix = St(this._matrix, r), n && this.translate(-n[0], -n[1]), this;\n }\n mirrorX() {\n return this._matrix = St(this._matrix, [1, 0, 0, 0, -1, 0, 0, 0, 1]), this;\n }\n mirrorY() {\n return this._matrix = St(this._matrix, [-1, 0, 0, 0, 1, 0, 0, 0, 1]), this;\n }\n mirrorLine(t, n) {\n const [e, s] = t, r = Math.atan2(s, e);\n return n && this.translate(n[0], n[1]), this.rotate(r), this.mirrorX(), this.rotate(-r), n && this.translate(-n[0], -n[1]), this;\n }\n mirrorCenter(t) {\n return t && this.translate(t[0], t[1]), this._matrix = St(this._matrix, [-1, 0, 0, 0, -1, 0, 0, 0, 1]), t && this.translate(-t[0], -t[1]), this;\n }\n scale(t, n) {\n return n && this.translate(n[0], n[1]), this._matrix = St(this._matrix, [t, 0, 0, 0, t, 0, 0, 0, 1]), n && this.translate(-n[0], -n[1]), this;\n }\n transform(t) {\n const [n, e] = t, [s, r, o, l, a, h] = this._matrix;\n return [s * n + r * e + o, l * n + a * e + h];\n }\n transformAngle(t) {\n const [n, e] = this.transform([Math.cos(t), Math.sin(t)]), [s, r] = this.transform([0, 0]);\n return Math.atan2(e - r, n - s);\n }\n keepsOrientation() {\n const [t, , , , n] = this._matrix;\n return t * n > 0;\n }\n scaleFactor() {\n const [t, , , n] = this._matrix;\n return Math.sqrt(t * t + n * n);\n }\n}\nclass Kt {\n translateX(t) {\n const n = new tt().translate(t, 0);\n return this.transform(n);\n }\n translateY(t) {\n const n = new tt().translate(0, t);\n return this.transform(n);\n }\n translate(t, n) {\n const e = new tt().translate(t, n);\n return this.transform(e);\n }\n translateTo([t, n]) {\n const e = new tt().translate(t, n);\n return this.transform(e);\n }\n rotate(t, n) {\n const e = new tt().rotate(\n t * ge,\n n\n );\n return this.transform(e);\n }\n scale(t, n) {\n const e = new tt().scale(t, n);\n return this.transform(e);\n }\n mirrorCenter(t) {\n const n = new tt().mirrorCenter(t);\n return this.transform(n);\n }\n mirror(t = \"x\", n) {\n const e = new tt();\n return t === \"x\" ? e.mirrorX() : t === \"y\" ? e.mirrorY() : e.mirrorLine(t, n), this.transform(e);\n }\n}\nclass Tt extends Kt {\n constructor(t, n) {\n super(), this.firstPoint = t, this.lastPoint = n, this.precision = 1e-9, this.firstPoint = t, this.lastPoint = n;\n }\n get repr() {\n return `${this.segmentType} ${G(this.firstPoint)} - ${G(\n this.lastPoint\n )}`;\n }\n get info() {\n return this.repr;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nclass B extends Tt {\n constructor() {\n super(...arguments), this.segmentType = \"LINE\", this._V = null, this._slope = null, this._yIntercept = null, this._boundingBox = null;\n }\n isValidParameter(t) {\n const n = this.length * this.precision;\n return t >= -n && 1 - t >= -n;\n }\n paramPoint(t) {\n return Z(this.firstPoint, st(this.V, t));\n }\n get length() {\n return W(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return Et(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = L(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [t, n] = this.V;\n this._slope = n / t;\n }\n return this._slope;\n }\n get yIntercept() {\n return this._yIntercept === null && (this._yIntercept = this.firstPoint[1] - this.slope * this.firstPoint[0]), this._yIntercept;\n }\n get midPoint() {\n return Z(this.firstPoint, st(this.V, 0.5));\n }\n isSame(t) {\n return t instanceof B ? E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) || E(this.lastPoint, t.firstPoint) && E(this.firstPoint, t.lastPoint) : !1;\n }\n clone() {\n return new B(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new B(this.lastPoint, this.firstPoint);\n }\n get boundingBox() {\n return this._boundingBox === null && (this._boundingBox = new ft(\n Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n )), this._boundingBox;\n }\n distanceFrom(t) {\n const n = L(t, this.firstPoint), e = le(n, this.V) / this.squareLength;\n if (e < 0)\n return W(t, this.firstPoint);\n if (e > 1)\n return W(t, this.lastPoint);\n const s = this.paramPoint(e);\n return W(t, s);\n }\n isOnSegment(t) {\n if (E(t, this.firstPoint, this.precision))\n return !0;\n const n = L(t, this.firstPoint);\n if (!pe(this.V, n))\n return !1;\n const e = le(n, this.V) / this.squareLength;\n return this.isValidParameter(e);\n }\n gradientAt(t) {\n return this.V;\n }\n tangentAt(t) {\n if (!this.isOnSegment(t))\n throw new Error(\"Point is not on segment\");\n return Q(this.V);\n }\n get normalVector() {\n return et(Q(this.V));\n }\n get tangentAtFirstPoint() {\n return Q(this.V);\n }\n get tangentAtLastPoint() {\n return Q(this.V);\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t], n.forEach((a) => {\n if (!this.isOnSegment(a))\n throw new Error(\n `Point ${G(a)} is not on segment ${this.repr}`\n );\n });\n const e = [this.firstPoint, ...n, this.lastPoint], s = dt(e), r = this.lastPoint[0] - this.firstPoint[0];\n let o = Math.sign(r), l = 0;\n return Math.abs(r) < this.precision && (o = Math.sign(this.lastPoint[1] - this.firstPoint[1]), l = 1), s.sort(\n (a, h) => o * (a[l] - h[l])\n ), s.flatMap((a, h) => h === s.length - 1 ? [] : new B(a, s[h + 1]));\n }\n transform(t) {\n return new B(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint)\n );\n }\n}\nfunction Sn(i) {\n return Array.from(Array(i).keys());\n}\nfunction ut(i) {\n const t = Math.min(...i.map((n) => n.length));\n return Sn(t).map((n) => i.map((e) => e[n]));\n}\nfunction yt(i, t = 1e-9) {\n return i < 0 ? i + 2 * Math.PI : i >= 2 * Math.PI ? i % (2 * Math.PI) : i > 2 * Math.PI - t ? 0 : i;\n}\nfunction Gt(i, t, n, e = 1e-9) {\n let s = t - i;\n return n && (s = -s), s < 0 && (s += 2 * Math.PI), s > 2 * Math.PI - e ? 0 : s;\n}\nconst Ht = (i, t, n) => {\n const e = bt(i.V, t.V), s = at(i.V), r = at(t.V), o = n ? n * n : i.precision * t.precision;\n if (e * e < s * r * o)\n return \"parallel\";\n const l = L(t.firstPoint, i.firstPoint), a = bt(l, t.V) / e, h = bt(l, i.V) / e;\n return {\n intersectionParam1: a,\n intersectionParam2: h\n };\n};\nfunction Ke(i, t, n = !1, e) {\n const s = Ht(i, t, e);\n if (s === \"parallel\") {\n if (!n)\n return null;\n if (i.isSame(t))\n return i;\n const l = dt(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((a) => a !== null)\n ).sort((a, h) => a[0] - h[0]);\n if (l.length === 0)\n return null;\n if (l.length === 1)\n return null;\n if (l.length === 2)\n return new B(l[0], l[1]);\n throw console.error(l), new Error(\n \"Unexpected number of points while intersecting parallel lines\"\n );\n }\n const { intersectionParam1: r, intersectionParam2: o } = s;\n return !i.isValidParameter(r) || !t.isValidParameter(o) ? null : i.paramPoint(r);\n}\nconst Nt = (i, t) => {\n const n = L(i, t);\n return yn(n);\n};\nclass q extends Tt {\n constructor(t, n, e, s = !1, { ignoreChecks: r = !1 } = {}) {\n if (super(t, n), this.segmentType = \"ARC\", this._coefficients = null, this._angularLength = null, this._radius = null, this._firstAngle = null, this._lastAngle = null, this._boundingBox = null, this.center = e, this.clockwise = s, !r) {\n if (E(t, n))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - W(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${G(\n t\n )} and ${G(n)}} (center ${G(e)})`\n );\n }\n }\n get info() {\n return `ARC(${G(this.firstPoint)}, ${G(\n this.lastPoint\n )}, ${G(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, n] = this.center, e = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / e,\n xy: 0,\n y2: 1 / e,\n x: -(2 * t) / e,\n y: -(2 * n) / e,\n c: (t * t + n * n - e) / e\n };\n }\n return this._coefficients;\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n angleToParam(t) {\n return Gt(this.firstAngle, yt(t), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = Gt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(t) {\n return Z(\n this.center,\n xt(\n this.radius,\n this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(t) {\n const [n, e] = Nt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n throw new Error(\n `Point ${G(t)} is not on segment ${this.repr}`\n );\n const s = this.angleToParam(e);\n if (!this.isValidParameter(s))\n throw new Error(\n `Point ${G(t)} is not on segment ${this.repr}`\n );\n return s;\n }\n get radius() {\n return this._radius === null && (this._radius = W(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [t, n] = L(this.firstPoint, this.center);\n this._firstAngle = yt(Math.atan2(n, t));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [t, n] = L(this.lastPoint, this.center);\n this._lastAngle = yt(Math.atan2(n, t));\n }\n return this._lastAngle;\n }\n get length() {\n return this.radius * this.angularLength;\n }\n get squareLength() {\n return this.length * this.length;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isSame(t) {\n return !(t instanceof q) || !E(this.center, t.center) ? !1 : E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) && this.clockwise === t.clockwise || E(this.lastPoint, t.firstPoint) && E(this.firstPoint, t.lastPoint) && this.clockwise === !t.clockwise;\n }\n clone() {\n return new q(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new q(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = this.radius + this.precision, n = (e) => this.isValidParameter(this.angleToParam(e));\n this._boundingBox = new ft(\n n(Math.PI) ? this.center[0] - t : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n n(Math.PI * 1.5) ? this.center[1] - t : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n n(0) ? this.center[0] + t : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n n(Math.PI / 2) ? this.center[1] + t : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(t) {\n const [n, e] = Nt(t, this.center);\n return this.isValidParameter(this.angleToParam(e)) ? Math.abs(n - this.radius) : Math.sqrt(\n Math.min(\n Et(t, this.firstPoint),\n Et(t, this.lastPoint)\n )\n );\n }\n isOnSegment(t) {\n if (E(t, this.firstPoint) || E(t, this.lastPoint))\n return !0;\n const [n, e] = Nt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n return !1;\n const s = this.angleToParam(e);\n return this.isValidParameter(s);\n }\n gradientAt(t) {\n const n = this.firstAngle + t * this.angularLength * (this.clockwise ? -1 : 1), e = this.radius * this.angularLength, s = -e * Math.sin(n), r = e * Math.cos(n);\n return this.clockwise ? [-s, -r] : [s, r];\n }\n tangentAt(t) {\n const [n, e] = Nt(t, this.center);\n if (Math.abs(n - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const s = this.angleToParam(e);\n if (!this.isValidParameter(s))\n throw new Error(\"Point is not on the arc\");\n const r = xt(1, e);\n return (this.clockwise ? Xt : et)(Q(r));\n }\n get tangentAtFirstPoint() {\n const t = xt(1, this.firstAngle);\n return (this.clockwise ? Xt : et)(Q(t));\n }\n get tangentAtLastPoint() {\n const t = xt(1, this.lastAngle);\n return (this.clockwise ? Xt : et)(Q(t));\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const s = [0, 1, ...n.map((l) => this.pointToParam(l))], r = new Map(\n ut([s, [this.firstPoint, this.lastPoint, ...n]])\n );\n s.sort((l, a) => l - a);\n let o = null;\n return s.flatMap((l, a) => {\n if (a === s.length - 1)\n return [];\n const h = s[a + 1];\n if (h - l < this.precision)\n return o === null && (o = l), [];\n const c = o === null ? l : o, u = new q(\n r.get(c) || this.paramPoint(c),\n r.get(h) || this.paramPoint(h),\n this.center,\n this.clockwise\n );\n return o = null, u;\n });\n }\n transform(t) {\n return new q(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n t.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction hi(i, t, n) {\n const e = new B(t, i), s = new B(t, n), r = et(e.tangentAtFirstPoint), o = et(s.tangentAtLastPoint), l = Ht(\n { firstPoint: e.midPoint, V: r, precision: 1e-9 },\n { firstPoint: s.midPoint, V: o, precision: 1e-9 }\n );\n if (l === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const a = bt(\n L(i, t),\n L(n, t)\n ) > 0;\n return new q(\n i,\n n,\n Z(e.midPoint, st(r, l.intersectionParam1)),\n a,\n { ignoreChecks: !0 }\n );\n}\nfunction ai(i, t, n) {\n const e = new B(t, i), s = et(e.tangentAtFirstPoint), r = Ht(\n { firstPoint: e.midPoint, V: s, precision: 1e-9 },\n {\n firstPoint: i,\n V: et(n),\n precision: 1e-9\n }\n );\n if (r === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = Z(\n e.midPoint,\n st(s, r.intersectionParam1)\n ), l = bt(\n L(o, i),\n L(o, Z(i, n))\n ) < 0;\n return new q(i, t, o, l, {\n ignoreChecks: !0\n });\n}\nconst ke = 1e-21, zt = 1.618034;\nfunction Ie(i, t = 0, n = 1, e = 110, s = 1e3) {\n let r, o, l, a, h, c, u, f, p, g, w, P, m;\n for (o = i(t), l = i(n), o < l && ([t, n] = [n, t], [o, l] = [l, o]), m = n + zt * (n - t), a = i(m), h = 3, u = 0; a < l; ) {\n if (f = (n - t) * (l - a), p = (n - m) * (l - o), g = p - f, Math.abs(g) < ke ? r = 2 * ke : r = 2 * g, w = n - ((n - m) * p - (n - t) * f) / r, P = n + e * (m - n), u > s)\n throw new Error(\"Too many iterations.\");\n if (u += 1, (w - m) * (n - w) > 0) {\n if (c = i(w), h += 1, c < a)\n return t = n, n = w, o = l, l = c, [t, n, m, o, l, a, h];\n if (c > l)\n return m = w, a = c, [t, n, m, o, l, a, h];\n w = m + zt * (m - n), c = i(w), h += 1;\n } else\n (w - P) * (P - m) >= 0 ? (w = P, c = i(w), h += 1) : (w - P) * (m - w) > 0 ? (c = i(w), h += 1, c < a && (n = m, m = w, w = m + zt * (m - n), l = a, a = c, c = i(w), h += 1)) : (w = m + zt * (m - n), c = i(w), h += 1);\n t = n, n = m, m = w, o = l, l = a, a = c;\n }\n return [t, n, m, o, l, a, h];\n}\nconst Ce = 0.381966, _n = 1e-11;\nclass kn {\n constructor(t, n = 148e-10, e = 500) {\n this.func = t, this.tol = n, this.maxiter = e, this.func = t, this.tol = n, this.maxiter = e, this.xmin = 1 / 0, this.fval = 1 / 0, this.iter = 0, this.funcalls = 0, this.brack = null;\n }\n setBracket(t = null) {\n this.brack = t;\n }\n getBracketInfo() {\n let t, n, e, s, r, o, l;\n const a = this.func, h = this.brack;\n if (h === null)\n [r, o, l, t, n, e, s] = Ie(a);\n else if (h.length === 2)\n [r, o, l, t, n, e, s] = Ie(a, h[0], h[1]);\n else if (h.length === 3) {\n if ([r, o, l] = h, r > l && ([l, r] = [r, l]), !(r < o && o < l))\n throw new Error(\"Not a bracketing interval.\");\n if (t = a(r), n = a(o), e = a(l), !(n < t && n < e))\n throw new Error(\"Not a bracketing interval.\");\n s = 3;\n } else\n throw new Error(\n \"Bracketing interval must be length 2 or 3 sequence.\"\n );\n return [r, o, l, t, n, e, s];\n }\n optimize() {\n const t = this.func;\n let [n, e, s, , , , r] = this.getBracketInfo(), o = e, l = e, a = e, h = t(o), c = h, u = h, f, p;\n n < s ? (f = n, p = s) : (f = s, p = n);\n let g = 0;\n r = 1;\n let w = 0, P = 0, m;\n for (; w < this.maxiter; ) {\n const d = this.tol * Math.abs(o) + _n, y = 2 * d, M = 0.5 * (f + p);\n if (Math.abs(o - M) < y - 0.5 * (p - f))\n break;\n if (Math.abs(g) <= d)\n o >= M ? g = f - o : g = p - o, P = Ce * g;\n else {\n const C = (o - l) * (u - c);\n let _ = (o - a) * (u - h), b = (o - a) * _ - (o - l) * C;\n _ = 2 * (_ - C), _ > 0 && (b = -b), _ = Math.abs(_);\n const v = g;\n g = P, b > _ * (f - o) && b < _ * (p - o) && Math.abs(b) < Math.abs(0.5 * _ * v) ? (P = b * 1 / _, m = o + P, (m - f < y || p - m < y) && (M - o >= 0 ? P = d : P = -d)) : (o >= M ? g = f - o : g = p - o, P = Ce * g);\n }\n Math.abs(P) < d ? P >= 0 ? m = o + d : m = o - d : m = o + P;\n const S = t(m);\n r += 1, S > u ? (m < o ? f = m : p = m, S <= h || l === o ? (a = l, l = m, c = h, h = S) : (S <= c || a === o || a === l) && (a = m, c = S)) : (m >= o ? f = o : p = o, a = l, l = o, o = m, c = h, h = u, u = S), w += 1;\n }\n this.xmin = o, this.fval = u, this.iter = w, this.funcalls = r;\n }\n results() {\n return {\n argMin: this.xmin,\n fMin: this.fval,\n iterations: this.iter,\n funcCalls: this.funcalls\n };\n }\n run() {\n return this.optimize(), this.results();\n }\n}\nfunction He(i, t = 1e-8, n = 1e3) {\n const e = new kn(i, t, n);\n return e.setBracket([0, 1]), e.run();\n}\nconst In = Object.prototype.toString;\nfunction nt(i) {\n const t = In.call(i);\n return t.endsWith(\"Array]\") && !t.includes(\"Big\");\n}\nfunction Cn(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!nt(i))\n throw new TypeError(\"input must be an array\");\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n var n = t.fromIndex, e = n === void 0 ? 0 : n, s = t.toIndex, r = s === void 0 ? i.length : s;\n if (e < 0 || e >= i.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (r <= e || r > i.length || !Number.isInteger(r))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = i[e], l = e + 1; l < r; l++)\n i[l] > o && (o = i[l]);\n return o;\n}\nfunction jn(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!nt(i))\n throw new TypeError(\"input must be an array\");\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n var n = t.fromIndex, e = n === void 0 ? 0 : n, s = t.toIndex, r = s === void 0 ? i.length : s;\n if (e < 0 || e >= i.length || !Number.isInteger(e))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (r <= e || r > i.length || !Number.isInteger(r))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = i[e], l = e + 1; l < r; l++)\n i[l] < o && (o = i[l]);\n return o;\n}\nfunction je(i) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (nt(i)) {\n if (i.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else\n throw new TypeError(\"input must be an array\");\n var n;\n if (t.output !== void 0) {\n if (!nt(t.output))\n throw new TypeError(\"output option must be an array if specified\");\n n = t.output;\n } else\n n = new Array(i.length);\n var e = jn(i), s = Cn(i);\n if (e === s)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var r = t.min, o = r === void 0 ? t.autoMinMax ? e : 0 : r, l = t.max, a = l === void 0 ? t.autoMinMax ? s : 1 : l;\n if (o >= a)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var h = (a - o) / (s - e), c = 0; c < i.length; c++)\n n[c] = (i[c] - e) * h + o;\n return n;\n}\nconst Dt = \" \".repeat(2), tn = \" \".repeat(4);\nfunction xn() {\n return en(this);\n}\nfunction en(i, t = {}) {\n const {\n maxRows: n = 15,\n maxColumns: e = 10,\n maxNumSize: s = 8,\n padMinus: r = \"auto\"\n } = t;\n return `${i.constructor.name} {\n${Dt}[\n${tn}${vn(i, n, e, s, r)}\n${Dt}]\n${Dt}rows: ${i.rows}\n${Dt}columns: ${i.columns}\n}`;\n}\nfunction vn(i, t, n, e, s) {\n const { rows: r, columns: o } = i, l = Math.min(r, t), a = Math.min(o, n), h = [];\n if (s === \"auto\") {\n s = !1;\n t:\n for (let c = 0; c < l; c++)\n for (let u = 0; u < a; u++)\n if (i.get(c, u) < 0) {\n s = !0;\n break t;\n }\n }\n for (let c = 0; c < l; c++) {\n let u = [];\n for (let f = 0; f < a; f++)\n u.push(Fn(i.get(c, f), e, s));\n h.push(`${u.join(\" \")}`);\n }\n return a !== o && (h[h.length - 1] += ` ... ${o - n} more columns`), l !== r && h.push(`... ${r - t} more rows`), h.join(`\n${tn}`);\n}\nfunction Fn(i, t, n) {\n return (i >= 0 && n ? ` ${xe(i, t - 1)}` : xe(i, t)).padEnd(t);\n}\nfunction xe(i, t) {\n let n = i.toString();\n if (n.length <= t)\n return n;\n let e = i.toFixed(t);\n if (e.length > t && (e = i.toFixed(Math.max(0, t - (e.length - t)))), e.length <= t && !e.startsWith(\"0.000\") && !e.startsWith(\"-0.000\"))\n return e;\n let s = i.toExponential(t);\n return s.length > t && (s = i.toExponential(Math.max(0, t - (s.length - t)))), s.slice(0);\n}\nfunction Rn(i, t) {\n i.prototype.add = function(e) {\n return typeof e == \"number\" ? this.addS(e) : this.addM(e);\n }, i.prototype.addS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) + e);\n return this;\n }, i.prototype.addM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) + e.get(s, r));\n return this;\n }, i.add = function(e, s) {\n return new t(e).add(s);\n }, i.prototype.sub = function(e) {\n return typeof e == \"number\" ? this.subS(e) : this.subM(e);\n }, i.prototype.subS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) - e);\n return this;\n }, i.prototype.subM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) - e.get(s, r));\n return this;\n }, i.sub = function(e, s) {\n return new t(e).sub(s);\n }, i.prototype.subtract = i.prototype.sub, i.prototype.subtractS = i.prototype.subS, i.prototype.subtractM = i.prototype.subM, i.subtract = i.sub, i.prototype.mul = function(e) {\n return typeof e == \"number\" ? this.mulS(e) : this.mulM(e);\n }, i.prototype.mulS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) * e);\n return this;\n }, i.prototype.mulM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) * e.get(s, r));\n return this;\n }, i.mul = function(e, s) {\n return new t(e).mul(s);\n }, i.prototype.multiply = i.prototype.mul, i.prototype.multiplyS = i.prototype.mulS, i.prototype.multiplyM = i.prototype.mulM, i.multiply = i.mul, i.prototype.div = function(e) {\n return typeof e == \"number\" ? this.divS(e) : this.divM(e);\n }, i.prototype.divS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) / e);\n return this;\n }, i.prototype.divM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) / e.get(s, r));\n return this;\n }, i.div = function(e, s) {\n return new t(e).div(s);\n }, i.prototype.divide = i.prototype.div, i.prototype.divideS = i.prototype.divS, i.prototype.divideM = i.prototype.divM, i.divide = i.div, i.prototype.mod = function(e) {\n return typeof e == \"number\" ? this.modS(e) : this.modM(e);\n }, i.prototype.modS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) % e);\n return this;\n }, i.prototype.modM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) % e.get(s, r));\n return this;\n }, i.mod = function(e, s) {\n return new t(e).mod(s);\n }, i.prototype.modulus = i.prototype.mod, i.prototype.modulusS = i.prototype.modS, i.prototype.modulusM = i.prototype.modM, i.modulus = i.mod, i.prototype.and = function(e) {\n return typeof e == \"number\" ? this.andS(e) : this.andM(e);\n }, i.prototype.andS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) & e);\n return this;\n }, i.prototype.andM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) & e.get(s, r));\n return this;\n }, i.and = function(e, s) {\n return new t(e).and(s);\n }, i.prototype.or = function(e) {\n return typeof e == \"number\" ? this.orS(e) : this.orM(e);\n }, i.prototype.orS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) | e);\n return this;\n }, i.prototype.orM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) | e.get(s, r));\n return this;\n }, i.or = function(e, s) {\n return new t(e).or(s);\n }, i.prototype.xor = function(e) {\n return typeof e == \"number\" ? this.xorS(e) : this.xorM(e);\n }, i.prototype.xorS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) ^ e);\n return this;\n }, i.prototype.xorM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) ^ e.get(s, r));\n return this;\n }, i.xor = function(e, s) {\n return new t(e).xor(s);\n }, i.prototype.leftShift = function(e) {\n return typeof e == \"number\" ? this.leftShiftS(e) : this.leftShiftM(e);\n }, i.prototype.leftShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) << e);\n return this;\n }, i.prototype.leftShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) << e.get(s, r));\n return this;\n }, i.leftShift = function(e, s) {\n return new t(e).leftShift(s);\n }, i.prototype.signPropagatingRightShift = function(e) {\n return typeof e == \"number\" ? this.signPropagatingRightShiftS(e) : this.signPropagatingRightShiftM(e);\n }, i.prototype.signPropagatingRightShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >> e);\n return this;\n }, i.prototype.signPropagatingRightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >> e.get(s, r));\n return this;\n }, i.signPropagatingRightShift = function(e, s) {\n return new t(e).signPropagatingRightShift(s);\n }, i.prototype.rightShift = function(e) {\n return typeof e == \"number\" ? this.rightShiftS(e) : this.rightShiftM(e);\n }, i.prototype.rightShiftS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >>> e);\n return this;\n }, i.prototype.rightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, this.get(s, r) >>> e.get(s, r));\n return this;\n }, i.rightShift = function(e, s) {\n return new t(e).rightShift(s);\n }, i.prototype.zeroFillRightShift = i.prototype.rightShift, i.prototype.zeroFillRightShiftS = i.prototype.rightShiftS, i.prototype.zeroFillRightShiftM = i.prototype.rightShiftM, i.zeroFillRightShift = i.rightShift, i.prototype.not = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, ~this.get(e, s));\n return this;\n }, i.not = function(e) {\n return new t(e).not();\n }, i.prototype.abs = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.abs(this.get(e, s)));\n return this;\n }, i.abs = function(e) {\n return new t(e).abs();\n }, i.prototype.acos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.acos(this.get(e, s)));\n return this;\n }, i.acos = function(e) {\n return new t(e).acos();\n }, i.prototype.acosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.acosh(this.get(e, s)));\n return this;\n }, i.acosh = function(e) {\n return new t(e).acosh();\n }, i.prototype.asin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.asin(this.get(e, s)));\n return this;\n }, i.asin = function(e) {\n return new t(e).asin();\n }, i.prototype.asinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.asinh(this.get(e, s)));\n return this;\n }, i.asinh = function(e) {\n return new t(e).asinh();\n }, i.prototype.atan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.atan(this.get(e, s)));\n return this;\n }, i.atan = function(e) {\n return new t(e).atan();\n }, i.prototype.atanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.atanh(this.get(e, s)));\n return this;\n }, i.atanh = function(e) {\n return new t(e).atanh();\n }, i.prototype.cbrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cbrt(this.get(e, s)));\n return this;\n }, i.cbrt = function(e) {\n return new t(e).cbrt();\n }, i.prototype.ceil = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.ceil(this.get(e, s)));\n return this;\n }, i.ceil = function(e) {\n return new t(e).ceil();\n }, i.prototype.clz32 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.clz32(this.get(e, s)));\n return this;\n }, i.clz32 = function(e) {\n return new t(e).clz32();\n }, i.prototype.cos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cos(this.get(e, s)));\n return this;\n }, i.cos = function(e) {\n return new t(e).cos();\n }, i.prototype.cosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.cosh(this.get(e, s)));\n return this;\n }, i.cosh = function(e) {\n return new t(e).cosh();\n }, i.prototype.exp = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.exp(this.get(e, s)));\n return this;\n }, i.exp = function(e) {\n return new t(e).exp();\n }, i.prototype.expm1 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.expm1(this.get(e, s)));\n return this;\n }, i.expm1 = function(e) {\n return new t(e).expm1();\n }, i.prototype.floor = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.floor(this.get(e, s)));\n return this;\n }, i.floor = function(e) {\n return new t(e).floor();\n }, i.prototype.fround = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.fround(this.get(e, s)));\n return this;\n }, i.fround = function(e) {\n return new t(e).fround();\n }, i.prototype.log = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log(this.get(e, s)));\n return this;\n }, i.log = function(e) {\n return new t(e).log();\n }, i.prototype.log1p = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log1p(this.get(e, s)));\n return this;\n }, i.log1p = function(e) {\n return new t(e).log1p();\n }, i.prototype.log10 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log10(this.get(e, s)));\n return this;\n }, i.log10 = function(e) {\n return new t(e).log10();\n }, i.prototype.log2 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.log2(this.get(e, s)));\n return this;\n }, i.log2 = function(e) {\n return new t(e).log2();\n }, i.prototype.round = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.round(this.get(e, s)));\n return this;\n }, i.round = function(e) {\n return new t(e).round();\n }, i.prototype.sign = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sign(this.get(e, s)));\n return this;\n }, i.sign = function(e) {\n return new t(e).sign();\n }, i.prototype.sin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sin(this.get(e, s)));\n return this;\n }, i.sin = function(e) {\n return new t(e).sin();\n }, i.prototype.sinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sinh(this.get(e, s)));\n return this;\n }, i.sinh = function(e) {\n return new t(e).sinh();\n }, i.prototype.sqrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.sqrt(this.get(e, s)));\n return this;\n }, i.sqrt = function(e) {\n return new t(e).sqrt();\n }, i.prototype.tan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.tan(this.get(e, s)));\n return this;\n }, i.tan = function(e) {\n return new t(e).tan();\n }, i.prototype.tanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.tanh(this.get(e, s)));\n return this;\n }, i.tanh = function(e) {\n return new t(e).tanh();\n }, i.prototype.trunc = function() {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.set(e, s, Math.trunc(this.get(e, s)));\n return this;\n }, i.trunc = function(e) {\n return new t(e).trunc();\n }, i.pow = function(e, s) {\n return new t(e).pow(s);\n }, i.prototype.pow = function(e) {\n return typeof e == \"number\" ? this.powS(e) : this.powM(e);\n }, i.prototype.powS = function(e) {\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, Math.pow(this.get(s, r), e));\n return this;\n }, i.prototype.powM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let s = 0; s < this.rows; s++)\n for (let r = 0; r < this.columns; r++)\n this.set(s, r, Math.pow(this.get(s, r), e.get(s, r)));\n return this;\n };\n}\nfunction rt(i, t, n) {\n let e = n ? i.rows : i.rows - 1;\n if (t < 0 || t > e)\n throw new RangeError(\"Row index out of range\");\n}\nfunction ot(i, t, n) {\n let e = n ? i.columns : i.columns - 1;\n if (t < 0 || t > e)\n throw new RangeError(\"Column index out of range\");\n}\nfunction kt(i, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== i.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return t;\n}\nfunction It(i, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== i.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return t;\n}\nfunction Tn(i, t) {\n if (!nt(t))\n throw new TypeError(\"row indices must be an array\");\n for (let n = 0; n < t.length; n++)\n if (t[n] < 0 || t[n] >= i.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction qn(i, t) {\n if (!nt(t))\n throw new TypeError(\"column indices must be an array\");\n for (let n = 0; n < t.length; n++)\n if (t[n] < 0 || t[n] >= i.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction ve(i, t, n, e, s) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Vt(\"startRow\", t), Vt(\"endRow\", n), Vt(\"startColumn\", e), Vt(\"endColumn\", s), t > n || e > s || t < 0 || t >= i.rows || n < 0 || n >= i.rows || e < 0 || e >= i.columns || s < 0 || s >= i.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction te(i, t = 0) {\n let n = [];\n for (let e = 0; e < i; e++)\n n.push(t);\n return n;\n}\nfunction Vt(i, t) {\n if (typeof t != \"number\")\n throw new TypeError(`${i} must be a number`);\n}\nfunction _t(i) {\n if (i.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction An(i) {\n let t = te(i.rows);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[n] += i.get(n, e);\n return t;\n}\nfunction Bn(i) {\n let t = te(i.columns);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[e] += i.get(n, e);\n return t;\n}\nfunction On(i) {\n let t = 0;\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n t += i.get(n, e);\n return t;\n}\nfunction $n(i) {\n let t = te(i.rows, 1);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[n] *= i.get(n, e);\n return t;\n}\nfunction Ln(i) {\n let t = te(i.columns, 1);\n for (let n = 0; n < i.rows; ++n)\n for (let e = 0; e < i.columns; ++e)\n t[e] *= i.get(n, e);\n return t;\n}\nfunction Nn(i) {\n let t = 1;\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n t *= i.get(n, e);\n return t;\n}\nfunction zn(i, t, n) {\n const e = i.rows, s = i.columns, r = [];\n for (let o = 0; o < e; o++) {\n let l = 0, a = 0, h = 0;\n for (let c = 0; c < s; c++)\n h = i.get(o, c) - n[o], l += h, a += h * h;\n t ? r.push((a - l * l / s) / (s - 1)) : r.push((a - l * l / s) / s);\n }\n return r;\n}\nfunction Dn(i, t, n) {\n const e = i.rows, s = i.columns, r = [];\n for (let o = 0; o < s; o++) {\n let l = 0, a = 0, h = 0;\n for (let c = 0; c < e; c++)\n h = i.get(c, o) - n[o], l += h, a += h * h;\n t ? r.push((a - l * l / e) / (e - 1)) : r.push((a - l * l / e) / e);\n }\n return r;\n}\nfunction Vn(i, t, n) {\n const e = i.rows, s = i.columns, r = e * s;\n let o = 0, l = 0, a = 0;\n for (let h = 0; h < e; h++)\n for (let c = 0; c < s; c++)\n a = i.get(h, c) - n, o += a, l += a * a;\n return t ? (l - o * o / r) / (r - 1) : (l - o * o / r) / r;\n}\nfunction Yn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t[n]);\n}\nfunction Un(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t[e]);\n}\nfunction Xn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) - t);\n}\nfunction Gn(i) {\n const t = [];\n for (let n = 0; n < i.rows; n++) {\n let e = 0;\n for (let s = 0; s < i.columns; s++)\n e += Math.pow(i.get(n, s), 2) / (i.columns - 1);\n t.push(Math.sqrt(e));\n }\n return t;\n}\nfunction Wn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t[n]);\n}\nfunction Qn(i) {\n const t = [];\n for (let n = 0; n < i.columns; n++) {\n let e = 0;\n for (let s = 0; s < i.rows; s++)\n e += Math.pow(i.get(s, n), 2) / (i.rows - 1);\n t.push(Math.sqrt(e));\n }\n return t;\n}\nfunction Jn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t[e]);\n}\nfunction Zn(i) {\n const t = i.size - 1;\n let n = 0;\n for (let e = 0; e < i.columns; e++)\n for (let s = 0; s < i.rows; s++)\n n += Math.pow(i.get(s, e), 2) / t;\n return Math.sqrt(n);\n}\nfunction Kn(i, t) {\n for (let n = 0; n < i.rows; n++)\n for (let e = 0; e < i.columns; e++)\n i.set(n, e, i.get(n, e) / t);\n}\nclass R {\n static from1DArray(t, n, e) {\n if (t * n !== e.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let r = new x(t, n);\n for (let o = 0; o < t; o++)\n for (let l = 0; l < n; l++)\n r.set(o, l, e[o * n + l]);\n return r;\n }\n static rowVector(t) {\n let n = new x(1, t.length);\n for (let e = 0; e < t.length; e++)\n n.set(0, e, t[e]);\n return n;\n }\n static columnVector(t) {\n let n = new x(t.length, 1);\n for (let e = 0; e < t.length; e++)\n n.set(e, 0, t[e]);\n return n;\n }\n static zeros(t, n) {\n return new x(t, n);\n }\n static ones(t, n) {\n return new x(t, n).fill(1);\n }\n static rand(t, n, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: s = Math.random } = e;\n let r = new x(t, n);\n for (let o = 0; o < t; o++)\n for (let l = 0; l < n; l++)\n r.set(o, l, s());\n return r;\n }\n static randInt(t, n, e = {}) {\n if (typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: s = 0, max: r = 1e3, random: o = Math.random } = e;\n if (!Number.isInteger(s))\n throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(r))\n throw new TypeError(\"max must be an integer\");\n if (s >= r)\n throw new RangeError(\"min must be smaller than max\");\n let l = r - s, a = new x(t, n);\n for (let h = 0; h < t; h++)\n for (let c = 0; c < n; c++) {\n let u = s + Math.round(o() * l);\n a.set(h, c, u);\n }\n return a;\n }\n static eye(t, n, e) {\n n === void 0 && (n = t), e === void 0 && (e = 1);\n let s = Math.min(t, n), r = this.zeros(t, n);\n for (let o = 0; o < s; o++)\n r.set(o, o, e);\n return r;\n }\n static diag(t, n, e) {\n let s = t.length;\n n === void 0 && (n = s), e === void 0 && (e = n);\n let r = Math.min(s, n, e), o = this.zeros(n, e);\n for (let l = 0; l < r; l++)\n o.set(l, l, t[l]);\n return o;\n }\n static min(t, n) {\n t = this.checkMatrix(t), n = this.checkMatrix(n);\n let e = t.rows, s = t.columns, r = new x(e, s);\n for (let o = 0; o < e; o++)\n for (let l = 0; l < s; l++)\n r.set(o, l, Math.min(t.get(o, l), n.get(o, l)));\n return r;\n }\n static max(t, n) {\n t = this.checkMatrix(t), n = this.checkMatrix(n);\n let e = t.rows, s = t.columns, r = new this(e, s);\n for (let o = 0; o < e; o++)\n for (let l = 0; l < s; l++)\n r.set(o, l, Math.max(t.get(o, l), n.get(o, l)));\n return r;\n }\n static checkMatrix(t) {\n return R.isMatrix(t) ? t : new x(t);\n }\n static isMatrix(t) {\n return t != null && t.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(t) {\n if (typeof t != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.call(this, n, e);\n return this;\n }\n to1DArray() {\n let t = [];\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.push(this.get(n, e));\n return t;\n }\n to2DArray() {\n let t = [];\n for (let n = 0; n < this.rows; n++) {\n t.push([]);\n for (let e = 0; e < this.columns; e++)\n t[n].push(this.get(n, e));\n }\n return t;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n <= t; n++)\n if (this.get(t, n) !== this.get(n, t))\n return !1;\n return !0;\n }\n return !1;\n }\n isEchelonForm() {\n let t = 0, n = 0, e = -1, s = !0, r = !1;\n for (; t < this.rows && s; ) {\n for (n = 0, r = !1; n < this.columns && r === !1; )\n this.get(t, n) === 0 ? n++ : this.get(t, n) === 1 && n > e ? (r = !0, e = n) : (s = !1, r = !0);\n t++;\n }\n return s;\n }\n isReducedEchelonForm() {\n let t = 0, n = 0, e = -1, s = !0, r = !1;\n for (; t < this.rows && s; ) {\n for (n = 0, r = !1; n < this.columns && r === !1; )\n this.get(t, n) === 0 ? n++ : this.get(t, n) === 1 && n > e ? (r = !0, e = n) : (s = !1, r = !0);\n for (let o = n + 1; o < this.rows; o++)\n this.get(t, o) !== 0 && (s = !1);\n t++;\n }\n return s;\n }\n echelonForm() {\n let t = this.clone(), n = 0, e = 0;\n for (; n < t.rows && e < t.columns; ) {\n let s = n;\n for (let r = n; r < t.rows; r++)\n t.get(r, e) > t.get(s, e) && (s = r);\n if (t.get(s, e) === 0)\n e++;\n else {\n t.swapRows(n, s);\n let r = t.get(n, e);\n for (let o = e; o < t.columns; o++)\n t.set(n, o, t.get(n, o) / r);\n for (let o = n + 1; o < t.rows; o++) {\n let l = t.get(o, e) / t.get(n, e);\n t.set(o, e, 0);\n for (let a = e + 1; a < t.columns; a++)\n t.set(o, a, t.get(o, a) - t.get(n, a) * l);\n }\n n++, e++;\n }\n }\n return t;\n }\n reducedEchelonForm() {\n let t = this.echelonForm(), n = t.columns, e = t.rows, s = e - 1;\n for (; s >= 0; )\n if (t.maxRow(s) === 0)\n s--;\n else {\n let r = 0, o = !1;\n for (; r < e && o === !1; )\n t.get(s, r) === 1 ? o = !0 : r++;\n for (let l = 0; l < s; l++) {\n let a = t.get(l, r);\n for (let h = r; h < n; h++) {\n let c = t.get(l, h) - a * t.get(s, h);\n t.set(l, h, c);\n }\n }\n s--;\n }\n return t;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: n = 1, columns: e = 1 } = t;\n if (!Number.isInteger(n) || n <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let s = new x(this.rows * n, this.columns * e);\n for (let r = 0; r < n; r++)\n for (let o = 0; o < e; o++)\n s.setSubMatrix(this, this.rows * r, this.columns * o);\n return s;\n }\n fill(t) {\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, t);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(t) {\n rt(this, t);\n let n = [];\n for (let e = 0; e < this.columns; e++)\n n.push(this.get(t, e));\n return n;\n }\n getRowVector(t) {\n return x.rowVector(this.getRow(t));\n }\n setRow(t, n) {\n rt(this, t), n = kt(this, n);\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, n[e]);\n return this;\n }\n swapRows(t, n) {\n rt(this, t), rt(this, n);\n for (let e = 0; e < this.columns; e++) {\n let s = this.get(t, e);\n this.set(t, e, this.get(n, e)), this.set(n, e, s);\n }\n return this;\n }\n getColumn(t) {\n ot(this, t);\n let n = [];\n for (let e = 0; e < this.rows; e++)\n n.push(this.get(e, t));\n return n;\n }\n getColumnVector(t) {\n return x.columnVector(this.getColumn(t));\n }\n setColumn(t, n) {\n ot(this, t), n = It(this, n);\n for (let e = 0; e < this.rows; e++)\n this.set(e, t, n[e]);\n return this;\n }\n swapColumns(t, n) {\n ot(this, t), ot(this, n);\n for (let e = 0; e < this.rows; e++) {\n let s = this.get(e, t);\n this.set(e, t, this.get(e, n)), this.set(e, n, s);\n }\n return this;\n }\n addRowVector(t) {\n t = kt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) + t[e]);\n return this;\n }\n subRowVector(t) {\n t = kt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) - t[e]);\n return this;\n }\n mulRowVector(t) {\n t = kt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) * t[e]);\n return this;\n }\n divRowVector(t) {\n t = kt(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) / t[e]);\n return this;\n }\n addColumnVector(t) {\n t = It(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) + t[n]);\n return this;\n }\n subColumnVector(t) {\n t = It(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) - t[n]);\n return this;\n }\n mulColumnVector(t) {\n t = It(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) * t[n]);\n return this;\n }\n divColumnVector(t) {\n t = It(this, t);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n this.set(n, e, this.get(n, e) / t[n]);\n return this;\n }\n mulRow(t, n) {\n rt(this, t);\n for (let e = 0; e < this.columns; e++)\n this.set(t, e, this.get(t, e) * n);\n return this;\n }\n mulColumn(t, n) {\n ot(this, t);\n for (let e = 0; e < this.rows; e++)\n this.set(e, t, this.get(e, t) * n);\n return this;\n }\n max(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const n = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n[e] && (n[e] = this.get(e, s));\n return n;\n }\n case \"column\": {\n const n = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n[s] && (n[s] = this.get(e, s));\n return n;\n }\n case void 0: {\n let n = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > n && (n = this.get(e, s));\n return n;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n maxIndex() {\n _t(this);\n let t = this.get(0, 0), n = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) > t && (t = this.get(e, s), n[0] = e, n[1] = s);\n return n;\n }\n min(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const n = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n[e] && (n[e] = this.get(e, s));\n return n;\n }\n case \"column\": {\n const n = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n[s] && (n[s] = this.get(e, s));\n return n;\n }\n case void 0: {\n let n = this.get(0, 0);\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < n && (n = this.get(e, s));\n return n;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n minIndex() {\n _t(this);\n let t = this.get(0, 0), n = [0, 0];\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n this.get(e, s) < t && (t = this.get(e, s), n[0] = e, n[1] = s);\n return n;\n }\n maxRow(t) {\n if (rt(this, t), this.isEmpty())\n return NaN;\n let n = this.get(t, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(t, e) > n && (n = this.get(t, e));\n return n;\n }\n maxRowIndex(t) {\n rt(this, t), _t(this);\n let n = this.get(t, 0), e = [t, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(t, s) > n && (n = this.get(t, s), e[1] = s);\n return e;\n }\n minRow(t) {\n if (rt(this, t), this.isEmpty())\n return NaN;\n let n = this.get(t, 0);\n for (let e = 1; e < this.columns; e++)\n this.get(t, e) < n && (n = this.get(t, e));\n return n;\n }\n minRowIndex(t) {\n rt(this, t), _t(this);\n let n = this.get(t, 0), e = [t, 0];\n for (let s = 1; s < this.columns; s++)\n this.get(t, s) < n && (n = this.get(t, s), e[1] = s);\n return e;\n }\n maxColumn(t) {\n if (ot(this, t), this.isEmpty())\n return NaN;\n let n = this.get(0, t);\n for (let e = 1; e < this.rows; e++)\n this.get(e, t) > n && (n = this.get(e, t));\n return n;\n }\n maxColumnIndex(t) {\n ot(this, t), _t(this);\n let n = this.get(0, t), e = [0, t];\n for (let s = 1; s < this.rows; s++)\n this.get(s, t) > n && (n = this.get(s, t), e[0] = s);\n return e;\n }\n minColumn(t) {\n if (ot(this, t), this.isEmpty())\n return NaN;\n let n = this.get(0, t);\n for (let e = 1; e < this.rows; e++)\n this.get(e, t) < n && (n = this.get(e, t));\n return n;\n }\n minColumnIndex(t) {\n ot(this, t), _t(this);\n let n = this.get(0, t), e = [0, t];\n for (let s = 1; s < this.rows; s++)\n this.get(s, t) < n && (n = this.get(s, t), e[0] = s);\n return e;\n }\n diag() {\n let t = Math.min(this.rows, this.columns), n = [];\n for (let e = 0; e < t; e++)\n n.push(this.get(e, e));\n return n;\n }\n norm(t = \"frobenius\") {\n let n = 0;\n if (t === \"max\")\n return this.max();\n if (t === \"frobenius\") {\n for (let e = 0; e < this.rows; e++)\n for (let s = 0; s < this.columns; s++)\n n = n + this.get(e, s) * this.get(e, s);\n return Math.sqrt(n);\n } else\n throw new RangeError(`unknown norm type: ${t}`);\n }\n cumulativeSum() {\n let t = 0;\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t += this.get(n, e), this.set(n, e, t);\n return this;\n }\n dot(t) {\n R.isMatrix(t) && (t = t.to1DArray());\n let n = this.to1DArray();\n if (n.length !== t.length)\n throw new RangeError(\"vectors do not have the same size\");\n let e = 0;\n for (let s = 0; s < n.length; s++)\n e += n[s] * t[s];\n return e;\n }\n mmul(t) {\n t = x.checkMatrix(t);\n let n = this.rows, e = this.columns, s = t.columns, r = new x(n, s), o = new Float64Array(e);\n for (let l = 0; l < s; l++) {\n for (let a = 0; a < e; a++)\n o[a] = t.get(a, l);\n for (let a = 0; a < n; a++) {\n let h = 0;\n for (let c = 0; c < e; c++)\n h += this.get(a, c) * o[c];\n r.set(a, l, h);\n }\n }\n return r;\n }\n strassen2x2(t) {\n t = x.checkMatrix(t);\n let n = new x(2, 2);\n const e = this.get(0, 0), s = t.get(0, 0), r = this.get(0, 1), o = t.get(0, 1), l = this.get(1, 0), a = t.get(1, 0), h = this.get(1, 1), c = t.get(1, 1), u = (e + h) * (s + c), f = (l + h) * s, p = e * (o - c), g = h * (a - s), w = (e + r) * c, P = (l - e) * (s + o), m = (r - h) * (a + c), d = u + g - w + m, y = p + w, M = f + g, S = u - f + p + P;\n return n.set(0, 0, d), n.set(0, 1, y), n.set(1, 0, M), n.set(1, 1, S), n;\n }\n strassen3x3(t) {\n t = x.checkMatrix(t);\n let n = new x(3, 3);\n const e = this.get(0, 0), s = this.get(0, 1), r = this.get(0, 2), o = this.get(1, 0), l = this.get(1, 1), a = this.get(1, 2), h = this.get(2, 0), c = this.get(2, 1), u = this.get(2, 2), f = t.get(0, 0), p = t.get(0, 1), g = t.get(0, 2), w = t.get(1, 0), P = t.get(1, 1), m = t.get(1, 2), d = t.get(2, 0), y = t.get(2, 1), M = t.get(2, 2), S = (e + s + r - o - l - c - u) * P, C = (e - o) * (-p + P), _ = l * (-f + p + w - P - m - d + M), b = (-e + o + l) * (f - p + P), v = (o + l) * (-f + p), $ = e * f, Y = (-e + h + c) * (f - g + m), K = (-e + h) * (g - m), A = (h + c) * (-f + g), j = (e + s + r - l - a - h - c) * m, I = c * (-f + g + w - P - m - d + y), k = (-r + c + u) * (P + d - y), mt = (r - u) * (P - y), T = r * d, O = (c + u) * (-d + y), F = (-r + l + a) * (m + d - M), N = (r - a) * (m - M), U = (l + a) * (-d + M), z = s * w, J = a * y, ct = o * g, ht = h * p, gt = u * M, ne = $ + T + z, se = S + b + v + $ + k + T + O, ie = $ + Y + A + j + T + F + U, re = C + _ + b + $ + T + F + N, qt = C + b + v + $ + J, At = T + F + N + U + ct, Bt = $ + Y + K + I + k + mt + T, Ot = k + mt + T + O + ht, $t = $ + Y + K + A + gt;\n return n.set(0, 0, ne), n.set(0, 1, se), n.set(0, 2, ie), n.set(1, 0, re), n.set(1, 1, qt), n.set(1, 2, At), n.set(2, 0, Bt), n.set(2, 1, Ot), n.set(2, 2, $t), n;\n }\n mmulStrassen(t) {\n t = x.checkMatrix(t);\n let n = this.clone(), e = n.rows, s = n.columns, r = t.rows, o = t.columns;\n s !== r && console.warn(\n `Multiplying ${e} x ${s} and ${r} x ${o} matrix: dimensions do not match.`\n );\n function l(u, f, p) {\n let g = u.rows, w = u.columns;\n if (g === f && w === p)\n return u;\n {\n let P = R.zeros(f, p);\n return P = P.setSubMatrix(u, 0, 0), P;\n }\n }\n let a = Math.max(e, r), h = Math.max(s, o);\n n = l(n, a, h), t = l(t, a, h);\n function c(u, f, p, g) {\n if (p <= 512 || g <= 512)\n return u.mmul(f);\n p % 2 === 1 && g % 2 === 1 ? (u = l(u, p + 1, g + 1), f = l(f, p + 1, g + 1)) : p % 2 === 1 ? (u = l(u, p + 1, g), f = l(f, p + 1, g)) : g % 2 === 1 && (u = l(u, p, g + 1), f = l(f, p, g + 1));\n let w = parseInt(u.rows / 2, 10), P = parseInt(u.columns / 2, 10), m = u.subMatrix(0, w - 1, 0, P - 1), d = f.subMatrix(0, w - 1, 0, P - 1), y = u.subMatrix(0, w - 1, P, u.columns - 1), M = f.subMatrix(0, w - 1, P, f.columns - 1), S = u.subMatrix(w, u.rows - 1, 0, P - 1), C = f.subMatrix(w, f.rows - 1, 0, P - 1), _ = u.subMatrix(w, u.rows - 1, P, u.columns - 1), b = f.subMatrix(w, f.rows - 1, P, f.columns - 1), v = c(\n R.add(m, _),\n R.add(d, b),\n w,\n P\n ), $ = c(R.add(S, _), d, w, P), Y = c(m, R.sub(M, b), w, P), K = c(_, R.sub(C, d), w, P), A = c(R.add(m, y), b, w, P), j = c(\n R.sub(S, m),\n R.add(d, M),\n w,\n P\n ), I = c(\n R.sub(y, _),\n R.add(C, b),\n w,\n P\n ), k = R.add(v, K);\n k.sub(A), k.add(I);\n let mt = R.add(Y, A), T = R.add($, K), O = R.sub(v, $);\n O.add(Y), O.add(j);\n let F = R.zeros(2 * k.rows, 2 * k.columns);\n return F = F.setSubMatrix(k, 0, 0), F = F.setSubMatrix(mt, k.rows, 0), F = F.setSubMatrix(T, 0, k.columns), F = F.setSubMatrix(O, k.rows, k.columns), F.subMatrix(0, p - 1, 0, g - 1);\n }\n return c(n, t, a, h);\n }\n scaleRows(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: e = 1 } = t;\n if (!Number.isFinite(n))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e))\n throw new TypeError(\"max must be a number\");\n if (n >= e)\n throw new RangeError(\"min must be smaller than max\");\n let s = new x(this.rows, this.columns);\n for (let r = 0; r < this.rows; r++) {\n const o = this.getRow(r);\n o.length > 0 && je(o, { min: n, max: e, output: o }), s.setRow(r, o);\n }\n return s;\n }\n scaleColumns(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: e = 1 } = t;\n if (!Number.isFinite(n))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(e))\n throw new TypeError(\"max must be a number\");\n if (n >= e)\n throw new RangeError(\"min must be smaller than max\");\n let s = new x(this.rows, this.columns);\n for (let r = 0; r < this.columns; r++) {\n const o = this.getColumn(r);\n o.length && je(o, {\n min: n,\n max: e,\n output: o\n }), s.setColumn(r, o);\n }\n return s;\n }\n flipRows() {\n const t = Math.ceil(this.columns / 2);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < t; e++) {\n let s = this.get(n, e), r = this.get(n, this.columns - 1 - e);\n this.set(n, e, r), this.set(n, this.columns - 1 - e, s);\n }\n return this;\n }\n flipColumns() {\n const t = Math.ceil(this.rows / 2);\n for (let n = 0; n < this.columns; n++)\n for (let e = 0; e < t; e++) {\n let s = this.get(e, n), r = this.get(this.rows - 1 - e, n);\n this.set(e, n, r), this.set(this.rows - 1 - e, n, s);\n }\n return this;\n }\n kroneckerProduct(t) {\n t = x.checkMatrix(t);\n let n = this.rows, e = this.columns, s = t.rows, r = t.columns, o = new x(n * s, e * r);\n for (let l = 0; l < n; l++)\n for (let a = 0; a < e; a++)\n for (let h = 0; h < s; h++)\n for (let c = 0; c < r; c++)\n o.set(s * l + h, r * a + c, this.get(l, a) * t.get(h, c));\n return o;\n }\n kroneckerSum(t) {\n if (t = x.checkMatrix(t), !this.isSquare() || !t.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let n = this.rows, e = t.rows, s = this.kroneckerProduct(x.eye(e, e)), r = x.eye(n, n).kroneckerProduct(t);\n return s.add(r);\n }\n transpose() {\n let t = new x(this.columns, this.rows);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.set(e, n, this.get(n, e));\n return t;\n }\n sortRows(t = Fe) {\n for (let n = 0; n < this.rows; n++)\n this.setRow(n, this.getRow(n).sort(t));\n return this;\n }\n sortColumns(t = Fe) {\n for (let n = 0; n < this.columns; n++)\n this.setColumn(n, this.getColumn(n).sort(t));\n return this;\n }\n subMatrix(t, n, e, s) {\n ve(this, t, n, e, s);\n let r = new x(\n n - t + 1,\n s - e + 1\n );\n for (let o = t; o <= n; o++)\n for (let l = e; l <= s; l++)\n r.set(o - t, l - e, this.get(o, l));\n return r;\n }\n subMatrixRow(t, n, e) {\n if (n === void 0 && (n = 0), e === void 0 && (e = this.columns - 1), n > e || n < 0 || n >= this.columns || e < 0 || e >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let s = new x(t.length, e - n + 1);\n for (let r = 0; r < t.length; r++)\n for (let o = n; o <= e; o++) {\n if (t[r] < 0 || t[r] >= this.rows)\n throw new RangeError(`Row index out of range: ${t[r]}`);\n s.set(r, o - n, this.get(t[r], o));\n }\n return s;\n }\n subMatrixColumn(t, n, e) {\n if (n === void 0 && (n = 0), e === void 0 && (e = this.rows - 1), n > e || n < 0 || n >= this.rows || e < 0 || e >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let s = new x(e - n + 1, t.length);\n for (let r = 0; r < t.length; r++)\n for (let o = n; o <= e; o++) {\n if (t[r] < 0 || t[r] >= this.columns)\n throw new RangeError(`Column index out of range: ${t[r]}`);\n s.set(o - n, r, this.get(o, t[r]));\n }\n return s;\n }\n setSubMatrix(t, n, e) {\n if (t = x.checkMatrix(t), t.isEmpty())\n return this;\n let s = n + t.rows - 1, r = e + t.columns - 1;\n ve(this, n, s, e, r);\n for (let o = 0; o < t.rows; o++)\n for (let l = 0; l < t.columns; l++)\n this.set(n + o, e + l, t.get(o, l));\n return this;\n }\n selection(t, n) {\n Tn(this, t), qn(this, n);\n let e = new x(t.length, n.length);\n for (let s = 0; s < t.length; s++) {\n let r = t[s];\n for (let o = 0; o < n.length; o++) {\n let l = n[o];\n e.set(s, o, this.get(r, l));\n }\n }\n return e;\n }\n trace() {\n let t = Math.min(this.rows, this.columns), n = 0;\n for (let e = 0; e < t; e++)\n n += this.get(e, e);\n return n;\n }\n clone() {\n let t = new x(this.rows, this.columns);\n for (let n = 0; n < this.rows; n++)\n for (let e = 0; e < this.columns; e++)\n t.set(n, e, this.get(n, e));\n return t;\n }\n sum(t) {\n switch (t) {\n case \"row\":\n return An(this);\n case \"column\":\n return Bn(this);\n case void 0:\n return On(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n product(t) {\n switch (t) {\n case \"row\":\n return $n(this);\n case \"column\":\n return Ln(this);\n case void 0:\n return Nn(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n mean(t) {\n const n = this.sum(t);\n switch (t) {\n case \"row\": {\n for (let e = 0; e < this.rows; e++)\n n[e] /= this.columns;\n return n;\n }\n case \"column\": {\n for (let e = 0; e < this.columns; e++)\n n[e] /= this.rows;\n return n;\n }\n case void 0:\n return n / this.size;\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n variance(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: e = !0, mean: s = this.mean(t) } = n;\n if (typeof e != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (t) {\n case \"row\": {\n if (!nt(s))\n throw new TypeError(\"mean must be an array\");\n return zn(this, e, s);\n }\n case \"column\": {\n if (!nt(s))\n throw new TypeError(\"mean must be an array\");\n return Dn(this, e, s);\n }\n case void 0: {\n if (typeof s != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Vn(this, e, s);\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n standardDeviation(t, n) {\n typeof t == \"object\" && (n = t, t = void 0);\n const e = this.variance(t, n);\n if (t === void 0)\n return Math.sqrt(e);\n for (let s = 0; s < e.length; s++)\n e[s] = Math.sqrt(e[s]);\n return e;\n }\n center(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: e = this.mean(t) } = n;\n switch (t) {\n case \"row\": {\n if (!nt(e))\n throw new TypeError(\"center must be an array\");\n return Yn(this, e), this;\n }\n case \"column\": {\n if (!nt(e))\n throw new TypeError(\"center must be an array\");\n return Un(this, e), this;\n }\n case void 0: {\n if (typeof e != \"number\")\n throw new TypeError(\"center must be a number\");\n return Xn(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n scale(t, n = {}) {\n if (typeof t == \"object\" && (n = t, t = void 0), typeof n != \"object\")\n throw new TypeError(\"options must be an object\");\n let e = n.scale;\n switch (t) {\n case \"row\": {\n if (e === void 0)\n e = Gn(this);\n else if (!nt(e))\n throw new TypeError(\"scale must be an array\");\n return Wn(this, e), this;\n }\n case \"column\": {\n if (e === void 0)\n e = Qn(this);\n else if (!nt(e))\n throw new TypeError(\"scale must be an array\");\n return Jn(this, e), this;\n }\n case void 0: {\n if (e === void 0)\n e = Zn(this);\n else if (typeof e != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Kn(this, e), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n toString(t) {\n return en(this, t);\n }\n}\nR.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (R.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = xn);\nfunction Fe(i, t) {\n return i - t;\n}\nfunction Hn(i) {\n return i.every((t) => typeof t == \"number\");\n}\nR.random = R.rand;\nR.randomInt = R.randInt;\nR.diagonal = R.diag;\nR.prototype.diagonal = R.prototype.diag;\nR.identity = R.eye;\nR.prototype.negate = R.prototype.neg;\nR.prototype.tensorProduct = R.prototype.kroneckerProduct;\nclass x extends R {\n constructor(t, n) {\n if (super(), x.isMatrix(t))\n return t.clone();\n if (Number.isInteger(t) && t >= 0)\n if (this.data = [], Number.isInteger(n) && n >= 0)\n for (let e = 0; e < t; e++)\n this.data.push(new Float64Array(n));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n else if (nt(t)) {\n const e = t;\n if (t = e.length, n = t ? e[0].length : 0, typeof n != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let s = 0; s < t; s++) {\n if (e[s].length !== n)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!Hn(e[s]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(e[s]));\n }\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n this.rows = t, this.columns = n;\n }\n set(t, n, e) {\n return this.data[t][n] = e, this;\n }\n get(t, n) {\n return this.data[t][n];\n }\n removeRow(t) {\n return rt(this, t), this.data.splice(t, 1), this.rows -= 1, this;\n }\n addRow(t, n) {\n return n === void 0 && (n = t, t = this.rows), rt(this, t, !0), n = Float64Array.from(kt(this, n)), this.data.splice(t, 0, n), this.rows += 1, this;\n }\n removeColumn(t) {\n ot(this, t);\n for (let n = 0; n < this.rows; n++) {\n const e = new Float64Array(this.columns - 1);\n for (let s = 0; s < t; s++)\n e[s] = this.data[n][s];\n for (let s = t + 1; s < this.columns; s++)\n e[s - 1] = this.data[n][s];\n this.data[n] = e;\n }\n return this.columns -= 1, this;\n }\n addColumn(t, n) {\n typeof n > \"u\" && (n = t, t = this.columns), ot(this, t, !0), n = It(this, n);\n for (let e = 0; e < this.rows; e++) {\n const s = new Float64Array(this.columns + 1);\n let r = 0;\n for (; r < t; r++)\n s[r] = this.data[e][r];\n for (s[r++] = n[e]; r < this.columns + 1; r++)\n s[r] = this.data[e][r - 1];\n this.data[e] = s;\n }\n return this.columns += 1, this;\n }\n}\nRn(R, x);\nclass ts extends R {\n constructor(t) {\n super(), this.data = t, this.rows = t.length, this.columns = t[0].length;\n }\n set(t, n, e) {\n return this.data[t][n] = e, this;\n }\n get(t, n) {\n return this.data[t][n];\n }\n}\nfunction Re(i, t) {\n let n = 0;\n return Math.abs(i) > Math.abs(t) ? (n = t / i, Math.abs(i) * Math.sqrt(1 + n * n)) : t !== 0 ? (n = i / t, Math.abs(t) * Math.sqrt(1 + n * n)) : 0;\n}\nclass es {\n constructor(t, n = {}) {\n const { assumeSymmetric: e = !1 } = n;\n if (t = ts.checkMatrix(t), !t.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (t.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let s = t.columns, r = new x(s, s), o = new Float64Array(s), l = new Float64Array(s), a = t, h, c, u = !1;\n if (e ? u = !0 : u = t.isSymmetric(), u) {\n for (h = 0; h < s; h++)\n for (c = 0; c < s; c++)\n r.set(h, c, a.get(h, c));\n ns(s, l, o, r), ss(s, l, o, r);\n } else {\n let f = new x(s, s), p = new Float64Array(s);\n for (c = 0; c < s; c++)\n for (h = 0; h < s; h++)\n f.set(h, c, a.get(h, c));\n is(s, f, p, r), rs(s, l, o, r, f);\n }\n this.n = s, this.e = l, this.d = o, this.V = r;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let t = this.n, n = this.e, e = this.d, s = new x(t, t), r, o;\n for (r = 0; r < t; r++) {\n for (o = 0; o < t; o++)\n s.set(r, o, 0);\n s.set(r, r, e[r]), n[r] > 0 ? s.set(r, r + 1, n[r]) : n[r] < 0 && s.set(r, r - 1, n[r]);\n }\n return s;\n }\n}\nfunction ns(i, t, n, e) {\n let s, r, o, l, a, h, c, u;\n for (a = 0; a < i; a++)\n n[a] = e.get(i - 1, a);\n for (l = i - 1; l > 0; l--) {\n for (u = 0, o = 0, h = 0; h < l; h++)\n u = u + Math.abs(n[h]);\n if (u === 0)\n for (t[l] = n[l - 1], a = 0; a < l; a++)\n n[a] = e.get(l - 1, a), e.set(l, a, 0), e.set(a, l, 0);\n else {\n for (h = 0; h < l; h++)\n n[h] /= u, o += n[h] * n[h];\n for (s = n[l - 1], r = Math.sqrt(o), s > 0 && (r = -r), t[l] = u * r, o = o - s * r, n[l - 1] = s - r, a = 0; a < l; a++)\n t[a] = 0;\n for (a = 0; a < l; a++) {\n for (s = n[a], e.set(a, l, s), r = t[a] + e.get(a, a) * s, h = a + 1; h <= l - 1; h++)\n r += e.get(h, a) * n[h], t[h] += e.get(h, a) * s;\n t[a] = r;\n }\n for (s = 0, a = 0; a < l; a++)\n t[a] /= o, s += t[a] * n[a];\n for (c = s / (o + o), a = 0; a < l; a++)\n t[a] -= c * n[a];\n for (a = 0; a < l; a++) {\n for (s = n[a], r = t[a], h = a; h <= l - 1; h++)\n e.set(h, a, e.get(h, a) - (s * t[h] + r * n[h]));\n n[a] = e.get(l - 1, a), e.set(l, a, 0);\n }\n }\n n[l] = o;\n }\n for (l = 0; l < i - 1; l++) {\n if (e.set(i - 1, l, e.get(l, l)), e.set(l, l, 1), o = n[l + 1], o !== 0) {\n for (h = 0; h <= l; h++)\n n[h] = e.get(h, l + 1) / o;\n for (a = 0; a <= l; a++) {\n for (r = 0, h = 0; h <= l; h++)\n r += e.get(h, l + 1) * e.get(h, a);\n for (h = 0; h <= l; h++)\n e.set(h, a, e.get(h, a) - r * n[h]);\n }\n }\n for (h = 0; h <= l; h++)\n e.set(h, l + 1, 0);\n }\n for (a = 0; a < i; a++)\n n[a] = e.get(i - 1, a), e.set(i - 1, a, 0);\n e.set(i - 1, i - 1, 1), t[0] = 0;\n}\nfunction ss(i, t, n, e) {\n let s, r, o, l, a, h, c, u, f, p, g, w, P, m, d, y;\n for (o = 1; o < i; o++)\n t[o - 1] = t[o];\n t[i - 1] = 0;\n let M = 0, S = 0, C = Number.EPSILON;\n for (h = 0; h < i; h++) {\n for (S = Math.max(S, Math.abs(n[h]) + Math.abs(t[h])), c = h; c < i && !(Math.abs(t[c]) <= C * S); )\n c++;\n if (c > h)\n do {\n for (s = n[h], u = (n[h + 1] - s) / (2 * t[h]), f = Re(u, 1), u < 0 && (f = -f), n[h] = t[h] / (u + f), n[h + 1] = t[h] * (u + f), p = n[h + 1], r = s - n[h], o = h + 2; o < i; o++)\n n[o] -= r;\n for (M = M + r, u = n[c], g = 1, w = g, P = g, m = t[h + 1], d = 0, y = 0, o = c - 1; o >= h; o--)\n for (P = w, w = g, y = d, s = g * t[o], r = g * u, f = Re(u, t[o]), t[o + 1] = d * f, d = t[o] / f, g = u / f, u = g * n[o] - d * s, n[o + 1] = r + d * (g * s + d * n[o]), a = 0; a < i; a++)\n r = e.get(a, o + 1), e.set(a, o + 1, d * e.get(a, o) + g * r), e.set(a, o, g * e.get(a, o) - d * r);\n u = -d * y * P * m * t[h] / p, t[h] = d * u, n[h] = g * u;\n } while (Math.abs(t[h]) > C * S);\n n[h] = n[h] + M, t[h] = 0;\n }\n for (o = 0; o < i - 1; o++) {\n for (a = o, u = n[o], l = o + 1; l < i; l++)\n n[l] < u && (a = l, u = n[l]);\n if (a !== o)\n for (n[a] = n[o], n[o] = u, l = 0; l < i; l++)\n u = e.get(l, o), e.set(l, o, e.get(l, a)), e.set(l, a, u);\n }\n}\nfunction is(i, t, n, e) {\n let s = 0, r = i - 1, o, l, a, h, c, u, f;\n for (u = s + 1; u <= r - 1; u++) {\n for (f = 0, h = u; h <= r; h++)\n f = f + Math.abs(t.get(h, u - 1));\n if (f !== 0) {\n for (a = 0, h = r; h >= u; h--)\n n[h] = t.get(h, u - 1) / f, a += n[h] * n[h];\n for (l = Math.sqrt(a), n[u] > 0 && (l = -l), a = a - n[u] * l, n[u] = n[u] - l, c = u; c < i; c++) {\n for (o = 0, h = r; h >= u; h--)\n o += n[h] * t.get(h, c);\n for (o = o / a, h = u; h <= r; h++)\n t.set(h, c, t.get(h, c) - o * n[h]);\n }\n for (h = 0; h <= r; h++) {\n for (o = 0, c = r; c >= u; c--)\n o += n[c] * t.get(h, c);\n for (o = o / a, c = u; c <= r; c++)\n t.set(h, c, t.get(h, c) - o * n[c]);\n }\n n[u] = f * n[u], t.set(u, u - 1, f * l);\n }\n }\n for (h = 0; h < i; h++)\n for (c = 0; c < i; c++)\n e.set(h, c, h === c ? 1 : 0);\n for (u = r - 1; u >= s + 1; u--)\n if (t.get(u, u - 1) !== 0) {\n for (h = u + 1; h <= r; h++)\n n[h] = t.get(h, u - 1);\n for (c = u; c <= r; c++) {\n for (l = 0, h = u; h <= r; h++)\n l += n[h] * e.get(h, c);\n for (l = l / n[u] / t.get(u, u - 1), h = u; h <= r; h++)\n e.set(h, c, e.get(h, c) + l * n[h]);\n }\n }\n}\nfunction rs(i, t, n, e, s) {\n let r = i - 1, o = 0, l = i - 1, a = Number.EPSILON, h = 0, c = 0, u = 0, f = 0, p = 0, g = 0, w = 0, P = 0, m, d, y, M, S, C, _, b, v, $, Y, K, A, j, I;\n for (m = 0; m < i; m++)\n for ((m < o || m > l) && (n[m] = s.get(m, m), t[m] = 0), d = Math.max(m - 1, 0); d < i; d++)\n c = c + Math.abs(s.get(m, d));\n for (; r >= o; ) {\n for (M = r; M > o && (g = Math.abs(s.get(M - 1, M - 1)) + Math.abs(s.get(M, M)), g === 0 && (g = c), !(Math.abs(s.get(M, M - 1)) < a * g)); )\n M--;\n if (M === r)\n s.set(r, r, s.get(r, r) + h), n[r] = s.get(r, r), t[r] = 0, r--, P = 0;\n else if (M === r - 1) {\n if (_ = s.get(r, r - 1) * s.get(r - 1, r), u = (s.get(r - 1, r - 1) - s.get(r, r)) / 2, f = u * u + _, w = Math.sqrt(Math.abs(f)), s.set(r, r, s.get(r, r) + h), s.set(r - 1, r - 1, s.get(r - 1, r - 1) + h), b = s.get(r, r), f >= 0) {\n for (w = u >= 0 ? u + w : u - w, n[r - 1] = b + w, n[r] = n[r - 1], w !== 0 && (n[r] = b - _ / w), t[r - 1] = 0, t[r] = 0, b = s.get(r, r - 1), g = Math.abs(b) + Math.abs(w), u = b / g, f = w / g, p = Math.sqrt(u * u + f * f), u = u / p, f = f / p, d = r - 1; d < i; d++)\n w = s.get(r - 1, d), s.set(r - 1, d, f * w + u * s.get(r, d)), s.set(r, d, f * s.get(r, d) - u * w);\n for (m = 0; m <= r; m++)\n w = s.get(m, r - 1), s.set(m, r - 1, f * w + u * s.get(m, r)), s.set(m, r, f * s.get(m, r) - u * w);\n for (m = o; m <= l; m++)\n w = e.get(m, r - 1), e.set(m, r - 1, f * w + u * e.get(m, r)), e.set(m, r, f * e.get(m, r) - u * w);\n } else\n n[r - 1] = b + u, n[r] = b + u, t[r - 1] = w, t[r] = -w;\n r = r - 2, P = 0;\n } else {\n if (b = s.get(r, r), v = 0, _ = 0, M < r && (v = s.get(r - 1, r - 1), _ = s.get(r, r - 1) * s.get(r - 1, r)), P === 10) {\n for (h += b, m = o; m <= r; m++)\n s.set(m, m, s.get(m, m) - b);\n g = Math.abs(s.get(r, r - 1)) + Math.abs(s.get(r - 1, r - 2)), b = v = 0.75 * g, _ = -0.4375 * g * g;\n }\n if (P === 30 && (g = (v - b) / 2, g = g * g + _, g > 0)) {\n for (g = Math.sqrt(g), v < b && (g = -g), g = b - _ / ((v - b) / 2 + g), m = o; m <= r; m++)\n s.set(m, m, s.get(m, m) - g);\n h += g, b = v = _ = 0.964;\n }\n for (P = P + 1, S = r - 2; S >= M && (w = s.get(S, S), p = b - w, g = v - w, u = (p * g - _) / s.get(S + 1, S) + s.get(S, S + 1), f = s.get(S + 1, S + 1) - w - p - g, p = s.get(S + 2, S + 1), g = Math.abs(u) + Math.abs(f) + Math.abs(p), u = u / g, f = f / g, p = p / g, !(S === M || Math.abs(s.get(S, S - 1)) * (Math.abs(f) + Math.abs(p)) < a * (Math.abs(u) * (Math.abs(s.get(S - 1, S - 1)) + Math.abs(w) + Math.abs(s.get(S + 1, S + 1)))))); )\n S--;\n for (m = S + 2; m <= r; m++)\n s.set(m, m - 2, 0), m > S + 2 && s.set(m, m - 3, 0);\n for (y = S; y <= r - 1 && (j = y !== r - 1, y !== S && (u = s.get(y, y - 1), f = s.get(y + 1, y - 1), p = j ? s.get(y + 2, y - 1) : 0, b = Math.abs(u) + Math.abs(f) + Math.abs(p), b !== 0 && (u = u / b, f = f / b, p = p / b)), b !== 0); y++)\n if (g = Math.sqrt(u * u + f * f + p * p), u < 0 && (g = -g), g !== 0) {\n for (y !== S ? s.set(y, y - 1, -g * b) : M !== S && s.set(y, y - 1, -s.get(y, y - 1)), u = u + g, b = u / g, v = f / g, w = p / g, f = f / u, p = p / u, d = y; d < i; d++)\n u = s.get(y, d) + f * s.get(y + 1, d), j && (u = u + p * s.get(y + 2, d), s.set(y + 2, d, s.get(y + 2, d) - u * w)), s.set(y, d, s.get(y, d) - u * b), s.set(y + 1, d, s.get(y + 1, d) - u * v);\n for (m = 0; m <= Math.min(r, y + 3); m++)\n u = b * s.get(m, y) + v * s.get(m, y + 1), j && (u = u + w * s.get(m, y + 2), s.set(m, y + 2, s.get(m, y + 2) - u * p)), s.set(m, y, s.get(m, y) - u), s.set(m, y + 1, s.get(m, y + 1) - u * f);\n for (m = o; m <= l; m++)\n u = b * e.get(m, y) + v * e.get(m, y + 1), j && (u = u + w * e.get(m, y + 2), e.set(m, y + 2, e.get(m, y + 2) - u * p)), e.set(m, y, e.get(m, y) - u), e.set(m, y + 1, e.get(m, y + 1) - u * f);\n }\n }\n }\n if (c !== 0) {\n for (r = i - 1; r >= 0; r--)\n if (u = n[r], f = t[r], f === 0)\n for (M = r, s.set(r, r, 1), m = r - 1; m >= 0; m--) {\n for (_ = s.get(m, m) - u, p = 0, d = M; d <= r; d++)\n p = p + s.get(m, d) * s.get(d, r);\n if (t[m] < 0)\n w = _, g = p;\n else if (M = m, t[m] === 0 ? s.set(m, r, _ !== 0 ? -p / _ : -p / (a * c)) : (b = s.get(m, m + 1), v = s.get(m + 1, m), f = (n[m] - u) * (n[m] - u) + t[m] * t[m], C = (b * g - w * p) / f, s.set(m, r, C), s.set(\n m + 1,\n r,\n Math.abs(b) > Math.abs(w) ? (-p - _ * C) / b : (-g - v * C) / w\n )), C = Math.abs(s.get(m, r)), a * C * C > 1)\n for (d = m; d <= r; d++)\n s.set(d, r, s.get(d, r) / C);\n }\n else if (f < 0)\n for (M = r - 1, Math.abs(s.get(r, r - 1)) > Math.abs(s.get(r - 1, r)) ? (s.set(r - 1, r - 1, f / s.get(r, r - 1)), s.set(r - 1, r, -(s.get(r, r) - u) / s.get(r, r - 1))) : (I = Yt(0, -s.get(r - 1, r), s.get(r - 1, r - 1) - u, f), s.set(r - 1, r - 1, I[0]), s.set(r - 1, r, I[1])), s.set(r, r - 1, 0), s.set(r, r, 1), m = r - 2; m >= 0; m--) {\n for ($ = 0, Y = 0, d = M; d <= r; d++)\n $ = $ + s.get(m, d) * s.get(d, r - 1), Y = Y + s.get(m, d) * s.get(d, r);\n if (_ = s.get(m, m) - u, t[m] < 0)\n w = _, p = $, g = Y;\n else if (M = m, t[m] === 0 ? (I = Yt(-$, -Y, _, f), s.set(m, r - 1, I[0]), s.set(m, r, I[1])) : (b = s.get(m, m + 1), v = s.get(m + 1, m), K = (n[m] - u) * (n[m] - u) + t[m] * t[m] - f * f, A = (n[m] - u) * 2 * f, K === 0 && A === 0 && (K = a * c * (Math.abs(_) + Math.abs(f) + Math.abs(b) + Math.abs(v) + Math.abs(w))), I = Yt(\n b * p - w * $ + f * Y,\n b * g - w * Y - f * $,\n K,\n A\n ), s.set(m, r - 1, I[0]), s.set(m, r, I[1]), Math.abs(b) > Math.abs(w) + Math.abs(f) ? (s.set(\n m + 1,\n r - 1,\n (-$ - _ * s.get(m, r - 1) + f * s.get(m, r)) / b\n ), s.set(\n m + 1,\n r,\n (-Y - _ * s.get(m, r) - f * s.get(m, r - 1)) / b\n )) : (I = Yt(\n -p - v * s.get(m, r - 1),\n -g - v * s.get(m, r),\n w,\n f\n ), s.set(m + 1, r - 1, I[0]), s.set(m + 1, r, I[1]))), C = Math.max(Math.abs(s.get(m, r - 1)), Math.abs(s.get(m, r))), a * C * C > 1)\n for (d = m; d <= r; d++)\n s.set(d, r - 1, s.get(d, r - 1) / C), s.set(d, r, s.get(d, r) / C);\n }\n for (m = 0; m < i; m++)\n if (m < o || m > l)\n for (d = m; d < i; d++)\n e.set(m, d, s.get(m, d));\n for (d = i - 1; d >= o; d--)\n for (m = o; m <= l; m++) {\n for (w = 0, y = o; y <= Math.min(d, l); y++)\n w = w + e.get(m, y) * s.get(y, d);\n e.set(m, d, w);\n }\n }\n}\nfunction Yt(i, t, n, e) {\n let s, r;\n return Math.abs(n) > Math.abs(e) ? (s = e / n, r = n + s * e, [(i + s * t) / r, (t - s * i) / r]) : (s = n / e, r = e + s * n, [(s * i + t) / r, (s * t - i) / r]);\n}\nfunction ee(i, t, n) {\n const e = i / n, s = t / n;\n if (!(isFinite(e) && isFinite(s))) {\n const a = -i / t;\n return isFinite(a) ? [a] : i == 0 && t == 0 ? [0] : [];\n }\n const r = s * s - 4 * e;\n let o = 0;\n if (isFinite(r)) {\n if (r < 0)\n return [];\n if (r == 0)\n return [-0.5 * s];\n o = -0.5 * (s + Ct(Math.sqrt(r), s));\n } else\n o = -s;\n const l = e / o;\n return isFinite(l) ? l > o ? [o, l] : [l, o] : [o];\n}\nfunction nn(i, t, n, e) {\n const s = n / (3 * e), r = t / (3 * e), o = i / e;\n if (!(isFinite(o) && isFinite(r) && isFinite(s)))\n return ee(i, t, n);\n const l = -s * s + r, a = -r * s + o, h = s * o - r * r, c = 4 * l * h - a * a, u = -2 * s * l + a;\n if (c < 0) {\n const f = Math.sqrt(-0.25 * c), p = -0.5 * u;\n return [Math.cbrt(p + f) + Math.cbrt(p - f) - s];\n } else if (c == 0) {\n const f = Ct(Math.sqrt(-l), u);\n return [f - s, -2 * f - s];\n } else {\n const f = Math.atan2(Math.sqrt(c), -u) / 3, p = Math.cos(f), g = Math.sin(f) * Math.sqrt(3), w = 0.5 * (-p + g), P = 0.5 * (-p - g), m = 2 * Math.sqrt(-l);\n return [m * p - s, m * w - s, m * P - s];\n }\n}\nfunction os(i, t, n, e, s) {\n if (s == 0)\n return nn(i, t, n, e);\n const r = e / s, o = n / s, l = t / s, a = i / s;\n let h = Te(r, o, l, a, !1);\n if (h !== null)\n return h;\n const c = 716e74;\n for (let u = 0; u < 2; u++)\n if (h = Te(\n r / c,\n o / (c * c),\n l / (c * c * c),\n a / (c * c * c * c),\n u != 0\n ), h !== null) {\n for (let f = 0; f < h.length; f++)\n h[f] *= c;\n return h;\n }\n return [];\n}\nfunction Pt(i, t) {\n return t == 0 ? Math.abs(i) : Math.abs((i - t) / t);\n}\nfunction Te(i, t, n, e, s) {\n const r = ls(i, t, n, e, s);\n if (r !== null && r.length == 4) {\n let o = [];\n for (let l = 0; l < 2; l++) {\n const a = r[l * 2], h = r[l * 2 + 1];\n o = o.concat(ee(h, a, 1));\n }\n return o;\n }\n return null;\n}\nfunction ls(i, t, n, e, s) {\n function r(T, O, F, N) {\n const U = Pt(T + F, i), z = Pt(O + T * F + N, t), J = Pt(O * F + T * N, n);\n return U + z + J;\n }\n function o(T, O, F, N) {\n return r(T, O, F, N) + Pt(O * N, e);\n }\n const l = 9 * i * i - 24 * t, a = l >= 0 ? -2 * t / (3 * i + Ct(Math.sqrt(l), i)) : -0.25 * i, h = i + 4 * a, c = t + 3 * a * (i + 2 * a), u = n + a * (2 * t + a * (3 * i + 4 * a)), f = e + a * (n + a * (t + a * (i + a)));\n let p = 0, g = 0;\n const w = 349e100;\n if (s) {\n const T = h / w, O = c / w, F = u / w, N = f / w;\n p = T * F - 4 / w * N - 1 / 3 * O * O, g = (T * F - 8 / w * N - 2 / 9 * O * O) * (1 / 3) * O - F * (F / w) - T * T * N;\n } else\n p = h * u - 4 * f - 1 / 3 * c * c, g = (h * u + 8 * f - 2 / 9 * c * c) * (1 / 3) * c - u * u - h * h * f;\n if (!isFinite(p) && isFinite(g))\n return null;\n let P = hs(p, g);\n s && (P *= w);\n const m = i * 0.5, d = 1 / 6 * t + 0.5 * P, y = n - i * d, M = 2 / 3 * t - P - m * m, S = 0.5 * y / M, C = 2 * (e - d * d) / y, _ = 0.5 * y / C;\n let b = 0, v = 0, $ = 0;\n for (let T = 0; T < 3; T++) {\n const O = T == 1 ? _ : M, F = T == 0 ? S : C, N = Pt(O + m * m + 2 * d, t), U = Pt(2 * (O * F + m * d), n), z = Pt(O * F * F + d * d, e), J = N + U + z;\n (T == 0 || J < $) && (b = O, v = F, $ = J);\n }\n const Y = b, K = v;\n let A = 0, j = 0, I = 0, k = 0;\n if (Y < 0) {\n const T = Math.sqrt(-Y);\n if (A = m + T, j = d + T * K, I = m - T, k = d - T * K, Math.abs(k) < Math.abs(j) ? k = e / j : Math.abs(k) > Math.abs(j) && (j = e / k), Math.abs(A) != Math.abs(I)) {\n let O = null, F = null;\n if (Math.abs(A) < Math.abs(I)) {\n const U = (n - j * I) / k, z = (t - k - j) / I;\n O = [i - I, U, z], F = [I, I, I];\n } else {\n const U = (n - A * k) / j, z = (t - k - j) / A, J = i - A;\n O = [A, A, A], F = [J, U, z];\n }\n let N = 0;\n for (let U = 0; U < 3; U++) {\n const z = O[U], J = F[U];\n if (isFinite(z) && isFinite(J)) {\n const ct = r(z, j, J, k);\n (U == 0 || ct < N) && (A = z, I = J, N = ct);\n }\n }\n }\n } else if (Y == 0) {\n const T = e - d * d;\n A = m, j = d + Math.sqrt(-T), I = m, k = d - Math.sqrt(-T), Math.abs(j) > Math.abs(k) ? k = e / j : Math.abs(k) > Math.abs(j) && (j = e / k);\n } else\n return [];\n let mt = o(A, j, I, k);\n for (let T = 0; T < 8 && mt != 0; T++) {\n const O = j * k - e, F = j * I + A * k - n, N = j + A * I + k - t, U = A + I - i, z = A - I, J = j * j - j * (I * z + 2 * k) + k * (A * z + k);\n if (J == 0)\n break;\n const ct = 1 / J, ht = k - j, gt = j * I - A * k, ne = z * O + ht * F + gt * N - (j * ht + A * gt) * U, se = (A * z + ht) * O - j * (z * F + ht * N + gt * U), ie = -z * O - ht * F - gt * N + (I * gt + k * ht) * U, re = -(I * z + ht) * O + k * (z * F + ht * N + gt * U), qt = A - ct * ne, At = j - ct * se, Bt = I - ct * ie, Ot = k - ct * re, $t = o(qt, At, Bt, Ot);\n if ($t < mt)\n A = qt, j = At, I = Bt, k = Ot, mt = $t;\n else\n break;\n }\n return [A, j, I, k];\n}\nfunction hs(i, t) {\n const n = -0.3333333333333333 * i, e = 0.5 * t;\n let s, r = null;\n if ((Math.abs(n) >= 1e102 || Math.abs(e) >= 1e164) && (Math.abs(n) < Math.abs(e) ? r = 1 - n * (n / e) * (n / e) : r = Math.sign(n) * (e / n * (e / n) / n - 1)), r !== null && e == 0)\n i > 0 ? s = 0 : s = Math.sqrt(-i);\n else if (r !== null ? r < 0 : e * e < n * n * n) {\n const h = r !== null ? e / n / Math.sqrt(n) : e / Math.sqrt(n * n * n);\n s = -2 * Math.sqrt(n) * Ct(Math.cos(Math.acos(Math.abs(h)) * (1 / 3)), h);\n } else {\n let h;\n r !== null ? Math.abs(n) < Math.abs(e) ? h = -e * (1 + Math.sqrt(r)) : h = -e - Ct(Math.sqrt(Math.abs(n)) * n * Math.sqrt(r), e) : h = Math.cbrt(-e - Ct(Math.sqrt(e * e - n * n * n), e));\n const c = h == 0 ? 0 : n / h;\n s = h + c;\n }\n let o = s, l = (o * o + i) * o + t;\n const a = 222045e-21;\n if (Math.abs(l) < a * Math.max(o * o * o, i * o, t))\n return o;\n for (let h = 0; h < 8; h++) {\n const c = 3 * o * o + i;\n if (c == 0)\n break;\n const u = o - l / c, f = (u * u + i) * u + t;\n if (f == 0)\n return u;\n if (Math.abs(f) >= Math.abs(l))\n break;\n o = u, l = f;\n }\n return o;\n}\nfunction Ct(i, t) {\n const n = Math.abs(i);\n return t < 0 ? -n : n;\n}\nfunction we(i, t = 1e-9) {\n if (i[i.length - 1] == 0)\n return we(i.slice(0, -1), t);\n const n = new x([\n i.slice(0, -1).reverse().map((s) => -s / i[i.length - 1]),\n ...Array.from({ length: i.length - 2 }, (s, r) => {\n const o = new Array(i.length - 1).fill(0);\n return o[r] = 1, o;\n })\n ]), e = new es(n);\n return e.realEigenvalues.filter(\n (s, r) => Math.abs(e.imaginaryEigenvalues[r]) < t\n );\n}\nconst as = (i, t, n) => [i[0] * (1 - n) + t[0] * n, i[1] * (1 - n) + t[1] * n];\nfunction us(i) {\n const t = [];\n for (let n = 0; n < i.length - 1; n++)\n t.push([i[n], i[n + 1]]);\n return t;\n}\nfunction de(i, t) {\n const n = us(i).map(([e, s]) => as(e, s, t));\n return i.length === 2 ? [n] : [...de(n, t), n];\n}\nclass X extends Tt {\n constructor(t, n, e, s) {\n super(t, n), this.segmentType = \"CUBIC_BEZIER\", this._boundingBox = null, this._polynomialCoefficients = null, this.firstControlPoint = e, this.lastControlPoint = s;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = (n) => {\n const [e, s, r, o] = [\n this.firstPoint[n],\n this.firstControlPoint[n],\n this.lastControlPoint[n],\n this.lastPoint[n]\n ], l = -e + 3 * s - 3 * r + o, a = 2 * e - 4 * s + 2 * r, h = -e + s;\n return ee(h, a, l).filter(\n (c) => c >= -this.precision && c <= 1 + this.precision\n );\n };\n this._boundingBox = me([\n this.firstPoint,\n ...t(0).map((n) => this.paramPoint(n)),\n ...t(1).map((n) => this.paramPoint(n)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new X(\n this.firstPoint,\n this.lastPoint,\n this.firstControlPoint,\n this.lastControlPoint\n );\n }\n reverse() {\n return new X(\n this.lastPoint,\n this.firstPoint,\n this.lastControlPoint,\n this.firstControlPoint\n );\n }\n isSame(t) {\n return t.segmentType !== \"CUBIC_BEZIER\" ? !1 : E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) && E(this.firstControlPoint, t.firstControlPoint) && E(this.lastControlPoint, t.lastControlPoint);\n }\n distanceFrom(t) {\n const e = He((s) => Et(this.paramPoint(s), t), this.precision);\n return e.argMin < -this.precision || e.argMin > 1 + this.precision ? Math.min(\n W(this.firstPoint, t),\n W(this.lastPoint, t)\n ) : Math.sqrt(e.fMin);\n }\n isOnSegment(t) {\n if (!this.boundingBox.contains(t))\n return !1;\n try {\n const n = this.pointToParam(t);\n return n >= -this.precision && n <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(t) {\n const n = 1 - t, e = n * n, s = t * t, r = 3 * e, o = 6 * n * t, l = 3 * s, a = L(this.firstControlPoint, this.firstPoint), h = L(this.lastControlPoint, this.firstControlPoint), c = L(this.lastPoint, this.lastControlPoint);\n return [\n r * a[0] + o * h[0] + l * c[0],\n r * a[1] + o * h[1] + l * c[1]\n ];\n }\n tangentAt(t) {\n const n = this.pointToParam(t);\n return Q(this.gradientAt(n));\n }\n get tangentAtFirstPoint() {\n return Q(L(this.firstControlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return Q(L(this.lastControlPoint, this.lastPoint));\n }\n normalAt(t) {\n const n = this.tangentAt(t);\n return et(n);\n }\n splitAtParameters(t, n = null) {\n const e = [...t];\n e.sort((r, o) => r - o);\n let s = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.firstControlPoint,\n p2: this.lastControlPoint\n };\n return e.flatMap((r, o) => {\n if (r - s.originalParam < this.precision)\n return [];\n let l = !1;\n r > 1 - this.precision && (l = !0);\n const a = (r - s.originalParam) / (1 - s.originalParam), h = de(\n [\n s.p0,\n s.p1,\n s.p2,\n this.lastPoint\n ],\n l ? 1 : a\n ), c = l ? this.lastPoint : (n == null ? void 0 : n.get(r)) ?? h[0][0], u = h[1][0], f = h[2][0], p = h[1][1], g = h[2][2], w = new X(\n s.p0,\n c,\n f,\n u\n );\n return s = {\n param: a,\n originalParam: r,\n p0: c,\n p1: p,\n p2: g\n }, o === e.length - 1 && !l ? [\n w,\n new X(\n s.p0,\n this.lastPoint,\n s.p1,\n s.p2\n )\n ] : w;\n });\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const e = n.map((r) => this.pointToParam(r)), s = new Map(\n ut([e, n])\n );\n return this.splitAtParameters(e, s);\n }\n transform(t) {\n return new X(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.firstControlPoint),\n t.transform(this.lastControlPoint)\n );\n }\n paramPoint(t) {\n const n = 1 - t, e = n * n, s = t * t, r = e * n, o = 3 * e * t, l = 3 * n * s, a = s * t;\n return [\n r * this.firstPoint[0] + o * this.firstControlPoint[0] + l * this.lastControlPoint[0] + a * this.lastPoint[0],\n r * this.firstPoint[1] + o * this.firstControlPoint[1] + l * this.lastControlPoint[1] + a * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const t = (n) => {\n const e = this.firstPoint[n], s = this.firstControlPoint[n], r = this.lastControlPoint[n], o = this.lastPoint[n], l = -e + 3 * s - 3 * r + o, a = 3 * e - 6 * s + 3 * r, h = -3 * e + 3 * s;\n return [e, h, a, l];\n };\n this._polynomialCoefficients = [t(0), t(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(t) {\n const [n, e, s, r] = this.polynomialCoefficients[1];\n return nn(n - t, e, s, r).filter(\n (o) => o >= -this.precision && o <= 1 + this.precision\n );\n }\n pointToParam(t) {\n const n = this.paramsAtY(t[1]);\n if (n.length === 0)\n throw new Error(\"Point is not on the curve\");\n const e = (r) => Math.abs(this.paramPoint(r)[0] - t[0]) <= this.precision, s = n.find(e);\n if (s === void 0)\n throw new Error(\"Point is not on the curve\");\n return s;\n }\n}\nfunction cs(i, t) {\n const n = L(t, i.firstPoint), e = le(n, i.V) / i.squareLength;\n return i.paramPoint(e);\n}\nfunction Wt(i, t, n) {\n const e = n || i.precision, s = cs(i, t.center), r = W(s, t.center);\n if (r > t.radius + e)\n return [];\n if (Math.abs(r - t.radius) < e) {\n const u = s;\n return i.isOnSegment(u) && t.isOnSegment(u) ? [u] : [];\n }\n const o = [], l = Math.sqrt(\n t.radius * t.radius - r * r\n ), a = i.tangentAtFirstPoint, h = Z(s, st(a, l));\n i.isOnSegment(h) && t.isOnSegment(h) && o.push(h);\n const c = Z(s, st(a, -l));\n return i.isOnSegment(c) && t.isOnSegment(c) && o.push(c), o;\n}\nconst fs = (i) => {\n const { firstPoint: t, lastPoint: n, center: e, clockwise: s } = i;\n return new q(n, t, e, s, {\n ignoreChecks: !0\n });\n}, ms = (i, t) => {\n if (i.isSame(t))\n return [i];\n const n = dt(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((e) => e !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((e, s) => i.pointToParam(e) - i.pointToParam(s));\n if (n.length === 0)\n return [];\n if (n.length === 1)\n return [];\n if (n.length === 2)\n return i.isSame(fs(t)) ? [] : [new q(n[0], n[1], i.center, i.clockwise)];\n if (n.length === 3) {\n const e = E(n[0], t.lastPoint) || E(n[0], t.firstPoint) ? 1 : 0;\n return [\n new q(\n n[0 + e],\n n[1 + e],\n i.center,\n i.clockwise\n )\n ];\n } else if (n.length === 4)\n return [\n new q(n[0], n[1], i.center, i.clockwise),\n new q(n[2], n[3], i.center, i.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction sn(i, t, n = !1, e) {\n const s = e || i.precision, r = W(i.center, t.center), o = i.radius + t.radius;\n if (r > o + s)\n return [];\n const l = Math.abs(i.radius - t.radius);\n if (r < l - s)\n return [];\n if (r < s)\n return l > s ? [] : n ? ms(i, t) : [];\n const a = Q(L(t.center, i.center)), h = r > o - s;\n if (\n // circles are outside each other\n h || // circles are inside each other\n Math.abs(r - l) < s\n ) {\n const m = h || i.radius > t.radius ? 1 : -1, d = Z(\n i.center,\n st(a, m * i.radius)\n );\n return i.isOnSegment(d) && t.isOnSegment(d) ? [d] : [];\n }\n const c = i.radius * i.radius / (2 * r) - t.radius * t.radius / (2 * r) + r / 2, u = Z(\n i.center,\n st(a, c)\n ), f = Math.sqrt(\n i.radius * i.radius - c * c\n ), p = et(a), g = Z(u, st(p, f)), w = Z(u, st(p, -f)), P = [];\n return i.isOnSegment(g) && t.isOnSegment(g) && P.push(g), i.isOnSegment(w) && t.isOnSegment(w) && P.push(w), P;\n}\nclass D extends Tt {\n constructor(t, n, e, s, r, o, l = !1, {\n ignoreChecks: a = !1,\n angleUnits: h = \"deg\"\n } = {}) {\n super(t, n), this.segmentType = \"ELLIPSE_ARC\", this.precision = 1e-6, this._coefficients = null, this.center = e;\n const c = s >= r;\n this.majorRadius = c ? s : r, this.minorRadius = c ? r : s;\n const u = h === \"deg\" ? o * ge : o;\n if (this.tiltAngle = yt(\n c ? u : u + Math.PI / 2\n ), this.clockwise = l, !a) {\n if (E(t, n))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `First point ${G(\n t\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(n))\n throw new Error(\n `Last point ${G(n)} not on the ellipse defined by ${this.info}`\n );\n if (Math.abs(this.majorRadius - this.minorRadius) < this.precision)\n throw new Error(\n \"Both radii should be different, create an arc instead\"\n );\n }\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [t, n] = this.center, e = this.majorRadius * this.majorRadius, s = this.minorRadius * this.minorRadius, r = Math.cos(this.tiltAngle), o = Math.sin(this.tiltAngle), l = e * o * o + s * r * r, a = 2 * (s - e) * o * r, h = e * r * r + s * o * o;\n this._coefficients = {\n x2: l,\n xy: a,\n y2: h,\n x: -2 * l * t - a * n,\n y: -2 * h * n - a * t,\n c: l * t * t + a * t * n + h * n * n - e * s\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${G(this.firstPoint)}, ${G(\n this.lastPoint\n )}, ${G(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * wn}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new D(\n this.lastPoint,\n this.firstPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n !this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n clone() {\n return new D(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n );\n }\n computeEllipseExtrema() {\n const t = Math.tan(this.tiltAngle), n = this.minorRadius / this.majorRadius, e = -Math.atan(n * t), s = Math.atan(n / t);\n return [e, Math.PI + e, s, Math.PI + s].map((o) => this.thetaToParam(o)).filter((o) => this.isValidParameter(o)).map((o) => this.paramPoint(o));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const t = this.computeEllipseExtrema(), n = [\n this.firstPoint,\n this.lastPoint,\n ...t\n ];\n this._boundingBox = me(n).grow(this.precision);\n }\n return this._boundingBox;\n }\n get linearExentricity() {\n return this._linearExentricity === void 0 && (this._linearExentricity = Math.sqrt(\n this.majorRadius * this.majorRadius - this.minorRadius * this.minorRadius\n )), this._linearExentricity;\n }\n get exentricity() {\n return this._exentricity === void 0 && (this._exentricity = this.linearExentricity / this.majorRadius), this._exentricity;\n }\n get focals() {\n if (this._focals === void 0) {\n const t = this.majorAxis;\n this._focals = [\n Z(this.center, st(t, this.linearExentricity)),\n Z(this.center, st(t, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return xt(1, this.tiltAngle);\n }\n paramPoint(t) {\n const n = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(n),\n this.minorRadius * Math.sin(n)\n ]);\n }\n pointToParam(t) {\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Point ${G(t)} not on the ellipse defined by ${this.repr}`\n );\n const n = this.thetaToParam(this.pointTheta(t));\n if (!this.isValidParameter(n))\n throw new Error(\n `Point ${G(t)} is not on segment ${this.repr}`\n );\n return n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(t) {\n return 1 - t >= -this.precision && t >= -this.precision;\n }\n isSame(t) {\n return E(this.center, t.center) && Math.abs(this.majorRadius - t.majorRadius) < this.precision && Math.abs(this.minorRadius - t.minorRadius) < this.precision && (Math.abs(this.tiltAngle - t.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - t.tiltAngle) - Math.PI) < this.precision) && (E(this.firstPoint, t.firstPoint) && this.clockwise === t.clockwise || E(this.firstPoint, t.lastPoint) && this.clockwise !== t.clockwise);\n }\n pointTheta(t) {\n const n = this.ellipseReferenceFrameTransform.transform(t), e = Math.atan2(\n n[1] / this.minorRadius,\n n[0] / this.majorRadius\n );\n return yt(e);\n }\n thetaToParam(t) {\n return Gt(this.firstAngle, yt(t), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(t) {\n const [n, e] = this.focals, s = W(t, n), r = W(t, e);\n return Math.abs(2 * this.majorRadius - s - r) < this.precision;\n }\n isOnSegment(t) {\n return this.isPointOnEllipse(t) ? this.isValidParameter(this.thetaToParam(this.pointTheta(t))) : !1;\n }\n distanceFrom(t) {\n let n;\n if (E(t, this.center) ? n = Z(\n this.center,\n st(et(this.majorAxis), this.minorRadius)\n ) : n = this.reverseEllipseReferenceFrameTransform.transform(\n ps(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(t)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(t))))\n return W(t, n);\n if (Mn(t, this.majorAxis, this.center)) {\n const e = yt(\n 2 * Math.PI - this.pointTheta(t)\n ), s = this.thetaToParam(e);\n if (this.isValidParameter(s))\n return W(t, this.paramPoint(s));\n }\n return Math.min(\n W(t, this.firstPoint),\n W(t, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new tt().rotate(-this.tiltAngle).translate(-this.center[0], -this.center[1])), this._ellipseReferenceFrameTransform;\n }\n get reverseEllipseReferenceFrameTransform() {\n return this._reverseEllipseReferenceFrameTransform === void 0 && (this._reverseEllipseReferenceFrameTransform = new tt().translate(this.center[0], this.center[1]).rotate(this.tiltAngle)), this._reverseEllipseReferenceFrameTransform;\n }\n get rotateFromEllipseReferenceFrame() {\n return this._rotateFromEllipseReferenceFrame === void 0 && (this._rotateFromEllipseReferenceFrame = new tt().rotate(\n this.tiltAngle\n )), this._rotateFromEllipseReferenceFrame;\n }\n get firstAngle() {\n return this._firstAngle === void 0 && (this._firstAngle = this.pointTheta(this.firstPoint)), this._firstAngle;\n }\n get lastAngle() {\n return this._lastAngle === void 0 && (this._lastAngle = this.pointTheta(this.lastPoint)), this._lastAngle;\n }\n get deltaAngle() {\n return this._deltaAngle === void 0 && (this._deltaAngle = Gt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(t) {\n const n = this.tangentAt(t);\n return this.clockwise ? et(n) : Xt(n);\n }\n gradientAt(t) {\n const n = this.firstAngle + t * this.deltaAngle * (this.clockwise ? -1 : 1), e = -this.majorRadius * this.deltaAngle * Math.sin(n), s = this.minorRadius * this.deltaAngle * Math.cos(n), r = this.clockwise ? [-e, -s] : [e, s];\n return this.rotateFromEllipseReferenceFrame.transform(r);\n }\n tangentAt(t) {\n const n = this.pointTheta(t), e = -this.majorRadius * Math.sin(n), s = this.minorRadius * Math.cos(n), r = this.clockwise ? [-e, -s] : [e, s];\n return Q(this.rotateFromEllipseReferenceFrame.transform(r));\n }\n get tangentAtFirstPoint() {\n const t = -this.majorRadius * Math.sin(this.firstAngle), n = this.minorRadius * Math.cos(this.firstAngle), e = this.clockwise ? [-t, -n] : [t, n];\n return Q(this.rotateFromEllipseReferenceFrame.transform(e));\n }\n get tangentAtLastPoint() {\n const t = -this.majorRadius * Math.sin(this.lastAngle), n = this.minorRadius * Math.cos(this.lastAngle), e = this.clockwise ? [-t, -n] : [t, n];\n return Q(this.rotateFromEllipseReferenceFrame.transform(e));\n }\n transform(t) {\n const n = t.transformAngle(this.tiltAngle), e = t.scaleFactor();\n return new D(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.center),\n this.majorRadius * e,\n this.minorRadius * e,\n n,\n t.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const s = [0, 1, ...n.map((l) => this.pointToParam(l))], r = new Map(\n ut([s, [this.firstPoint, this.lastPoint, ...n]])\n );\n s.sort((l, a) => l - a);\n let o = null;\n return s.flatMap((l, a) => {\n if (a === s.length - 1)\n return [];\n const h = s[a + 1];\n if (h - l < this.precision)\n return o === null && (o = l), [];\n const c = o === null ? l : o, u = new D(\n r.get(c) || this.paramPoint(c),\n r.get(h) || this.paramPoint(h),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return o = null, u;\n });\n }\n}\nfunction ui(i, t, n, e, s, r, o) {\n const { center: l, rx: a, ry: h } = gs(\n i,\n t,\n n,\n e,\n s * ge,\n !r,\n o\n );\n return Math.abs(a - h) < 1e-9 ? new q(i, t, l, o) : new D(i, t, l, a, h, s, o);\n}\nfunction gs([i, t], [n, e], s, r, o, l, a) {\n if (s < 0 && (s = -s), r < 0 && (r = -r), s == 0 || r == 0)\n throw Error(\"rx and ry can not be 0\");\n const h = Math.sin(o), c = Math.cos(o), u = (i - n) / 2, f = (t - e) / 2, p = (i + n) / 2, g = (t + e) / 2, w = c * u + h * f, P = c * f - h * u, m = w * w / (s * s) + P * P / (r * r);\n m > 1 && (s = s * Math.sqrt(m), r = r * Math.sqrt(m));\n const d = s * r, y = s * P, M = r * w, S = y * y + M * M;\n if (!S)\n throw Error(\"start point can not be same as end point\");\n let C = Math.sqrt(Math.abs((d * d - S) / S));\n l == a && (C = -C);\n const _ = C * y / r, b = -C * M / s, v = c * _ - h * b + p, $ = h * _ + c * b + g;\n return {\n center: [v, $],\n rx: s,\n ry: r\n };\n}\nfunction ps(i, t, n) {\n const e = Math.abs(n[0]), s = Math.abs(n[1]);\n let r = 0.707, o = 0.707;\n const l = i, a = t;\n for (let h = 0; h < 3; h++) {\n const c = l * r, u = a * o, f = (l * l - a * a) * r ** 3 / l, p = (a * a - l * l) * o ** 3 / a, g = c - f, w = u - p, P = e - f, m = s - p, d = Math.hypot(g, w), y = Math.hypot(P, m);\n r = Math.min(1, Math.max(0, (P * d / y + f) / l)), o = Math.min(1, Math.max(0, (m * d / y + p) / a));\n const M = Math.hypot(r, o);\n r /= M, o /= M;\n }\n return [l * r * Math.sign(n[0]), a * o * Math.sign(n[1])];\n}\nfunction he(i, t, n = 1e-9) {\n const e = i.transform(t.ellipseReferenceFrameTransform), s = e.slope, r = e.yIntercept, o = t.majorRadius * t.majorRadius, l = t.minorRadius * t.minorRadius, a = t.majorRadius * t.minorRadius, h = e.slope * e.slope, c = e.yIntercept * e.yIntercept, u = (m) => m.map(\n (d) => t.reverseEllipseReferenceFrameTransform.transform(d)\n ).filter((d) => i.isOnSegment(d) && t.isOnSegment(d));\n if (!Number.isFinite(s)) {\n const m = e.firstPoint[0];\n if (Math.abs(m) - t.majorRadius > n)\n return [];\n if (Math.abs(Math.abs(m) - t.majorRadius) < n)\n return u([[m, 0]]);\n const d = t.minorRadius * Math.sqrt(1 - m * m / o), y = [m, d], M = [m, -d];\n return u([y, M]);\n }\n const f = o * h + l - c;\n if (f < -n)\n return [];\n const p = o * h + l;\n if (Math.abs(f) < n) {\n const m = -(o * s * r) / p, d = l * r / p;\n return u([[m, d]]);\n }\n const g = Math.sqrt(f), w = [\n -(o * s * r + a * g) / p,\n (l * r - a * s * g) / p\n ], P = [\n -(o * s * r - a * g) / p,\n (l * r + a * s * g) / p\n ];\n return u([w, P]);\n}\nfunction rn(i, t) {\n const n = Math.max(i.precision, t.precision), e = i.coefficients, s = e.x2, r = e.xy, o = e.y2, l = e.x, a = e.y, h = e.c, c = t.coefficients, u = c.x2, f = c.xy, p = c.y2, g = c.x, w = c.y, P = c.c, m = {\n z0: h * s * g * g + s * s * P * P - l * s * g * P + u * u * h * h - 2 * s * P * u * h - l * g * u * h + u * l * l * P,\n z1: w * l * l * u - P * g * s * r - 2 * s * P * u * a - h * u * f * l + 2 * g * f * s * h + 2 * w * P * s * s + g * g * s * a - w * g * s * l - 2 * s * w * u * h - h * u * g * r + 2 * h * a * u * u - P * f * s * l - a * u * g * l + 2 * P * r * u * l,\n z2: w * w * s * s + 2 * p * P * s * s - a * u * g * r + P * u * r * r - a * u * f * l - P * f * s * r - 2 * s * w * u * a + 2 * g * f * s * a - p * g * s * l - 2 * s * p * u * h + f * f * s * h + 2 * w * r * u * l + a * a * u * u - o * u * g * l - w * f * s * l + 2 * h * o * u * u - h * u * f * r + p * l * l * u + g * g * s * o - w * g * s * r - 2 * s * P * u * o,\n z3: -2 * s * u * o * w + w * u * r * r + 2 * p * r * u * l - o * u * f * l + f * f * s * a - w * f * s * r - 2 * s * p * u * a - a * u * f * r - p * f * s * l + 2 * w * p * s * s + 2 * a * o * u * u - o * u * g * r + 2 * g * f * s * o - p * g * s * r,\n z4: s * s * p * p - 2 * s * p * u * o + u * u * o * o - r * s * f * p - r * f * u * o + r * r * u * p + o * s * f * f\n }, y = we(\n [m.z0, m.z1, m.z2, m.z3, m.z4],\n n\n ).flatMap((M) => {\n const S = s * f * M + s * g - u * r * M - u * l;\n if (S)\n return [[-(s * P + s * p * M * M - u * o * M * M + s * w * M - u * a * M - u * h) / S, M]];\n const C = r * M + l, _ = -C / (2 * s), b = o * M * M + a * M + h, v = C * C / (4 * s * s) - b / s;\n if (Math.abs(v) < n)\n return [[_, M]];\n if (v > 0) {\n const $ = Math.sqrt(v);\n return [[_ + $, M], [_ - $, M]];\n }\n return [];\n });\n return dt(y, n);\n}\nfunction qe(i, t) {\n return rn(i, t).filter((e) => i.isOnSegment(e) && t.isOnSegment(e));\n}\nconst ws = (i) => {\n const {\n firstPoint: t,\n lastPoint: n,\n center: e,\n majorRadius: s,\n minorRadius: r,\n tiltAngle: o,\n clockwise: l\n } = i;\n return new D(\n n,\n t,\n e,\n s,\n r,\n o,\n l,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, ds = (i, t) => {\n if (i.isSame(t))\n return [i];\n const n = (s, r) => new D(\n s,\n r,\n i.center,\n i.majorRadius,\n i.minorRadius,\n i.tiltAngle,\n i.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), e = dt(\n [\n t.isOnSegment(i.firstPoint) ? i.firstPoint : null,\n t.isOnSegment(i.lastPoint) ? i.lastPoint : null,\n i.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n i.isOnSegment(t.lastPoint) ? t.lastPoint : null\n ].filter((s) => s !== null)\n // We sort by the param value of the first arc. This means that the points\n // will be sorted with the same orientation than arc1\n ).sort((s, r) => i.pointToParam(s) - i.pointToParam(r));\n if (e.length === 0)\n return [];\n if (e.length === 1)\n return [];\n if (e.length === 2)\n return i.isSame(ws(t)) ? [] : [n(e[0], e[1])];\n if (e.length === 3) {\n const s = E(e[0], t.lastPoint) || E(e[0], t.firstPoint) ? 1 : 0;\n return [n(e[0 + s], e[1 + s])];\n } else if (e.length === 4)\n return [n(e[0], e[1]), n(e[2], e[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction Ps(i, t, n = !1) {\n const e = Math.max(i.precision, t.precision);\n return E(i.center, t.center) && Math.abs(i.majorRadius - t.majorRadius) < e && Math.abs(i.minorRadius - t.minorRadius) < e && (Math.abs(i.tiltAngle - t.tiltAngle) < e || Math.abs(Math.abs(i.tiltAngle - t.tiltAngle) - Math.PI) < e) ? n ? ds(i, t) : [] : rn(i, t).filter((o) => i.isOnSegment(o) && t.isOnSegment(o));\n}\nfunction Ae(i, t) {\n const [n, e] = i.firstPoint, [s, r] = i.lastPoint, o = new tt().rotate(-Math.atan2(r - e, s - n)).translate(-n, -e), l = o.clone().inverse(), a = t.transform(o);\n return a.paramsAtY(0).map((h) => a.paramPoint(h)).map((h) => l.transform(h)).filter((h) => i.isOnSegment(h));\n}\nconst ys = (i, t = 1e-9) => {\n let n = i;\n return Math.abs(i) < t && (n = 0), n.toFixed(-Math.log10(t));\n};\nfunction on(i, t = 1e-9) {\n return Array.from(\n new Map(i.map((n) => [ys(n, t), n])).values()\n );\n}\nconst Ms = (i, t) => {\n const [[n, e, s, r], [o, l, a, h]] = t.polynomialCoefficients, c = i.coefficients, u = c.x2, f = c.xy, p = c.y2, g = c.x, w = c.y, P = c.c, m = n * n, d = e * e, y = s * s, M = r * r, S = o * o, C = l * l, _ = a * a, b = h * h, v = P + g * n + u * m + w * o + f * n * o + p * S, $ = g * e + 2 * u * n * e + f * e * o + w * l + f * n * l + 2 * p * o * l, Y = u * d + g * s + 2 * u * n * s + f * s * o + f * e * l + p * C + w * a + f * n * a + 2 * p * o * a, K = 2 * u * e * s + g * r + 2 * u * n * r + f * r * o + f * s * l + f * e * a + 2 * p * l * a + w * h + f * n * h + 2 * p * o * h, A = u * y + 2 * u * e * r + f * r * l + f * s * a + p * _ + f * e * h + 2 * p * l * h, j = 2 * u * s * r + f * r * a + f * s * h + 2 * p * a * h, I = u * M + f * r * h + p * b;\n return [v, $, Y, K, A, j, I];\n};\nfunction Be(i, t) {\n const n = Math.max(i.precision, t.precision), e = Ms(i, t), s = we(e, n).filter((r) => r >= -t.precision && r <= 1 + t.precision);\n return on(s, n).map((r) => t.paramPoint(r)).filter((r) => i.isOnSegment(r));\n}\nclass V extends Tt {\n constructor(t, n, e) {\n super(t, n), this.segmentType = \"QUADRATIC_BEZIER\", this._boundingBox = null, this._polynomialCoefficients = null, this.controlPoint = e;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const t = (n) => {\n const [e, s, r] = [\n this.firstPoint[n],\n this.controlPoint[n],\n this.lastPoint[n]\n ], o = e - 2 * s + r;\n if (!o)\n return [];\n const l = (e - s) / o;\n return l >= -this.precision && l <= 1 + this.precision ? [l] : [];\n };\n this._boundingBox = me([\n this.firstPoint,\n // There is either one or zero extrema in each direction\n ...t(0).map((n) => this.paramPoint(n)),\n ...t(1).map((n) => this.paramPoint(n)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new V(\n this.firstPoint,\n this.lastPoint,\n this.controlPoint\n );\n }\n reverse() {\n return new V(\n this.lastPoint,\n this.firstPoint,\n this.controlPoint\n );\n }\n isSame(t) {\n return t.segmentType !== \"QUADRATIC_BEZIER\" ? !1 : E(this.firstPoint, t.firstPoint) && E(this.lastPoint, t.lastPoint) && E(this.controlPoint, t.controlPoint);\n }\n distanceFrom(t) {\n const e = He((s) => Et(this.paramPoint(s), t), this.precision);\n return e.argMin < -this.precision || e.argMin > 1 + this.precision ? Math.min(\n W(this.firstPoint, t),\n W(this.lastPoint, t)\n ) : Math.sqrt(e.fMin);\n }\n isOnSegment(t) {\n if (!this.boundingBox.contains(t))\n return !1;\n try {\n const n = this.pointToParam(t);\n return n >= -this.precision && n <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(t) {\n const n = (e) => {\n const s = this.firstPoint[e], r = this.controlPoint[e], o = this.lastPoint[e];\n return 2 * (t * (s - 2 * r + o) - s + r);\n };\n return [n(0), n(1)];\n }\n tangentAt(t) {\n const n = this.pointToParam(t);\n return Q(this.gradientAt(n));\n }\n get tangentAtFirstPoint() {\n return Q(L(this.controlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return Q(L(this.controlPoint, this.lastPoint));\n }\n normalAt(t) {\n const n = this.tangentAt(t);\n return et(n);\n }\n splitAtParameters(t, n = null) {\n const e = [...t];\n e.sort((r, o) => r - o);\n let s = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.controlPoint\n };\n return e.flatMap((r, o) => {\n if (r - s.originalParam < this.precision)\n return [];\n let l = !1;\n r > 1 - this.precision && (l = !0);\n const a = (r - s.originalParam) / (1 - s.originalParam), h = de(\n [s.p0, s.p1, this.lastPoint],\n l ? 1 : a\n ), c = l ? this.lastPoint : (n == null ? void 0 : n.get(r)) ?? h[0][0], u = h[1][0], f = h[1][1], p = new V(\n s.p0,\n c,\n u\n );\n return s = {\n param: a,\n originalParam: r,\n p0: c,\n p1: f\n }, o === e.length - 1 && !l ? [\n p,\n new V(\n s.p0,\n this.lastPoint,\n s.p1\n )\n ] : p;\n });\n }\n splitAt(t) {\n let n;\n if (Array.isArray(t) && t.length === 0)\n return [this];\n Array.isArray(t[0]) ? n = t : n = [t];\n const e = n.map((r) => this.pointToParam(r)), s = new Map(\n ut([e, n])\n );\n return this.splitAtParameters(e, s);\n }\n transform(t) {\n return new V(\n t.transform(this.firstPoint),\n t.transform(this.lastPoint),\n t.transform(this.controlPoint)\n );\n }\n paramPoint(t) {\n const n = 1 - t, e = n * n, s = 2 * n * t, r = t * t;\n return [\n e * this.firstPoint[0] + s * this.controlPoint[0] + r * this.lastPoint[0],\n e * this.firstPoint[1] + s * this.controlPoint[1] + r * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const t = (n) => {\n const e = this.firstPoint[n], s = this.controlPoint[n], r = this.lastPoint[n], o = e - 2 * s + r, l = 2 * (s - e);\n return [e, l, o];\n };\n this._polynomialCoefficients = [t(0), t(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(t) {\n const [n, e, s] = this.polynomialCoefficients[1];\n return ee(n - t, e, s).filter(\n (r) => r >= -this.precision && r <= 1 + this.precision\n );\n }\n pointToParam(t) {\n const n = this.paramsAtY(t[1]);\n if (n.length === 0)\n throw new Error(\"Point is not on the curve!\");\n const e = (r) => Math.abs(this.paramPoint(r)[0] - t[0]) <= this.precision, s = n.find(e);\n if (s === void 0)\n throw new Error(\"Point is not on the curve\");\n return s;\n }\n}\nconst bs = (i, t) => {\n const [[n, e, s], [r, o, l]] = t.polynomialCoefficients, a = i.coefficients, h = a.x2, c = a.xy, u = a.y2, f = a.x, p = a.y, g = a.c, w = n * n, P = e * e, m = s * s, d = r * r, y = o * o, M = l * l, S = h * w + c * n * r + u * d + f * n + p * r + g, C = 2 * h * n * e + c * n * o + c * e * r + 2 * u * r * o + f * e + p * o, _ = 2 * h * n * s + h * P + c * n * l + c * e * o + c * s * r + 2 * u * r * l + u * y + f * s + p * l, b = 2 * h * e * s + c * e * l + c * s * o + 2 * u * o * l, v = h * m + c * s * l + u * M;\n return [S, C, _, b, v];\n};\nfunction Oe(i, t) {\n const n = Math.max(i.precision, t.precision), e = bs(i, t), s = os(...e).filter((r) => r >= -t.precision && r <= 1 + t.precision);\n return on(s, n).map((r) => t.paramPoint(r)).filter((r) => i.isOnSegment(r));\n}\nfunction H(i, { firstPoint: t, lastPoint: n }, e = 1e-9) {\n const s = L(n, t);\n return Math.abs(s[0]) < e ? s[1] > 0 ? t[0] - i[0] : i[0] - t[0] : Math.abs(s[1]) < e ? s[0] > 0 ? i[1] - t[1] : t[1] - i[1] : bt(s, L(i, t)) / dn(s);\n}\nclass Pe {\n constructor(t, n, e, s) {\n this.firstPoint = t, this.lastPoint = n, this.negativeThickness = e, this.positiveThickness = s;\n }\n get width() {\n return this.positiveThickness - this.negativeThickness;\n }\n}\nconst Es = 3 / 4, Ss = 4 / 9;\nfunction _s(i) {\n const t = H(i.firstControlPoint, i), n = H(i.lastControlPoint, i), e = t * n > 0 ? Es : Ss;\n return new Pe(\n i.firstPoint,\n i.lastPoint,\n e * Math.min(0, t, n),\n e * Math.max(0, t, n)\n );\n}\nfunction ks(i) {\n const t = H(i.controlPoint, i);\n return new Pe(\n i.firstPoint,\n i.lastPoint,\n Math.min(0, t / 2),\n Math.max(0, t / 2)\n );\n}\nfunction Is(i) {\n if (i instanceof X)\n return _s(i);\n if (i instanceof V)\n return ks(i);\n throw new Error(\"Not implemented\");\n}\nfunction Cs(i) {\n const t = i.paramPoint(0.5), n = et(L(t, i.firstPoint)), e = Z(t, n), s = {\n firstPoint: t,\n lastPoint: e\n }, r = [\n H(i.firstPoint, s),\n H(i.lastPoint, s)\n ];\n return i instanceof X ? r.push(\n H(i.firstControlPoint, s),\n H(i.lastControlPoint, s)\n ) : i instanceof V && r.push(H(i.controlPoint, s)), new Pe(\n t,\n e,\n Math.min(...r),\n Math.max(...r)\n );\n}\nfunction $e(i, t) {\n const n = [];\n for (let e = 1; e < i.length; e++) {\n const s = i[e];\n if (s[1] === t) {\n n.push(s[0]);\n continue;\n }\n const r = i[e - 1], o = t - r[1], l = t - s[1];\n if (o * l < 0) {\n n.push(\n r[0] + (t - r[1]) * (s[0] - r[0]) / (s[1] - r[1])\n );\n continue;\n }\n }\n return n;\n}\nclass jt {\n constructor(t, n) {\n this.from = t, this.to = n;\n }\n get size() {\n return this.from === \"start\" ? this.to === \"end\" ? 1 : this.to : this.to === \"end\" ? 1 - this.from : Math.abs(this.from - this.to);\n }\n clipCurve(t) {\n return this.from === \"start\" ? this.to === \"end\" ? t : t.splitAtParameters([this.to])[0] : this.to === \"end\" ? t.splitAtParameters([this.from])[1] : t.splitAtParameters([this.from, this.to])[1];\n }\n}\nfunction js(i, t) {\n if (i instanceof X)\n return new vs([\n H(i.firstPoint, t),\n H(i.firstControlPoint, t),\n H(i.lastControlPoint, t),\n H(i.lastPoint, t)\n ]);\n if (i instanceof V)\n return new xs([\n H(i.firstPoint, t),\n H(i.controlPoint, t),\n H(i.lastPoint, t)\n ]);\n throw new Error(\"Not implemented\");\n}\nclass xs {\n constructor(t) {\n this.distances = t, this.topHull = [], this.bottomHull = [];\n const [n, e, s] = t, r = [0, n], o = [1 / 2, e], l = [1, s], a = s - n, h = n;\n e - (a * (1 / 2) + h) > 0 ? (this.topHull = [r, o, l], this.bottomHull = [r, l]) : (this.topHull = [r, l], this.bottomHull = [r, o, l]);\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[2];\n }\n}\nclass vs {\n constructor(t) {\n this.distances = t, this.topHull = [], this.bottomHull = [];\n const [n, e, s, r] = t, o = [0, n], l = [1 / 3, e], a = [2 / 3, s], h = [1, r], c = r - n, u = n, f = e - (c * (1 / 3) + u), p = s - (c * (2 / 3) + u);\n let g = null, w = null;\n if (f * p < 0)\n g = [o, l, h], w = [o, a, h];\n else {\n const m = f / p;\n m >= 2 ? (g = [o, l, h], w = [o, h]) : m <= 0.5 ? (g = [o, a, h], w = [o, h]) : (g = [o, l, a, h], w = [o, h]);\n }\n f < 0 && ([g, w] = [w, g]), this.topHull = g, this.bottomHull = w;\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[3];\n }\n}\nfunction Le(i, t) {\n const n = js(t, i), e = $e(\n n.topHull,\n i.negativeThickness\n ), s = $e(\n n.bottomHull,\n i.positiveThickness\n ), r = n.endDistance >= i.negativeThickness && n.endDistance <= i.positiveThickness;\n if (!e.length && !s.length)\n return r ? new jt(\"start\", \"end\") : null;\n if (e.length === 1 && s.length === 1)\n return new jt(e[0], s[0]);\n if (e.length === 2 && s.length === 2)\n throw new Error(\n \"Bug in the clipping algorithm, unexpected number of crossing points\"\n );\n const o = e.length ? e : s;\n return o.length === 2 ? new jt(o[0], o[1]) : r ? new jt(o[0], \"end\") : new jt(\"start\", o[0]);\n}\nfunction Ne(i, t) {\n const n = Is(i), e = Le(n, t);\n if (!e)\n return null;\n const s = Cs(i), r = Le(\n s,\n t\n );\n return r ? e.size > r.size ? r.clipCurve(t) : e.clipCurve(t) : null;\n}\nconst Ut = (i) => i instanceof V ? at(L(i.controlPoint, i.firstPoint)) + at(L(i.controlPoint, i.lastPoint)) : at(L(i.firstControlPoint, i.firstPoint)) + at(L(i.lastControlPoint, i.firstControlPoint)) + at(L(i.lastControlPoint, i.lastPoint));\nfunction Mt(i, t, n = 1e-9, { maxIterations: e = 100 } = {}) {\n const s = Math.max(n * n, Number.EPSILON * 10);\n let r = i, o = t, l = Ut(r), a = Ut(o);\n for (let h = 0; h < e; h++) {\n const c = l > s ? Ne(o, r) : r;\n if (!c)\n return [];\n const u = Ut(c), f = a > s ? Ne(c, o) : o;\n if (!f)\n return [];\n const p = Ut(f);\n if (u <= s && p <= s)\n return [\n c.boundingBox.intersection(f.boundingBox).center\n ];\n if (E(c.firstPoint, c.lastPoint) && f.isOnSegment(c.firstPoint))\n return [c.firstPoint];\n if (E(f.firstPoint, f.lastPoint) && c.isOnSegment(f.firstPoint))\n return [f.firstPoint];\n if (u > 0.8 * l && p > 0.8 * a)\n if (u / l > p / a) {\n const [g, w] = c.splitAtParameters([\n 0.5\n ]);\n return dt(\n [\n ...Mt(g, f, n, {\n maxIterations: e - h\n }),\n ...Mt(w, f, n, {\n maxIterations: e - h\n })\n ],\n n\n );\n } else {\n const [g, w] = f.splitAtParameters([\n 0.5\n ]);\n return dt(\n [\n ...Mt(c, g, n, {\n maxIterations: e - h\n }),\n ...Mt(c, w, n, {\n maxIterations: e - h\n })\n ],\n n\n );\n }\n r = c, o = f, l = u, a = p;\n }\n throw new Error(\"Bézier clip: Maximum number of iterations reached\");\n}\nfunction Fs(i, t) {\n const n = [];\n if ([\n [i.firstPoint, t],\n [i.lastPoint, t],\n [t.firstPoint, i],\n [t.lastPoint, i]\n ].forEach(([s, r]) => {\n r.isOnSegment(s) && n.push(s);\n }), n.length < 2)\n return null;\n if (n.length === 2)\n return [i.splitAt(n)[1]];\n if (n.length === 3)\n return E(n[0], i.firstPoint) && E(n[1], i.lastPoint) ? [i] : [t];\n if (n.length === 4)\n return [i];\n}\nfunction Rs(i, t, n = !1) {\n const e = Math.max(i.precision, t.precision);\n if (n) {\n const s = Fs(i, t);\n if (s)\n return s;\n }\n return Mt(i, t, e);\n}\nfunction Ts(i, t) {\n const n = [];\n if ([\n [i.firstPoint, t],\n [i.lastPoint, t],\n [t.firstPoint, i],\n [t.lastPoint, i]\n ].forEach(([s, r]) => {\n r.isOnSegment(s) && n.push(s);\n }), n.length < 2)\n return null;\n if (n.length === 2)\n return [i.splitAt(n)[1]];\n if (n.length === 3)\n return E(n[0], i.firstPoint) && E(n[1], i.lastPoint) ? [i] : [t];\n if (n.length === 4)\n return [i];\n}\nfunction qs(i, t, n = !1) {\n const e = Math.max(i.precision, t.precision);\n if (n) {\n const s = Ts(i, t);\n if (s)\n return s;\n }\n return Mt(i, t, e);\n}\nfunction ci(i, t, n) {\n if (i instanceof B && t instanceof B) {\n const e = Ke(\n i,\n t,\n !1,\n n\n );\n return e === null ? [] : [e];\n }\n if (i instanceof B && t instanceof q)\n return Wt(i, t, n);\n if (i instanceof q && t instanceof B)\n return Wt(t, i, n);\n if (i instanceof q && t instanceof q)\n return sn(i, t, !1, n);\n throw new Error(\"Not implemented\");\n}\nfunction Qt(i, t, n) {\n if (i instanceof B && t instanceof B) {\n const e = Ke(\n i,\n t,\n !0,\n n\n );\n return e === null ? { intersections: [], overlaps: [], count: 0 } : e instanceof B ? { intersections: [], overlaps: [e], count: 1 } : { intersections: [e], overlaps: [], count: 1 };\n }\n if (!i.boundingBox.overlaps(t.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (i instanceof B && t instanceof q) {\n const e = Wt(i, t, n);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof q && t instanceof B) {\n const e = Wt(t, i, n);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof q && t instanceof q) {\n const e = sn(\n i,\n t,\n !0,\n n\n );\n return e.length ? e[0] instanceof q ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (i instanceof B && t instanceof D) {\n const e = he(\n i,\n t,\n n\n );\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof B && i instanceof D) {\n const e = he(\n t,\n i,\n n\n );\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof q && t instanceof D) {\n const e = qe(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof q && i instanceof D) {\n const e = qe(t, i);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof D && t instanceof D) {\n const e = Ps(\n i,\n t,\n !0\n );\n return e.length ? e[0] instanceof D ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (i instanceof B && (t instanceof X || t instanceof V)) {\n const e = Ae(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (t instanceof B && (i instanceof X || i instanceof V)) {\n const e = Ae(t, i);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if ((i instanceof q || i instanceof D) && t instanceof V) {\n const e = Oe(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if ((t instanceof q || t instanceof D) && i instanceof V) {\n const e = Oe(t, i);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if ((i instanceof q || i instanceof D) && t instanceof X) {\n const e = Be(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if ((t instanceof q || t instanceof D) && i instanceof X) {\n const e = Be(t, i);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof V && t instanceof V) {\n const e = qs(\n i,\n t\n );\n return e.length ? e[0] instanceof V ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (i instanceof V && t instanceof X || t instanceof V && i instanceof X) {\n const e = Mt(i, t);\n return { intersections: e, overlaps: [], count: e.length };\n }\n if (i instanceof X && t instanceof X) {\n const e = Rs(\n i,\n t\n );\n return e.length ? e[0] instanceof X ? {\n intersections: [],\n overlaps: e,\n count: e.length\n } : {\n intersections: e,\n overlaps: [],\n count: e.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction ln(i) {\n const t = [];\n for (let n = 0; n < i; n++)\n for (let e = 0; e <= n; e++)\n t.push([n, e]);\n return t;\n}\nfunction* ae(i) {\n for (const [t, n] of ln(i.length))\n t !== n && (yield [i[t], i[n]]);\n}\nclass hn extends Kt {\n constructor(t, { ignoreChecks: n = !1 } = {}) {\n super(), this._boundingBox = null, n || an(t), this.segments = t;\n }\n get repr() {\n return this.segments.map((t) => t.repr).join(`\n`) + `\n`;\n }\n get info() {\n return this.repr;\n }\n get firstPoint() {\n return this.segments[0].firstPoint;\n }\n get lastPoint() {\n return this.segments[this.segments.length - 1].lastPoint;\n }\n get segmentsCount() {\n return this.segments.length;\n }\n onStroke(t) {\n return this.segments.some((n) => n.isOnSegment(t));\n }\n intersects(t) {\n return this.boundingBox.overlaps(t.boundingBox) ? this.segments.some(\n (n) => t.segments.some(\n (e) => Qt(n, e).count > 0\n )\n ) : !1;\n }\n overlappingSegments(t) {\n return this.segments.flatMap((n) => t.segments.flatMap((e) => n.boundingBox.overlaps(e.boundingBox) ? Qt(n, e).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let t = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((n) => {\n t = t.merge(n.boundingBox);\n }), this._boundingBox = t;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction As(i, t = \"Stroke\") {\n ln(i.length).forEach(\n ([n, e]) => {\n if (n === e)\n return;\n const s = i[n], r = i[e], o = Qt(s, r), l = Math.max(s.precision, r.precision);\n if (o.count !== 0) {\n if (o.count === 1 && !o.overlaps.length) {\n const a = n - e, h = o.intersections[0];\n if (a === 1 && E(s.firstPoint, h, l) || a === -1 && E(s.lastPoint, h, l) || a === i.length - 1 && E(s.lastPoint, h, l) && E(r.firstPoint, h, l) || -a === i.length - 1 && E(s.firstPoint, h, l) && E(r.lastPoint, h, l))\n return;\n }\n if (!(o.count === 2 && i.length === 2 && (E(\n s.firstPoint,\n o.intersections[0],\n l\n ) && E(\n s.lastPoint,\n o.intersections[1],\n l\n ) || E(\n s.firstPoint,\n o.intersections[1],\n l\n ) && E(\n s.lastPoint,\n o.intersections[0],\n l\n ))))\n throw new Error(\n `${t} segments must not intersect, but segments ${s.info} and ${r.info} do at ${JSON.stringify(\n o.intersections\n )}`\n );\n }\n }\n );\n}\nfunction an(i, t = \"Stroke\") {\n if (i.length === 0)\n throw new Error(`${t} must have at least one segment`);\n ut([i.slice(0, -1), i.slice(1)]).forEach(\n ([n, e]) => {\n if (!E(n.lastPoint, e.firstPoint))\n throw new Error(\n `${t} segments must be connected, but ${n.info} and ${e.info} are not`\n );\n }\n ), As(i, t);\n}\nfunction ze(i, t) {\n return !!(i instanceof B && t instanceof B && pe(i.V, t.V) || i instanceof q && t instanceof q && E(i.center, t.center) && i.radius - t.radius < i.precision);\n}\nfunction De(i, t) {\n if (i instanceof B && t instanceof B)\n return new B(i.firstPoint, t.lastPoint);\n if (i instanceof q && t instanceof q)\n return new q(\n i.firstPoint,\n t.lastPoint,\n i.center,\n i.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction un(i) {\n let t = !1;\n const n = [];\n for (const e of i.segments) {\n if (n.length === 0) {\n n.push(e);\n continue;\n }\n const s = n[n.length - 1];\n ze(s, e) ? (t = !0, n.pop(), n.push(De(s, e))) : n.push(e);\n }\n if (E(i.firstPoint, i.lastPoint) && ze(\n n[0],\n n[n.length - 1]\n )) {\n t = !0;\n const e = n.pop();\n n[0] = De(e, n[0]);\n }\n return t ? n : null;\n}\nclass lt extends hn {\n constructor() {\n super(...arguments), this.strokeType = \"STRAND\";\n }\n reverse() {\n const t = this.segments.map((n) => n.reverse());\n return t.reverse(), new lt(t, { ignoreChecks: !0 });\n }\n clone() {\n return new lt(\n this.segments.map((t) => t.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(t) {\n if (!E(this.lastPoint, t.firstPoint))\n throw console.error(this.repr, t.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new lt([...this.segments, ...t.segments]);\n }\n simplify() {\n const t = un(this);\n return t ? new lt(t, { ignoreChecks: !0 }) : this;\n }\n transform(t) {\n return new lt(\n this.segments.map((n) => n.transform(t)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst Bs = (i, t) => {\n const n = Ht(t, {\n V: [1, 0],\n firstPoint: i,\n precision: t.precision\n });\n if (n === \"parallel\")\n return 0;\n const { intersectionParam1: e, intersectionParam2: s } = n;\n if (!t.isValidParameter(e) || s <= -t.precision)\n return 0;\n if (Math.abs(e) < t.precision || Math.abs(e - 1) < t.precision) {\n const [, r] = t.midPoint;\n return i[1] - r < 0 ? 1 : 0;\n }\n return 1;\n};\nclass ye {\n constructor(t) {\n this._count = 0, this.segment = t;\n }\n update(t, n = !1) {\n !n && !this.segment.isOnSegment(t) || (E(t, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : E(t, this.segment.lastPoint) ? this._count += this.segment.tangentAtLastPoint[1] > 0 ? 0 : 1 : this._count += 1);\n }\n get count() {\n return this._count;\n }\n}\nconst Os = (i, t) => {\n const n = t.precision, e = Math.abs(i[1] - t.center[1]);\n if (e > t.radius + n)\n return 0;\n const s = Et(i, t.center), r = t.radius * t.radius, o = n * n;\n if (Math.abs(s - r) < o && t.isOnSegment(i))\n return 0;\n const l = s - r > o;\n if (l && t.center[0] < i[0])\n return 0;\n const a = Math.sqrt(\n t.radius * t.radius - e * e\n ), h = new ye(t);\n return h.update([t.center[0] + a, i[1]]), l && h.update([t.center[0] - a, i[1]]), h.count;\n}, $s = (i, t) => {\n const n = t.boundingBox.xMax + t.boundingBox.width / 2, e = new B(i, [n, i[1]]), s = new ye(t);\n return he(e, t).forEach((r) => {\n s.update(r, !0);\n }), s.count;\n}, Ls = (i, t) => {\n const n = new ye(t);\n return t.paramsAtY(i[1]).map((e) => {\n try {\n return t.paramPoint(e);\n } catch {\n return null;\n }\n }).filter((e) => e !== null).filter((e) => {\n const [s] = e;\n return s >= i[0];\n }).forEach((e) => {\n n.update(e, !0);\n }), n.count;\n};\nfunction Ns(i, t) {\n if (t instanceof B)\n return Bs(i, t);\n if (t instanceof q)\n return Os(i, t);\n if (t instanceof D)\n return $s(i, t);\n if (t instanceof X || t instanceof V)\n return Ls(i, t);\n throw new Error(\"Not implemented\");\n}\nclass wt extends hn {\n constructor(t, { ignoreChecks: n = !1 } = {}) {\n super(t, { ignoreChecks: !0 }), this.strokeType = \"LOOP\", this._clockwise = null, n || zs(t);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const t = this.segments.flatMap((e) => e instanceof B ? [e.firstPoint] : [e.firstPoint, e.paramPoint(0.5)]), n = t.map((e, s) => {\n const r = t[(s + 1) % t.length];\n return (r[0] - e[0]) * (r[1] + e[1]);\n }).reduce((e, s) => e + s, 0);\n this._clockwise = n > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new wt(\n this.segments.map((t) => t.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const t = this.segments.map((n) => n.reverse());\n return t.reverse(), new wt(t, { ignoreChecks: !0 });\n }\n transform(t) {\n return new wt(\n this.segments.map((n) => n.transform(t)),\n { ignoreChecks: !0 }\n );\n }\n contains(t) {\n return this.onStroke(t) || !this.boundingBox.contains(t) ? !1 : this.segments.reduce((e, s) => e + Ns(t, s), 0) % 2 === 1;\n }\n simplify() {\n const t = un(this);\n return t ? new wt(t, { ignoreChecks: !0 }) : this;\n }\n}\nfunction zs(i) {\n if (an(i, \"Loop\"), !E(i[0].firstPoint, i[i.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nconst Ds = [\n B,\n q,\n D,\n V,\n X\n];\nfunction Vs(i) {\n return Ds.some((t) => i instanceof t);\n}\nfunction cn(i) {\n if (i instanceof B)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint\n };\n if (i instanceof q)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n center: i.center,\n clockwise: i.clockwise\n };\n if (i instanceof D)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n center: i.center,\n clockwise: i.clockwise,\n majorRadius: i.majorRadius,\n minorRadius: i.minorRadius,\n tiltAngle: i.tiltAngle\n };\n if (i instanceof V)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n controlPoint: i.controlPoint\n };\n if (i instanceof X)\n return {\n type: i.segmentType,\n firstPoint: i.firstPoint,\n lastPoint: i.lastPoint,\n firstControlPoint: i.firstControlPoint,\n lastControlPoint: i.lastControlPoint\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction ue(i) {\n return {\n type: \"LOOP\",\n segments: i.segments.map(cn)\n };\n}\nfunction fn(i) {\n return {\n type: \"FIGURE\",\n contour: ue(i.contour),\n holes: i.holes.map(ue)\n };\n}\nfunction Ys(i) {\n return {\n type: \"DIAGRAM\",\n figures: i.figures.map(fn)\n };\n}\nfunction Ve(i) {\n if (i instanceof pt)\n return Ys(i);\n if (i instanceof it)\n return fn(i);\n if (i instanceof wt)\n return ue(i);\n if (Vs(i))\n return cn(i);\n throw new Error(\"Unknown shape type\");\n}\nclass Us {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(t, n) {\n let e = this.length++;\n for (; e > 0; ) {\n const s = e - 1 >> 1, r = this.values[s];\n if (n >= r)\n break;\n this.ids[e] = this.ids[s], this.values[e] = r, e = s;\n }\n this.ids[e] = t, this.values[e] = n;\n }\n pop() {\n if (this.length === 0)\n return;\n const t = this.ids[0];\n if (this.length--, this.length > 0) {\n const n = this.ids[0] = this.ids[this.length], e = this.values[0] = this.values[this.length], s = this.length >> 1;\n let r = 0;\n for (; r < s; ) {\n let o = (r << 1) + 1;\n const l = o + 1;\n let a = this.ids[o], h = this.values[o];\n const c = this.values[l];\n if (l < this.length && c < h && (o = l, a = this.ids[l], h = c), h >= e)\n break;\n this.ids[r] = a, this.values[r] = h, r = o;\n }\n this.ids[r] = n, this.values[r] = e;\n }\n return t;\n }\n peek() {\n if (this.length !== 0)\n return this.ids[0];\n }\n peekValue() {\n if (this.length !== 0)\n return this.values[0];\n }\n shrink() {\n this.ids.length = this.values.length = this.length;\n }\n}\nconst Ye = [\n Int8Array,\n Uint8Array,\n Uint8ClampedArray,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array\n], oe = 3;\nclass Me {\n static from(t) {\n if (!t || t.byteLength === void 0 || t.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [n, e] = new Uint8Array(t, 0, 2);\n if (n !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n if (e >> 4 !== oe)\n throw new Error(`Got v${e >> 4} data when expected v${oe}.`);\n const [s] = new Uint16Array(t, 2, 1), [r] = new Uint32Array(t, 4, 1);\n return new Me(r, s, Ye[e & 15], void 0, t);\n }\n constructor(t, n = 16, e = Float64Array, s = ArrayBuffer, r) {\n if (t === void 0)\n throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(t) || t <= 0)\n throw new Error(`Unexpected numItems value: ${t}.`);\n this.numItems = +t, this.nodeSize = Math.min(Math.max(+n, 2), 65535);\n let o = t, l = o;\n this._levelBounds = [o * 4];\n do\n o = Math.ceil(o / this.nodeSize), l += o, this._levelBounds.push(l * 4);\n while (o !== 1);\n this.ArrayType = e || Float64Array, this.IndexArrayType = l < 16384 ? Uint16Array : Uint32Array;\n const a = Ye.indexOf(this.ArrayType), h = l * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (a < 0)\n throw new Error(`Unexpected typed array class: ${e}.`);\n r && r.byteLength !== void 0 && !r.buffer ? (this.data = r, this._boxes = new this.ArrayType(this.data, 8, l * 4), this._indices = new this.IndexArrayType(this.data, 8 + h, l), this._pos = l * 4, this.minX = this._boxes[this._pos - 4], this.minY = this._boxes[this._pos - 3], this.maxX = this._boxes[this._pos - 2], this.maxY = this._boxes[this._pos - 1]) : (this.data = new s(8 + h + l * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, l * 4), this._indices = new this.IndexArrayType(this.data, 8 + h, l), this._pos = 0, this.minX = 1 / 0, this.minY = 1 / 0, this.maxX = -1 / 0, this.maxY = -1 / 0, new Uint8Array(this.data, 0, 2).set([251, (oe << 4) + a]), new Uint16Array(this.data, 2, 1)[0] = n, new Uint32Array(this.data, 4, 1)[0] = t), this._queue = new Us();\n }\n add(t, n, e, s) {\n const r = this._pos >> 2, o = this._boxes;\n return this._indices[r] = r, o[this._pos++] = t, o[this._pos++] = n, o[this._pos++] = e, o[this._pos++] = s, t < this.minX && (this.minX = t), n < this.minY && (this.minY = n), e > this.maxX && (this.maxX = e), s > this.maxY && (this.maxY = s), r;\n }\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const t = this._boxes;\n if (this.numItems <= this.nodeSize) {\n t[this._pos++] = this.minX, t[this._pos++] = this.minY, t[this._pos++] = this.maxX, t[this._pos++] = this.maxY;\n return;\n }\n const n = this.maxX - this.minX || 1, e = this.maxY - this.minY || 1, s = new Uint32Array(this.numItems), r = (1 << 16) - 1;\n for (let o = 0, l = 0; o < this.numItems; o++) {\n const a = t[l++], h = t[l++], c = t[l++], u = t[l++], f = Math.floor(r * ((a + c) / 2 - this.minX) / n), p = Math.floor(r * ((h + u) / 2 - this.minY) / e);\n s[o] = Gs(f, p);\n }\n ce(s, t, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let o = 0, l = 0; o < this._levelBounds.length - 1; o++) {\n const a = this._levelBounds[o];\n for (; l < a; ) {\n const h = l;\n let c = t[l++], u = t[l++], f = t[l++], p = t[l++];\n for (let g = 1; g < this.nodeSize && l < a; g++)\n c = Math.min(c, t[l++]), u = Math.min(u, t[l++]), f = Math.max(f, t[l++]), p = Math.max(p, t[l++]);\n this._indices[this._pos >> 2] = h, t[this._pos++] = c, t[this._pos++] = u, t[this._pos++] = f, t[this._pos++] = p;\n }\n }\n }\n search(t, n, e, s, r) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let o = this._boxes.length - 4;\n const l = [], a = [];\n for (; o !== void 0; ) {\n const h = Math.min(o + this.nodeSize * 4, Xe(o, this._levelBounds));\n for (let c = o; c < h; c += 4) {\n if (e < this._boxes[c] || s < this._boxes[c + 1] || t > this._boxes[c + 2] || n > this._boxes[c + 3])\n continue;\n const u = this._indices[c >> 2] | 0;\n o >= this.numItems * 4 ? l.push(u) : (r === void 0 || r(u)) && a.push(u);\n }\n o = l.pop();\n }\n return a;\n }\n neighbors(t, n, e = 1 / 0, s = 1 / 0, r) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let o = this._boxes.length - 4;\n const l = this._queue, a = [], h = s * s;\n for (; o !== void 0; ) {\n const c = Math.min(o + this.nodeSize * 4, Xe(o, this._levelBounds));\n for (let u = o; u < c; u += 4) {\n const f = this._indices[u >> 2] | 0, p = Ue(t, this._boxes[u], this._boxes[u + 2]), g = Ue(n, this._boxes[u + 1], this._boxes[u + 3]), w = p * p + g * g;\n o >= this.numItems * 4 ? l.push(f << 1, w) : (r === void 0 || r(f)) && l.push((f << 1) + 1, w);\n }\n for (; l.length && l.peek() & 1; )\n if (l.peekValue() > h || (a.push(l.pop() >> 1), a.length === e))\n return l.clear(), a;\n o = l.pop() >> 1;\n }\n return l.clear(), a;\n }\n}\nfunction Ue(i, t, n) {\n return i < t ? t - i : i <= n ? 0 : i - n;\n}\nfunction Xe(i, t) {\n let n = 0, e = t.length - 1;\n for (; n < e; ) {\n const s = n + e >> 1;\n t[s] > i ? e = s : n = s + 1;\n }\n return t[n];\n}\nfunction ce(i, t, n, e, s, r) {\n if (Math.floor(e / r) >= Math.floor(s / r))\n return;\n const o = i[e + s >> 1];\n let l = e - 1, a = s + 1;\n for (; ; ) {\n do\n l++;\n while (i[l] < o);\n do\n a--;\n while (i[a] > o);\n if (l >= a)\n break;\n Xs(i, t, n, l, a);\n }\n ce(i, t, n, e, a, r), ce(i, t, n, a + 1, s, r);\n}\nfunction Xs(i, t, n, e, s) {\n const r = i[e];\n i[e] = i[s], i[s] = r;\n const o = 4 * e, l = 4 * s, a = t[o], h = t[o + 1], c = t[o + 2], u = t[o + 3];\n t[o] = t[l], t[o + 1] = t[l + 1], t[o + 2] = t[l + 2], t[o + 3] = t[l + 3], t[l] = a, t[l + 1] = h, t[l + 2] = c, t[l + 3] = u;\n const f = n[e];\n n[e] = n[s], n[s] = f;\n}\nfunction Gs(i, t) {\n let n = i ^ t, e = 65535 ^ n, s = 65535 ^ (i | t), r = i & (t ^ 65535), o = n | e >> 1, l = n >> 1 ^ n, a = s >> 1 ^ e & r >> 1 ^ s, h = n & s >> 1 ^ r >> 1 ^ r;\n n = o, e = l, s = a, r = h, o = n & n >> 2 ^ e & e >> 2, l = n & e >> 2 ^ e & (n ^ e) >> 2, a ^= n & s >> 2 ^ e & r >> 2, h ^= e & s >> 2 ^ (n ^ e) & r >> 2, n = o, e = l, s = a, r = h, o = n & n >> 4 ^ e & e >> 4, l = n & e >> 4 ^ e & (n ^ e) >> 4, a ^= n & s >> 4 ^ e & r >> 4, h ^= e & s >> 4 ^ (n ^ e) & r >> 4, n = o, e = l, s = a, r = h, a ^= n & s >> 8 ^ e & r >> 8, h ^= e & s >> 8 ^ (n ^ e) & r >> 8, n = a ^ a >> 1, e = h ^ h >> 1;\n let c = i ^ t, u = e | 65535 ^ (c | n);\n return c = (c | c << 8) & 16711935, c = (c | c << 4) & 252645135, c = (c | c << 2) & 858993459, c = (c | c << 1) & 1431655765, u = (u | u << 8) & 16711935, u = (u | u << 4) & 252645135, u = (u | u << 2) & 858993459, u = (u | u << 1) & 1431655765, (u << 1 | c) >>> 0;\n}\nfunction mn(i, t = 1e-7) {\n if (i.length === 0)\n return [];\n if (i.length === 1)\n return [i];\n const n = new Me(i.length);\n i.forEach((r) => {\n const [o, l] = r.firstPoint;\n n.add(o - t, l - t, o + t, l + t);\n }), n.finish();\n const e = [], s = /* @__PURE__ */ new Set();\n return i.forEach((r, o) => {\n if (s.has(o))\n return;\n const l = [r];\n let a = o;\n s.add(o);\n let h = i.length;\n for (; ; ) {\n if (h-- < 0)\n throw new Error(\"Infinite loop detected\");\n const c = l[l.length - 1].lastPoint, [u, f] = c, p = n.search(\n u - t,\n f - t,\n u + t,\n f + t\n ), g = (d) => Math.abs((a - d) % i.length), w = p.filter((d) => !s.has(d)).map((d) => [\n i[d],\n d,\n g(d)\n ]).sort(([, , d], [, , y]) => g(d) - g(y));\n if (w.length === 0) {\n e.push(l);\n break;\n }\n const [P, m] = w[0];\n l.push(P), s.add(m), a = m;\n }\n }), e;\n}\nclass it extends Kt {\n constructor(t, n = [], { ignoreChecks: e = !1 } = {}) {\n super(), e || Ws(t, n), this.contour = t, this.holes = n;\n }\n get boundingBox() {\n return this.contour.boundingBox;\n }\n get isFull() {\n return this.holes.length === 0;\n }\n get allLoops() {\n return [this.contour, ...this.holes];\n }\n clone() {\n return new it(\n this.contour.clone(),\n this.holes.map((t) => t.clone())\n );\n }\n transform(t) {\n return new it(\n this.contour.transform(t),\n this.holes.map((n) => n.transform(t))\n );\n }\n contains(t) {\n return this.contour.contains(t) && !this.holes.some((n) => n.contains(t));\n }\n intersects(t) {\n return this.allLoops.some(\n (n) => t.allLoops.some((e) => n.intersects(e))\n );\n }\n overlappingStrands(t) {\n const n = t instanceof it ? t.allLoops : [t], e = this.allLoops.flatMap((s) => n.flatMap((r) => s.overlappingSegments(r)));\n return mn(e).map((s) => new lt(s));\n }\n}\nfunction Ws(i, t = []) {\n if (!i)\n throw new Error(\"Figure must have a contour\");\n for (const [n, e] of ae([i, ...t]))\n if (n.intersects(e))\n throw new Error(\"Loops in a figure must not intersect\");\n if (t.some(\n (n) => !i.contains(n.firstPoint) && !i.onStroke(n.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [n, e] of ae(t))\n if (n.contains(e.firstPoint))\n throw console.error(Ve(n), Ve(e)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qs = (i) => {\n const t = i.map((s, r) => i.slice(r + 1).map((o, l) => [l + r + 1, o]).filter(([, o]) => s.boundingBox.overlaps(o.boundingBox)).map(([o]) => o)), n = [], e = Array(t.length);\n return t.forEach((s, r) => {\n let o = e[r];\n o || (o = [], n.push(o)), o.push(i[r]), s.length && s.forEach((l) => {\n e[l] = o;\n });\n }), n;\n}, gn = (i) => i.map((t, n) => {\n const s = t.segments[0].midPoint, r = i.filter((o, l) => n === l ? !1 : o.contains(s));\n return {\n loop: t,\n isIn: r\n };\n}), Js = (i, t) => i.flatMap(({ loop: n }) => be(\n t.filter(\n ({ loop: e, isIn: s }) => e === n || s.indexOf(n) !== -1\n )\n)), Zs = (i, t) => {\n const n = t.filter(({ isIn: s }) => s.length <= 1), e = be(\n gn(i.map(({ loop: s }) => s))\n );\n return [n, ...e];\n}, be = (i) => {\n if (!i.length)\n return [];\n const t = i.filter(({ isIn: e }) => !e.length), n = i.filter(({ isIn: e }) => e.length > 1);\n return t.length === 1 && n.length === 0 ? [i] : t.length > 1 ? Js(t, i) : Zs(n, i);\n};\nfunction vt(i) {\n return Qs(i).map(gn).flatMap(be).map((n) => {\n if (n.length === 1)\n return new it(n[0].loop);\n n.sort((r, o) => r.isIn.length - o.isIn.length);\n const [e, ...s] = n.map(({ loop: r }) => r);\n return new it(e, s);\n });\n}\nfunction Ks(i, t) {\n const n = [];\n for (const e of i)\n for (const s of t)\n n.push([e, s]);\n return n;\n}\nfunction* Ge(i, t, n) {\n const e = (o) => t.some((l) => E(l, o.lastPoint)), s = (o) => n.some((l) => o.isSame(l));\n let r = [];\n for (const o of i)\n e(o) ? (r.push(o), yield new lt(r, { ignoreChecks: !0 }), r = []) : s(o) ? (r.length && (yield new lt(r, { ignoreChecks: !0 }), r = []), yield new lt([o], { ignoreChecks: !0 })) : r.push(o);\n r.length && (yield new lt(r, { ignoreChecks: !0 }));\n}\nconst We = (i, t) => {\n const n = i.findIndex((r) => E(t, r.firstPoint)), e = i.slice(0, n);\n return i.slice(n).concat(e);\n}, Qe = (i, t) => {\n let n = i;\n const e = (l) => E(l.firstPoint, t.firstPoint) && E(l.lastPoint, t.lastPoint);\n let s = i.findIndex(e);\n if (s === -1) {\n const l = i.map((a) => a.reverse());\n if (l.reverse(), s = l.findIndex(e), s === -1)\n throw console.error(\n l.map((a) => a.repr),\n t.repr\n ), new Error(\"Failed to rotate to segment start\");\n n = l;\n }\n const r = n.slice(0, s);\n return n.slice(s).concat(r);\n};\nfunction Hs(i, t, n) {\n return i.filter((e) => {\n const s = t.filter((l) => E(l.firstPoint, e) || E(l.lastPoint, e));\n if (s.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const r = s.map((l) => n.contains(l.midPoint));\n return !(r.every((l) => l) || !r.some((l) => l));\n });\n}\nfunction ti(i, t, n) {\n let e = [];\n const s = [], r = new Array(i.segments.length).fill(0).map(() => []), o = new Array(t.segments.length).fill(0).map(() => []);\n if (i.segments.forEach((f, p) => {\n t.segments.forEach((g, w) => {\n const { intersections: P, overlaps: m } = Qt(\n f,\n g,\n n\n );\n e.push(...P), r[p].push(...P), o[w].push(...P), s.push(...m);\n const d = m.flatMap((y) => [\n y.firstPoint,\n y.lastPoint\n ]);\n e.push(...d), r[p].push(...d), o[w].push(...d);\n });\n }), e = dt(e, n), !e.length || e.length === 1)\n return null;\n const l = ([f, p]) => p.length ? f.splitAt(p) : [f];\n let a = ut([i.segments, r]).flatMap(l), h = ut([t.segments, o]).flatMap(l);\n if (e = Hs(\n e,\n a,\n t\n ), !e.length && !s.length)\n return null;\n if (s.length) {\n const f = s[0];\n a = Qe(\n a,\n f\n ), h = Qe(\n h,\n f\n );\n } else {\n const f = e[0];\n a = We(a, f), h = We(h, f);\n }\n let c = Array.from(\n Ge(\n a,\n e,\n s\n )\n ), u = Array.from(\n Ge(\n h,\n e,\n s\n )\n );\n return (!E(\n u[0].lastPoint,\n c[0].lastPoint\n ) || s.length > 0 && u[0].segmentsCount !== 1) && (u = u.map((f) => f.reverse()).reverse(), E(u[0].lastPoint, c[0].lastPoint) || (c = c.map((f) => f.reverse()).reverse())), ut([c, u]).map(([f, p]) => f.segmentsCount === 1 && s.some((g) => f.segments[0].isSame(g)) ? [f, \"same\"] : [f, p]);\n}\nfunction Je(i) {\n let t = i[0];\n for (const n of i.slice(1))\n t = t.extend(n);\n if (!E(t.firstPoint, t.lastPoint))\n throw console.error(\n G(t.firstPoint),\n G(t.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new wt(t.segments);\n}\nfunction ei(i, t) {\n const n = ut([\n t.slice(0, -1),\n t.slice(1)\n ]).map(([s, r]) => Je(i.slice(s, r)));\n let e = i.slice(\n t[t.length - 1]\n );\n return t[0] !== 0 && (e = e.concat(i.slice(0, t[0]))), n.push(Je(e)), n;\n}\nfunction ni(i) {\n if (!i.length)\n return [];\n const t = i.map((s) => s.firstPoint);\n let n = i.map((s) => s.lastPoint);\n n = n.slice(-1).concat(n.slice(0, -1));\n const e = ut([t, n]).flatMap(\n ([s, r], o) => E(s, r) ? [] : o\n );\n try {\n return ei(i, e);\n } catch {\n return mn(i.flatMap((r) => r.segments)).filter((r) => r.length > 1).filter((r) => E(r[0].firstPoint, r.at(-1).lastPoint)).map((r) => new wt(r));\n }\n}\nconst Ze = (i, t) => {\n if (i.length === 0)\n return [t];\n const n = i.at(-1);\n return E(n.lastPoint, t.firstPoint) ? i.slice(0, -1).concat([n.extend(t)]) : E(n.lastPoint, t.lastPoint) ? i.slice(0, -1).concat([n.extend(t.reverse())]) : i.concat([t]);\n}, si = (i, t) => i.length === 0 ? [t] : E(i[0].firstPoint, t.lastPoint) ? [t.extend(i[0])].concat(i.slice(1)) : [t].concat(i);\nfunction Ee(i, t, {\n firstInside: n,\n secondInside: e\n}) {\n const s = ti(i, t);\n if (!s) {\n const a = i.segments[0].midPoint, h = t.contains(a), c = t.segments[0].midPoint, u = i.contains(c);\n return {\n identical: !1,\n firstCurveInSecond: h,\n secondCurveInFirst: u\n };\n }\n if (s.every(([, a]) => a === \"same\"))\n return { identical: !0 };\n let r = null, o = null;\n const l = s.flatMap(([a, h]) => {\n let c = [], u = 0;\n if (h === \"same\")\n return o === 1 ? (o = 1, a) : o === 2 || o === 0 ? (o = null, []) : o === null ? (r ? r = r.extend(a) : r = a, []) : (console.error(\"weird situation\"), []);\n const f = a.segments[0].midPoint, p = t.contains(f);\n (n === \"keep\" && p || n === \"remove\" && !p) && (u += 1, c = Ze(c, a));\n const g = h.segments[0].midPoint, w = i.contains(g);\n if (e === \"keep\" && w || e === \"remove\" && !w) {\n const P = h;\n u += 1, u === 2 && c.length ? (c = Ze(c, P), r = null) : c = [P];\n }\n return o === null && u === 1 && r && (c = si(c, r)), u === 1 && (o = u, r = null), c.length ? c : (r = null, []);\n });\n return ni(l);\n}\nconst ii = (i, t) => {\n const n = Ee(i, t, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(n) ? n : n.identical ? [i] : n.firstCurveInSecond ? [t] : n.secondCurveInFirst ? [i] : [i, t];\n}, Jt = (i, t) => {\n const n = Ee(i, t, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(n) ? n : n.identical ? [] : n.firstCurveInSecond ? [] : n.secondCurveInFirst ? [i, t] : [i];\n}, Se = (i, t) => {\n const n = Ee(i, t, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(n) ? n : n.identical ? [i] : n.firstCurveInSecond ? [i] : n.secondCurveInFirst ? [t] : [];\n};\nfunction ri(i) {\n const t = /* @__PURE__ */ new Map(), n = [];\n return i.forEach((e, s) => {\n let r;\n t.has(s) ? r = t.get(s) : (r = { current: [e], fusedWith: /* @__PURE__ */ new Set([s]) }, n.push(r)), i.slice(s + 1).forEach((o, l) => {\n const a = r.current, h = s + l + 1;\n if (r.fusedWith.has(h))\n return;\n let c = [o], u = !1;\n if (t.has(h) && (c = t.get(h).current, u = !0), !a.some(\n (g) => c.some((w) => g.intersects(w))\n ))\n return;\n let p;\n a.length > 1 || c.length > 1 ? p = Ft(a, c) : p = pn(a[0], c[0]), r.fusedWith.add(h), r.current = p, u || t.set(h, r);\n });\n }), n.flatMap(({ current: e }) => e);\n}\nfunction pn(i, t) {\n const n = ii(i.contour, t.contour), e = t.holes.flatMap((o) => Jt(o, i.contour)), s = i.holes.flatMap((o) => Jt(o, t.contour)), r = Ks(i.holes, t.holes).flatMap(\n ([o, l]) => Se(o, l)\n );\n return vt([\n ...n,\n ...e,\n ...s,\n ...r\n ]);\n}\nfunction Zt(i, t) {\n if (i.isFull && t.isFull)\n return vt(Jt(i.contour, t.contour));\n if (i.isFull) {\n const e = Jt(i.contour, t.contour), s = t.holes.flatMap(\n (r) => Se(r, i.contour)\n );\n return vt([...e, ...s]);\n } else if (t.isFull && !i.contour.intersects(t.contour))\n if (i.contour.contains(t.contour.firstPoint)) {\n const e = Ft(\n i.holes.map((s) => new it(s)),\n [t]\n );\n return vt([\n i.contour,\n ...e.flatMap((s) => s.allLoops)\n ]);\n } else\n return [i];\n let n = Zt(new it(i.contour), t);\n return i.holes.forEach((e) => {\n n = n.flatMap((s) => Zt(s, new it(e)));\n }), n;\n}\nfunction oi(i, t) {\n const n = Se(i.contour, t.contour);\n if (!n.length)\n return [];\n let e = vt(n);\n return e = Rt(\n e,\n i.holes.map((s) => new it(s))\n ), Rt(\n e,\n t.holes.map((s) => new it(s))\n );\n}\nfunction Ft(i, t) {\n if (!i.length)\n return t;\n if (!t.length)\n return i;\n if (i.length === 1 && t.length > 1 || t.length === 1 && i.length > 1)\n return ri([...i, ...t]);\n if (i.length > 1 && t.length > 1) {\n let n = Ft([i[0]], t);\n return i.slice(1).forEach((e) => {\n n = Ft([e], n);\n }), n;\n }\n return i.length === 1 && t.length === 1 ? pn(i[0], t[0]) : [];\n}\nfunction Rt(i, t) {\n if (!i.length)\n return [];\n if (!t.length)\n return i;\n if (i.length === 1 && t.length === 1)\n return Zt(i[0], t[0]);\n if (i.length > 1)\n return i.flatMap((e) => Rt([e], t));\n let n = Zt(i[0], t[0]);\n return t.slice(1).forEach((e) => {\n n = Rt(n, [e]);\n }), n;\n}\nfunction fe(i, t) {\n return !i.length || !t.length ? [] : i.length === 1 && t.length === 1 ? oi(i[0], t[0]) : i.length > 1 ? i.flatMap((n) => fe([n], t)) : t.flatMap((n) => fe(i, [n]));\n}\nclass pt extends Kt {\n constructor(t = [], { ignoreChecks: n = !1 } = {}) {\n super(), this._boundingBox = null, n || li(t), this.figures = t;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty)\n return new ft();\n if (this._boundingBox === null) {\n let t = this.figures[0].boundingBox;\n for (const n of this.figures.slice(1))\n t = t.merge(n.boundingBox);\n this._boundingBox = t;\n }\n return this._boundingBox;\n }\n clone() {\n return new pt(this.figures.map((t) => t.clone()));\n }\n transform(t) {\n return new pt(this.figures.map((n) => n.transform(t)));\n }\n contains(t) {\n return this.figures.some((n) => n.contains(t));\n }\n intersects(t) {\n return this.figures.some(\n (n) => t.figures.some((e) => n.intersects(e))\n );\n }\n overlappingStrands(t) {\n return this.figures.flatMap((n) => t instanceof pt ? t.figures.flatMap(\n (e) => n.overlappingStrands(e)\n ) : n.overlappingStrands(t));\n }\n fuse(t) {\n return new pt(Ft(this.figures, t.figures));\n }\n cut(t) {\n return new pt(Rt(this.figures, t.figures));\n }\n intersect(t) {\n return new pt(fe(this.figures, t.figures));\n }\n}\nfunction li(i) {\n for (const [t, n] of ae(i))\n if (t.intersects(n))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n q as A,\n ft as B,\n X as C,\n pt as D,\n D as E,\n it as F,\n et as G,\n ci as H,\n Xt as I,\n hi as J,\n ui as K,\n wt as L,\n yn as M,\n xt as N,\n ge as O,\n V as Q,\n wn as R,\n lt as S,\n tt as T,\n Ft as a,\n Wt as b,\n Rt as c,\n W as d,\n L as e,\n Qt as f,\n Z as g,\n st as h,\n fe as i,\n sn as j,\n Pn as k,\n Ht as l,\n Et as m,\n Q as n,\n B as o,\n cs as p,\n mn as q,\n dt as r,\n Ge as s,\n E as t,\n ai as u,\n bt as v,\n Vs as w,\n Ve as x,\n Kt as y,\n ut as z\n};\n//# sourceMappingURL=Diagram-8c3c5e1b.js.map\n","import { o as p, A as y, g as u, h as g, G as A, u as F, v as z, H as N, I, t as w, J as O, d as C, K as Y, M as G, e as v, R as V, C as W, Q, T as q, S as H, D as J, F as K, L as $, N as m, n as L, O as d } from \"./Diagram-8c3c5e1b.js\";\nclass S {\n constructor(t, e) {\n this.firstPoint = t, this.lastPoint = e;\n }\n}\nfunction b(s, t) {\n if (s instanceof p)\n return j(s, t);\n if (s instanceof y)\n return U(s, t);\n throw new Error(\"Not implemented\");\n}\nfunction j(s, t) {\n const { firstPoint: e, lastPoint: n } = s, r = s.normalVector;\n return new p(\n u(e, g(r, t)),\n u(n, g(r, t))\n );\n}\nfunction U(s, t) {\n const e = u(\n s.firstPoint,\n g(A(s.tangentAtFirstPoint), t)\n ), n = u(\n s.lastPoint,\n g(A(s.tangentAtLastPoint), t)\n ), r = t * (s.clockwise ? 1 : -1);\n return s.radius + r < s.precision ? new S(e, n) : new y(e, n, s.center, s.clockwise);\n}\nfunction _(s, t, e) {\n const n = z(\n s.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(n) < 1e-10)\n return null;\n const r = n > 0 ? 1 : -1, i = Math.abs(e) * r, o = b(s, i), a = b(t, i);\n if (o instanceof S || a instanceof S)\n return null;\n let c;\n try {\n c = N(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!c)\n return null;\n const h = c, f = (P, R) => {\n const k = R.tangentAt(h), B = I(k), M = u(h, g(B, i));\n return P.splitAt(M);\n }, [l] = f(s, o), [, T] = f(t, a);\n return { first: l, second: T, center: h };\n}\nfunction E(s, t, e) {\n const n = _(s, t, e);\n if (!n)\n return console.warn(\n \"Cannot fillet between segments\",\n s.repr,\n t.repr\n ), [s, t];\n const { first: r, second: i } = n;\n return [\n r,\n F(r.lastPoint, i.firstPoint, r.tangentAtLastPoint),\n i\n ];\n}\nfunction x(s, t, e) {\n const n = _(s, t, e);\n if (!n)\n return console.warn(\n \"Cannot chamfer between segments\",\n s.repr,\n t.repr\n ), [s, t];\n const { first: r, second: i } = n;\n return [r, new p(r.lastPoint, i.firstPoint), i];\n}\nconst X = (s) => {\n let t;\n s ? typeof s == \"number\" || Array.isArray(s) && s.length === 2 ? t = { endTangent: s } : t = { endTangent: 0, ...s } : t = { endTangent: [1, 0] };\n const {\n endTangent: e,\n startFactor: n = 1,\n endFactor: r = 1,\n startTangent: i\n } = t;\n let o;\n typeof e == \"number\" ? o = m(1, e * d) : o = e;\n let a;\n return typeof i == \"number\" ? a = m(1, i * d) : a = i, { endTangent: o, startFactor: n, endFactor: r, startTangent: a };\n};\nfunction D(s, { ignoreChecks: t = !1 } = {}) {\n return new J([new K(new $([...s], { ignoreChecks: t }))]);\n}\nclass Z {\n constructor(t = [0, 0]) {\n this.pointer = t, this.firstPoint = t, this.pendingSegments = [], this._nextCorner = null;\n }\n movePointerTo(t) {\n if (this.pendingSegments.length)\n throw new Error(\n \"You can only move the pointer if there is no segment defined\"\n );\n return this.pointer = t, this.firstPoint = t, this;\n }\n saveSegment(t) {\n if (w(t.firstPoint, t.lastPoint))\n throw new Error(`Segment has no length, ${t.repr}`);\n if (!this._nextCorner)\n return this.pendingSegments.push(t), this;\n const e = this.pendingSegments.pop();\n if (!e)\n throw new Error(\"bug in the custom corner algorithm\");\n const n = this._nextCorner.mode === \"chamfer\" ? x : E;\n return this.pendingSegments.push(\n ...n(e, t, this._nextCorner.radius)\n ), this._nextCorner = null, this;\n }\n lineTo(t) {\n const e = new p(this.pointer, t);\n return this.pointer = t, this.saveSegment(e);\n }\n line(t, e) {\n return this.lineTo([this.pointer[0] + t, this.pointer[1] + e]);\n }\n vLine(t) {\n return this.line(0, t);\n }\n hLine(t) {\n return this.line(t, 0);\n }\n vLineTo(t) {\n return this.lineTo([this.pointer[0], t]);\n }\n hLineTo(t) {\n return this.lineTo([t, this.pointer[1]]);\n }\n polarLineTo([t, e]) {\n const n = e * d, r = m(t, n);\n return this.lineTo(r);\n }\n polarLine(t, e) {\n const n = e * d, [r, i] = m(t, n);\n return this.line(r, i);\n }\n tangentLine(t) {\n const e = this.pendingSegments.at(-1);\n if (!e)\n throw new Error(\"You need a previous segment to sketch a tangent line\");\n const [n, r] = e.tangentAtLastPoint;\n return this.line(n * t, r * t);\n }\n threePointsArcTo(t, e) {\n return this.saveSegment(O(this.pointer, e, t)), this.pointer = t, this;\n }\n threePointsArc(t, e, n, r) {\n const [i, o] = this.pointer;\n return this.threePointsArcTo(\n [i + t, o + e],\n [i + n, o + r]\n );\n }\n sagittaArcTo(t, e) {\n if (!e)\n return this.lineTo(t);\n const n = new p(this.pointer, t), r = A(n.tangentAtFirstPoint), i = u(n.midPoint, g(r, e));\n return this.threePointsArcTo(t, i);\n }\n sagittaArc(t, e, n) {\n return this.sagittaArcTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n vSagittaArc(t, e) {\n return this.sagittaArc(0, t, e);\n }\n hSagittaArc(t, e) {\n return this.sagittaArc(t, 0, e);\n }\n bulgeArcTo(t, e) {\n if (!e)\n return this.lineTo(t);\n const n = C(this.pointer, t) / 2, r = -e * n;\n return this.sagittaArcTo(t, r);\n }\n bulgeArc(t, e, n) {\n return this.bulgeArcTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n vBulgeArc(t, e) {\n return this.bulgeArc(0, t, e);\n }\n hBulgeArc(t, e) {\n return this.bulgeArc(t, 0, e);\n }\n tangentArcTo(t, e) {\n const n = this.pendingSegments.at(-1);\n if (!n)\n throw new Error(\"You need a previous curve to sketch a tangent arc\");\n return this.saveSegment(\n F(\n this.pointer,\n t,\n e ?? n.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, e, n) {\n const [r, i] = this.pointer;\n return this.tangentArcTo([t + r, e + i], n);\n }\n ellipseTo(t, e, n, r, i, o) {\n return this.saveSegment(\n Y(this.pointer, t, e, n, r, i, o)\n ), this.pointer = t, this;\n }\n ellipse(t, e, n, r, i, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n,\n r,\n i,\n o,\n a\n );\n }\n halfEllipseTo(t, e) {\n const [n, r] = G(v(t, this.pointer));\n return this.ellipseTo(\n t,\n n / 2,\n Math.abs(e),\n r * V,\n !0,\n e > 0\n );\n }\n halfEllipse(t, e, n) {\n return this.halfEllipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n cubicBezierCurveTo(t, e, n) {\n return this.saveSegment(\n new W(this.pointer, t, e, n)\n ), this.pointer = t, this;\n }\n quadraticBezierCurveTo(t, e) {\n return this.saveSegment(new Q(this.pointer, t, e)), this.pointer = t, this;\n }\n smoothCurveTo(t, e) {\n const { endTangent: n, startTangent: r, startFactor: i, endFactor: o } = X(e), a = this.pendingSegments.length ? this.pendingSegments[this.pendingSegments.length - 1] : null, c = C(this.pointer, t) / 3;\n let h;\n r ? h = r : a ? h = a.tangentAtLastPoint : h = [1, 0], h = L(h);\n const f = [\n this.pointer[0] + h[0] * i * c,\n this.pointer[1] + h[1] * i * c\n ];\n let l = n;\n l = L(l);\n const T = [\n t[0] - l[0] * o * c,\n t[1] - l[1] * o * c\n ];\n return this.cubicBezierCurveTo(t, f, T);\n }\n smoothCurve(t, e, n) {\n return this.smoothCurveTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n\n );\n }\n customCorner(t, e = \"fillet\") {\n if (!this.pendingSegments.length)\n throw new Error(\"You need a segment defined to fillet the angle\");\n return t ? (this._nextCorner = { mode: e, radius: t }, this) : this;\n }\n _customCornerLastWithFirst(t, e = \"fillet\") {\n if (!t)\n return;\n const n = this.pendingSegments.pop(), r = this.pendingSegments.shift();\n if (!n || !r)\n throw new Error(\"Not enough curves to close and fillet\");\n const i = e === \"chamfer\" ? x : E;\n this.pendingSegments.push(...i(n, r, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1);\n return w(e.firstPoint, n.lastPoint) || this.lineTo(e.firstPoint), this._nextCorner !== null && (this._customCornerLastWithFirst(\n this._nextCorner.radius,\n this._nextCorner.mode\n ), this._nextCorner = null), D(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length)\n throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1), r = v(\n n.lastPoint,\n e.firstPoint\n ), i = new q().mirrorLine(\n r,\n e.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(i).reverse()\n );\n return o.reverse(), D(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new H([...this.pendingSegments]);\n }\n get isClosed() {\n var t;\n return w(this.pointer, (t = this.pendingSegments[0]) == null ? void 0 : t.firstPoint);\n }\n}\nfunction et(s = [0, 0]) {\n return new Z(s);\n}\nexport {\n S as D,\n et as d,\n b as o\n};\n//# sourceMappingURL=draw-825692f1.js.map\n","import { o as Pt, D } from \"./draw-825692f1.js\";\nimport { d as dn } from \"./draw-825692f1.js\";\nimport { F as p, L as P, D as h, f as O, r as wt, z as mt, s as Mt, a as It, c as St, i as vt, S as C, l as $t, d as m, b as At, p as Lt, n as K, e as E, g as kt, h as Et, j as bt, k as yt, m as j, o as M, A as v, q as tt, t as I, u as Ct, v as Ft, E as nt, R as Dt, Q as et, C as it, w as xt, B as Rt } from \"./Diagram-8c3c5e1b.js\";\nimport { x as wn } from \"./Diagram-8c3c5e1b.js\";\nfunction S(t) {\n if (t instanceof p)\n return [t];\n if (t instanceof P)\n return [new p(t)];\n if (t instanceof h)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction st(t, n, e = 1e-9) {\n let i = [];\n const r = [], s = new Array(n.segments.length).fill(0).map(() => []);\n n.segments.forEach((c, f) => {\n t.segments.forEach((a) => {\n const { intersections: u, overlaps: d } = O(\n c,\n a,\n e\n );\n i.push(...u), s[f].push(...u), r.push(...d);\n const g = d.flatMap((l) => [\n l.firstPoint,\n l.lastPoint\n ]);\n i.push(...g), s[f].push(...g);\n });\n }), i = wt(i, e);\n const o = mt([n.segments, s]).flatMap(([c, f]) => f.length ? c.splitAt(f) : [c]);\n return Array.from(\n Mt(\n o,\n i,\n r\n )\n );\n}\nfunction B(t, n, e = !1) {\n return st(n, t).filter((r) => {\n const s = r.segments[0].midPoint;\n return n.onStroke(s) ? !e : !n.contains(s);\n });\n}\nfunction G(t, n, e = !1) {\n return st(n, t).filter((r) => {\n const s = r.segments[0].midPoint;\n return n.onStroke(s) ? !e : n.contains(s);\n });\n}\nfunction z(t, n, e = !1) {\n const i = B(\n t,\n n.contour,\n e\n ), r = n.holes.flatMap(\n (s) => G(t, s, e)\n );\n return [...i, ...r];\n}\nfunction _(t, n, e = !1) {\n let i = G(\n t,\n n.contour,\n e\n );\n return n.holes.forEach((r) => {\n i = i.flatMap(\n (s) => B(s, r, e)\n );\n }), i;\n}\nfunction Ot(t, n) {\n return new h(\n It(S(t), S(n))\n );\n}\nfunction b(t) {\n return t.reduce(\n (n, e) => Ot(n, e),\n new h()\n );\n}\nfunction rt(t, n) {\n return new h(\n St(S(t), S(n))\n );\n}\nfunction sn(t, n) {\n return new h(\n vt(S(t), S(n))\n );\n}\nfunction rn(t, n, e = !0) {\n if (n instanceof P)\n return B(t, n, e);\n if (n instanceof p)\n return z(t, n, e);\n let i = [new C([...t.segments])];\n return n.figures.forEach((r) => {\n i = i.flatMap((s) => z(s, r, e));\n }), i;\n}\nfunction on(t, n, e = !1) {\n if (n instanceof P)\n return G(t, n, e);\n if (n instanceof p)\n return _(t, n, e);\n let i = [new C([...t.segments])];\n return n.figures.forEach((r) => {\n i = i.flatMap((s) => _(s, r, e));\n }), i;\n}\nfunction q(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst N = (t, n, e) => {\n if (e === \"before\")\n return t.distanceFrom(n.firstPoint);\n if (e === \"after\")\n return t.distanceFrom(n.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Bt(t, n) {\n const e = $t(t, n);\n if (e === \"parallel\")\n return Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n const { intersectionParam1: i, intersectionParam2: r } = e, s = q(i), o = q(r);\n if (s === \"between\" && o === \"between\")\n return 0;\n if (s === \"between\" && o !== \"between\")\n return N(t, n, o);\n if (o === \"between\" && s !== \"between\")\n return N(n, t, s);\n if (s === \"before\" && o === \"before\")\n return m(t.firstPoint, n.firstPoint);\n if (s === \"after\" && o === \"after\")\n return m(t.lastPoint, n.lastPoint);\n if (s === \"before\" && o === \"after\")\n return m(t.firstPoint, n.lastPoint);\n if (s === \"after\" && o === \"before\")\n return m(t.lastPoint, n.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction Q(t, n) {\n if (At(t, n).length > 0)\n return 0;\n const e = Lt(t, n.center);\n if (t.isOnSegment(e)) {\n const i = m(e, n.center);\n if (Math.abs(i - n.radius) < t.precision && n.isOnSegment(e))\n return 0;\n if (i - n.radius > t.precision) {\n const r = K(\n E(e, n.center)\n ), s = kt(\n n.center,\n Et(r, n.radius)\n );\n if (n.isOnSegment(s))\n return m(s, e);\n }\n }\n return Math.min(\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint),\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint)\n );\n}\nconst Gt = (t, n) => {\n const e = t.angleToParam(n.firstAngle);\n if (t.isValidParameter(e))\n return !0;\n const i = t.angleToParam(n.lastAngle);\n return !!t.isValidParameter(i);\n};\nfunction Tt(t, n) {\n if (bt(t, n, !0).length > 0)\n return 0;\n const e = m(t.center, n.center);\n if (e < t.precision && Gt(t, n))\n return Math.abs(t.radius - n.radius);\n const i = K(E(n.center, t.center)), r = e - Math.abs(t.radius - n.radius) < t.precision;\n let s = yt(i);\n r && n.radius > t.radius && (s += Math.PI);\n const o = r ? s : s + Math.PI, c = t.angleToParam(s), f = n.angleToParam(o);\n return t.isValidParameter(c) && n.isValidParameter(f) ? m(t.paramPoint(c), n.paramPoint(f)) : Math.min(\n t.distanceFrom(n.firstPoint),\n t.distanceFrom(n.lastPoint),\n n.distanceFrom(t.firstPoint),\n n.distanceFrom(t.lastPoint)\n );\n}\nfunction Ut(t, n, e) {\n let i = 0, r = t.length - 1;\n for (; i <= r; ) {\n const s = Math.floor((i + r) / 2), o = e(t[s], n);\n if (o < 0)\n i = s + 1;\n else if (o > 0)\n r = s - 1;\n else\n return s;\n }\n return -(i + 1);\n}\nfunction Vt(t, n, e) {\n const i = Ut(t, n, e);\n i < 0 ? t.splice(-(i + 1), 0, n) : t.splice(i, 0, n);\n}\nclass zt {\n constructor() {\n this.buckets = [];\n }\n addInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n e === void 0 ? this.buckets[n.rectangle.diagonalBucketIndex] = [n] : Vt(e, n, (i, r) => i.value - r.value);\n }\n removeInterval(n) {\n const e = this.buckets[n.rectangle.diagonalBucketIndex];\n if (e === void 0)\n throw new Error(\"Interval not found\");\n e.shift();\n }\n getBottomRightHullIntervals() {\n const n = [];\n for (let e = this.buckets.length - 1; e >= 0; e--) {\n const i = this.buckets[e];\n if (!i === void 0)\n continue;\n const r = i[0];\n if (r !== void 0) {\n if (!n.length) {\n n.push(r);\n continue;\n }\n for (; n.length && n[n.length - 1].value >= r.value; )\n n.pop();\n for (; n.length >= 2; ) {\n const s = n[n.length - 1], o = n[n.length - 2], c = (r.value - o.value) / ((r.rectangle.diagonal - o.rectangle.diagonal) * 2);\n if (o.value + (s.rectangle.diagonal - o.rectangle.diagonal) / 2 * c < s.value)\n n.pop();\n else\n break;\n }\n n.push(r);\n }\n }\n return n;\n }\n}\nclass _t {\n constructor(n, e) {\n this.x = n, this.y = e, this.xLength = Math.pow(3, -n), this.yLength = Math.pow(3, -e), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = n + e, this.index = `${n},${e}`;\n }\n}\nclass qt {\n constructor(n, e = 1e-8, i = 1e3, r = 1e-6) {\n this.fcn = n, this.endTolerance = e, this.maxIterations = i, this.epsilon = r, this.fcn = n, this.epsilon = r, this.endTolerance = e, this.maxIterations = i, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new zt();\n const s = [0.5, 0.5], o = this.rect(0, 0), c = this.fcn(s);\n this.buckets.addInterval(new k(s, c, o)), this.fMin = c, this.argMin = s, this.tol = o.diagonal;\n }\n registerInterval(n) {\n this.buckets.addInterval(n), n.value <= this.fMin && (this.fMin = n.value, this.argMin = n.center, this.tol = n.rectangle.diagonal);\n }\n rect(n, e) {\n const i = `${n},${e}`;\n return this.rectangles.has(i) || this.rectangles.set(i, new _t(n, e)), this.rectangles.get(i);\n }\n splitInterval(n) {\n let e, i, r;\n const [s, o] = n.center;\n return n.rectangle.x <= n.rectangle.y ? (e = this.rect(n.rectangle.x + 1, n.rectangle.y), i = [s - e.xLength, o], r = [s + e.xLength, o]) : (e = this.rect(n.rectangle.x, n.rectangle.y + 1), i = [s, o - e.yLength], r = [s, o + e.yLength]), [\n new k(i, this.fcn(i), e),\n new k(n.center, n.value, e),\n new k(r, this.fcn(r), e)\n ];\n }\n single_iteration() {\n const n = this.buckets.getBottomRightHullIntervals();\n for (; n.length >= 2; ) {\n const e = n[0], i = n[1], r = (i.value - e.value) / ((i.rectangle.diagonal - e.rectangle.diagonal) / 2), s = e.value - r * i.value / 2;\n if ((this.fMin - s) / Math.abs(this.fMin) < this.epsilon)\n n.shift();\n else\n break;\n }\n n.forEach((e) => {\n this.buckets.removeInterval(e);\n });\n for (const e of n) {\n const [i, r, s] = this.splitInterval(e);\n this.registerInterval(i), this.registerInterval(r), this.registerInterval(s);\n }\n }\n run() {\n let n = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), n++, !(n > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: n\n };\n }\n}\nclass k {\n constructor(n, e, i) {\n this.center = n, this.value = e, this.rectangle = i;\n }\n}\nfunction Nt(t, n = 1e-8, e = 1e3, i = 1e-6) {\n return new qt(\n t,\n n,\n e,\n i\n ).run();\n}\nfunction Qt(t, n, e = 1e-9) {\n const i = Nt((r) => {\n const s = t.paramPoint(r[0]), o = n.paramPoint(r[1]);\n return j(s, o);\n }, e);\n return Math.sqrt(i.fMin);\n}\nfunction Zt(t, n) {\n return t instanceof M && n instanceof M ? Bt(t, n) : t instanceof M && n instanceof v ? Q(t, n) : t instanceof v && n instanceof M ? Q(n, t) : t instanceof v && n instanceof v ? Tt(t, n) : Qt(t, n);\n}\nconst T = 1e-8;\nfunction x(t, n, e = !0) {\n const i = t.map((a) => ({\n offset: Pt(a, n),\n original: a\n })), r = [];\n let s = e ? null : i.at(-1), o = e ? i.at(-1) : null;\n if (r.length === 1)\n return r;\n const c = (a) => {\n s ? a.offset instanceof D ? I(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new M(a.offset.firstPoint, a.offset.lastPoint)\n ) : r.push(a.offset) : s = a;\n }, f = function* () {\n for (const a of i.slice(0, -1))\n yield a;\n if (!s)\n throw new Error(\"Bug in the offset algorithm\");\n yield s;\n };\n for (const a of f()) {\n if (!o) {\n o = a;\n continue;\n }\n const u = o.offset.lastPoint, d = a.offset.firstPoint;\n if (I(u, d)) {\n c(o), o = a;\n continue;\n }\n let g = [];\n if (!(o.offset instanceof D) && !(a.offset instanceof D)) {\n const { intersections: $, overlaps: F } = O(\n o.offset,\n a.offset,\n T / 100\n );\n g = [\n ...$,\n ...F.flatMap((A) => [A.firstPoint, A.lastPoint])\n ];\n }\n if (g.length > 0) {\n let $ = g[0];\n if (g.length > 1) {\n const pt = o == null ? void 0 : o.original.lastPoint, V = g.map(\n (dt) => j(dt, pt)\n );\n $ = g[V.indexOf(Math.min(...V))];\n }\n const F = o.offset.splitAt([\n $\n ])[0], A = a.offset.splitAt([$]).at(-1);\n if (!A)\n throw new Error(\"Bug in the splitting algo in offset\");\n c({\n offset: F,\n original: o.original\n }), o = { offset: A, original: a.original };\n continue;\n }\n const l = o.original.lastPoint, L = Ft(\n E(d, l),\n E(u, l)\n ) > 0, gt = new v(u, d, l, L);\n c(o), r.push(gt), o = a;\n }\n return o && c(o), r;\n}\nfunction ot(t) {\n const n = /* @__PURE__ */ new Map(), e = (i, r) => {\n const s = n.get(i) || [];\n n.set(i, [...s, ...r]);\n };\n return t.forEach((i, r) => {\n t.slice(r + 1).forEach((s, o) => {\n const { intersections: c, overlaps: f } = O(i, s, T), a = [\n ...c,\n ...f.flatMap((u) => [u.firstPoint, u.lastPoint])\n ].filter((u) => {\n const d = I(u, i.firstPoint) || I(u, i.lastPoint), g = I(u, s.firstPoint) || I(u, s.lastPoint);\n return !(d && g);\n });\n a.length && (e(r, a), e(o + r + 1, a));\n });\n }), n;\n}\nfunction at(t, n) {\n return n.flatMap((e, i) => {\n if (!t.has(i))\n return e;\n const r = t.get(i);\n return r ? e.splitAt(r) : e;\n });\n}\nfunction ct(t, n, e) {\n return t.filter((i) => !n.segments.some((s) => Zt(s, i) < Math.abs(e) - T));\n}\nfunction y(t, n) {\n const e = t.clockwise ? n : -n, i = x(t.segments, e);\n if (i.length < 2)\n return new h();\n const r = ot(i);\n if (!r.size) {\n const a = new P(i);\n return new h([new p(a)]);\n }\n const s = at(\n r,\n i\n ), o = ct(s, t, n);\n if (!o.length)\n return new h();\n const f = tt(o).filter((a) => a.length > 1).filter((a) => I(a[0].firstPoint, a.at(-1).lastPoint)).map((a) => new P(a));\n return f.length ? new h(f.map((a) => new p(a))) : new h();\n}\nfunction Jt(t, n, e = \"round\") {\n const i = n / 2, r = x(t.segments, i, !1), s = x(t.segments, -i, !1).map(\n (l) => l.reverse()\n );\n s.reverse();\n const o = (l, L) => e === \"round\" ? Ct(\n l.lastPoint,\n L.firstPoint,\n l.tangentAtLastPoint\n ) : new M(l.lastPoint, L.firstPoint), c = [\n ...r,\n o(\n r[r.length - 1],\n s[0]\n ),\n ...s,\n o(\n s[s.length - 1],\n r[0]\n )\n ], f = ot(c);\n if (!f.size) {\n const l = new P(c);\n return new h([new p(l)]);\n }\n const a = at(\n f,\n c\n ), u = ct(a, t, i);\n if (!u.length)\n return new h();\n const g = tt(u).filter((l) => l.length > 1).filter((l) => I(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new P(l));\n return g.length ? new h(g.map((l) => new p(l))) : new h();\n}\nfunction Ht(t, n) {\n const e = t.map((i) => {\n const r = b(\n i.holes.map((s) => y(s, n))\n );\n return rt(y(i.contour, n), r);\n });\n return b(e);\n}\nfunction Wt(t, n) {\n const e = Math.abs(n / 2), i = t.map(\n (r) => b(\n r.allLoops.map((s) => rt(y(s, e), y(s, -e)))\n )\n );\n return b(i);\n}\nfunction an(t, n) {\n return Ht(S(t), n);\n}\nfunction cn(t, n, { endCap: e = \"round\" } = {}) {\n return t instanceof C ? Jt(t, n, e) : Wt(S(t), n);\n}\nfunction w([t, n]) {\n return `${t} ${n}`;\n}\nfunction U(t) {\n if (t instanceof M)\n return `L ${w(t.lastPoint)}`;\n if (t instanceof v)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${w(t.lastPoint)}`;\n if (t instanceof nt)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * Dt} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${w(t.lastPoint)}`;\n if (t instanceof et)\n return `Q ${[\n w(t.controlPoint),\n w(t.lastPoint)\n ].join(\" \")}`;\n if (t instanceof it)\n return `C ${[\n w(t.firstControlPoint),\n w(t.lastControlPoint),\n w(t.lastPoint)\n ].join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction ft(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, e = t.segments.map(U).join(\" \");\n return `${n} ${e} Z`;\n}\nfunction lt(t) {\n return `<path d=\"${t.allLoops.map(ft).join(\" \")}\" />`;\n}\nfunction Xt(t) {\n return `<g>\n ${t.figures.map(lt).join(`\n`)}\n</g>`;\n}\nfunction Yt(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, e = t.segments.map(U).join(\" \");\n return `${n} ${e}`;\n}\nfunction Kt(t, n = 1) {\n const e = t.xMin - n, i = t.yMin - n;\n return `${e} ${i} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction Z(t, n, e = 1, i) {\n const r = Kt(n, e), s = i ? `width=\"${n.width + 2 * e}${i}\" height=\"${n.height + 2 * e}${i}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${r}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${s}>\n ${t}\n</svg>`;\n}\nfunction J(t) {\n if (t instanceof h)\n return Xt(t);\n if (t instanceof p)\n return lt(t);\n if (t instanceof P)\n return `<path d=\"${ft(t)}\" />`;\n if (t instanceof C)\n return `<path d=\"${Yt(t)}\" />`;\n if (xt(t))\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${U(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst H = (t) => \"shape\" in t ? t.shape : t, W = (t, n) => {\n if (!(\"shape\" in t))\n return n;\n const { color: e } = t;\n return e ? `<g stroke=\"${e}\">${n}</g>` : n;\n}, X = (t) => new Rt(t.xMin, -t.yMax, t.xMax, -t.yMin);\nfunction fn(t, {\n margin: n = 1,\n unit: e = null,\n viewBox: i\n} = {}) {\n if (Array.isArray(t)) {\n const s = t.map((f) => H(f).mirror()), o = s.map((f, a) => W(t[a], J(f))).join(`\n`), c = s.slice(1).reduce((f, a) => f.merge(a.boundingBox), s[0].boundingBox);\n return Z(o, i ? X(i) : c, n, e);\n }\n const r = H(t).mirror();\n return Z(\n W(t, J(r)),\n i ? X(i) : r.boundingBox,\n n,\n e\n );\n}\nconst ut = (t) => {\n if (t.type === \"LINE\")\n return new M(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new v(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new nt(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { angleUnits: \"rad\" }\n );\n if (t.type === \"QUADRATIC_BEZIER\")\n return new et(\n t.firstPoint,\n t.lastPoint,\n t.controlPoint\n );\n if (t.type === \"CUBIC_BEZIER\")\n return new it(\n t.firstPoint,\n t.lastPoint,\n t.firstControlPoint,\n t.lastControlPoint\n );\n throw new Error(\"Unknown segment type\");\n}, R = (t) => {\n const n = t.segments.map(ut);\n return new P(n);\n}, ht = (t) => {\n const n = R(t.contour), e = t.holes.map(R);\n return new p(n, e);\n}, jt = (t) => {\n const n = t.figures.map(ht);\n return new h(n);\n};\nfunction ln(t) {\n if (t.type === \"DIAGRAM\")\n return jt(t);\n if (t.type === \"FIGURE\")\n return ht(t);\n if (t.type === \"LOOP\")\n return R(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\" || t.type === \"CUBIC_BEZIER\")\n return ut(t);\n throw new Error(\"Unknown shape type\");\n}\nconst Y = Math.PI / 180, tn = 180 / Math.PI;\nfunction un(t, n) {\n const e = Math.cos(n * Y) * t, i = Math.sin(n * Y) * t;\n return [e, i];\n}\nfunction hn([t, n]) {\n const e = Math.sqrt(t * t + n * n), i = Math.atan2(n, t) * tn;\n return [e, i];\n}\nexport {\n Y as DEG2RAD,\n tn as RAD2DEG,\n hn as cartesianToPolar,\n on as confineStrand,\n rt as cut,\n dn as draw,\n rn as eraseStrand,\n wn as exportJSON,\n fn as exportSVG,\n Ot as fuse,\n b as fuseAll,\n ln as importJSON,\n sn as intersect,\n an as offset,\n cn as outlineStroke,\n un as polarToCartesian,\n J as svgBody\n};\n//# sourceMappingURL=pantograph.js.map\n","import { cut, eraseStrand, exportSVG } from \"pantograph2d\";\nimport {\n Transformable,\n Diagram,\n Strand,\n TransformationMatrix,\n Stroke,\n} from \"pantograph2d/models\";\n\nexport class Dieline extends Transformable<Dieline> {\n public body: Diagram;\n public cutLines: Stroke[];\n public foldLinesBackwards: Stroke[];\n public foldLinesForwards: Stroke[];\n\n constructor(\n body: Diagram,\n {\n cutLines = [],\n foldLines = [],\n foldLinesForwards = [],\n foldLinesBackwards = [],\n }: {\n cutLines?: Stroke[];\n foldLines?: Stroke[];\n foldLinesBackwards?: Stroke[];\n foldLinesForwards?: Stroke[];\n } = {}\n ) {\n super();\n this.body = body;\n this.cutLines = [...cutLines];\n this.foldLinesBackwards = [...foldLines, ...foldLinesBackwards];\n this.foldLinesForwards = [...foldLinesForwards];\n }\n\n get foldLines() {\n return [...this.foldLinesForwards, ...this.foldLinesBackwards];\n }\n\n clone() {\n return new Dieline(this.body, {\n cutLines: [...this.cutLines],\n foldLinesForwards: [...this.foldLinesForwards],\n foldLinesBackwards: [...this.foldLinesBackwards],\n });\n }\n\n addCutLine(cut: Strand) {\n this.cutLines.push(cut);\n return this;\n }\n\n addFoldLine(fold: Strand, direction: \"forwards\" | \"backwards\" = \"backwards\") {\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(fold);\n } else {\n this.foldLinesBackwards.push(fold);\n }\n }\n\n fuseFold(\n fold: Diagram | Dieline,\n direction: \"forwards\" | \"backwards\" = \"backwards\"\n ) {\n const otherBody: Diagram = fold instanceof Dieline ? fold.body : fold;\n\n const commonLines = this.body.overlappingStrands(otherBody);\n if (direction === \"forwards\") {\n this.foldLinesForwards.push(...commonLines);\n } else {\n this.foldLinesBackwards.push(...commonLines);\n }\n\n this.fuseBody(fold);\n return this;\n }\n\n fuseBody(other: Dieline | Diagram) {\n let otherBody: Diagram;\n\n if (other instanceof Dieline) {\n otherBody = other.body;\n this.cutLines.push(...other.cutLines);\n this.foldLinesForwards.push(...other.foldLinesForwards);\n this.foldLinesBackwards.push(...other.foldLinesBackwards);\n } else {\n otherBody = other;\n }\n\n this.body = this.body.fuse(otherBody);\n return this;\n }\n\n cutShape(shape: Diagram) {\n this.body = cut(this.body, shape);\n this.cutLines = this.cutLines.flatMap((cut) =>\n eraseStrand(cut, shape, true)\n );\n this.eraseFolds(shape);\n return this;\n }\n\n eraseFolds(shape: Diagram) {\n this.foldLinesBackwards = this.foldLinesBackwards.flatMap((fold) =>\n eraseStrand(fold, shape, true)\n );\n this.foldLinesForwards = this.foldLinesForwards.flatMap((fold) =>\n eraseStrand(fold, shape, true)\n );\n }\n\n transform(matrix: TransformationMatrix) {\n const newDieline = new Dieline(this.body.transform(matrix), {\n cutLines: this.cutLines.map((cut) => cut.transform(matrix)),\n foldLinesForwards: this.foldLinesForwards.map((fold) =>\n fold.transform(matrix)\n ),\n foldLinesBackwards: this.foldLinesBackwards.map((fold) =>\n fold.transform(matrix)\n ),\n });\n\n return newDieline;\n }\n\n asSVG() {\n const shapes: { shape: Diagram | Stroke; color: string }[] = [];\n if (this.body) {\n shapes.push({ shape: this.body, color: \"red\" });\n }\n if (this.cutLines.length) {\n this.cutLines.map((shape) => shapes.push({ shape, color: \"red\" }));\n }\n\n if (this.foldLinesBackwards.length) {\n this.foldLinesBackwards.map((shape) =>\n shapes.push({ shape, color: \"green\" })\n );\n }\n\n if (this.foldLinesForwards.length) {\n this.foldLinesForwards.map((shape) =>\n shapes.push({ shape, color: \"blue\" })\n );\n }\n\n return exportSVG(shapes, { unit: \"mm\" });\n }\n}\n","import { draw } from \"pantograph2d\";\n\nexport type FlapContractionMode = \"rounded\" | \"sharp\";\nexport type HorizontalFlapOptions = {\n fillet?: number;\n contraction?: number;\n contractionMode?: FlapContractionMode;\n contractionLeft?: number;\n contractionRight?: number;\n leftContractionMode?: FlapContractionMode;\n rightContractionMode?: FlapContractionMode;\n};\nexport type VerticalFlapTopOptions = HorizontalFlapOptions & {\n contractionTop?: number;\n contractionBottom?: number;\n topContractionMode?: FlapContractionMode;\n bottomContractionMode?: FlapContractionMode;\n};\n\nfunction drawFlap(\n width: number,\n height: number,\n {\n fillet = 1,\n contraction = 1,\n contractionMode = \"rounded\",\n contractionLeft: contractionLeftInput,\n contractionRight: contractionRightInput,\n leftContractionMode,\n rightContractionMode,\n }: HorizontalFlapOptions = {}\n) {\n const contractionLeft = contractionLeftInput ?? contraction;\n const contractionRight = contractionRightInput ?? contraction;\n\n const flapMaker = draw([-width / 2, 0]).hLine(width);\n\n if (contractionRight) {\n if ((rightContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.tangentArc(-contractionRight, contractionRight, [-1, 0]);\n flapMaker.vLine(height - contractionRight);\n } else {\n flapMaker.line(-contractionRight, height);\n }\n } else {\n flapMaker.vLine(height);\n }\n\n flapMaker.customCorner(fillet);\n flapMaker.hLine(-width + contractionLeft + contractionRight);\n flapMaker.customCorner(fillet);\n\n if (contractionLeft) {\n if ((leftContractionMode ?? contractionMode) === \"rounded\") {\n flapMaker.vLine(-height + contractionLeft);\n flapMaker.tangentArcTo([-width / 2, 0]);\n } else {\n flapMaker.lineTo([-width / 2, 0]);\n }\n } else {\n flapMaker.vLine(-height);\n }\n\n return flapMaker.close();\n}\n\nexport function topFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {}\n) {\n return drawFlap(width, height, options);\n}\n\nexport function bottomFlap(\n width: number,\n height: number,\n options: HorizontalFlapOptions = {}\n) {\n return drawFlap(width, height, options).mirror(\"x\");\n}\n\nexport function leftFlap(\n width: number,\n height: number,\n {\n contractionTop,\n contractionBottom,\n topContractionMode,\n bottomContractionMode,\n ...options\n }: VerticalFlapTopOptions = {}\n) {\n return drawFlap(width, height, {\n contractionLeft: contractionTop,\n contractionRight: contractionBottom,\n leftContractionMode: topContractionMode,\n rightContractionMode: bottomContractionMode,\n ...options,\n }).rotate(90);\n}\n\nexport function rightFlap(\n width: number,\n height: number,\n options: VerticalFlapTopOptions = {}\n) {\n return leftFlap(width, height, options).mirror(\"y\");\n}\n\nexport const drawFlaps = {\n right: rightFlap,\n left: leftFlap,\n top: topFlap,\n bottom: bottomFlap,\n};\n","import { draw } from \"pantograph2d\";\nimport {\n Diagram,\n Strand,\n Transformable,\n TransformationMatrix,\n} from \"pantograph2d/models\";\nimport { Dieline } from \"./Dieline.js\";\n\nconst drawBump = (width: number, height: number) => {\n return draw([-width / 2, 0])\n .line(height, -height)\n .hLine(width - 2 * height)\n .line(height, height);\n};\n\n// A helper class to create bumps for locking parts together without glue\nexport class FoldLockBump extends Transformable<FoldLockBump> {\n cut: Strand;\n unfold: Diagram;\n bump: Diagram;\n constructor(\n width: number | { cut: Strand; unfold: Diagram; bump: Diagram },\n paperThickness = 0.2\n ) {\n super();\n\n if (typeof width !== \"number\") {\n this.cut = width.cut;\n this.unfold = width.unfold;\n this.bump = width.bump;\n return;\n }\n\n const pen = drawBump(width, paperThickness * 2.5);\n\n this.cut = pen.asStrand();\n this.unfold = pen.close();\n\n this.bump = drawBump(width - 5 * paperThickness, 5 * paperThickness)\n .close()\n .mirror(\"x\");\n }\n\n clone() {\n return new FoldLockBump(this);\n }\n\n transform(matrix: TransformationMatrix) {\n return new FoldLockBump({\n cut: this.cut.transform(matrix),\n unfold: this.unfold.transform(matrix),\n bump: this.bump.transform(matrix),\n });\n }\n\n makeCut(dieline: Dieline) {\n dieline.eraseFolds(this.unfold);\n dieline.addCutLine(this.cut);\n }\n\n fuseBump(dieline: Dieline) {\n dieline.fuseBody(this.bump);\n }\n}\n","import { Vector } from \"pantograph2d\";\nimport { Transformable, TransformationMatrix } from \"pantograph2d/models\";\n\ninterface Clonable {\n clone(): this;\n}\n\ninterface Translatable {\n translateTo(point: Vector): this;\n}\n\nclass PointsDistribution extends Transformable<PointsDistribution> {\n constructor(public points: Vector[]) {\n super();\n this.points = points;\n }\n\n transform(matrix: TransformationMatrix) {\n return new PointsDistribution(this.points.map(matrix.transform));\n }\n\n distribute<T extends Translatable>(s: T): T[] {\n return this.points.map((p) => s.translateTo(p));\n }\n\n cloneDistribute<T extends Translatable & Clonable>(s: T): T[] {\n return this.points.map((p) => s.clone().translateTo(p));\n }\n}\n\nexport function linearDistribution(\n totalWidth: number,\n objectWidth: number,\n gapShare = 3,\n margin = 0\n) {\n if (totalWidth <= objectWidth * 2) {\n throw new Error(\"totalWidth must be greater than twice the objectWidth\");\n }\n\n const objectsCount = Math.max(\n Math.floor((totalWidth - 2 * margin) / (objectWidth * (gapShare + 1))),\n 2\n );\n const freeSpace = totalWidth - 2 * margin - objectsCount * objectWidth;\n const gapSize = freeSpace / (objectsCount - 1);\n const points: number[] = [];\n for (let i = 0; i < objectsCount; i++) {\n points.push(\n margin + i * (objectWidth + gapSize) - totalWidth / 2 + objectWidth / 2\n );\n }\n return new PointsDistribution(points.map((p) => [p, 0]));\n}\n\nexport function linearSpread(\n gap: number,\n count: number,\n direction: \"x\" | \"y\" = \"x\"\n) {\n const totalLength = gap * (count - 1);\n const points: number[] = [];\n for (let i = 0; i < count; i++) {\n points.push(i * gap - totalLength / 2);\n }\n return new PointsDistribution(\n points.map((p) => (direction.toLowerCase() === \"x\" ? [p, 0] : [0, p]))\n );\n}\n"],"names":["Lt","i","n","e","ft$1","ft","s","_e","dt","ge","wn","G","E","Z","L","at","dn","st","Et","W","bt","le","Q","xt","Pn","yn","pe","r","et","Xt","Mn","St","o","l","a","h","y","bn","En","Kt$1","Tt","Kt","B","Sn","ut","yt","Gt","Ht","Ke","Nt","q","c","u","hi","ai","ke","zt","Ie","Ce","_n","kn","M","C","_","v","S","He","In","nt","Cn","jn","je","Dt","tn","xn","en","vn","Fn","xe","Rn","rt","ot","kt","It","Tn","qn","ve","Vt","te","_t","An","Bn","On","$n","Ln","Nn","zn","Dn","Vn","Yn","Un","Xn","Gn","Wn","Qn","Jn","Zn","Kn","x","$","Y","K","A","j","I","k","mt","T","O","F","N","U","z","J","ct","ht","gt","ne","se","ie","re","qt","At","Bt","Ot","$t","Fe","Hn","ts","Re","es","ns","ss","is","rs","Yt","Ct","os","Te","Pt","ls","hs","we","as","us","de","X","cs","Wt","fs","ms","sn","D","ps","ui","gs","he","rn","b","qe","ws","ds","Ps","Ae","ys","on","Ms","Be","V","bs","Oe","H","Pe","Es","Ss","_s","ks","Is","Cs","$e","jt","js","vs","xs","m","Le","Ne","Ut","Mt","Fs","Rs","Ts","qs","ci","Qt","ln","ae","hn","an","As","ze","De","un","lt","Bs","ye","Os","$s","Ls","Ns","wt","zs","Ds","Vs","cn","ue","fn","Ys","Ve","pt","it","Us","Ye","oe","Me","Gs","ce","Xe","Ue","Xs","mn","Ws","Qs","gn","Js","be","Zs","vt","Ks","Ge","We","Qe","Hs","ti","Je","ei","ni","Ze","si","Ee","ii","Jt","Se","ri","g","w","p","Ft","pn","Zt","oi","Rt","fe","li","S$1","f","P","R","d","Z$1","t","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","cut","fold","direction","otherBody","commonLines","other","shape","eraseStrand","matrix","shapes","exportSVG","drawFlap","width","height","fillet","contraction","contractionMode","contractionLeftInput","contractionRightInput","leftContractionMode","rightContractionMode","contractionLeft","contractionRight","flapMaker","draw","topFlap","options","bottomFlap","leftFlap","contractionTop","contractionBottom","topContractionMode","bottomContractionMode","rightFlap","drawFlaps","drawBump","FoldLockBump","paperThickness","pen","dieline","PointsDistribution","points","linearDistribution","totalWidth","objectWidth","gapShare","margin","objectsCount","gapSize","linearSpread","gap","count","totalLength"],"mappings":"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"}
|