dielines 0.7.0 → 0.8.1
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/LICENSE +7 -0
- package/dist/dielines.js +4211 -3127
- package/dist/dielines.js.map +1 -1
- package/dist/dielines.umd.cjs +15 -15
- package/dist/dielines.umd.cjs.map +1 -1
- package/dist/examples/framePieces.d.ts +3 -0
- package/dist/examples/motorGearPieces.d.ts +7 -0
- package/dist/examples/noGlueTray.d.ts +4 -0
- package/dist/{types → src}/Dieline.d.ts +2 -2
- package/dist/{types → src}/FoldLockBump.d.ts +2 -2
- package/dist/{types → src}/drawFlaps.d.ts +4 -4
- package/dist/{types → src}/linearDistribution.d.ts +2 -2
- package/dist/src/main.d.ts +4 -0
- package/package.json +11 -11
- package/dist/types/main.d.ts +0 -4
package/dist/dielines.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dielines.js","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","me","_e","dt","ge","wn","G","E","Z","L","at","dn","st","Et","W","bt","le","Q","xt","Pn","yn","pe","r","et","Xt","Mn","o","l","a","h","y","bn","En","tt","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","R","x","$","Y","K","A","j","I","k","mt","T","O","F","N","U","J","ct","ht","gt","ne","se","ie","re","qt","At","Bt","Ot","$t","Fe","Hn","ts","Re","es","ns","ss","is","rs","Yt","ee","Ct","nn","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","z","f","P","d","Z$1","t","St","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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"}
|
|
1
|
+
{"version":3,"file":"dielines.js","sources":["../../pantograph/dist/QuadraticBezier-BzVqiExF.js","../../pantograph/dist/models-WQ-B7GSL.js","../../pantograph/dist/draw-DqsKIWJD.js","../../pantograph/dist/svg-BylQQgsL.js","../../pantograph/dist/pantograph.js","../src/Dieline.ts","../src/drawFlaps.ts","../src/FoldLockBump.ts","../src/linearDistribution.ts"],"sourcesContent":["var Be = Object.defineProperty;\nvar Me = (r) => {\n throw TypeError(r);\n};\nvar Oe = (r, s, e) => s in r ? Be(r, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[s] = e;\nvar q = (r, s, e) => Oe(r, typeof s != \"symbol\" ? s + \"\" : s, e), oe = (r, s, e) => s.has(r) || Me(\"Cannot \" + e);\nvar ot = (r, s, e) => (oe(r, s, \"read from private field\"), e ? e.call(r) : s.get(r)), le = (r, s, e) => s.has(r) ? Me(\"Cannot add the same private member more than once\") : s instanceof WeakSet ? s.add(r) : s.set(r, e), Lt = (r, s, e, t) => (oe(r, s, \"write to private field\"), t ? t.call(r, e) : s.set(r, e), e), he = (r, s, e) => (oe(r, s, \"access private method\"), e);\nfunction Dt(r, s, e, t) {\n return r <= t && s >= e;\n}\nclass ft {\n constructor(s = 1 / 0, e = 1 / 0, t = -1 / 0, n = -1 / 0) {\n q(this, \"xMin\");\n q(this, \"yMin\");\n q(this, \"xMax\");\n q(this, \"yMax\");\n this.xMin = s, this.yMin = e, this.xMax = t, this.yMax = n;\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(s) {\n return new ft(\n this.xMin - s,\n this.yMin - s,\n this.xMax + s,\n this.yMax + s\n );\n }\n contains(s) {\n const [e, t] = s;\n return Dt(this.xMin, this.xMax, e, e) && Dt(this.yMin, this.yMax, t, t);\n }\n overlaps(s) {\n return Dt(this.xMin, this.xMax, s.xMin, s.xMax) && Dt(this.yMin, this.yMax, s.yMin, s.yMax);\n }\n addPoint(s) {\n const [e, t] = s;\n return new ft(\n Math.min(this.xMin, e),\n Math.min(this.yMin, t),\n Math.max(this.xMax, e),\n Math.max(this.yMax, t)\n );\n }\n merge(s) {\n return new ft(\n Math.min(this.xMin, s.xMin),\n Math.min(this.yMin, s.yMin),\n Math.max(this.xMax, s.xMax),\n Math.max(this.yMax, s.yMax)\n );\n }\n intersection(s) {\n return new ft(\n Math.max(this.xMin, s.xMin),\n Math.max(this.yMin, s.yMin),\n Math.min(this.xMax, s.xMax),\n Math.min(this.yMax, s.yMax)\n );\n }\n}\nfunction ce(r) {\n return r.reduce((s, e) => s.addPoint(e), new ft());\n}\nconst ye = (r, s = 1e-9) => {\n let e = r;\n return Math.abs(r) < s && (e = 0), e.toFixed(-Math.log10(s));\n};\nfunction Te(r, s = 1e-9) {\n return Array.from(\n new Map(\n r.map(([e, t]) => [\n `[${ye(e, s)},${ye(t, s)}]`,\n [e, t]\n ])\n ).values()\n );\n}\nconst fe = Math.PI / 180, Ue = 180 / Math.PI, Z = (r) => `[${r[0]}, ${r[1]}]`, W = ([r, s], [e, t], n = 1e-9) => Math.abs(r - e) <= n && Math.abs(s - t) <= n, ut = ([r, s], [e, t]) => [r + e, s + t], X = ([r, s], [e, t]) => [r - e, s - t], It = ([r, s]) => r * r + s * s, an = ([r, s]) => Math.sqrt(It([r, s])), wt = ([r, s], e) => [r * e, s * e], Rt = ([r, s], [e, t] = [0, 0]) => (r - e) ** 2 + (s - t) ** 2, J = (r, s = [0, 0]) => Math.sqrt(Rt(r, s));\nfunction St([r, s], [e, t]) {\n return r * t - s * e;\n}\nfunction Pe([r, s], [e, t]) {\n return r * e + s * t;\n}\nfunction H([r, s]) {\n const e = J([r, s]);\n return [r / e, s / e];\n}\nfunction Tt(r, s) {\n const e = Math.cos(s) * r, t = Math.sin(s) * r;\n return [e, t];\n}\nfunction Ye([r, s]) {\n return Math.atan2(s, r);\n}\nfunction We(r) {\n const s = J(r), e = Ye(r);\n return [s, e];\n}\nfunction Ie(r, s, e = 1e-9) {\n const t = St(r, s), n = It(r), i = It(s);\n return t * t < n * i * e * e;\n}\nfunction rt(r) {\n return [-r[1], r[0]];\n}\nfunction Wt(r) {\n return [r[1], -r[0]];\n}\nfunction Qe(r, s, e) {\n return W(e, r) || Ie(X(e, r), s);\n}\nconst Mt = (r, s) => {\n const [e, t, n, i, o, l, h, a, u] = r, [c, g, d, w, p, P, f, M, E] = s;\n return [\n e * c + t * w + n * f,\n e * g + t * p + n * M,\n e * d + t * P + n * E,\n i * c + o * w + l * f,\n i * g + o * p + l * M,\n i * d + o * P + l * E,\n h * c + a * w + u * f,\n h * g + a * p + u * M,\n h * d + a * P + u * E\n ];\n}, Ge = (r) => {\n const [s, e, t, n, i, o, l, h, a] = r, u = s * (i * a - o * h) - e * (n * a - o * l) + t * (n * h - i * l);\n return [\n (i * a - o * h) / u,\n (t * h - e * a) / u,\n (e * o - t * i) / u,\n (o * l - n * a) / u,\n (s * a - t * l) / u,\n (t * n - s * o) / u,\n (n * h - i * l) / u,\n (e * l - s * h) / u,\n (s * i - e * n) / u\n ];\n}, Xe = (r) => {\n const [s, e, t, n, i, o, l, h, a] = r;\n return [s, n, l, e, i, h, t, o, a];\n};\nclass et {\n constructor(s) {\n q(this, \"_matrix\", [1, 0, 0, 0, 1, 0, 0, 0, 1]);\n s && (this._matrix = [...s]);\n }\n clone() {\n return new et(this._matrix);\n }\n transpose() {\n return this._matrix = Xe(this._matrix), this;\n }\n inverse() {\n return this._matrix = Ge(this._matrix), this;\n }\n translate(s, e) {\n return this._matrix = Mt(this._matrix, [1, 0, s, 0, 1, e, 0, 0, 1]), this;\n }\n rotate(s, e) {\n const t = Math.cos(s), n = Math.sin(s), i = [t, -n, 0, n, t, 0, 0, 0, 1];\n return e && this.translate(e[0], e[1]), this._matrix = Mt(this._matrix, i), e && this.translate(-e[0], -e[1]), this;\n }\n mirrorX() {\n return this._matrix = Mt(this._matrix, [1, 0, 0, 0, -1, 0, 0, 0, 1]), this;\n }\n mirrorY() {\n return this._matrix = Mt(this._matrix, [-1, 0, 0, 0, 1, 0, 0, 0, 1]), this;\n }\n mirrorLine(s, e) {\n const [t, n] = s, i = Math.atan2(n, t);\n return e && this.translate(e[0], e[1]), this.rotate(i), this.mirrorX(), this.rotate(-i), e && this.translate(-e[0], -e[1]), this;\n }\n mirrorCenter(s) {\n return s && this.translate(s[0], s[1]), this._matrix = Mt(this._matrix, [-1, 0, 0, 0, -1, 0, 0, 0, 1]), s && this.translate(-s[0], -s[1]), this;\n }\n scale(s, e) {\n return e && this.translate(e[0], e[1]), this._matrix = Mt(this._matrix, [s, 0, 0, 0, s, 0, 0, 0, 1]), e && this.translate(-e[0], -e[1]), this;\n }\n transform(s) {\n const [e, t] = s, [n, i, o, l, h, a] = this._matrix;\n return [n * e + i * t + o, l * e + h * t + a];\n }\n transformAngle(s) {\n const [e, t] = this.transform([Math.cos(s), Math.sin(s)]), [n, i] = this.transform([0, 0]);\n return Math.atan2(t - i, e - n);\n }\n keepsOrientation() {\n const [s, , , , e] = this._matrix;\n return s * e > 0;\n }\n scaleFactor() {\n const [s, , , e] = this._matrix;\n return Math.sqrt(s * s + e * e);\n }\n}\nclass Ze {\n translateX(s) {\n const e = new et().translate(s, 0);\n return this.transform(e);\n }\n translateY(s) {\n const e = new et().translate(0, s);\n return this.transform(e);\n }\n translate(s, e) {\n const t = new et().translate(s, e);\n return this.transform(t);\n }\n translateTo([s, e]) {\n const t = new et().translate(s, e);\n return this.transform(t);\n }\n rotate(s, e) {\n const t = new et().rotate(\n s * fe,\n e\n );\n return this.transform(t);\n }\n scale(s, e) {\n const t = new et().scale(s, e);\n return this.transform(t);\n }\n mirrorCenter(s) {\n const e = new et().mirrorCenter(s);\n return this.transform(e);\n }\n mirror(s = \"x\", e) {\n const t = new et();\n return s === \"x\" ? t.mirrorX() : s === \"y\" ? t.mirrorY() : t.mirrorLine(s, e), this.transform(t);\n }\n}\nclass Ft extends Ze {\n constructor(e, t) {\n super();\n q(this, \"precision\", 1e-9);\n this.firstPoint = e, this.lastPoint = t, this.firstPoint = e, this.lastPoint = t;\n }\n get repr() {\n return `${this.segmentType} ${Z(this.firstPoint)} - ${Z(\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 lt extends Ft {\n constructor() {\n super(...arguments);\n q(this, \"segmentType\", \"LINE\");\n q(this, \"_V\", null);\n q(this, \"_slope\", null);\n q(this, \"_yIntercept\", null);\n q(this, \"_boundingBox\", null);\n }\n isValidParameter(e) {\n const t = this.length * this.precision;\n return e >= -t && 1 - e >= -t;\n }\n paramPoint(e) {\n return ut(this.firstPoint, wt(this.V, e));\n }\n get length() {\n return J(this.firstPoint, this.lastPoint);\n }\n get squareLength() {\n return Rt(this.firstPoint, this.lastPoint);\n }\n get V() {\n return this._V === null && (this._V = X(this.lastPoint, this.firstPoint)), this._V;\n }\n get slope() {\n if (this._slope === null) {\n const [e, t] = this.V;\n this._slope = t / e;\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 ut(this.firstPoint, wt(this.V, 0.5));\n }\n isSame(e) {\n return e instanceof lt ? W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) || W(this.lastPoint, e.firstPoint) && W(this.firstPoint, e.lastPoint) : !1;\n }\n clone() {\n return new lt(this.firstPoint, this.lastPoint);\n }\n reverse() {\n return new lt(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(e) {\n const t = X(e, this.firstPoint), n = Pe(t, this.V) / this.squareLength;\n if (n < 0)\n return J(e, this.firstPoint);\n if (n > 1)\n return J(e, this.lastPoint);\n const i = this.paramPoint(n);\n return J(e, i);\n }\n isOnSegment(e) {\n if (W(e, this.firstPoint, this.precision)) return !0;\n const t = X(e, this.firstPoint);\n if (!Ie(this.V, t)) return !1;\n const n = Pe(t, this.V) / this.squareLength;\n return this.isValidParameter(n);\n }\n gradientAt(e) {\n return this.V;\n }\n tangentAt(e) {\n if (!this.isOnSegment(e)) throw new Error(\"Point is not on segment\");\n return H(this.V);\n }\n get normalVector() {\n return rt(H(this.V));\n }\n get tangentAtFirstPoint() {\n return H(this.V);\n }\n get tangentAtLastPoint() {\n return H(this.V);\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e], t.forEach((a) => {\n if (!this.isOnSegment(a))\n throw new Error(\n `Point ${Z(a)} is not on segment ${this.repr}`\n );\n });\n const n = [this.firstPoint, ...t, this.lastPoint], i = Te(n), o = this.lastPoint[0] - this.firstPoint[0];\n let l = Math.sign(o), h = 0;\n return Math.abs(o) < this.precision && (l = Math.sign(this.lastPoint[1] - this.firstPoint[1]), h = 1), i.sort(\n (a, u) => l * (a[h] - u[h])\n ), i.flatMap((a, u) => u === i.length - 1 ? [] : new lt(a, i[u + 1]));\n }\n transform(e) {\n return new lt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint)\n );\n }\n}\nfunction Je(r) {\n return Array.from(Array(r).keys());\n}\nfunction Jt(r) {\n const s = Math.min(...r.map((e) => e.length));\n return Je(s).map((e) => r.map((t) => t[e]));\n}\nfunction gt(r, s = 1e-9) {\n return r < 0 ? r + 2 * Math.PI : r >= 2 * Math.PI ? r % (2 * Math.PI) : r > 2 * Math.PI - s ? 0 : r;\n}\nfunction Xt(r, s, e, t = 1e-9) {\n let n = s - r;\n return e && (n = -n), n < 0 && (n += 2 * Math.PI), n > 2 * Math.PI - t ? 0 : n;\n}\nconst me = (r, s, e) => {\n const t = St(r.V, s.V), n = It(r.V), i = It(s.V), o = e ? e * e : r.precision * s.precision;\n if (t * t < n * i * o)\n return \"parallel\";\n const l = X(s.firstPoint, r.firstPoint), h = St(l, s.V) / t, a = St(l, r.V) / t;\n return {\n intersectionParam1: h,\n intersectionParam2: a\n };\n};\nfunction un(r, s, e = !1, t) {\n const n = me(r, s, t);\n if (n === \"parallel\") {\n if (!e) return null;\n if (r.isSame(s)) return r;\n const l = Te(\n [\n s.isOnSegment(r.firstPoint) ? r.firstPoint : null,\n s.isOnSegment(r.lastPoint) ? r.lastPoint : null,\n r.isOnSegment(s.firstPoint) ? s.firstPoint : null,\n r.isOnSegment(s.lastPoint) ? s.lastPoint : null\n ].filter((h) => h !== null)\n ).sort((h, a) => h[0] - a[0]);\n if (l.length === 0) return null;\n if (l.length === 1) return null;\n if (l.length === 2) return new lt(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: i, intersectionParam2: o } = n;\n return !r.isValidParameter(i) || !s.isValidParameter(o) ? null : r.paramPoint(i);\n}\nconst zt = (r, s) => {\n const e = X(r, s);\n return We(e);\n};\nclass at extends Ft {\n constructor(e, t, n, i = !1, { ignoreChecks: o = !1 } = {}) {\n super(e, t);\n q(this, \"segmentType\", \"ARC\");\n q(this, \"center\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_angularLength\", null);\n q(this, \"_radius\", null);\n q(this, \"_firstAngle\", null);\n q(this, \"_lastAngle\", null);\n q(this, \"_boundingBox\", null);\n if (this.center = n, this.clockwise = i, !o) {\n if (W(e, t))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (Math.abs(this.radius - J(this.lastPoint, this.center)) > this.precision)\n throw new Error(\n `Invalid arc, radius does not match between ${Z(\n e\n )} and ${Z(t)}} (center ${Z(n)})`\n );\n }\n }\n get info() {\n return `ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n get coefficients() {\n if (this._coefficients === null) {\n const [e, t] = this.center, n = this.radius * this.radius;\n this._coefficients = {\n x2: 1 / n,\n xy: 0,\n y2: 1 / n,\n x: -(2 * e) / n,\n y: -(2 * t) / n,\n c: (e * e + t * t - n) / n\n };\n }\n return this._coefficients;\n }\n isValidParameter(e) {\n return 1 - e >= -this.precision && e >= -this.precision;\n }\n angleToParam(e) {\n return Xt(this.firstAngle, gt(e), this.clockwise) / this.angularLength;\n }\n get angularLength() {\n return this._angularLength || (this._angularLength = Xt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._angularLength;\n }\n paramPoint(e) {\n return ut(\n this.center,\n Tt(\n this.radius,\n this.firstAngle + e * this.angularLength * (this.clockwise ? -1 : 1)\n )\n );\n }\n pointToParam(e) {\n const [t, n] = zt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n throw new Error(\n `Point ${Z(e)} is not on segment ${this.repr}`\n );\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\n `Point ${Z(e)} is not on segment ${this.repr}`\n );\n return i;\n }\n get radius() {\n return this._radius === null && (this._radius = J(this.firstPoint, this.center)), this._radius;\n }\n get firstAngle() {\n if (this._firstAngle === null) {\n const [e, t] = X(this.firstPoint, this.center);\n this._firstAngle = gt(Math.atan2(t, e));\n }\n return this._firstAngle;\n }\n get lastAngle() {\n if (this._lastAngle === null) {\n const [e, t] = X(this.lastPoint, this.center);\n this._lastAngle = gt(Math.atan2(t, e));\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(e) {\n return !(e instanceof at) || !W(this.center, e.center) ? !1 : W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) && this.clockwise === e.clockwise || W(this.lastPoint, e.firstPoint) && W(this.firstPoint, e.lastPoint) && this.clockwise === !e.clockwise;\n }\n clone() {\n return new at(\n this.firstPoint,\n this.lastPoint,\n this.center,\n this.clockwise\n );\n }\n reverse() {\n return new at(\n this.lastPoint,\n this.firstPoint,\n this.center,\n !this.clockwise\n );\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = this.radius + this.precision, t = (n) => this.isValidParameter(this.angleToParam(n));\n this._boundingBox = new ft(\n t(Math.PI) ? this.center[0] - e : Math.min(this.firstPoint[0], this.lastPoint[0]) - this.precision,\n t(Math.PI * 1.5) ? this.center[1] - e : Math.min(this.firstPoint[1], this.lastPoint[1]) - this.precision,\n t(0) ? this.center[0] + e : Math.max(this.firstPoint[0], this.lastPoint[0]) + this.precision,\n t(Math.PI / 2) ? this.center[1] + e : Math.max(this.firstPoint[1], this.lastPoint[1]) + this.precision\n );\n }\n return this._boundingBox;\n }\n distanceFrom(e) {\n const [t, n] = zt(e, this.center);\n return this.isValidParameter(this.angleToParam(n)) ? Math.abs(t - this.radius) : Math.sqrt(\n Math.min(\n Rt(e, this.firstPoint),\n Rt(e, this.lastPoint)\n )\n );\n }\n isOnSegment(e) {\n if (W(e, this.firstPoint) || W(e, this.lastPoint))\n return !0;\n const [t, n] = zt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision) return !1;\n const i = this.angleToParam(n);\n return this.isValidParameter(i);\n }\n gradientAt(e) {\n const t = this.firstAngle + e * this.angularLength * (this.clockwise ? -1 : 1), n = this.radius * this.angularLength, i = -n * Math.sin(t), o = n * Math.cos(t);\n return this.clockwise ? [-i, -o] : [i, o];\n }\n tangentAt(e) {\n const [t, n] = zt(e, this.center);\n if (Math.abs(t - this.radius) > this.precision)\n throw new Error(\"Point is not on the arc\");\n const i = this.angleToParam(n);\n if (!this.isValidParameter(i))\n throw new Error(\"Point is not on the arc\");\n const o = Tt(1, n);\n return (this.clockwise ? Wt : rt)(H(o));\n }\n get tangentAtFirstPoint() {\n const e = Tt(1, this.firstAngle);\n return (this.clockwise ? Wt : rt)(H(e));\n }\n get tangentAtLastPoint() {\n const e = Tt(1, this.lastAngle);\n return (this.clockwise ? Wt : rt)(H(e));\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const i = [0, 1, ...t.map((h) => this.pointToParam(h))], o = new Map(\n Jt([i, [this.firstPoint, this.lastPoint, ...t]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new at(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.clockwise\n );\n return l = null, g;\n });\n }\n transform(e) {\n return new at(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.center),\n e.keepsOrientation() ? this.clockwise : !this.clockwise\n );\n }\n}\nfunction cn(r, s, e) {\n const t = new lt(s, r), n = new lt(s, e), i = rt(t.tangentAtFirstPoint), o = rt(n.tangentAtLastPoint), l = me(\n { firstPoint: t.midPoint, V: i, precision: 1e-9 },\n { firstPoint: n.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 h = St(\n X(r, s),\n X(e, s)\n ) > 0;\n return new at(\n r,\n e,\n ut(t.midPoint, wt(i, l.intersectionParam1)),\n h,\n { ignoreChecks: !0 }\n );\n}\nfunction fn(r, s, e) {\n const t = new lt(s, r), n = rt(t.tangentAtFirstPoint), i = me(\n { firstPoint: t.midPoint, V: n, precision: 1e-9 },\n {\n firstPoint: r,\n V: rt(e),\n precision: 1e-9\n }\n );\n if (i === \"parallel\")\n throw new Error(\"Cannot create an arc from three colinear points\");\n const o = ut(\n t.midPoint,\n wt(n, i.intersectionParam1)\n ), l = St(\n X(o, r),\n X(o, ut(r, e))\n ) < 0;\n return new at(r, s, o, l, {\n ignoreChecks: !0\n });\n}\nconst be = 1e-21, Bt = 1.618034;\nfunction Ee(r, s = 0, e = 1, t = 110, n = 1e3) {\n let i, o, l, h, a, u, c, g, d, w, p, P, f;\n for (o = r(s), l = r(e), o < l && ([s, e] = [e, s], [o, l] = [l, o]), f = e + Bt * (e - s), h = r(f), a = 3, c = 0; h < l; ) {\n if (g = (e - s) * (l - h), d = (e - f) * (l - o), w = d - g, Math.abs(w) < be ? i = 2 * be : i = 2 * w, p = e - ((e - f) * d - (e - s) * g) / i, P = e + t * (f - e), c > n)\n throw new Error(\"Too many iterations.\");\n if (c += 1, (p - f) * (e - p) > 0) {\n if (u = r(p), a += 1, u < h)\n return s = e, e = p, o = l, l = u, [s, e, f, o, l, h, a];\n if (u > l)\n return f = p, h = u, [s, e, f, o, l, h, a];\n p = f + Bt * (f - e), u = r(p), a += 1;\n } else\n (p - P) * (P - f) >= 0 ? (p = P, u = r(p), a += 1) : (p - P) * (f - p) > 0 ? (u = r(p), a += 1, u < h && (e = f, f = p, p = f + Bt * (f - e), l = h, h = u, u = r(p), a += 1)) : (p = f + Bt * (f - e), u = r(p), a += 1);\n s = e, e = f, f = p, o = l, l = h, h = u;\n }\n return [s, e, f, o, l, h, a];\n}\nconst _e = 0.381966, Ke = 1e-11;\nclass He {\n constructor(s, e = 148e-10, t = 500) {\n q(this, \"xmin\");\n q(this, \"fval\");\n q(this, \"iter\");\n q(this, \"funcalls\");\n q(this, \"brack\");\n this.func = s, this.tol = e, this.maxiter = t, this.func = s, this.tol = e, this.maxiter = t, this.xmin = 1 / 0, this.fval = 1 / 0, this.iter = 0, this.funcalls = 0, this.brack = null;\n }\n setBracket(s = null) {\n this.brack = s;\n }\n getBracketInfo() {\n let s, e, t, n, i, o, l;\n const h = this.func, a = this.brack;\n if (a === null)\n [i, o, l, s, e, t, n] = Ee(h);\n else if (a.length === 2)\n [i, o, l, s, e, t, n] = Ee(h, a[0], a[1]);\n else if (a.length === 3) {\n if ([i, o, l] = a, i > l && ([l, i] = [i, l]), !(i < o && o < l))\n throw new Error(\"Not a bracketing interval.\");\n if (s = h(i), e = h(o), t = h(l), !(e < s && e < t))\n throw new Error(\"Not a bracketing interval.\");\n n = 3;\n } else\n throw new Error(\n \"Bracketing interval must be length 2 or 3 sequence.\"\n );\n return [i, o, l, s, e, t, n];\n }\n optimize() {\n const s = this.func;\n let [e, t, n, , , , i] = this.getBracketInfo(), o = t, l = t, h = t, a = s(o), u = a, c = a, g, d;\n e < n ? (g = e, d = n) : (g = n, d = e);\n let w = 0;\n i = 1;\n let p = 0, P = 0, f;\n for (; p < this.maxiter; ) {\n const M = this.tol * Math.abs(o) + Ke, E = 2 * M, R = 0.5 * (g + d);\n if (Math.abs(o - R) < E - 0.5 * (d - g))\n break;\n if (Math.abs(w) <= M)\n o >= R ? w = g - o : w = d - o, P = _e * w;\n else {\n const L = (o - l) * (c - u);\n let S = (o - h) * (c - a), k = (o - h) * S - (o - l) * L;\n S = 2 * (S - L), S > 0 && (k = -k), S = Math.abs(S);\n const D = w;\n w = P, k > S * (g - o) && k < S * (d - o) && Math.abs(k) < Math.abs(0.5 * S * D) ? (P = k * 1 / S, f = o + P, (f - g < E || d - f < E) && (R - o >= 0 ? P = M : P = -M)) : (o >= R ? w = g - o : w = d - o, P = _e * w);\n }\n Math.abs(P) < M ? P >= 0 ? f = o + M : f = o - M : f = o + P;\n const v = s(f);\n i += 1, v > c ? (f < o ? g = f : d = f, v <= a || l === o ? (h = l, l = f, u = a, a = v) : (v <= u || h === o || h === l) && (h = f, u = v)) : (f >= o ? g = o : d = o, h = l, l = o, o = f, u = a, a = c, c = v), p += 1;\n }\n this.xmin = o, this.fval = c, this.iter = p, this.funcalls = i;\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 Ce(r, s = 1e-8, e = 1e3) {\n const t = new He(r, s, e);\n return t.setBracket([0, 1]), t.run();\n}\nfunction qe(r) {\n if (r.__esModule) return r;\n var s = r.default;\n if (typeof s == \"function\") {\n var e = function t() {\n return this instanceof t ? Reflect.construct(s, arguments, this.constructor) : s.apply(this, arguments);\n };\n e.prototype = s.prototype;\n } else e = {};\n return Object.defineProperty(e, \"__esModule\", { value: !0 }), Object.keys(r).forEach(function(t) {\n var n = Object.getOwnPropertyDescriptor(r, t);\n Object.defineProperty(e, t, n.get ? n : {\n enumerable: !0,\n get: function() {\n return r[t];\n }\n });\n }), e;\n}\nvar $ = {};\nconst ts = Object.prototype.toString;\nfunction Ct(r) {\n const s = ts.call(r);\n return s.endsWith(\"Array]\") && !s.includes(\"Big\");\n}\nconst es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n isAnyArray: Ct\n}, Symbol.toStringTag, { value: \"Module\" })), ss = /* @__PURE__ */ qe(es);\nfunction ns(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = s.fromIndex, t = e === void 0 ? 0 : e, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (t < 0 || t >= r.length || !Number.isInteger(t))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= t || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[t], l = t + 1; l < i; l++)\n r[l] > o && (o = r[l]);\n return o;\n}\nfunction is(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!Ct(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = s.fromIndex, t = e === void 0 ? 0 : e, n = s.toIndex, i = n === void 0 ? r.length : n;\n if (t < 0 || t >= r.length || !Number.isInteger(t))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (i <= t || i > r.length || !Number.isInteger(i))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[t], l = t + 1; l < i; l++)\n r[l] < o && (o = r[l]);\n return o;\n}\nfunction rs(r) {\n var s = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (Ct(r)) {\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else throw new TypeError(\"input must be an array\");\n var e;\n if (s.output !== void 0) {\n if (!Ct(s.output))\n throw new TypeError(\"output option must be an array if specified\");\n e = s.output;\n } else\n e = new Array(r.length);\n var t = is(r), n = ns(r);\n if (t === n)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var i = s.min, o = i === void 0 ? s.autoMinMax ? t : 0 : i, l = s.max, h = l === void 0 ? s.autoMinMax ? n : 1 : l;\n if (o >= h)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var a = (h - o) / (n - t), u = 0; u < r.length; u++)\n e[u] = (r[u] - t) * a + o;\n return e;\n}\nconst os = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: rs\n}, Symbol.toStringTag, { value: \"Module\" })), ls = /* @__PURE__ */ qe(os);\nObject.defineProperty($, \"__esModule\", { value: !0 });\nvar tt = ss, je = ls;\nconst Ot = \" \".repeat(2), Fe = \" \".repeat(4);\nfunction hs() {\n return xe(this);\n}\nfunction xe(r, s = {}) {\n const {\n maxRows: e = 15,\n maxColumns: t = 10,\n maxNumSize: n = 8,\n padMinus: i = \"auto\"\n } = s;\n return `${r.constructor.name} {\n${Ot}[\n${Fe}${as(r, e, t, n, i)}\n${Ot}]\n${Ot}rows: ${r.rows}\n${Ot}columns: ${r.columns}\n}`;\n}\nfunction as(r, s, e, t, n) {\n const { rows: i, columns: o } = r, l = Math.min(i, s), h = Math.min(o, e), a = [];\n if (n === \"auto\") {\n n = !1;\n t: for (let u = 0; u < l; u++)\n for (let c = 0; c < h; c++)\n if (r.get(u, c) < 0) {\n n = !0;\n break t;\n }\n }\n for (let u = 0; u < l; u++) {\n let c = [];\n for (let g = 0; g < h; g++)\n c.push(us(r.get(u, g), t, n));\n a.push(`${c.join(\" \")}`);\n }\n return h !== o && (a[a.length - 1] += ` ... ${o - e} more columns`), l !== i && a.push(`... ${i - s} more rows`), a.join(`\n${Fe}`);\n}\nfunction us(r, s, e) {\n return (r >= 0 && e ? ` ${Se(r, s - 1)}` : Se(r, s)).padEnd(s);\n}\nfunction Se(r, s) {\n let e = r.toString();\n if (e.length <= s) return e;\n let t = r.toFixed(s);\n if (t.length > s && (t = r.toFixed(Math.max(0, s - (t.length - s)))), t.length <= s && !t.startsWith(\"0.000\") && !t.startsWith(\"-0.000\"))\n return t;\n let n = r.toExponential(s);\n return n.length > s && (n = r.toExponential(Math.max(0, s - (n.length - s)))), n.slice(0);\n}\nfunction cs(r, s) {\n r.prototype.add = function(t) {\n return typeof t == \"number\" ? this.addS(t) : this.addM(t);\n }, r.prototype.addS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + t);\n return this;\n }, r.prototype.addM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) + t.get(n, i));\n return this;\n }, r.add = function(t, n) {\n return new s(t).add(n);\n }, r.prototype.sub = function(t) {\n return typeof t == \"number\" ? this.subS(t) : this.subM(t);\n }, r.prototype.subS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - t);\n return this;\n }, r.prototype.subM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) - t.get(n, i));\n return this;\n }, r.sub = function(t, n) {\n return new s(t).sub(n);\n }, r.prototype.subtract = r.prototype.sub, r.prototype.subtractS = r.prototype.subS, r.prototype.subtractM = r.prototype.subM, r.subtract = r.sub, r.prototype.mul = function(t) {\n return typeof t == \"number\" ? this.mulS(t) : this.mulM(t);\n }, r.prototype.mulS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * t);\n return this;\n }, r.prototype.mulM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) * t.get(n, i));\n return this;\n }, r.mul = function(t, n) {\n return new s(t).mul(n);\n }, r.prototype.multiply = r.prototype.mul, r.prototype.multiplyS = r.prototype.mulS, r.prototype.multiplyM = r.prototype.mulM, r.multiply = r.mul, r.prototype.div = function(t) {\n return typeof t == \"number\" ? this.divS(t) : this.divM(t);\n }, r.prototype.divS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / t);\n return this;\n }, r.prototype.divM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) / t.get(n, i));\n return this;\n }, r.div = function(t, n) {\n return new s(t).div(n);\n }, r.prototype.divide = r.prototype.div, r.prototype.divideS = r.prototype.divS, r.prototype.divideM = r.prototype.divM, r.divide = r.div, r.prototype.mod = function(t) {\n return typeof t == \"number\" ? this.modS(t) : this.modM(t);\n }, r.prototype.modS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % t);\n return this;\n }, r.prototype.modM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) % t.get(n, i));\n return this;\n }, r.mod = function(t, n) {\n return new s(t).mod(n);\n }, r.prototype.modulus = r.prototype.mod, r.prototype.modulusS = r.prototype.modS, r.prototype.modulusM = r.prototype.modM, r.modulus = r.mod, r.prototype.and = function(t) {\n return typeof t == \"number\" ? this.andS(t) : this.andM(t);\n }, r.prototype.andS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & t);\n return this;\n }, r.prototype.andM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) & t.get(n, i));\n return this;\n }, r.and = function(t, n) {\n return new s(t).and(n);\n }, r.prototype.or = function(t) {\n return typeof t == \"number\" ? this.orS(t) : this.orM(t);\n }, r.prototype.orS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | t);\n return this;\n }, r.prototype.orM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) | t.get(n, i));\n return this;\n }, r.or = function(t, n) {\n return new s(t).or(n);\n }, r.prototype.xor = function(t) {\n return typeof t == \"number\" ? this.xorS(t) : this.xorM(t);\n }, r.prototype.xorS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ t);\n return this;\n }, r.prototype.xorM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ^ t.get(n, i));\n return this;\n }, r.xor = function(t, n) {\n return new s(t).xor(n);\n }, r.prototype.leftShift = function(t) {\n return typeof t == \"number\" ? this.leftShiftS(t) : this.leftShiftM(t);\n }, r.prototype.leftShiftS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << t);\n return this;\n }, r.prototype.leftShiftM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) << t.get(n, i));\n return this;\n }, r.leftShift = function(t, n) {\n return new s(t).leftShift(n);\n }, r.prototype.signPropagatingRightShift = function(t) {\n return typeof t == \"number\" ? this.signPropagatingRightShiftS(t) : this.signPropagatingRightShiftM(t);\n }, r.prototype.signPropagatingRightShiftS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> t);\n return this;\n }, r.prototype.signPropagatingRightShiftM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >> t.get(n, i));\n return this;\n }, r.signPropagatingRightShift = function(t, n) {\n return new s(t).signPropagatingRightShift(n);\n }, r.prototype.rightShift = function(t) {\n return typeof t == \"number\" ? this.rightShiftS(t) : this.rightShiftM(t);\n }, r.prototype.rightShiftS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> t);\n return this;\n }, r.prototype.rightShiftM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) >>> t.get(n, i));\n return this;\n }, r.rightShift = function(t, n) {\n return new s(t).rightShift(n);\n }, r.prototype.zeroFillRightShift = r.prototype.rightShift, r.prototype.zeroFillRightShiftS = r.prototype.rightShiftS, r.prototype.zeroFillRightShiftM = r.prototype.rightShiftM, r.zeroFillRightShift = r.rightShift, r.prototype.not = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, ~this.get(t, n));\n return this;\n }, r.not = function(t) {\n return new s(t).not();\n }, r.prototype.abs = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.abs(this.get(t, n)));\n return this;\n }, r.abs = function(t) {\n return new s(t).abs();\n }, r.prototype.acos = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.acos(this.get(t, n)));\n return this;\n }, r.acos = function(t) {\n return new s(t).acos();\n }, r.prototype.acosh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.acosh(this.get(t, n)));\n return this;\n }, r.acosh = function(t) {\n return new s(t).acosh();\n }, r.prototype.asin = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.asin(this.get(t, n)));\n return this;\n }, r.asin = function(t) {\n return new s(t).asin();\n }, r.prototype.asinh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.asinh(this.get(t, n)));\n return this;\n }, r.asinh = function(t) {\n return new s(t).asinh();\n }, r.prototype.atan = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.atan(this.get(t, n)));\n return this;\n }, r.atan = function(t) {\n return new s(t).atan();\n }, r.prototype.atanh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.atanh(this.get(t, n)));\n return this;\n }, r.atanh = function(t) {\n return new s(t).atanh();\n }, r.prototype.cbrt = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.cbrt(this.get(t, n)));\n return this;\n }, r.cbrt = function(t) {\n return new s(t).cbrt();\n }, r.prototype.ceil = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.ceil(this.get(t, n)));\n return this;\n }, r.ceil = function(t) {\n return new s(t).ceil();\n }, r.prototype.clz32 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.clz32(this.get(t, n)));\n return this;\n }, r.clz32 = function(t) {\n return new s(t).clz32();\n }, r.prototype.cos = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.cos(this.get(t, n)));\n return this;\n }, r.cos = function(t) {\n return new s(t).cos();\n }, r.prototype.cosh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.cosh(this.get(t, n)));\n return this;\n }, r.cosh = function(t) {\n return new s(t).cosh();\n }, r.prototype.exp = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.exp(this.get(t, n)));\n return this;\n }, r.exp = function(t) {\n return new s(t).exp();\n }, r.prototype.expm1 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.expm1(this.get(t, n)));\n return this;\n }, r.expm1 = function(t) {\n return new s(t).expm1();\n }, r.prototype.floor = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.floor(this.get(t, n)));\n return this;\n }, r.floor = function(t) {\n return new s(t).floor();\n }, r.prototype.fround = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.fround(this.get(t, n)));\n return this;\n }, r.fround = function(t) {\n return new s(t).fround();\n }, r.prototype.log = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log(this.get(t, n)));\n return this;\n }, r.log = function(t) {\n return new s(t).log();\n }, r.prototype.log1p = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log1p(this.get(t, n)));\n return this;\n }, r.log1p = function(t) {\n return new s(t).log1p();\n }, r.prototype.log10 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log10(this.get(t, n)));\n return this;\n }, r.log10 = function(t) {\n return new s(t).log10();\n }, r.prototype.log2 = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.log2(this.get(t, n)));\n return this;\n }, r.log2 = function(t) {\n return new s(t).log2();\n }, r.prototype.round = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.round(this.get(t, n)));\n return this;\n }, r.round = function(t) {\n return new s(t).round();\n }, r.prototype.sign = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sign(this.get(t, n)));\n return this;\n }, r.sign = function(t) {\n return new s(t).sign();\n }, r.prototype.sin = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sin(this.get(t, n)));\n return this;\n }, r.sin = function(t) {\n return new s(t).sin();\n }, r.prototype.sinh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sinh(this.get(t, n)));\n return this;\n }, r.sinh = function(t) {\n return new s(t).sinh();\n }, r.prototype.sqrt = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.sqrt(this.get(t, n)));\n return this;\n }, r.sqrt = function(t) {\n return new s(t).sqrt();\n }, r.prototype.tan = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.tan(this.get(t, n)));\n return this;\n }, r.tan = function(t) {\n return new s(t).tan();\n }, r.prototype.tanh = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.tanh(this.get(t, n)));\n return this;\n }, r.tanh = function(t) {\n return new s(t).tanh();\n }, r.prototype.trunc = function() {\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.set(t, n, Math.trunc(this.get(t, n)));\n return this;\n }, r.trunc = function(t) {\n return new s(t).trunc();\n }, r.pow = function(t, n) {\n return new s(t).pow(n);\n }, r.prototype.pow = function(t) {\n return typeof t == \"number\" ? this.powS(t) : this.powM(t);\n }, r.prototype.powS = function(t) {\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** t);\n return this;\n }, r.prototype.powM = function(t) {\n if (t = s.checkMatrix(t), this.rows !== t.rows || this.columns !== t.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let n = 0; n < this.rows; n++)\n for (let i = 0; i < this.columns; i++)\n this.set(n, i, this.get(n, i) ** t.get(n, i));\n return this;\n };\n}\nfunction nt(r, s, e) {\n let t = e ? r.rows : r.rows - 1;\n if (s < 0 || s > t)\n throw new RangeError(\"Row index out of range\");\n}\nfunction it(r, s, e) {\n let t = e ? r.columns : r.columns - 1;\n if (s < 0 || s > t)\n throw new RangeError(\"Column index out of range\");\n}\nfunction Pt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return s;\n}\nfunction bt(r, s) {\n if (s.to1DArray && (s = s.to1DArray()), s.length !== r.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return s;\n}\nfunction ge(r, s) {\n if (!tt.isAnyArray(s))\n throw new TypeError(\"row indices must be an array\");\n for (let e = 0; e < s.length; e++)\n if (s[e] < 0 || s[e] >= r.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction we(r, s) {\n if (!tt.isAnyArray(s))\n throw new TypeError(\"column indices must be an array\");\n for (let e = 0; e < s.length; e++)\n if (s[e] < 0 || s[e] >= r.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction ae(r, s, e, t, n) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (Ut(\"startRow\", s), Ut(\"endRow\", e), Ut(\"startColumn\", t), Ut(\"endColumn\", n), s > e || t > n || s < 0 || s >= r.rows || e < 0 || e >= r.rows || t < 0 || t >= r.columns || n < 0 || n >= r.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Kt(r, s = 0) {\n let e = [];\n for (let t = 0; t < r; t++)\n e.push(s);\n return e;\n}\nfunction Ut(r, s) {\n if (typeof s != \"number\")\n throw new TypeError(`${r} must be a number`);\n}\nfunction yt(r) {\n if (r.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction fs(r) {\n let s = Kt(r.rows);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[e] += r.get(e, t);\n return s;\n}\nfunction ms(r) {\n let s = Kt(r.columns);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[t] += r.get(e, t);\n return s;\n}\nfunction gs(r) {\n let s = 0;\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n s += r.get(e, t);\n return s;\n}\nfunction ws(r) {\n let s = Kt(r.rows, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[e] *= r.get(e, t);\n return s;\n}\nfunction ps(r) {\n let s = Kt(r.columns, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let t = 0; t < r.columns; ++t)\n s[t] *= r.get(e, t);\n return s;\n}\nfunction ds(r) {\n let s = 1;\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n s *= r.get(e, t);\n return s;\n}\nfunction Ms(r, s, e) {\n const t = r.rows, n = r.columns, i = [];\n for (let o = 0; o < t; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < n; u++)\n a = r.get(o, u) - e[o], l += a, h += a * a;\n s ? i.push((h - l * l / n) / (n - 1)) : i.push((h - l * l / n) / n);\n }\n return i;\n}\nfunction ys(r, s, e) {\n const t = r.rows, n = r.columns, i = [];\n for (let o = 0; o < n; o++) {\n let l = 0, h = 0, a = 0;\n for (let u = 0; u < t; u++)\n a = r.get(u, o) - e[o], l += a, h += a * a;\n s ? i.push((h - l * l / t) / (t - 1)) : i.push((h - l * l / t) / t);\n }\n return i;\n}\nfunction Ps(r, s, e) {\n const t = r.rows, n = r.columns, i = t * n;\n let o = 0, l = 0, h = 0;\n for (let a = 0; a < t; a++)\n for (let u = 0; u < n; u++)\n h = r.get(a, u) - e, o += h, l += h * h;\n return s ? (l - o * o / i) / (i - 1) : (l - o * o / i) / i;\n}\nfunction bs(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - s[e]);\n}\nfunction Es(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - s[t]);\n}\nfunction _s(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) - s);\n}\nfunction js(r) {\n const s = [];\n for (let e = 0; e < r.rows; e++) {\n let t = 0;\n for (let n = 0; n < r.columns; n++)\n t += r.get(e, n) ** 2 / (r.columns - 1);\n s.push(Math.sqrt(t));\n }\n return s;\n}\nfunction Ss(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / s[e]);\n}\nfunction ks(r) {\n const s = [];\n for (let e = 0; e < r.columns; e++) {\n let t = 0;\n for (let n = 0; n < r.rows; n++)\n t += r.get(n, e) ** 2 / (r.rows - 1);\n s.push(Math.sqrt(t));\n }\n return s;\n}\nfunction Rs(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / s[t]);\n}\nfunction vs(r) {\n const s = r.size - 1;\n let e = 0;\n for (let t = 0; t < r.columns; t++)\n for (let n = 0; n < r.rows; n++)\n e += r.get(n, t) ** 2 / s;\n return Math.sqrt(e);\n}\nfunction Ts(r, s) {\n for (let e = 0; e < r.rows; e++)\n for (let t = 0; t < r.columns; t++)\n r.set(e, t, r.get(e, t) / s);\n}\nclass V {\n static from1DArray(s, e, t) {\n if (s * e !== t.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let i = new _(s, e);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < e; l++)\n i.set(o, l, t[o * e + l]);\n return i;\n }\n static rowVector(s) {\n let e = new _(1, s.length);\n for (let t = 0; t < s.length; t++)\n e.set(0, t, s[t]);\n return e;\n }\n static columnVector(s) {\n let e = new _(s.length, 1);\n for (let t = 0; t < s.length; t++)\n e.set(t, 0, s[t]);\n return e;\n }\n static zeros(s, e) {\n return new _(s, e);\n }\n static ones(s, e) {\n return new _(s, e).fill(1);\n }\n static rand(s, e, t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: n = Math.random } = t;\n let i = new _(s, e);\n for (let o = 0; o < s; o++)\n for (let l = 0; l < e; l++)\n i.set(o, l, n());\n return i;\n }\n static randInt(s, e, t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: i = 1e3, random: o = Math.random } = t;\n if (!Number.isInteger(n)) throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(i)) throw new TypeError(\"max must be an integer\");\n if (n >= i) throw new RangeError(\"min must be smaller than max\");\n let l = i - n, h = new _(s, e);\n for (let a = 0; a < s; a++)\n for (let u = 0; u < e; u++) {\n let c = n + Math.round(o() * l);\n h.set(a, u, c);\n }\n return h;\n }\n static eye(s, e, t) {\n e === void 0 && (e = s), t === void 0 && (t = 1);\n let n = Math.min(s, e), i = this.zeros(s, e);\n for (let o = 0; o < n; o++)\n i.set(o, o, t);\n return i;\n }\n static diag(s, e, t) {\n let n = s.length;\n e === void 0 && (e = n), t === void 0 && (t = e);\n let i = Math.min(n, e, t), o = this.zeros(e, t);\n for (let l = 0; l < i; l++)\n o.set(l, l, s[l]);\n return o;\n }\n static min(s, e) {\n s = this.checkMatrix(s), e = this.checkMatrix(e);\n let t = s.rows, n = s.columns, i = new _(t, n);\n for (let o = 0; o < t; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.min(s.get(o, l), e.get(o, l)));\n return i;\n }\n static max(s, e) {\n s = this.checkMatrix(s), e = this.checkMatrix(e);\n let t = s.rows, n = s.columns, i = new this(t, n);\n for (let o = 0; o < t; o++)\n for (let l = 0; l < n; l++)\n i.set(o, l, Math.max(s.get(o, l), e.get(o, l)));\n return i;\n }\n static checkMatrix(s) {\n return V.isMatrix(s) ? s : new _(s);\n }\n static isMatrix(s) {\n return s != null && s.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(s) {\n if (typeof s != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s.call(this, e, t);\n return this;\n }\n to1DArray() {\n let s = [];\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s.push(this.get(e, t));\n return s;\n }\n to2DArray() {\n let s = [];\n for (let e = 0; e < this.rows; e++) {\n s.push([]);\n for (let t = 0; t < this.columns; t++)\n s[e].push(this.get(e, t));\n }\n return s;\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 s = 0; s < this.rows; s++)\n for (let e = 0; e <= s; e++)\n if (this.get(s, e) !== this.get(e, s))\n return !1;\n return !0;\n }\n return !1;\n }\n isDistance() {\n if (!this.isSymmetric()) return !1;\n for (let s = 0; s < this.rows; s++)\n if (this.get(s, s) !== 0) return !1;\n return !0;\n }\n isEchelonForm() {\n let s = 0, e = 0, t = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (e = 0, i = !1; e < this.columns && i === !1; )\n this.get(s, e) === 0 ? e++ : this.get(s, e) === 1 && e > t ? (i = !0, t = e) : (n = !1, i = !0);\n s++;\n }\n return n;\n }\n isReducedEchelonForm() {\n let s = 0, e = 0, t = -1, n = !0, i = !1;\n for (; s < this.rows && n; ) {\n for (e = 0, i = !1; e < this.columns && i === !1; )\n this.get(s, e) === 0 ? e++ : this.get(s, e) === 1 && e > t ? (i = !0, t = e) : (n = !1, i = !0);\n for (let o = e + 1; o < this.rows; o++)\n this.get(s, o) !== 0 && (n = !1);\n s++;\n }\n return n;\n }\n echelonForm() {\n let s = this.clone(), e = 0, t = 0;\n for (; e < s.rows && t < s.columns; ) {\n let n = e;\n for (let i = e; i < s.rows; i++)\n s.get(i, t) > s.get(n, t) && (n = i);\n if (s.get(n, t) === 0)\n t++;\n else {\n s.swapRows(e, n);\n let i = s.get(e, t);\n for (let o = t; o < s.columns; o++)\n s.set(e, o, s.get(e, o) / i);\n for (let o = e + 1; o < s.rows; o++) {\n let l = s.get(o, t) / s.get(e, t);\n s.set(o, t, 0);\n for (let h = t + 1; h < s.columns; h++)\n s.set(o, h, s.get(o, h) - s.get(e, h) * l);\n }\n e++, t++;\n }\n }\n return s;\n }\n reducedEchelonForm() {\n let s = this.echelonForm(), e = s.columns, t = s.rows, n = t - 1;\n for (; n >= 0; )\n if (s.maxRow(n) === 0)\n n--;\n else {\n let i = 0, o = !1;\n for (; i < t && o === !1; )\n s.get(n, i) === 1 ? o = !0 : i++;\n for (let l = 0; l < n; l++) {\n let h = s.get(l, i);\n for (let a = i; a < e; a++) {\n let u = s.get(l, a) - h * s.get(n, a);\n s.set(l, a, u);\n }\n }\n n--;\n }\n return s;\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(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: e = 1, columns: t = 1 } = s;\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(t) || t <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let n = new _(this.rows * e, this.columns * t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n n.setSubMatrix(this, this.rows * i, this.columns * o);\n return n;\n }\n fill(s) {\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, s);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(s) {\n nt(this, s);\n let e = [];\n for (let t = 0; t < this.columns; t++)\n e.push(this.get(s, t));\n return e;\n }\n getRowVector(s) {\n return _.rowVector(this.getRow(s));\n }\n setRow(s, e) {\n nt(this, s), e = Pt(this, e);\n for (let t = 0; t < this.columns; t++)\n this.set(s, t, e[t]);\n return this;\n }\n swapRows(s, e) {\n nt(this, s), nt(this, e);\n for (let t = 0; t < this.columns; t++) {\n let n = this.get(s, t);\n this.set(s, t, this.get(e, t)), this.set(e, t, n);\n }\n return this;\n }\n getColumn(s) {\n it(this, s);\n let e = [];\n for (let t = 0; t < this.rows; t++)\n e.push(this.get(t, s));\n return e;\n }\n getColumnVector(s) {\n return _.columnVector(this.getColumn(s));\n }\n setColumn(s, e) {\n it(this, s), e = bt(this, e);\n for (let t = 0; t < this.rows; t++)\n this.set(t, s, e[t]);\n return this;\n }\n swapColumns(s, e) {\n it(this, s), it(this, e);\n for (let t = 0; t < this.rows; t++) {\n let n = this.get(t, s);\n this.set(t, s, this.get(t, e)), this.set(t, e, n);\n }\n return this;\n }\n addRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) + s[t]);\n return this;\n }\n subRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) - s[t]);\n return this;\n }\n mulRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) * s[t]);\n return this;\n }\n divRowVector(s) {\n s = Pt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) / s[t]);\n return this;\n }\n addColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) + s[e]);\n return this;\n }\n subColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) - s[e]);\n return this;\n }\n mulColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) * s[e]);\n return this;\n }\n divColumnVector(s) {\n s = bt(this, s);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n this.set(e, t, this.get(e, t) / s[e]);\n return this;\n }\n mulRow(s, e) {\n nt(this, s);\n for (let t = 0; t < this.columns; t++)\n this.set(s, t, this.get(s, t) * e);\n return this;\n }\n mulColumn(s, e) {\n it(this, s);\n for (let t = 0; t < this.rows; t++)\n this.set(t, s, this.get(t, s) * e);\n return this;\n }\n max(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > e[t] && (e[t] = this.get(t, n));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > e[n] && (e[n] = this.get(t, n));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > e && (e = this.get(t, n));\n return e;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n maxIndex() {\n yt(this);\n let s = this.get(0, 0), e = [0, 0];\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) > s && (s = this.get(t, n), e[0] = t, e[1] = n);\n return e;\n }\n min(s) {\n if (this.isEmpty())\n return NaN;\n switch (s) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < e[t] && (e[t] = this.get(t, n));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < e[n] && (e[n] = this.get(t, n));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < e && (e = this.get(t, n));\n return e;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n minIndex() {\n yt(this);\n let s = this.get(0, 0), e = [0, 0];\n for (let t = 0; t < this.rows; t++)\n for (let n = 0; n < this.columns; n++)\n this.get(t, n) < s && (s = this.get(t, n), e[0] = t, e[1] = n);\n return e;\n }\n maxRow(s) {\n if (nt(this, s), this.isEmpty())\n return NaN;\n let e = this.get(s, 0);\n for (let t = 1; t < this.columns; t++)\n this.get(s, t) > e && (e = this.get(s, t));\n return e;\n }\n maxRowIndex(s) {\n nt(this, s), yt(this);\n let e = this.get(s, 0), t = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) > e && (e = this.get(s, n), t[1] = n);\n return t;\n }\n minRow(s) {\n if (nt(this, s), this.isEmpty())\n return NaN;\n let e = this.get(s, 0);\n for (let t = 1; t < this.columns; t++)\n this.get(s, t) < e && (e = this.get(s, t));\n return e;\n }\n minRowIndex(s) {\n nt(this, s), yt(this);\n let e = this.get(s, 0), t = [s, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(s, n) < e && (e = this.get(s, n), t[1] = n);\n return t;\n }\n maxColumn(s) {\n if (it(this, s), this.isEmpty())\n return NaN;\n let e = this.get(0, s);\n for (let t = 1; t < this.rows; t++)\n this.get(t, s) > e && (e = this.get(t, s));\n return e;\n }\n maxColumnIndex(s) {\n it(this, s), yt(this);\n let e = this.get(0, s), t = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) > e && (e = this.get(n, s), t[0] = n);\n return t;\n }\n minColumn(s) {\n if (it(this, s), this.isEmpty())\n return NaN;\n let e = this.get(0, s);\n for (let t = 1; t < this.rows; t++)\n this.get(t, s) < e && (e = this.get(t, s));\n return e;\n }\n minColumnIndex(s) {\n it(this, s), yt(this);\n let e = this.get(0, s), t = [0, s];\n for (let n = 1; n < this.rows; n++)\n this.get(n, s) < e && (e = this.get(n, s), t[0] = n);\n return t;\n }\n diag() {\n let s = Math.min(this.rows, this.columns), e = [];\n for (let t = 0; t < s; t++)\n e.push(this.get(t, t));\n return e;\n }\n norm(s = \"frobenius\") {\n switch (s) {\n case \"max\":\n return this.max();\n case \"frobenius\":\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${s}`);\n }\n }\n cumulativeSum() {\n let s = 0;\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s += this.get(e, t), this.set(e, t, s);\n return this;\n }\n dot(s) {\n V.isMatrix(s) && (s = s.to1DArray());\n let e = this.to1DArray();\n if (e.length !== s.length)\n throw new RangeError(\"vectors do not have the same size\");\n let t = 0;\n for (let n = 0; n < e.length; n++)\n t += e[n] * s[n];\n return t;\n }\n mmul(s) {\n s = _.checkMatrix(s);\n let e = this.rows, t = this.columns, n = s.columns, i = new _(e, n), o = new Float64Array(t);\n for (let l = 0; l < n; l++) {\n for (let h = 0; h < t; h++)\n o[h] = s.get(h, l);\n for (let h = 0; h < e; h++) {\n let a = 0;\n for (let u = 0; u < t; u++)\n a += this.get(h, u) * o[u];\n i.set(h, l, a);\n }\n }\n return i;\n }\n mpow(s) {\n if (!this.isSquare())\n throw new RangeError(\"Matrix must be square\");\n if (!Number.isInteger(s) || s < 0)\n throw new RangeError(\"Exponent must be a non-negative integer\");\n let e = _.eye(this.rows), t = this;\n for (let n = s; n > 1; n /= 2)\n n & 1 && (e = e.mmul(t)), t = t.mmul(t);\n return e;\n }\n strassen2x2(s) {\n s = _.checkMatrix(s);\n let e = new _(2, 2);\n const t = this.get(0, 0), n = s.get(0, 0), i = this.get(0, 1), o = s.get(0, 1), l = this.get(1, 0), h = s.get(1, 0), a = this.get(1, 1), u = s.get(1, 1), c = (t + a) * (n + u), g = (l + a) * n, d = t * (o - u), w = a * (h - n), p = (t + i) * u, P = (l - t) * (n + o), f = (i - a) * (h + u), M = c + w - p + f, E = d + p, R = g + w, v = c - g + d + P;\n return e.set(0, 0, M), e.set(0, 1, E), e.set(1, 0, R), e.set(1, 1, v), e;\n }\n strassen3x3(s) {\n s = _.checkMatrix(s);\n let e = new _(3, 3);\n const t = this.get(0, 0), n = this.get(0, 1), i = this.get(0, 2), o = this.get(1, 0), l = this.get(1, 1), h = this.get(1, 2), a = this.get(2, 0), u = this.get(2, 1), c = this.get(2, 2), g = s.get(0, 0), d = s.get(0, 1), w = s.get(0, 2), p = s.get(1, 0), P = s.get(1, 1), f = s.get(1, 2), M = s.get(2, 0), E = s.get(2, 1), R = s.get(2, 2), v = (t + n + i - o - l - u - c) * P, L = (t - o) * (-d + P), S = l * (-g + d + p - P - f - M + R), k = (-t + o + l) * (g - d + P), D = (o + l) * (-g + d), m = t * g, b = (-t + a + u) * (g - w + f), j = (-t + a) * (w - f), y = (a + u) * (-g + w), C = (t + n + i - l - h - a - u) * f, F = u * (-g + w + p - P - f - M + E), I = (-i + u + c) * (P + M - E), O = (i - c) * (P - E), x = i * M, N = (u + c) * (-M + E), A = (-i + l + h) * (f + M - R), B = (i - h) * (f - R), U = (l + h) * (-M + R), T = n * p, z = h * E, G = o * w, Q = a * d, Y = c * R, se = m + x + T, ne = v + k + D + m + I + x + N, ie = m + b + y + C + x + A + U, re = L + S + k + m + x + A + B, xt = L + k + D + m + z, At = x + A + B + U + G, Vt = m + b + j + F + I + O + x, Nt = I + O + x + N + Q, $t = m + b + j + y + Y;\n return e.set(0, 0, se), e.set(0, 1, ne), e.set(0, 2, ie), e.set(1, 0, re), e.set(1, 1, xt), e.set(1, 2, At), e.set(2, 0, Vt), e.set(2, 1, Nt), e.set(2, 2, $t), e;\n }\n mmulStrassen(s) {\n s = _.checkMatrix(s);\n let e = this.clone(), t = e.rows, n = e.columns, i = s.rows, o = s.columns;\n n !== i && console.warn(\n `Multiplying ${t} x ${n} and ${i} x ${o} matrix: dimensions do not match.`\n );\n function l(c, g, d) {\n let w = c.rows, p = c.columns;\n if (w === g && p === d)\n return c;\n {\n let P = V.zeros(g, d);\n return P = P.setSubMatrix(c, 0, 0), P;\n }\n }\n let h = Math.max(t, i), a = Math.max(n, o);\n e = l(e, h, a), s = l(s, h, a);\n function u(c, g, d, w) {\n if (d <= 512 || w <= 512)\n return c.mmul(g);\n d % 2 === 1 && w % 2 === 1 ? (c = l(c, d + 1, w + 1), g = l(g, d + 1, w + 1)) : d % 2 === 1 ? (c = l(c, d + 1, w), g = l(g, d + 1, w)) : w % 2 === 1 && (c = l(c, d, w + 1), g = l(g, d, w + 1));\n let p = parseInt(c.rows / 2, 10), P = parseInt(c.columns / 2, 10), f = c.subMatrix(0, p - 1, 0, P - 1), M = g.subMatrix(0, p - 1, 0, P - 1), E = c.subMatrix(0, p - 1, P, c.columns - 1), R = g.subMatrix(0, p - 1, P, g.columns - 1), v = c.subMatrix(p, c.rows - 1, 0, P - 1), L = g.subMatrix(p, g.rows - 1, 0, P - 1), S = c.subMatrix(p, c.rows - 1, P, c.columns - 1), k = g.subMatrix(p, g.rows - 1, P, g.columns - 1), D = u(\n V.add(f, S),\n V.add(M, k),\n p,\n P\n ), m = u(V.add(v, S), M, p, P), b = u(f, V.sub(R, k), p, P), j = u(S, V.sub(L, M), p, P), y = u(V.add(f, E), k, p, P), C = u(\n V.sub(v, f),\n V.add(M, R),\n p,\n P\n ), F = u(\n V.sub(E, S),\n V.add(L, k),\n p,\n P\n ), I = V.add(D, j);\n I.sub(y), I.add(F);\n let O = V.add(b, y), x = V.add(m, j), N = V.sub(D, m);\n N.add(b), N.add(C);\n let A = V.zeros(2 * I.rows, 2 * I.columns);\n return A = A.setSubMatrix(I, 0, 0), A = A.setSubMatrix(O, I.rows, 0), A = A.setSubMatrix(x, 0, I.columns), A = A.setSubMatrix(N, I.rows, I.columns), A.subMatrix(0, d - 1, 0, w - 1);\n }\n return u(e, s, h, a);\n }\n scaleRows(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: t = 1 } = s;\n if (!Number.isFinite(e)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(t)) throw new TypeError(\"max must be a number\");\n if (e >= t) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const o = this.getRow(i);\n o.length > 0 && je(o, { min: e, max: t, output: o }), n.setRow(i, o);\n }\n return n;\n }\n scaleColumns(s = {}) {\n if (typeof s != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: t = 1 } = s;\n if (!Number.isFinite(e)) throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(t)) throw new TypeError(\"max must be a number\");\n if (e >= t) throw new RangeError(\"min must be smaller than max\");\n let n = new _(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const o = this.getColumn(i);\n o.length && je(o, {\n min: e,\n max: t,\n output: o\n }), n.setColumn(i, o);\n }\n return n;\n }\n flipRows() {\n const s = Math.ceil(this.columns / 2);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < s; t++) {\n let n = this.get(e, t), i = this.get(e, this.columns - 1 - t);\n this.set(e, t, i), this.set(e, this.columns - 1 - t, n);\n }\n return this;\n }\n flipColumns() {\n const s = Math.ceil(this.rows / 2);\n for (let e = 0; e < this.columns; e++)\n for (let t = 0; t < s; t++) {\n let n = this.get(t, e), i = this.get(this.rows - 1 - t, e);\n this.set(t, e, i), this.set(this.rows - 1 - t, e, n);\n }\n return this;\n }\n kroneckerProduct(s) {\n s = _.checkMatrix(s);\n let e = this.rows, t = this.columns, n = s.rows, i = s.columns, o = new _(e * n, t * i);\n for (let l = 0; l < e; l++)\n for (let h = 0; h < t; h++)\n for (let a = 0; a < n; a++)\n for (let u = 0; u < i; u++)\n o.set(n * l + a, i * h + u, this.get(l, h) * s.get(a, u));\n return o;\n }\n kroneckerSum(s) {\n if (s = _.checkMatrix(s), !this.isSquare() || !s.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let e = this.rows, t = s.rows, n = this.kroneckerProduct(_.eye(t, t)), i = _.eye(e, e).kroneckerProduct(s);\n return n.add(i);\n }\n transpose() {\n let s = new _(this.columns, this.rows);\n for (let e = 0; e < this.rows; e++)\n for (let t = 0; t < this.columns; t++)\n s.set(t, e, this.get(e, t));\n return s;\n }\n sortRows(s = ke) {\n for (let e = 0; e < this.rows; e++)\n this.setRow(e, this.getRow(e).sort(s));\n return this;\n }\n sortColumns(s = ke) {\n for (let e = 0; e < this.columns; e++)\n this.setColumn(e, this.getColumn(e).sort(s));\n return this;\n }\n subMatrix(s, e, t, n) {\n ae(this, s, e, t, n);\n let i = new _(\n e - s + 1,\n n - t + 1\n );\n for (let o = s; o <= e; o++)\n for (let l = t; l <= n; l++)\n i.set(o - s, l - t, this.get(o, l));\n return i;\n }\n subMatrixRow(s, e, t) {\n if (e === void 0 && (e = 0), t === void 0 && (t = this.columns - 1), e > t || e < 0 || e >= this.columns || t < 0 || t >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let n = new _(s.length, t - e + 1);\n for (let i = 0; i < s.length; i++)\n for (let o = e; o <= t; o++) {\n if (s[i] < 0 || s[i] >= this.rows)\n throw new RangeError(`Row index out of range: ${s[i]}`);\n n.set(i, o - e, this.get(s[i], o));\n }\n return n;\n }\n subMatrixColumn(s, e, t) {\n if (e === void 0 && (e = 0), t === void 0 && (t = this.rows - 1), e > t || e < 0 || e >= this.rows || t < 0 || t >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let n = new _(t - e + 1, s.length);\n for (let i = 0; i < s.length; i++)\n for (let o = e; o <= t; o++) {\n if (s[i] < 0 || s[i] >= this.columns)\n throw new RangeError(`Column index out of range: ${s[i]}`);\n n.set(o - e, i, this.get(o, s[i]));\n }\n return n;\n }\n setSubMatrix(s, e, t) {\n if (s = _.checkMatrix(s), s.isEmpty())\n return this;\n let n = e + s.rows - 1, i = t + s.columns - 1;\n ae(this, e, n, t, i);\n for (let o = 0; o < s.rows; o++)\n for (let l = 0; l < s.columns; l++)\n this.set(e + o, t + l, s.get(o, l));\n return this;\n }\n selection(s, e) {\n ge(this, s), we(this, e);\n let t = new _(s.length, e.length);\n for (let n = 0; n < s.length; n++) {\n let i = s[n];\n for (let o = 0; o < e.length; o++) {\n let l = e[o];\n t.set(n, o, this.get(i, l));\n }\n }\n return t;\n }\n trace() {\n let s = Math.min(this.rows, this.columns), e = 0;\n for (let t = 0; t < s; t++)\n e += this.get(t, t);\n return e;\n }\n clone() {\n return this.constructor.copy(this, new _(this.rows, this.columns));\n }\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(s, e) {\n for (const [t, n, i] of s.entries())\n e.set(t, n, i);\n return e;\n }\n sum(s) {\n switch (s) {\n case \"row\":\n return fs(this);\n case \"column\":\n return ms(this);\n case void 0:\n return gs(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n product(s) {\n switch (s) {\n case \"row\":\n return ws(this);\n case \"column\":\n return ps(this);\n case void 0:\n return ds(this);\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n mean(s) {\n const e = this.sum(s);\n switch (s) {\n case \"row\": {\n for (let t = 0; t < this.rows; t++)\n e[t] /= this.columns;\n return e;\n }\n case \"column\": {\n for (let t = 0; t < this.columns; t++)\n e[t] /= this.rows;\n return e;\n }\n case void 0:\n return e / this.size;\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n variance(s, e = {}) {\n if (typeof s == \"object\" && (e = s, s = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: t = !0, mean: n = this.mean(s) } = e;\n if (typeof t != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (s) {\n case \"row\": {\n if (!tt.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return Ms(this, t, n);\n }\n case \"column\": {\n if (!tt.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return ys(this, t, n);\n }\n case void 0: {\n if (typeof n != \"number\")\n throw new TypeError(\"mean must be a number\");\n return Ps(this, t, n);\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n standardDeviation(s, e) {\n typeof s == \"object\" && (e = s, s = void 0);\n const t = this.variance(s, e);\n if (s === void 0)\n return Math.sqrt(t);\n for (let n = 0; n < t.length; n++)\n t[n] = Math.sqrt(t[n]);\n return t;\n }\n center(s, e = {}) {\n if (typeof s == \"object\" && (e = s, s = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: t = this.mean(s) } = e;\n switch (s) {\n case \"row\": {\n if (!tt.isAnyArray(t))\n throw new TypeError(\"center must be an array\");\n return bs(this, t), this;\n }\n case \"column\": {\n if (!tt.isAnyArray(t))\n throw new TypeError(\"center must be an array\");\n return Es(this, t), this;\n }\n case void 0: {\n if (typeof t != \"number\")\n throw new TypeError(\"center must be a number\");\n return _s(this, t), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n scale(s, e = {}) {\n if (typeof s == \"object\" && (e = s, s = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n let t = e.scale;\n switch (s) {\n case \"row\": {\n if (t === void 0)\n t = js(this);\n else if (!tt.isAnyArray(t))\n throw new TypeError(\"scale must be an array\");\n return Ss(this, t), this;\n }\n case \"column\": {\n if (t === void 0)\n t = ks(this);\n else if (!tt.isAnyArray(t))\n throw new TypeError(\"scale must be an array\");\n return Rs(this, t), this;\n }\n case void 0: {\n if (t === void 0)\n t = vs(this);\n else if (typeof t != \"number\")\n throw new TypeError(\"scale must be a number\");\n return Ts(this, t), this;\n }\n default:\n throw new Error(`invalid option: ${s}`);\n }\n }\n toString(s) {\n return xe(this, s);\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let s = 0; s < this.rows; s++)\n for (let e = 0; e < this.columns; e++)\n yield [s, e, this.get(s, e)];\n }\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let s = 0; s < this.rows; s++)\n for (let e = 0; e < this.columns; e++)\n yield this.get(s, e);\n }\n}\nV.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (V.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = hs);\nfunction ke(r, s) {\n return r - s;\n}\nfunction Is(r) {\n return r.every((s) => typeof s == \"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;\nvar qt, ue, dt;\nlet _ = (dt = class extends V {\n constructor(e, t) {\n super();\n le(this, qt);\n /**\n * @type {Float64Array[]}\n */\n q(this, \"data\");\n if (dt.isMatrix(e))\n he(this, qt, ue).call(this, e.rows, e.columns), dt.copy(e, this);\n else if (Number.isInteger(e) && e >= 0)\n he(this, qt, ue).call(this, e, t);\n else if (tt.isAnyArray(e)) {\n const n = e;\n if (e = n.length, t = e ? n[0].length : 0, typeof t != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let i = 0; i < e; i++) {\n if (n[i].length !== t)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!Is(n[i]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(n[i]));\n }\n this.rows = e, this.columns = t;\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n }\n set(e, t, n) {\n return this.data[e][t] = n, this;\n }\n get(e, t) {\n return this.data[e][t];\n }\n removeRow(e) {\n return nt(this, e), this.data.splice(e, 1), this.rows -= 1, this;\n }\n addRow(e, t) {\n return t === void 0 && (t = e, e = this.rows), nt(this, e, !0), t = Float64Array.from(Pt(this, t)), this.data.splice(e, 0, t), this.rows += 1, this;\n }\n removeColumn(e) {\n it(this, e);\n for (let t = 0; t < this.rows; t++) {\n const n = new Float64Array(this.columns - 1);\n for (let i = 0; i < e; i++)\n n[i] = this.data[t][i];\n for (let i = e + 1; i < this.columns; i++)\n n[i - 1] = this.data[t][i];\n this.data[t] = n;\n }\n return this.columns -= 1, this;\n }\n addColumn(e, t) {\n typeof t > \"u\" && (t = e, e = this.columns), it(this, e, !0), t = bt(this, t);\n for (let n = 0; n < this.rows; n++) {\n const i = new Float64Array(this.columns + 1);\n let o = 0;\n for (; o < e; o++)\n i[o] = this.data[n][o];\n for (i[o++] = t[n]; o < this.columns + 1; o++)\n i[o] = this.data[n][o - 1];\n this.data[n] = i;\n }\n return this.columns += 1, this;\n }\n}, qt = new WeakSet(), /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\nue = function(e, t) {\n if (this.data = [], Number.isInteger(t) && t >= 0)\n for (let n = 0; n < e; n++)\n this.data.push(new Float64Array(t));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n this.rows = e, this.columns = t;\n}, dt);\ncs(V, _);\nvar K;\nconst Zt = class Zt extends V {\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(e) {\n super();\n /** @type {Matrix} */\n le(this, K);\n if (_.isMatrix(e)) {\n if (!e.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n Lt(this, K, _.copy(\n e,\n new _(e.rows, e.rows)\n ));\n } else if (Number.isInteger(e) && e >= 0)\n Lt(this, K, new _(e, e));\n else if (Lt(this, K, new _(e)), !this.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n }\n get size() {\n return ot(this, K).size;\n }\n get rows() {\n return ot(this, K).rows;\n }\n get columns() {\n return ot(this, K).columns;\n }\n get diagonalSize() {\n return this.rows;\n }\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(e) {\n return _.isMatrix(e) && e.klassType === \"SymmetricMatrix\";\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(e) {\n return new this(e);\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(e) {\n return new this(e).fill(1);\n }\n clone() {\n const e = new Zt(this.diagonalSize);\n for (const [t, n, i] of this.upperRightEntries())\n e.set(t, n, i);\n return e;\n }\n toMatrix() {\n return new _(this);\n }\n get(e, t) {\n return ot(this, K).get(e, t);\n }\n set(e, t, n) {\n return ot(this, K).set(e, t, n), ot(this, K).set(t, e, n), this;\n }\n removeCross(e) {\n return ot(this, K).removeRow(e), ot(this, K).removeColumn(e), this;\n }\n addCross(e, t) {\n t === void 0 && (t = e, e = this.diagonalSize);\n const n = t.slice();\n return n.splice(e, 1), ot(this, K).addRow(e, n), ot(this, K).addColumn(e, t), this;\n }\n /**\n * @param {Mask[]} mask\n */\n applyMask(e) {\n if (e.length !== this.diagonalSize)\n throw new RangeError(\"Mask size do not match with matrix size\");\n const t = [];\n for (const [n, i] of e.entries())\n i || t.push(n);\n t.reverse();\n for (const n of t)\n this.removeCross(n);\n return this;\n }\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: e } = this, t = new Array(e * (e + 1) / 2);\n for (let n = 0, i = 0, o = 0; o < t.length; o++)\n t[o] = this.get(i, n), ++n >= e && (n = ++i);\n return t;\n }\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(e) {\n const t = e.length, n = (Math.sqrt(8 * t + 1) - 1) / 2;\n if (!Number.isInteger(n))\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n e\n )}`\n );\n const i = new Zt(n);\n for (let o = 0, l = 0, h = 0; h < t; h++)\n i.set(o, l, e[h]), ++o >= n && (o = ++l);\n return i;\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let e = 0, t = 0; e < this.diagonalSize; void 0) {\n const n = this.get(e, t);\n yield [e, t, n], ++t >= this.diagonalSize && (t = ++e);\n }\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let e = 0, t = 0; e < this.diagonalSize; void 0)\n yield this.get(e, t), ++t >= this.diagonalSize && (t = ++e);\n }\n};\nK = new WeakMap();\nlet pt = Zt;\npt.prototype.klassType = \"SymmetricMatrix\";\nclass Ht extends pt {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(s) {\n return pt.isSymmetricMatrix(s) && s.klassSubType === \"DistanceMatrix\";\n }\n constructor(s) {\n if (super(s), !this.isDistance())\n throw new TypeError(\"Provided arguments do no produce a distance matrix\");\n }\n set(s, e, t) {\n return s === e && (t = 0), super.set(s, e, t);\n }\n addCross(s, e) {\n return e === void 0 && (e = s, s = this.diagonalSize), e = e.slice(), e[s] = 0, super.addCross(s, e);\n }\n toSymmetricMatrix() {\n return new pt(this);\n }\n clone() {\n const s = new Ht(this.diagonalSize);\n for (const [e, t, n] of this.upperRightEntries())\n e !== t && s.set(e, t, n);\n return s;\n }\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: s } = this, e = (s - 1) * s / 2, t = new Array(e);\n for (let n = 1, i = 0, o = 0; o < t.length; o++)\n t[o] = this.get(i, n), ++n >= s && (n = ++i + 1);\n return t;\n }\n /**\n * @param {number[]} compact\n */\n static fromCompact(s) {\n const e = s.length;\n if (e === 0)\n return new this(0);\n const t = (Math.sqrt(8 * e + 1) + 1) / 2;\n if (!Number.isInteger(t))\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n s\n )}`\n );\n const n = new this(t);\n for (let i = 1, o = 0, l = 0; l < e; l++)\n n.set(i, o, s[l]), ++i >= t && (i = ++o + 1);\n return n;\n }\n}\nHt.prototype.klassSubType = \"DistanceMatrix\";\nclass ct extends V {\n constructor(s, e, t) {\n super(), this.matrix = s, this.rows = e, this.columns = t;\n }\n}\nclass Cs extends ct {\n constructor(s, e) {\n it(s, e), super(s, s.rows, 1), this.column = e;\n }\n set(s, e, t) {\n return this.matrix.set(s, this.column, t), this;\n }\n get(s) {\n return this.matrix.get(s, this.column);\n }\n}\nclass qs extends ct {\n constructor(s, e) {\n we(s, e), super(s, s.rows, e.length), this.columnIndices = e;\n }\n set(s, e, t) {\n return this.matrix.set(s, this.columnIndices[e], t), this;\n }\n get(s, e) {\n return this.matrix.get(s, this.columnIndices[e]);\n }\n}\nclass Fs extends ct {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, e, t) {\n return this.matrix.set(s, this.columns - e - 1, t), this;\n }\n get(s, e) {\n return this.matrix.get(s, this.columns - e - 1);\n }\n}\nclass xs extends ct {\n constructor(s) {\n super(s, s.rows, s.columns);\n }\n set(s, e, t) {\n return this.matrix.set(this.rows - s - 1, e, t), this;\n }\n get(s, e) {\n return this.matrix.get(this.rows - s - 1, e);\n }\n}\nclass As extends ct {\n constructor(s, e) {\n nt(s, e), super(s, 1, s.columns), this.row = e;\n }\n set(s, e, t) {\n return this.matrix.set(this.row, e, t), this;\n }\n get(s, e) {\n return this.matrix.get(this.row, e);\n }\n}\nclass Vs extends ct {\n constructor(s, e) {\n ge(s, e), super(s, e.length, s.columns), this.rowIndices = e;\n }\n set(s, e, t) {\n return this.matrix.set(this.rowIndices[s], e, t), this;\n }\n get(s, e) {\n return this.matrix.get(this.rowIndices[s], e);\n }\n}\nclass Qt extends ct {\n constructor(s, e, t) {\n ge(s, e), we(s, t), super(s, e.length, t.length), this.rowIndices = e, this.columnIndices = t;\n }\n set(s, e, t) {\n return this.matrix.set(\n this.rowIndices[s],\n this.columnIndices[e],\n t\n ), this;\n }\n get(s, e) {\n return this.matrix.get(\n this.rowIndices[s],\n this.columnIndices[e]\n );\n }\n}\nclass Ns extends ct {\n constructor(s, e, t, n, i) {\n ae(s, e, t, n, i), super(s, t - e + 1, i - n + 1), this.startRow = e, this.startColumn = n;\n }\n set(s, e, t) {\n return this.matrix.set(\n this.startRow + s,\n this.startColumn + e,\n t\n ), this;\n }\n get(s, e) {\n return this.matrix.get(\n this.startRow + s,\n this.startColumn + e\n );\n }\n}\nclass $s extends ct {\n constructor(s) {\n super(s, s.columns, s.rows);\n }\n set(s, e, t) {\n return this.matrix.set(e, s, t), this;\n }\n get(s, e) {\n return this.matrix.get(e, s);\n }\n}\nclass Ae extends V {\n constructor(s, e = {}) {\n const { rows: t = 1 } = e;\n if (s.length % t !== 0)\n throw new Error(\"the data length is not divisible by the number of rows\");\n super(), this.rows = t, this.columns = s.length / t, this.data = s;\n }\n set(s, e, t) {\n let n = this._calculateIndex(s, e);\n return this.data[n] = t, this;\n }\n get(s, e) {\n let t = this._calculateIndex(s, e);\n return this.data[t];\n }\n _calculateIndex(s, e) {\n return s * this.columns + e;\n }\n}\nclass st extends V {\n constructor(s) {\n super(), this.data = s, this.rows = s.length, this.columns = s[0].length;\n }\n set(s, e, t) {\n return this.data[s][e] = t, this;\n }\n get(s, e) {\n return this.data[s][e];\n }\n}\nfunction Ls(r, s) {\n if (tt.isAnyArray(r))\n return r[0] && tt.isAnyArray(r[0]) ? new st(r) : new Ae(r, s);\n throw new Error(\"the argument is not an array\");\n}\nclass te {\n constructor(s) {\n s = st.checkMatrix(s);\n let e = s.clone(), t = e.rows, n = e.columns, i = new Float64Array(t), o = 1, l, h, a, u, c, g, d, w, p;\n for (l = 0; l < t; l++)\n i[l] = l;\n for (w = new Float64Array(t), h = 0; h < n; h++) {\n for (l = 0; l < t; l++)\n w[l] = e.get(l, h);\n for (l = 0; l < t; l++) {\n for (p = Math.min(l, h), c = 0, a = 0; a < p; a++)\n c += e.get(l, a) * w[a];\n w[l] -= c, e.set(l, h, w[l]);\n }\n for (u = h, l = h + 1; l < t; l++)\n Math.abs(w[l]) > Math.abs(w[u]) && (u = l);\n if (u !== h) {\n for (a = 0; a < n; a++)\n g = e.get(u, a), e.set(u, a, e.get(h, a)), e.set(h, a, g);\n d = i[u], i[u] = i[h], i[h] = d, o = -o;\n }\n if (h < t && e.get(h, h) !== 0)\n for (l = h + 1; l < t; l++)\n e.set(l, h, e.get(l, h) / e.get(h, h));\n }\n this.LU = e, this.pivotVector = i, this.pivotSign = o;\n }\n isSingular() {\n let s = this.LU, e = s.columns;\n for (let t = 0; t < e; t++)\n if (s.get(t, t) === 0)\n return !0;\n return !1;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let e = this.LU;\n if (e.rows !== s.rows)\n throw new Error(\"Invalid matrix dimensions\");\n if (this.isSingular())\n throw new Error(\"LU matrix is singular\");\n let n = s.columns, i = s.subMatrixRow(this.pivotVector, 0, n - 1), o = e.columns, l, h, a;\n for (a = 0; a < o; a++)\n for (l = a + 1; l < o; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * e.get(l, a));\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / e.get(a, a));\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * e.get(l, a));\n }\n return i;\n }\n get determinant() {\n let s = this.LU;\n if (!s.isSquare())\n throw new Error(\"Matrix must be square\");\n let e = this.pivotSign, t = s.columns;\n for (let n = 0; n < t; n++)\n e *= s.get(n, n);\n return e;\n }\n get lowerTriangularMatrix() {\n let s = this.LU, e = s.rows, t = s.columns, n = new _(e, t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n i > o ? n.set(i, o, s.get(i, o)) : i === o ? n.set(i, o, 1) : n.set(i, o, 0);\n return n;\n }\n get upperTriangularMatrix() {\n let s = this.LU, e = s.rows, t = s.columns, n = new _(e, t);\n for (let i = 0; i < e; i++)\n for (let o = 0; o < t; o++)\n i <= o ? n.set(i, o, s.get(i, o)) : n.set(i, o, 0);\n return n;\n }\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\nfunction ht(r, s) {\n let e = 0;\n return Math.abs(r) > Math.abs(s) ? (e = s / r, Math.abs(r) * Math.sqrt(1 + e * e)) : s !== 0 ? (e = r / s, Math.abs(s) * Math.sqrt(1 + e * e)) : 0;\n}\nclass pe {\n constructor(s) {\n s = st.checkMatrix(s);\n let e = s.clone(), t = s.rows, n = s.columns, i = new Float64Array(n), o, l, h, a;\n for (h = 0; h < n; h++) {\n let u = 0;\n for (o = h; o < t; o++)\n u = ht(u, e.get(o, h));\n if (u !== 0) {\n for (e.get(h, h) < 0 && (u = -u), o = h; o < t; o++)\n e.set(o, h, e.get(o, h) / u);\n for (e.set(h, h, e.get(h, h) + 1), l = h + 1; l < n; l++) {\n for (a = 0, o = h; o < t; o++)\n a += e.get(o, h) * e.get(o, l);\n for (a = -a / e.get(h, h), o = h; o < t; o++)\n e.set(o, l, e.get(o, l) + a * e.get(o, h));\n }\n }\n i[h] = -u;\n }\n this.QR = e, this.Rdiag = i;\n }\n solve(s) {\n s = _.checkMatrix(s);\n let e = this.QR, t = e.rows;\n if (s.rows !== t)\n throw new Error(\"Matrix row dimensions must agree\");\n if (!this.isFullRank())\n throw new Error(\"Matrix is rank deficient\");\n let n = s.columns, i = s.clone(), o = e.columns, l, h, a, u;\n for (a = 0; a < o; a++)\n for (h = 0; h < n; h++) {\n for (u = 0, l = a; l < t; l++)\n u += e.get(l, a) * i.get(l, h);\n for (u = -u / e.get(a, a), l = a; l < t; l++)\n i.set(l, h, i.get(l, h) + u * e.get(l, a));\n }\n for (a = o - 1; a >= 0; a--) {\n for (h = 0; h < n; h++)\n i.set(a, h, i.get(a, h) / this.Rdiag[a]);\n for (l = 0; l < a; l++)\n for (h = 0; h < n; h++)\n i.set(l, h, i.get(l, h) - i.get(a, h) * e.get(l, a));\n }\n return i.subMatrix(0, o - 1, 0, n - 1);\n }\n isFullRank() {\n let s = this.QR.columns;\n for (let e = 0; e < s; e++)\n if (this.Rdiag[e] === 0)\n return !1;\n return !0;\n }\n get upperTriangularMatrix() {\n let s = this.QR, e = s.columns, t = new _(e, e), n, i;\n for (n = 0; n < e; n++)\n for (i = 0; i < e; i++)\n n < i ? t.set(n, i, s.get(n, i)) : n === i ? t.set(n, i, this.Rdiag[n]) : t.set(n, i, 0);\n return t;\n }\n get orthogonalMatrix() {\n let s = this.QR, e = s.rows, t = s.columns, n = new _(e, t), i, o, l, h;\n for (l = t - 1; l >= 0; l--) {\n for (i = 0; i < e; i++)\n n.set(i, l, 0);\n for (n.set(l, l, 1), o = l; o < t; o++)\n if (s.get(l, l) !== 0) {\n for (h = 0, i = l; i < e; i++)\n h += s.get(i, l) * n.get(i, o);\n for (h = -h / s.get(l, l), i = l; i < e; i++)\n n.set(i, o, n.get(i, o) + h * s.get(i, l));\n }\n }\n return n;\n }\n}\nclass vt {\n constructor(s, e = {}) {\n if (s = st.checkMatrix(s), s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let t = s.rows, n = s.columns;\n const {\n computeLeftSingularVectors: i = !0,\n computeRightSingularVectors: o = !0,\n autoTranspose: l = !1\n } = e;\n let h = !!i, a = !!o, u = !1, c;\n if (t < n)\n if (!l)\n c = s.clone(), console.warn(\n \"Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose\"\n );\n else {\n c = s.transpose(), t = c.rows, n = c.columns, u = !0;\n let m = h;\n h = a, a = m;\n }\n else\n c = s.clone();\n let g = Math.min(t, n), d = Math.min(t + 1, n), w = new Float64Array(d), p = new _(t, g), P = new _(n, n), f = new Float64Array(n), M = new Float64Array(t), E = new Float64Array(d);\n for (let m = 0; m < d; m++) E[m] = m;\n let R = Math.min(t - 1, n), v = Math.max(0, Math.min(n - 2, t)), L = Math.max(R, v);\n for (let m = 0; m < L; m++) {\n if (m < R) {\n w[m] = 0;\n for (let b = m; b < t; b++)\n w[m] = ht(w[m], c.get(b, m));\n if (w[m] !== 0) {\n c.get(m, m) < 0 && (w[m] = -w[m]);\n for (let b = m; b < t; b++)\n c.set(b, m, c.get(b, m) / w[m]);\n c.set(m, m, c.get(m, m) + 1);\n }\n w[m] = -w[m];\n }\n for (let b = m + 1; b < n; b++) {\n if (m < R && w[m] !== 0) {\n let j = 0;\n for (let y = m; y < t; y++)\n j += c.get(y, m) * c.get(y, b);\n j = -j / c.get(m, m);\n for (let y = m; y < t; y++)\n c.set(y, b, c.get(y, b) + j * c.get(y, m));\n }\n f[b] = c.get(m, b);\n }\n if (h && m < R)\n for (let b = m; b < t; b++)\n p.set(b, m, c.get(b, m));\n if (m < v) {\n f[m] = 0;\n for (let b = m + 1; b < n; b++)\n f[m] = ht(f[m], f[b]);\n if (f[m] !== 0) {\n f[m + 1] < 0 && (f[m] = 0 - f[m]);\n for (let b = m + 1; b < n; b++)\n f[b] /= f[m];\n f[m + 1] += 1;\n }\n if (f[m] = -f[m], m + 1 < t && f[m] !== 0) {\n for (let b = m + 1; b < t; b++)\n M[b] = 0;\n for (let b = m + 1; b < t; b++)\n for (let j = m + 1; j < n; j++)\n M[b] += f[j] * c.get(b, j);\n for (let b = m + 1; b < n; b++) {\n let j = -f[b] / f[m + 1];\n for (let y = m + 1; y < t; y++)\n c.set(y, b, c.get(y, b) + j * M[y]);\n }\n }\n if (a)\n for (let b = m + 1; b < n; b++)\n P.set(b, m, f[b]);\n }\n }\n let S = Math.min(n, t + 1);\n if (R < n && (w[R] = c.get(R, R)), t < S && (w[S - 1] = 0), v + 1 < S && (f[v] = c.get(v, S - 1)), f[S - 1] = 0, h) {\n for (let m = R; m < g; m++) {\n for (let b = 0; b < t; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n for (let m = R - 1; m >= 0; m--)\n if (w[m] !== 0) {\n for (let b = m + 1; b < g; b++) {\n let j = 0;\n for (let y = m; y < t; y++)\n j += p.get(y, m) * p.get(y, b);\n j = -j / p.get(m, m);\n for (let y = m; y < t; y++)\n p.set(y, b, p.get(y, b) + j * p.get(y, m));\n }\n for (let b = m; b < t; b++)\n p.set(b, m, -p.get(b, m));\n p.set(m, m, 1 + p.get(m, m));\n for (let b = 0; b < m - 1; b++)\n p.set(b, m, 0);\n } else {\n for (let b = 0; b < t; b++)\n p.set(b, m, 0);\n p.set(m, m, 1);\n }\n }\n if (a)\n for (let m = n - 1; m >= 0; m--) {\n if (m < v && f[m] !== 0)\n for (let b = m + 1; b < n; b++) {\n let j = 0;\n for (let y = m + 1; y < n; y++)\n j += P.get(y, m) * P.get(y, b);\n j = -j / P.get(m + 1, m);\n for (let y = m + 1; y < n; y++)\n P.set(y, b, P.get(y, b) + j * P.get(y, m));\n }\n for (let b = 0; b < n; b++)\n P.set(b, m, 0);\n P.set(m, m, 1);\n }\n let k = S - 1, D = Number.EPSILON;\n for (; S > 0; ) {\n let m, b;\n for (m = S - 2; m >= -1 && m !== -1; m--) {\n const j = Number.MIN_VALUE + D * Math.abs(w[m] + Math.abs(w[m + 1]));\n if (Math.abs(f[m]) <= j || Number.isNaN(f[m])) {\n f[m] = 0;\n break;\n }\n }\n if (m === S - 2)\n b = 4;\n else {\n let j;\n for (j = S - 1; j >= m && j !== m; j--) {\n let y = (j !== S ? Math.abs(f[j]) : 0) + (j !== m + 1 ? Math.abs(f[j - 1]) : 0);\n if (Math.abs(w[j]) <= D * y) {\n w[j] = 0;\n break;\n }\n }\n j === m ? b = 3 : j === S - 1 ? b = 1 : (b = 2, m = j);\n }\n switch (m++, b) {\n case 1: {\n let j = f[S - 2];\n f[S - 2] = 0;\n for (let y = S - 2; y >= m; y--) {\n let C = ht(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, y !== m && (j = -I * f[y - 1], f[y - 1] = F * f[y - 1]), a)\n for (let O = 0; O < n; O++)\n C = F * P.get(O, y) + I * P.get(O, S - 1), P.set(O, S - 1, -I * P.get(O, y) + F * P.get(O, S - 1)), P.set(O, y, C);\n }\n break;\n }\n case 2: {\n let j = f[m - 1];\n f[m - 1] = 0;\n for (let y = m; y < S; y++) {\n let C = ht(w[y], j), F = w[y] / C, I = j / C;\n if (w[y] = C, j = -I * f[y], f[y] = F * f[y], h)\n for (let O = 0; O < t; O++)\n C = F * p.get(O, y) + I * p.get(O, m - 1), p.set(O, m - 1, -I * p.get(O, y) + F * p.get(O, m - 1)), p.set(O, y, C);\n }\n break;\n }\n case 3: {\n const j = Math.max(\n Math.abs(w[S - 1]),\n Math.abs(w[S - 2]),\n Math.abs(f[S - 2]),\n Math.abs(w[m]),\n Math.abs(f[m])\n ), y = w[S - 1] / j, C = w[S - 2] / j, F = f[S - 2] / j, I = w[m] / j, O = f[m] / j, x = ((C + y) * (C - y) + F * F) / 2, N = y * F * (y * F);\n let A = 0;\n (x !== 0 || N !== 0) && (x < 0 ? A = 0 - Math.sqrt(x * x + N) : A = Math.sqrt(x * x + N), A = N / (x + A));\n let B = (I + y) * (I - y) + A, U = I * O;\n for (let T = m; T < S - 1; T++) {\n let z = ht(B, U);\n z === 0 && (z = Number.MIN_VALUE);\n let G = B / z, Q = U / z;\n if (T !== m && (f[T - 1] = z), B = G * w[T] + Q * f[T], f[T] = G * f[T] - Q * w[T], U = Q * w[T + 1], w[T + 1] = G * w[T + 1], a)\n for (let Y = 0; Y < n; Y++)\n z = G * P.get(Y, T) + Q * P.get(Y, T + 1), P.set(Y, T + 1, -Q * P.get(Y, T) + G * P.get(Y, T + 1)), P.set(Y, T, z);\n if (z = ht(B, U), z === 0 && (z = Number.MIN_VALUE), G = B / z, Q = U / z, w[T] = z, B = G * f[T] + Q * w[T + 1], w[T + 1] = -Q * f[T] + G * w[T + 1], U = Q * f[T + 1], f[T + 1] = G * f[T + 1], h && T < t - 1)\n for (let Y = 0; Y < t; Y++)\n z = G * p.get(Y, T) + Q * p.get(Y, T + 1), p.set(Y, T + 1, -Q * p.get(Y, T) + G * p.get(Y, T + 1)), p.set(Y, T, z);\n }\n f[S - 2] = B;\n break;\n }\n case 4: {\n if (w[m] <= 0 && (w[m] = w[m] < 0 ? -w[m] : 0, a))\n for (let j = 0; j <= k; j++)\n P.set(j, m, -P.get(j, m));\n for (; m < k && !(w[m] >= w[m + 1]); ) {\n let j = w[m];\n if (w[m] = w[m + 1], w[m + 1] = j, a && m < n - 1)\n for (let y = 0; y < n; y++)\n j = P.get(y, m + 1), P.set(y, m + 1, P.get(y, m)), P.set(y, m, j);\n if (h && m < t - 1)\n for (let y = 0; y < t; y++)\n j = p.get(y, m + 1), p.set(y, m + 1, p.get(y, m)), p.set(y, m, j);\n m++;\n }\n S--;\n break;\n }\n }\n }\n if (u) {\n let m = P;\n P = p, p = m;\n }\n this.m = t, this.n = n, this.s = w, this.U = p, this.V = P;\n }\n solve(s) {\n let e = s, t = this.threshold, n = this.s.length, i = _.zeros(n, n);\n for (let g = 0; g < n; g++)\n Math.abs(this.s[g]) <= t ? i.set(g, g, 0) : i.set(g, g, 1 / this.s[g]);\n let o = this.U, l = this.rightSingularVectors, h = l.mmul(i), a = l.rows, u = o.rows, c = _.zeros(a, u);\n for (let g = 0; g < a; g++)\n for (let d = 0; d < u; d++) {\n let w = 0;\n for (let p = 0; p < n; p++)\n w += h.get(g, p) * o.get(d, p);\n c.set(g, d, w);\n }\n return c.mmul(e);\n }\n solveForDiagonal(s) {\n return this.solve(_.diag(s));\n }\n inverse() {\n let s = this.V, e = this.threshold, t = s.rows, n = s.columns, i = new _(t, this.s.length);\n for (let u = 0; u < t; u++)\n for (let c = 0; c < n; c++)\n Math.abs(this.s[c]) > e && i.set(u, c, s.get(u, c) / this.s[c]);\n let o = this.U, l = o.rows, h = o.columns, a = new _(t, l);\n for (let u = 0; u < t; u++)\n for (let c = 0; c < l; c++) {\n let g = 0;\n for (let d = 0; d < h; d++)\n g += i.get(u, d) * o.get(c, d);\n a.set(u, c, g);\n }\n return a;\n }\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n get norm2() {\n return this.s[0];\n }\n get rank() {\n let s = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON, e = 0, t = this.s;\n for (let n = 0, i = t.length; n < i; n++)\n t[n] > s && e++;\n return e;\n }\n get diagonal() {\n return Array.from(this.s);\n }\n get threshold() {\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\n }\n get leftSingularVectors() {\n return this.U;\n }\n get rightSingularVectors() {\n return this.V;\n }\n get diagonalMatrix() {\n return _.diag(this.s);\n }\n}\nfunction Ds(r, s = !1) {\n return r = st.checkMatrix(r), s ? new vt(r).inverse() : Ve(r, _.eye(r.rows));\n}\nfunction Ve(r, s, e = !1) {\n return r = st.checkMatrix(r), s = st.checkMatrix(s), e ? new vt(r).solve(s) : r.isSquare() ? new te(r).solve(s) : new pe(r).solve(s);\n}\nfunction Gt(r) {\n if (r = _.checkMatrix(r), r.isSquare()) {\n if (r.columns === 0)\n return 1;\n let s, e, t, n;\n if (r.columns === 2)\n return s = r.get(0, 0), e = r.get(0, 1), t = r.get(1, 0), n = r.get(1, 1), s * n - e * t;\n if (r.columns === 3) {\n let i, o, l;\n return i = new Qt(r, [1, 2], [1, 2]), o = new Qt(r, [1, 2], [0, 2]), l = new Qt(r, [1, 2], [0, 1]), s = r.get(0, 0), e = r.get(0, 1), t = r.get(0, 2), s * Gt(i) - e * Gt(o) + t * Gt(l);\n } else\n return new te(r).determinant;\n } else\n throw Error(\"determinant can only be calculated for a square matrix\");\n}\nfunction zs(r, s) {\n let e = [];\n for (let t = 0; t < r; t++)\n t !== s && e.push(t);\n return e;\n}\nfunction Bs(r, s, e, t = 1e-9, n = 1e-9) {\n if (r > n)\n return new Array(s.rows + 1).fill(0);\n {\n let i = s.addRow(e, [0]);\n for (let o = 0; o < i.rows; o++)\n Math.abs(i.get(o, 0)) < t && i.set(o, 0, 0);\n return i.to1DArray();\n }\n}\nfunction Os(r, s = {}) {\n const { thresholdValue: e = 1e-9, thresholdError: t = 1e-9 } = s;\n r = _.checkMatrix(r);\n let n = r.rows, i = new _(n, n);\n for (let o = 0; o < n; o++) {\n let l = _.columnVector(r.getRow(o)), h = r.subMatrixRow(zs(n, o)).transpose(), u = new vt(h).solve(l), c = _.sub(l, h.mmul(u)).abs().max();\n i.setRow(\n o,\n Bs(c, u, o, e, t)\n );\n }\n return i;\n}\nfunction Us(r, s = Number.EPSILON) {\n if (r = _.checkMatrix(r), r.isEmpty())\n return r.transpose();\n let e = new vt(r, { autoTranspose: !0 }), t = e.leftSingularVectors, n = e.rightSingularVectors, i = e.diagonal;\n for (let o = 0; o < i.length; o++)\n Math.abs(i[o]) > s ? i[o] = 1 / i[o] : i[o] = 0;\n return n.mmul(_.diag(i).mmul(t.transpose()));\n}\nfunction Ys(r, s = r, e = {}) {\n r = new _(r);\n let t = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !tt.isAnyArray(s) ? (e = s, s = r, t = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0 } = e;\n n && (r = r.center(\"column\"), t || (s = s.center(\"column\")));\n const i = r.transpose().mmul(s);\n for (let o = 0; o < i.rows; o++)\n for (let l = 0; l < i.columns; l++)\n i.set(o, l, i.get(o, l) * (1 / (r.rows - 1)));\n return i;\n}\nfunction Ws(r, s = r, e = {}) {\n r = new _(r);\n let t = !1;\n if (typeof s == \"object\" && !_.isMatrix(s) && !tt.isAnyArray(s) ? (e = s, s = r, t = !0) : s = new _(s), r.rows !== s.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0, scale: i = !0 } = e;\n n && (r.center(\"column\"), t || s.center(\"column\")), i && (r.scale(\"column\"), t || s.scale(\"column\"));\n const o = r.standardDeviation(\"column\", { unbiased: !0 }), l = t ? o : s.standardDeviation(\"column\", { unbiased: !0 }), h = r.transpose().mmul(s);\n for (let a = 0; a < h.rows; a++)\n for (let u = 0; u < h.columns; u++)\n h.set(\n a,\n u,\n h.get(a, u) * (1 / (o[a] * l[u])) * (1 / (r.rows - 1))\n );\n return h;\n}\nlet Ne = class {\n constructor(s, e = {}) {\n const { assumeSymmetric: t = !1 } = e;\n if (s = st.checkMatrix(s), !s.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (s.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let n = s.columns, i = new _(n, n), o = new Float64Array(n), l = new Float64Array(n), h = s, a, u, c = !1;\n if (t ? c = !0 : c = s.isSymmetric(), c) {\n for (a = 0; a < n; a++)\n for (u = 0; u < n; u++)\n i.set(a, u, h.get(a, u));\n Qs(n, l, o, i), Gs(n, l, o, i);\n } else {\n let g = new _(n, n), d = new Float64Array(n);\n for (u = 0; u < n; u++)\n for (a = 0; a < n; a++)\n g.set(a, u, h.get(a, u));\n Xs(n, g, d, i), Zs(n, l, o, i, g);\n }\n this.n = n, this.e = l, this.d = o, this.V = i;\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 s = this.n, e = this.e, t = this.d, n = new _(s, s), i, o;\n for (i = 0; i < s; i++) {\n for (o = 0; o < s; o++)\n n.set(i, o, 0);\n n.set(i, i, t[i]), e[i] > 0 ? n.set(i, i + 1, e[i]) : e[i] < 0 && n.set(i, i - 1, e[i]);\n }\n return n;\n }\n};\nfunction Qs(r, s, e, t) {\n let n, i, o, l, h, a, u, c;\n for (h = 0; h < r; h++)\n e[h] = t.get(r - 1, h);\n for (l = r - 1; l > 0; l--) {\n for (c = 0, o = 0, a = 0; a < l; a++)\n c = c + Math.abs(e[a]);\n if (c === 0)\n for (s[l] = e[l - 1], h = 0; h < l; h++)\n e[h] = t.get(l - 1, h), t.set(l, h, 0), t.set(h, l, 0);\n else {\n for (a = 0; a < l; a++)\n e[a] /= c, o += e[a] * e[a];\n for (n = e[l - 1], i = Math.sqrt(o), n > 0 && (i = -i), s[l] = c * i, o = o - n * i, e[l - 1] = n - i, h = 0; h < l; h++)\n s[h] = 0;\n for (h = 0; h < l; h++) {\n for (n = e[h], t.set(h, l, n), i = s[h] + t.get(h, h) * n, a = h + 1; a <= l - 1; a++)\n i += t.get(a, h) * e[a], s[a] += t.get(a, h) * n;\n s[h] = i;\n }\n for (n = 0, h = 0; h < l; h++)\n s[h] /= o, n += s[h] * e[h];\n for (u = n / (o + o), h = 0; h < l; h++)\n s[h] -= u * e[h];\n for (h = 0; h < l; h++) {\n for (n = e[h], i = s[h], a = h; a <= l - 1; a++)\n t.set(a, h, t.get(a, h) - (n * s[a] + i * e[a]));\n e[h] = t.get(l - 1, h), t.set(l, h, 0);\n }\n }\n e[l] = o;\n }\n for (l = 0; l < r - 1; l++) {\n if (t.set(r - 1, l, t.get(l, l)), t.set(l, l, 1), o = e[l + 1], o !== 0) {\n for (a = 0; a <= l; a++)\n e[a] = t.get(a, l + 1) / o;\n for (h = 0; h <= l; h++) {\n for (i = 0, a = 0; a <= l; a++)\n i += t.get(a, l + 1) * t.get(a, h);\n for (a = 0; a <= l; a++)\n t.set(a, h, t.get(a, h) - i * e[a]);\n }\n }\n for (a = 0; a <= l; a++)\n t.set(a, l + 1, 0);\n }\n for (h = 0; h < r; h++)\n e[h] = t.get(r - 1, h), t.set(r - 1, h, 0);\n t.set(r - 1, r - 1, 1), s[0] = 0;\n}\nfunction Gs(r, s, e, t) {\n let n, i, o, l, h, a, u, c, g, d, w, p, P, f, M, E;\n for (o = 1; o < r; o++)\n s[o - 1] = s[o];\n s[r - 1] = 0;\n let R = 0, v = 0, L = Number.EPSILON;\n for (a = 0; a < r; a++) {\n for (v = Math.max(v, Math.abs(e[a]) + Math.abs(s[a])), u = a; u < r && !(Math.abs(s[u]) <= L * v); )\n u++;\n if (u > a)\n do {\n for (n = e[a], c = (e[a + 1] - n) / (2 * s[a]), g = ht(c, 1), c < 0 && (g = -g), e[a] = s[a] / (c + g), e[a + 1] = s[a] * (c + g), d = e[a + 1], i = n - e[a], o = a + 2; o < r; o++)\n e[o] -= i;\n for (R = R + i, c = e[u], w = 1, p = w, P = w, f = s[a + 1], M = 0, E = 0, o = u - 1; o >= a; o--)\n for (P = p, p = w, E = M, n = w * s[o], i = w * c, g = ht(c, s[o]), s[o + 1] = M * g, M = s[o] / g, w = c / g, c = w * e[o] - M * n, e[o + 1] = i + M * (w * n + M * e[o]), h = 0; h < r; h++)\n i = t.get(h, o + 1), t.set(h, o + 1, M * t.get(h, o) + w * i), t.set(h, o, w * t.get(h, o) - M * i);\n c = -M * E * P * f * s[a] / d, s[a] = M * c, e[a] = w * c;\n } while (Math.abs(s[a]) > L * v);\n e[a] = e[a] + R, s[a] = 0;\n }\n for (o = 0; o < r - 1; o++) {\n for (h = o, c = e[o], l = o + 1; l < r; l++)\n e[l] < c && (h = l, c = e[l]);\n if (h !== o)\n for (e[h] = e[o], e[o] = c, l = 0; l < r; l++)\n c = t.get(l, o), t.set(l, o, t.get(l, h)), t.set(l, h, c);\n }\n}\nfunction Xs(r, s, e, t) {\n let n = 0, i = r - 1, o, l, h, a, u, c, g;\n for (c = n + 1; c <= i - 1; c++) {\n for (g = 0, a = c; a <= i; a++)\n g = g + Math.abs(s.get(a, c - 1));\n if (g !== 0) {\n for (h = 0, a = i; a >= c; a--)\n e[a] = s.get(a, c - 1) / g, h += e[a] * e[a];\n for (l = Math.sqrt(h), e[c] > 0 && (l = -l), h = h - e[c] * l, e[c] = e[c] - l, u = c; u < r; u++) {\n for (o = 0, a = i; a >= c; a--)\n o += e[a] * s.get(a, u);\n for (o = o / h, a = c; a <= i; a++)\n s.set(a, u, s.get(a, u) - o * e[a]);\n }\n for (a = 0; a <= i; a++) {\n for (o = 0, u = i; u >= c; u--)\n o += e[u] * s.get(a, u);\n for (o = o / h, u = c; u <= i; u++)\n s.set(a, u, s.get(a, u) - o * e[u]);\n }\n e[c] = g * e[c], s.set(c, c - 1, g * l);\n }\n }\n for (a = 0; a < r; a++)\n for (u = 0; u < r; u++)\n t.set(a, u, a === u ? 1 : 0);\n for (c = i - 1; c >= n + 1; c--)\n if (s.get(c, c - 1) !== 0) {\n for (a = c + 1; a <= i; a++)\n e[a] = s.get(a, c - 1);\n for (u = c; u <= i; u++) {\n for (l = 0, a = c; a <= i; a++)\n l += e[a] * t.get(a, u);\n for (l = l / e[c] / s.get(c, c - 1), a = c; a <= i; a++)\n t.set(a, u, t.get(a, u) + l * e[a]);\n }\n }\n}\nfunction Zs(r, s, e, t, n) {\n let i = r - 1, o = 0, l = r - 1, h = Number.EPSILON, a = 0, u = 0, c = 0, g = 0, d = 0, w = 0, p = 0, P = 0, f, M, E, R, v, L, S, k, D, m, b, j, y, C, F;\n for (f = 0; f < r; f++)\n for ((f < o || f > l) && (e[f] = n.get(f, f), s[f] = 0), M = Math.max(f - 1, 0); M < r; M++)\n u = u + Math.abs(n.get(f, M));\n for (; i >= o; ) {\n for (R = i; R > o && (w = Math.abs(n.get(R - 1, R - 1)) + Math.abs(n.get(R, R)), w === 0 && (w = u), !(Math.abs(n.get(R, R - 1)) < h * w)); )\n R--;\n if (R === i)\n n.set(i, i, n.get(i, i) + a), e[i] = n.get(i, i), s[i] = 0, i--, P = 0;\n else if (R === i - 1) {\n if (S = n.get(i, i - 1) * n.get(i - 1, i), c = (n.get(i - 1, i - 1) - n.get(i, i)) / 2, g = c * c + S, p = Math.sqrt(Math.abs(g)), n.set(i, i, n.get(i, i) + a), n.set(i - 1, i - 1, n.get(i - 1, i - 1) + a), k = n.get(i, i), g >= 0) {\n for (p = c >= 0 ? c + p : c - p, e[i - 1] = k + p, e[i] = e[i - 1], p !== 0 && (e[i] = k - S / p), s[i - 1] = 0, s[i] = 0, k = n.get(i, i - 1), w = Math.abs(k) + Math.abs(p), c = k / w, g = p / w, d = Math.sqrt(c * c + g * g), c = c / d, g = g / d, M = i - 1; M < r; M++)\n p = n.get(i - 1, M), n.set(i - 1, M, g * p + c * n.get(i, M)), n.set(i, M, g * n.get(i, M) - c * p);\n for (f = 0; f <= i; f++)\n p = n.get(f, i - 1), n.set(f, i - 1, g * p + c * n.get(f, i)), n.set(f, i, g * n.get(f, i) - c * p);\n for (f = o; f <= l; f++)\n p = t.get(f, i - 1), t.set(f, i - 1, g * p + c * t.get(f, i)), t.set(f, i, g * t.get(f, i) - c * p);\n } else\n e[i - 1] = k + c, e[i] = k + c, s[i - 1] = p, s[i] = -p;\n i = i - 2, P = 0;\n } else {\n if (k = n.get(i, i), D = 0, S = 0, R < i && (D = n.get(i - 1, i - 1), S = n.get(i, i - 1) * n.get(i - 1, i)), P === 10) {\n for (a += k, f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - k);\n w = Math.abs(n.get(i, i - 1)) + Math.abs(n.get(i - 1, i - 2)), k = D = 0.75 * w, S = -0.4375 * w * w;\n }\n if (P === 30 && (w = (D - k) / 2, w = w * w + S, w > 0)) {\n for (w = Math.sqrt(w), D < k && (w = -w), w = k - S / ((D - k) / 2 + w), f = o; f <= i; f++)\n n.set(f, f, n.get(f, f) - w);\n a += w, k = D = S = 0.964;\n }\n for (P = P + 1, v = i - 2; v >= R && (p = n.get(v, v), d = k - p, w = D - p, c = (d * w - S) / n.get(v + 1, v) + n.get(v, v + 1), g = n.get(v + 1, v + 1) - p - d - w, d = n.get(v + 2, v + 1), w = Math.abs(c) + Math.abs(g) + Math.abs(d), c = c / w, g = g / w, d = d / w, !(v === R || Math.abs(n.get(v, v - 1)) * (Math.abs(g) + Math.abs(d)) < h * (Math.abs(c) * (Math.abs(n.get(v - 1, v - 1)) + Math.abs(p) + Math.abs(n.get(v + 1, v + 1)))))); )\n v--;\n for (f = v + 2; f <= i; f++)\n n.set(f, f - 2, 0), f > v + 2 && n.set(f, f - 3, 0);\n for (E = v; E <= i - 1 && (C = E !== i - 1, E !== v && (c = n.get(E, E - 1), g = n.get(E + 1, E - 1), d = C ? n.get(E + 2, E - 1) : 0, k = Math.abs(c) + Math.abs(g) + Math.abs(d), k !== 0 && (c = c / k, g = g / k, d = d / k)), k !== 0); E++)\n if (w = Math.sqrt(c * c + g * g + d * d), c < 0 && (w = -w), w !== 0) {\n for (E !== v ? n.set(E, E - 1, -w * k) : R !== v && n.set(E, E - 1, -n.get(E, E - 1)), c = c + w, k = c / w, D = g / w, p = d / w, g = g / c, d = d / c, M = E; M < r; M++)\n c = n.get(E, M) + g * n.get(E + 1, M), C && (c = c + d * n.get(E + 2, M), n.set(E + 2, M, n.get(E + 2, M) - c * p)), n.set(E, M, n.get(E, M) - c * k), n.set(E + 1, M, n.get(E + 1, M) - c * D);\n for (f = 0; f <= Math.min(i, E + 3); f++)\n c = k * n.get(f, E) + D * n.get(f, E + 1), C && (c = c + p * n.get(f, E + 2), n.set(f, E + 2, n.get(f, E + 2) - c * d)), n.set(f, E, n.get(f, E) - c), n.set(f, E + 1, n.get(f, E + 1) - c * g);\n for (f = o; f <= l; f++)\n c = k * t.get(f, E) + D * t.get(f, E + 1), C && (c = c + p * t.get(f, E + 2), t.set(f, E + 2, t.get(f, E + 2) - c * d)), t.set(f, E, t.get(f, E) - c), t.set(f, E + 1, t.get(f, E + 1) - c * g);\n }\n }\n }\n if (u !== 0) {\n for (i = r - 1; i >= 0; i--)\n if (c = e[i], g = s[i], g === 0)\n for (R = i, n.set(i, i, 1), f = i - 1; f >= 0; f--) {\n for (S = n.get(f, f) - c, d = 0, M = R; M <= i; M++)\n d = d + n.get(f, M) * n.get(M, i);\n if (s[f] < 0)\n p = S, w = d;\n else if (R = f, s[f] === 0 ? n.set(f, i, S !== 0 ? -d / S : -d / (h * u)) : (k = n.get(f, f + 1), D = n.get(f + 1, f), g = (e[f] - c) * (e[f] - c) + s[f] * s[f], L = (k * w - p * d) / g, n.set(f, i, L), n.set(\n f + 1,\n i,\n Math.abs(k) > Math.abs(p) ? (-d - S * L) / k : (-w - D * L) / p\n )), L = Math.abs(n.get(f, i)), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i, n.get(M, i) / L);\n }\n else if (g < 0)\n for (R = i - 1, Math.abs(n.get(i, i - 1)) > Math.abs(n.get(i - 1, i)) ? (n.set(i - 1, i - 1, g / n.get(i, i - 1)), n.set(i - 1, i, -(n.get(i, i) - c) / n.get(i, i - 1))) : (F = Yt(0, -n.get(i - 1, i), n.get(i - 1, i - 1) - c, g), n.set(i - 1, i - 1, F[0]), n.set(i - 1, i, F[1])), n.set(i, i - 1, 0), n.set(i, i, 1), f = i - 2; f >= 0; f--) {\n for (m = 0, b = 0, M = R; M <= i; M++)\n m = m + n.get(f, M) * n.get(M, i - 1), b = b + n.get(f, M) * n.get(M, i);\n if (S = n.get(f, f) - c, s[f] < 0)\n p = S, d = m, w = b;\n else if (R = f, s[f] === 0 ? (F = Yt(-m, -b, S, g), n.set(f, i - 1, F[0]), n.set(f, i, F[1])) : (k = n.get(f, f + 1), D = n.get(f + 1, f), j = (e[f] - c) * (e[f] - c) + s[f] * s[f] - g * g, y = (e[f] - c) * 2 * g, j === 0 && y === 0 && (j = h * u * (Math.abs(S) + Math.abs(g) + Math.abs(k) + Math.abs(D) + Math.abs(p))), F = Yt(\n k * d - p * m + g * b,\n k * w - p * b - g * m,\n j,\n y\n ), n.set(f, i - 1, F[0]), n.set(f, i, F[1]), Math.abs(k) > Math.abs(p) + Math.abs(g) ? (n.set(\n f + 1,\n i - 1,\n (-m - S * n.get(f, i - 1) + g * n.get(f, i)) / k\n ), n.set(\n f + 1,\n i,\n (-b - S * n.get(f, i) - g * n.get(f, i - 1)) / k\n )) : (F = Yt(\n -d - D * n.get(f, i - 1),\n -w - D * n.get(f, i),\n p,\n g\n ), n.set(f + 1, i - 1, F[0]), n.set(f + 1, i, F[1]))), L = Math.max(Math.abs(n.get(f, i - 1)), Math.abs(n.get(f, i))), h * L * L > 1)\n for (M = f; M <= i; M++)\n n.set(M, i - 1, n.get(M, i - 1) / L), n.set(M, i, n.get(M, i) / L);\n }\n for (f = 0; f < r; f++)\n if (f < o || f > l)\n for (M = f; M < r; M++)\n t.set(f, M, n.get(f, M));\n for (M = r - 1; M >= o; M--)\n for (f = o; f <= l; f++) {\n for (p = 0, E = o; E <= Math.min(M, l); E++)\n p = p + t.get(f, E) * n.get(E, M);\n t.set(f, M, p);\n }\n }\n}\nfunction Yt(r, s, e, t) {\n let n, i;\n return Math.abs(e) > Math.abs(t) ? (n = t / e, i = e + n * t, [(r + n * s) / i, (s - n * r) / i]) : (n = e / t, i = t + n * e, [(n * r + s) / i, (n * s - r) / i]);\n}\nclass $e {\n constructor(s) {\n if (s = st.checkMatrix(s), !s.isSymmetric())\n throw new Error(\"Matrix is not symmetric\");\n let e = s, t = e.rows, n = new _(t, t), i = !0, o, l, h;\n for (l = 0; l < t; l++) {\n let a = 0;\n for (h = 0; h < l; h++) {\n let u = 0;\n for (o = 0; o < h; o++)\n u += n.get(h, o) * n.get(l, o);\n u = (e.get(l, h) - u) / n.get(h, h), n.set(l, h, u), a = a + u * u;\n }\n for (a = e.get(l, l) - a, i && (i = a > 0), n.set(l, l, Math.sqrt(Math.max(a, 0))), h = l + 1; h < t; h++)\n n.set(l, h, 0);\n }\n this.L = n, this.positiveDefinite = i;\n }\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n solve(s) {\n s = st.checkMatrix(s);\n let e = this.L, t = e.rows;\n if (s.rows !== t)\n throw new Error(\"Matrix dimensions do not match\");\n if (this.isPositiveDefinite() === !1)\n throw new Error(\"Matrix is not positive definite\");\n let n = s.columns, i = s.clone(), o, l, h;\n for (h = 0; h < t; h++)\n for (l = 0; l < n; l++) {\n for (o = 0; o < h; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * e.get(h, o));\n i.set(h, l, i.get(h, l) / e.get(h, h));\n }\n for (h = t - 1; h >= 0; h--)\n for (l = 0; l < n; l++) {\n for (o = h + 1; o < t; o++)\n i.set(h, l, i.get(h, l) - i.get(o, l) * e.get(o, h));\n i.set(h, l, i.get(h, l) / e.get(h, h));\n }\n return i;\n }\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\nclass Le {\n constructor(s, e = {}) {\n s = st.checkMatrix(s);\n let { Y: t } = e;\n const {\n scaleScores: n = !1,\n maxIterations: i = 1e3,\n terminationCriteria: o = 1e-10\n } = e;\n let l;\n if (t) {\n if (tt.isAnyArray(t) && typeof t[0] == \"number\" ? t = _.columnVector(t) : t = st.checkMatrix(t), t.rows !== s.rows)\n throw new Error(\"Y should have the same number of rows as X\");\n l = t.getColumnVector(0);\n } else\n l = s.getColumnVector(0);\n let h = 1, a, u, c, g;\n for (let d = 0; d < i && h > o; d++)\n c = s.transpose().mmul(l).div(l.transpose().mmul(l).get(0, 0)), c = c.div(c.norm()), a = s.mmul(c).div(c.transpose().mmul(c).get(0, 0)), d > 0 && (h = a.clone().sub(g).pow(2).sum()), g = a.clone(), t ? (u = t.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), u = u.div(u.norm()), l = t.mmul(u).div(u.transpose().mmul(u).get(0, 0))) : l = a;\n if (t) {\n let d = s.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0));\n d = d.div(d.norm());\n let w = s.clone().sub(a.clone().mmul(d.transpose())), p = l.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), P = t.clone().sub(\n a.clone().mulS(p.get(0, 0)).mmul(u.transpose())\n );\n this.t = a, this.p = d.transpose(), this.w = c.transpose(), this.q = u, this.u = l, this.s = a.transpose().mmul(a), this.xResidual = w, this.yResidual = P, this.betas = p;\n } else\n this.w = c.transpose(), this.s = a.transpose().mmul(a).sqrt(), n ? this.t = a.clone().div(this.s.get(0, 0)) : this.t = a, this.xResidual = s.sub(a.mmul(c.transpose()));\n }\n}\n$.AbstractMatrix = V;\n$.CHO = $e;\n$.CholeskyDecomposition = $e;\n$.DistanceMatrix = Ht;\n$.EVD = Ne;\nvar Js = $.EigenvalueDecomposition = Ne;\n$.LU = te;\n$.LuDecomposition = te;\nvar De = $.Matrix = _;\n$.MatrixColumnSelectionView = qs;\n$.MatrixColumnView = Cs;\n$.MatrixFlipColumnView = Fs;\n$.MatrixFlipRowView = xs;\n$.MatrixRowSelectionView = Vs;\n$.MatrixRowView = As;\n$.MatrixSelectionView = Qt;\n$.MatrixSubView = Ns;\n$.MatrixTransposeView = $s;\n$.NIPALS = Le;\n$.Nipals = Le;\n$.QR = pe;\n$.QrDecomposition = pe;\n$.SVD = vt;\n$.SingularValueDecomposition = vt;\n$.SymmetricMatrix = pt;\n$.WrapperMatrix1D = Ae;\n$.WrapperMatrix2D = st;\n$.correlation = Ws;\n$.covariance = Ys;\nvar Re = $.default = _;\n$.determinant = Gt;\n$.inverse = Ds;\n$.linearDependencies = Os;\n$.pseudoInverse = Us;\n$.solve = Ve;\n$.wrap = Ls;\nconst Ks = Js, Hs = De;\nRe.Matrix && Re.Matrix;\nfunction ee(r, s, e) {\n const t = r / e, n = s / e;\n if (!(isFinite(t) && isFinite(n))) {\n const h = -r / s;\n return isFinite(h) ? [h] : r == 0 && s == 0 ? [0] : [];\n }\n const i = n * n - 4 * t;\n let o = 0;\n if (isFinite(i)) {\n if (i < 0)\n return [];\n if (i == 0)\n return [-0.5 * n];\n o = -0.5 * (n + kt(Math.sqrt(i), n));\n } else\n o = -n;\n const l = t / o;\n return isFinite(l) ? l > o ? [o, l] : [l, o] : [o];\n}\nfunction ze(r, s, e, t) {\n const n = e / (3 * t), i = s / (3 * t), o = r / t;\n if (!(isFinite(o) && isFinite(i) && isFinite(n)))\n return ee(r, s, e);\n const l = -n * n + i, h = -i * n + o, a = n * o - i * i, u = 4 * l * a - h * h, c = -2 * n * l + h;\n if (u < 0) {\n const g = Math.sqrt(-0.25 * u), d = -0.5 * c;\n return [Math.cbrt(d + g) + Math.cbrt(d - g) - n];\n } else if (u == 0) {\n const g = kt(Math.sqrt(-l), c);\n return [g - n, -2 * g - n];\n } else {\n const g = Math.atan2(Math.sqrt(u), -c) / 3, d = Math.cos(g), w = Math.sin(g) * Math.sqrt(3), p = 0.5 * (-d + w), P = 0.5 * (-d - w), f = 2 * Math.sqrt(-l);\n return [f * d - n, f * p - n, f * P - n];\n }\n}\nfunction gn(r, s, e, t, n) {\n if (n == 0)\n return ze(r, s, e, t);\n const i = t / n, o = e / n, l = s / n, h = r / n;\n let a = ve(i, o, l, h, !1);\n if (a !== null)\n return a;\n const u = 716e74;\n for (let c = 0; c < 2; c++)\n if (a = ve(\n i / u,\n o / (u * u),\n l / (u * u * u),\n h / (u * u * u * u),\n c != 0\n ), a !== null) {\n for (let g = 0; g < a.length; g++)\n a[g] *= u;\n return a;\n }\n return [];\n}\nfunction mt(r, s) {\n return s == 0 ? Math.abs(r) : Math.abs((r - s) / s);\n}\nfunction ve(r, s, e, t, n) {\n const i = tn(r, s, e, t, n);\n if (i !== null && i.length == 4) {\n let o = [];\n for (let l = 0; l < 2; l++) {\n const h = i[l * 2], a = i[l * 2 + 1];\n o = o.concat(ee(a, h, 1));\n }\n return o;\n }\n return null;\n}\nfunction tn(r, s, e, t, n) {\n function i(x, N, A, B) {\n const U = mt(x + A, r), T = mt(N + x * A + B, s), z = mt(N * A + x * B, e);\n return U + T + z;\n }\n function o(x, N, A, B) {\n return i(x, N, A, B) + mt(N * B, t);\n }\n const l = 9 * r * r - 24 * s, h = l >= 0 ? -2 * s / (3 * r + kt(Math.sqrt(l), r)) : -0.25 * r, a = r + 4 * h, u = s + 3 * h * (r + 2 * h), c = e + h * (2 * s + h * (3 * r + 4 * h)), g = t + h * (e + h * (s + h * (r + h)));\n let d = 0, w = 0;\n const p = 349e100;\n if (n) {\n const x = a / p, N = u / p, A = c / p, B = g / p;\n d = x * A - 4 / p * B - 1 / 3 * N * N, w = (x * A - 8 / p * B - 2 / 9 * N * N) * (1 / 3) * N - A * (A / p) - x * x * B;\n } else\n d = a * c - 4 * g - 1 / 3 * u * u, w = (a * c + 8 * g - 2 / 9 * u * u) * (1 / 3) * u - c * c - a * a * g;\n if (!isFinite(d) && isFinite(w))\n return null;\n let P = en(d, w);\n n && (P *= p);\n const f = r * 0.5, M = 1 / 6 * s + 0.5 * P, E = e - r * M, R = 2 / 3 * s - P - f * f, v = 0.5 * E / R, L = 2 * (t - M * M) / E, S = 0.5 * E / L;\n let k = 0, D = 0, m = 0;\n for (let x = 0; x < 3; x++) {\n const N = x == 1 ? S : R, A = x == 0 ? v : L, B = mt(N + f * f + 2 * M, s), U = mt(2 * (N * A + f * M), e), T = mt(N * A * A + M * M, t), z = B + U + T;\n (x == 0 || z < m) && (k = N, D = A, m = z);\n }\n const b = k, j = D;\n let y = 0, C = 0, F = 0, I = 0;\n if (b < 0) {\n const x = Math.sqrt(-b);\n if (y = f + x, C = M + x * j, F = f - x, I = M - x * j, Math.abs(I) < Math.abs(C) ? I = t / C : Math.abs(I) > Math.abs(C) && (C = t / I), Math.abs(y) != Math.abs(F)) {\n let N = null, A = null;\n if (Math.abs(y) < Math.abs(F)) {\n const U = (e - C * F) / I, T = (s - I - C) / F;\n N = [r - F, U, T], A = [F, F, F];\n } else {\n const U = (e - y * I) / C, T = (s - I - C) / y, z = r - y;\n N = [y, y, y], A = [z, U, T];\n }\n let B = 0;\n for (let U = 0; U < 3; U++) {\n const T = N[U], z = A[U];\n if (isFinite(T) && isFinite(z)) {\n const G = i(T, C, z, I);\n (U == 0 || G < B) && (y = T, F = z, B = G);\n }\n }\n }\n } else if (b == 0) {\n const x = t - M * M;\n y = f, C = M + Math.sqrt(-x), F = f, I = M - Math.sqrt(-x), Math.abs(C) > Math.abs(I) ? I = t / C : Math.abs(I) > Math.abs(C) && (C = t / I);\n } else\n return [];\n let O = o(y, C, F, I);\n for (let x = 0; x < 8 && O != 0; x++) {\n const N = C * I - t, A = C * F + y * I - e, B = C + y * F + I - s, U = y + F - r, T = y - F, z = C * C - C * (F * T + 2 * I) + I * (y * T + I);\n if (z == 0)\n break;\n const G = 1 / z, Q = I - C, Y = C * F - y * I, se = T * N + Q * A + Y * B - (C * Q + y * Y) * U, ne = (y * T + Q) * N - C * (T * A + Q * B + Y * U), ie = -T * N - Q * A - Y * B + (F * Y + I * Q) * U, re = -(F * T + Q) * N + I * (T * A + Q * B + Y * U), xt = y - G * se, At = C - G * ne, Vt = F - G * ie, Nt = I - G * re, $t = o(xt, At, Vt, Nt);\n if ($t < O)\n y = xt, C = At, F = Vt, I = Nt, O = $t;\n else\n break;\n }\n return [y, C, F, I];\n}\nfunction en(r, s) {\n const e = -0.3333333333333333 * r, t = 0.5 * s;\n let n, i = null;\n if ((Math.abs(e) >= 1e102 || Math.abs(t) >= 1e164) && (Math.abs(e) < Math.abs(t) ? i = 1 - e * (e / t) * (e / t) : i = Math.sign(e) * (t / e * (t / e) / e - 1)), i !== null && t == 0)\n r > 0 ? n = 0 : n = Math.sqrt(-r);\n else if (i !== null ? i < 0 : t * t < e * e * e) {\n const a = i !== null ? t / e / Math.sqrt(e) : t / Math.sqrt(e * e * e);\n n = -2 * Math.sqrt(e) * kt(Math.cos(Math.acos(Math.abs(a)) * (1 / 3)), a);\n } else {\n let a;\n i !== null ? Math.abs(e) < Math.abs(t) ? a = -t * (1 + Math.sqrt(i)) : a = -t - kt(Math.sqrt(Math.abs(e)) * e * Math.sqrt(i), t) : a = Math.cbrt(-t - kt(Math.sqrt(t * t - e * e * e), t));\n const u = a == 0 ? 0 : e / a;\n n = a + u;\n }\n let o = n, l = (o * o + r) * o + s;\n if (Math.abs(l) < 222045e-21 * Math.max(o * o * o, r * o, s))\n return o;\n for (let a = 0; a < 8; a++) {\n const u = 3 * o * o + r;\n if (u == 0)\n break;\n const c = o - l / u, g = (c * c + r) * c + s;\n if (g == 0)\n return c;\n if (Math.abs(g) >= Math.abs(l))\n break;\n o = c, l = g;\n }\n return o;\n}\nfunction kt(r, s) {\n const e = Math.abs(r);\n return s < 0 ? -e : e;\n}\nfunction sn(r, s = 1e-9) {\n if (r[r.length - 1] == 0)\n return sn(r.slice(0, -1), s);\n const e = new Hs([\n r.slice(0, -1).reverse().map((n) => -n / r[r.length - 1]),\n ...Array.from({ length: r.length - 2 }, (n, i) => {\n const o = new Array(r.length - 1).fill(0);\n return o[i] = 1, o;\n })\n ]), t = new Ks(e);\n return t.realEigenvalues.filter(\n (n, i) => Math.abs(t.imaginaryEigenvalues[i]) < s\n );\n}\nconst nn = (r, s, e) => [r[0] * (1 - e) + s[0] * e, r[1] * (1 - e) + s[1] * e];\nfunction rn(r) {\n const s = [];\n for (let e = 0; e < r.length - 1; e++)\n s.push([r[e], r[e + 1]]);\n return s;\n}\nfunction de(r, s) {\n const e = rn(r).map(([t, n]) => nn(t, n, s));\n return r.length === 2 ? [e] : [...de(e, s), e];\n}\nclass Et extends Ft {\n constructor(e, t, n, i) {\n super(e, t);\n q(this, \"segmentType\", \"CUBIC_BEZIER\");\n q(this, \"firstControlPoint\");\n q(this, \"lastControlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.firstControlPoint = n, this.lastControlPoint = i;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = (t) => {\n const [n, i, o, l] = [\n this.firstPoint[t],\n this.firstControlPoint[t],\n this.lastControlPoint[t],\n this.lastPoint[t]\n ], h = -n + 3 * i - 3 * o + l, a = 2 * n - 4 * i + 2 * o, u = -n + i;\n return ee(u, a, h).filter(\n (c) => c >= -this.precision && c <= 1 + this.precision\n );\n };\n this._boundingBox = ce([\n this.firstPoint,\n ...e(0).map((t) => this.paramPoint(t)),\n ...e(1).map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new Et(\n this.firstPoint,\n this.lastPoint,\n this.firstControlPoint,\n this.lastControlPoint\n );\n }\n reverse() {\n return new Et(\n this.lastPoint,\n this.firstPoint,\n this.lastControlPoint,\n this.firstControlPoint\n );\n }\n isSame(e) {\n return e.segmentType !== \"CUBIC_BEZIER\" ? !1 : W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) && W(this.firstControlPoint, e.firstControlPoint) && W(this.lastControlPoint, e.lastControlPoint);\n }\n distanceFrom(e) {\n const n = Ce((i) => Rt(this.paramPoint(i), e), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, e),\n J(this.lastPoint, e)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(e) {\n if (!this.boundingBox.contains(e))\n return !1;\n try {\n const t = this.pointToParam(e);\n return t >= -this.precision && t <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(e) {\n const t = 1 - e, n = t * t, i = e * e, o = 3 * n, l = 6 * t * e, h = 3 * i, a = X(this.firstControlPoint, this.firstPoint), u = X(this.lastControlPoint, this.firstControlPoint), c = X(this.lastPoint, this.lastControlPoint);\n return [\n o * a[0] + l * u[0] + h * c[0],\n o * a[1] + l * u[1] + h * c[1]\n ];\n }\n tangentAt(e) {\n const t = this.pointToParam(e);\n return H(this.gradientAt(t));\n }\n get tangentAtFirstPoint() {\n return H(X(this.firstControlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(X(this.lastControlPoint, this.lastPoint));\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return rt(t);\n }\n splitAtParameters(e, t = null) {\n const n = [...e];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.firstControlPoint,\n p2: this.lastControlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [\n i.p0,\n i.p1,\n i.p2,\n this.lastPoint\n ],\n h ? 1 : a\n ), c = h ? this.lastPoint : (t == null ? void 0 : t.get(o)) ?? u[0][0], g = u[1][0], d = u[2][0], w = u[1][1], p = u[2][2], P = new Et(\n i.p0,\n c,\n d,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: w,\n p2: p\n }, l === n.length - 1 && !h ? [\n P,\n new Et(\n i.p0,\n this.lastPoint,\n i.p1,\n i.p2\n )\n ] : P;\n });\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const n = t.map((o) => this.pointToParam(o)), i = new Map(\n Jt([n, t])\n );\n return this.splitAtParameters(n, i);\n }\n transform(e) {\n return new Et(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.firstControlPoint),\n e.transform(this.lastControlPoint)\n );\n }\n paramPoint(e) {\n const t = 1 - e, n = t * t, i = e * e, o = n * t, l = 3 * n * e, h = 3 * t * i, a = i * e;\n return [\n o * this.firstPoint[0] + l * this.firstControlPoint[0] + h * this.lastControlPoint[0] + a * this.lastPoint[0],\n o * this.firstPoint[1] + l * this.firstControlPoint[1] + h * this.lastControlPoint[1] + a * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const e = (t) => {\n const n = this.firstPoint[t], i = this.firstControlPoint[t], o = this.lastControlPoint[t], l = this.lastPoint[t], h = -n + 3 * i - 3 * o + l, a = 3 * n - 6 * i + 3 * o, u = -3 * n + 3 * i;\n return [n, u, a, h];\n };\n this._polynomialCoefficients = [e(0), e(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(e) {\n const [t, n, i, o] = this.polynomialCoefficients[1];\n return ze(t - e, n, i, o).filter(\n (l) => l >= -this.precision && l <= 1 + this.precision\n );\n }\n pointToParam(e) {\n const t = this.paramsAtY(e[1]);\n if (t.length === 0)\n throw new Error(\"Point is not on the curve\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - e[0]) <= this.precision, i = t.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nclass jt extends Ft {\n constructor(e, t, n, i, o, l, h = !1, {\n ignoreChecks: a = !1,\n angleUnits: u = \"deg\"\n } = {}) {\n super(e, t);\n q(this, \"segmentType\", \"ELLIPSE_ARC\");\n // I would need to do some more work to improve the precision that I can have\n // on an ellipse with intersection algorithms\n q(this, \"precision\", 1e-6);\n q(this, \"majorRadius\");\n q(this, \"minorRadius\");\n q(this, \"center\");\n q(this, \"tiltAngle\");\n q(this, \"clockwise\");\n q(this, \"_coefficients\", null);\n q(this, \"_boundingBox\");\n q(this, \"_linearExentricity\");\n q(this, \"_exentricity\");\n q(this, \"_focals\");\n q(this, \"_ellipseReferenceFrameTransform\");\n q(this, \"_reverseEllipseReferenceFrameTransform\");\n q(this, \"_rotateFromEllipseReferenceFrame\");\n q(this, \"_firstAngle\");\n q(this, \"_lastAngle\");\n q(this, \"_deltaAngle\");\n this.center = n;\n const c = i >= o;\n this.majorRadius = c ? i : o, this.minorRadius = c ? o : i;\n const g = u === \"deg\" ? l * fe : l;\n if (this.tiltAngle = gt(\n c ? g : g + Math.PI / 2\n ), this.clockwise = h, !a) {\n if (W(e, t))\n throw new Error(\"Invalid arc, cannot be a full circle\");\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `First point ${Z(\n e\n )} not on the ellipse defined by ${this.info}`\n );\n if (!this.isPointOnEllipse(t))\n throw new Error(\n `Last point ${Z(t)} 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 [e, t] = this.center, n = this.majorRadius * this.majorRadius, i = this.minorRadius * this.minorRadius, o = Math.cos(this.tiltAngle), l = Math.sin(this.tiltAngle), h = n * l * l + i * o * o, a = 2 * (i - n) * l * o, u = n * o * o + i * l * l;\n this._coefficients = {\n x2: h,\n xy: a,\n y2: u,\n x: -2 * h * e - a * t,\n y: -2 * u * t - a * e,\n c: h * e * e + a * e * t + u * t * t - n * i\n };\n }\n return this._coefficients;\n }\n get info() {\n return `ELLIPSE_ARC(${Z(this.firstPoint)}, ${Z(\n this.lastPoint\n )}, ${Z(this.center)}, ${this.majorRadius}, ${this.minorRadius}, ${this.tiltAngle * Ue}, ${this.clockwise ? \"CW\" : \"CCW\"})`;\n }\n reverse() {\n return new jt(\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 jt(\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 e = Math.tan(this.tiltAngle), t = this.minorRadius / this.majorRadius, n = -Math.atan(t * e), i = Math.atan(t / e);\n return [n, Math.PI + n, i, Math.PI + i].map((l) => this.thetaToParam(l)).filter((l) => this.isValidParameter(l)).map((l) => this.paramPoint(l));\n }\n get boundingBox() {\n if (this._boundingBox === void 0) {\n const e = this.computeEllipseExtrema(), t = [\n this.firstPoint,\n this.lastPoint,\n ...e\n ];\n this._boundingBox = ce(t).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 e = this.majorAxis;\n this._focals = [\n ut(this.center, wt(e, this.linearExentricity)),\n ut(this.center, wt(e, -this.linearExentricity))\n ];\n }\n return this._focals;\n }\n get majorAxis() {\n return Tt(1, this.tiltAngle);\n }\n paramPoint(e) {\n const t = this.firstAngle + e * this.deltaAngle * (this.clockwise ? -1 : 1);\n return this.reverseEllipseReferenceFrameTransform.transform([\n this.majorRadius * Math.cos(t),\n this.minorRadius * Math.sin(t)\n ]);\n }\n pointToParam(e) {\n if (!this.isPointOnEllipse(e))\n throw new Error(\n `Point ${Z(e)} not on the ellipse defined by ${this.repr}`\n );\n const t = this.thetaToParam(this.pointTheta(e));\n if (!this.isValidParameter(t))\n throw new Error(\n `Point ${Z(e)} is not on segment ${this.repr}`\n );\n return t;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n isValidParameter(e) {\n return 1 - e >= -this.precision && e >= -this.precision;\n }\n isSame(e) {\n return W(this.center, e.center) && Math.abs(this.majorRadius - e.majorRadius) < this.precision && Math.abs(this.minorRadius - e.minorRadius) < this.precision && (Math.abs(this.tiltAngle - e.tiltAngle) < this.precision || Math.abs(Math.abs(this.tiltAngle - e.tiltAngle) - Math.PI) < this.precision) && (W(this.firstPoint, e.firstPoint) && this.clockwise === e.clockwise || W(this.firstPoint, e.lastPoint) && this.clockwise !== e.clockwise);\n }\n pointTheta(e) {\n const t = this.ellipseReferenceFrameTransform.transform(e), n = Math.atan2(\n t[1] / this.minorRadius,\n t[0] / this.majorRadius\n );\n return gt(n);\n }\n thetaToParam(e) {\n return Xt(this.firstAngle, gt(e), this.clockwise) / this.deltaAngle;\n }\n isPointOnEllipse(e) {\n const [t, n] = this.focals, i = J(e, t), o = J(e, n);\n return Math.abs(2 * this.majorRadius - i - o) < this.precision;\n }\n isOnSegment(e) {\n return this.isPointOnEllipse(e) ? this.isValidParameter(this.thetaToParam(this.pointTheta(e))) : !1;\n }\n distanceFrom(e) {\n let t;\n if (W(e, this.center) ? t = ut(\n this.center,\n wt(rt(this.majorAxis), this.minorRadius)\n ) : t = this.reverseEllipseReferenceFrameTransform.transform(\n ln(\n this.majorRadius,\n this.minorRadius,\n this.ellipseReferenceFrameTransform.transform(e)\n )\n ), this.isValidParameter(this.thetaToParam(this.pointTheta(e))))\n return J(e, t);\n if (Qe(e, this.majorAxis, this.center)) {\n const n = gt(\n 2 * Math.PI - this.pointTheta(e)\n ), i = this.thetaToParam(n);\n if (this.isValidParameter(i))\n return J(e, this.paramPoint(i));\n }\n return Math.min(\n J(e, this.firstPoint),\n J(e, this.lastPoint)\n );\n }\n get ellipseReferenceFrameTransform() {\n return this._ellipseReferenceFrameTransform === void 0 && (this._ellipseReferenceFrameTransform = new et().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 et().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 et().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 = Xt(\n this.firstAngle,\n this.lastAngle,\n this.clockwise\n )), this._deltaAngle;\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return this.clockwise ? rt(t) : Wt(t);\n }\n gradientAt(e) {\n const t = this.firstAngle + e * this.deltaAngle * (this.clockwise ? -1 : 1), n = -this.majorRadius * this.deltaAngle * Math.sin(t), i = this.minorRadius * this.deltaAngle * Math.cos(t), o = this.clockwise ? [-n, -i] : [n, i];\n return this.rotateFromEllipseReferenceFrame.transform(o);\n }\n tangentAt(e) {\n const t = this.pointTheta(e), n = -this.majorRadius * Math.sin(t), i = this.minorRadius * Math.cos(t), o = this.clockwise ? [-n, -i] : [n, i];\n return H(this.rotateFromEllipseReferenceFrame.transform(o));\n }\n get tangentAtFirstPoint() {\n const e = -this.majorRadius * Math.sin(this.firstAngle), t = this.minorRadius * Math.cos(this.firstAngle), n = this.clockwise ? [-e, -t] : [e, t];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n get tangentAtLastPoint() {\n const e = -this.majorRadius * Math.sin(this.lastAngle), t = this.minorRadius * Math.cos(this.lastAngle), n = this.clockwise ? [-e, -t] : [e, t];\n return H(this.rotateFromEllipseReferenceFrame.transform(n));\n }\n transform(e) {\n const t = e.transformAngle(this.tiltAngle), n = e.scaleFactor();\n return new jt(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.center),\n this.majorRadius * n,\n this.minorRadius * n,\n t,\n e.keepsOrientation() ? this.clockwise : !this.clockwise,\n { angleUnits: \"rad\" }\n );\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const i = [0, 1, ...t.map((h) => this.pointToParam(h))], o = new Map(\n Jt([i, [this.firstPoint, this.lastPoint, ...t]])\n );\n i.sort((h, a) => h - a);\n let l = null;\n return i.flatMap((h, a) => {\n if (a === i.length - 1) return [];\n const u = i[a + 1];\n if (u - h < this.precision)\n return l === null && (l = h), [];\n const c = l === null ? h : l, g = new jt(\n o.get(c) || this.paramPoint(c),\n o.get(u) || this.paramPoint(u),\n this.center,\n this.majorRadius,\n this.minorRadius,\n this.tiltAngle,\n this.clockwise,\n { angleUnits: \"rad\" }\n );\n return l = null, g;\n });\n }\n}\nfunction wn(r, s, e, t, n, i, o) {\n const { center: l, rx: h, ry: a } = on(\n r,\n s,\n e,\n t,\n n * fe,\n !i,\n o\n );\n return Math.abs(h - a) < 1e-9 ? new at(r, s, l, o) : new jt(r, s, l, h, a, n, o);\n}\nfunction on([r, s], [e, t], n, i, o, l, h) {\n if (n < 0 && (n = -n), i < 0 && (i = -i), n == 0 || i == 0)\n throw Error(\"rx and ry can not be 0\");\n const a = Math.sin(o), u = Math.cos(o), c = (r - e) / 2, g = (s - t) / 2, d = (r + e) / 2, w = (s + t) / 2, p = u * c + a * g, P = u * g - a * c, f = p * p / (n * n) + P * P / (i * i);\n f > 1 && (n = n * Math.sqrt(f), i = i * Math.sqrt(f));\n const M = n * i, E = n * P, R = i * p, v = E * E + R * R;\n if (!v)\n throw Error(\"start point can not be same as end point\");\n let L = Math.sqrt(Math.abs((M * M - v) / v));\n l == h && (L = -L);\n const S = L * E / i, k = -L * R / n, D = u * S - a * k + d, m = a * S + u * k + w;\n return {\n center: [D, m],\n rx: n,\n ry: i\n };\n}\nfunction ln(r, s, e) {\n const t = Math.abs(e[0]), n = Math.abs(e[1]);\n let i = 0.707, o = 0.707;\n const l = r, h = s;\n for (let a = 0; a < 3; a++) {\n const u = l * i, c = h * o, g = (l * l - h * h) * i ** 3 / l, d = (h * h - l * l) * o ** 3 / h, w = u - g, p = c - d, P = t - g, f = n - d, M = Math.hypot(w, p), E = Math.hypot(P, f);\n i = Math.min(1, Math.max(0, (P * M / E + g) / l)), o = Math.min(1, Math.max(0, (f * M / E + d) / h));\n const R = Math.hypot(i, o);\n i /= R, o /= R;\n }\n return [l * i * Math.sign(e[0]), h * o * Math.sign(e[1])];\n}\nclass _t extends Ft {\n constructor(e, t, n) {\n super(e, t);\n q(this, \"segmentType\", \"QUADRATIC_BEZIER\");\n q(this, \"controlPoint\");\n q(this, \"_boundingBox\", null);\n q(this, \"_polynomialCoefficients\", null);\n this.controlPoint = n;\n }\n get midPoint() {\n return this.paramPoint(0.5);\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n const e = (t) => {\n const [n, i, o] = [\n this.firstPoint[t],\n this.controlPoint[t],\n this.lastPoint[t]\n ], l = n - 2 * i + o;\n if (!l)\n return [];\n const h = (n - i) / l;\n return h >= -this.precision && h <= 1 + this.precision ? [h] : [];\n };\n this._boundingBox = ce([\n this.firstPoint,\n // There is either one or zero extrema in each direction\n ...e(0).map((t) => this.paramPoint(t)),\n ...e(1).map((t) => this.paramPoint(t)),\n this.lastPoint\n ]).grow(this.precision);\n }\n return this._boundingBox;\n }\n clone() {\n return new _t(\n this.firstPoint,\n this.lastPoint,\n this.controlPoint\n );\n }\n reverse() {\n return new _t(\n this.lastPoint,\n this.firstPoint,\n this.controlPoint\n );\n }\n isSame(e) {\n return e.segmentType !== \"QUADRATIC_BEZIER\" ? !1 : W(this.firstPoint, e.firstPoint) && W(this.lastPoint, e.lastPoint) && W(this.controlPoint, e.controlPoint);\n }\n distanceFrom(e) {\n const n = Ce((i) => Rt(this.paramPoint(i), e), this.precision);\n return n.argMin < -this.precision || n.argMin > 1 + this.precision ? Math.min(\n J(this.firstPoint, e),\n J(this.lastPoint, e)\n ) : Math.sqrt(n.fMin);\n }\n isOnSegment(e) {\n if (!this.boundingBox.contains(e))\n return !1;\n try {\n const t = this.pointToParam(e);\n return t >= -this.precision && t <= 1 + this.precision;\n } catch {\n return !1;\n }\n }\n gradientAt(e) {\n const t = (n) => {\n const i = this.firstPoint[n], o = this.controlPoint[n], l = this.lastPoint[n];\n return 2 * (e * (i - 2 * o + l) - i + o);\n };\n return [t(0), t(1)];\n }\n tangentAt(e) {\n const t = this.pointToParam(e);\n return H(this.gradientAt(t));\n }\n get tangentAtFirstPoint() {\n return H(X(this.controlPoint, this.firstPoint));\n }\n get tangentAtLastPoint() {\n return H(X(this.controlPoint, this.lastPoint));\n }\n normalAt(e) {\n const t = this.tangentAt(e);\n return rt(t);\n }\n splitAtParameters(e, t = null) {\n const n = [...e];\n n.sort((o, l) => o - l);\n let i = {\n originalParam: 0,\n param: 0,\n p0: this.firstPoint,\n p1: this.controlPoint\n };\n return n.flatMap((o, l) => {\n if (o - i.originalParam < this.precision)\n return [];\n let h = !1;\n o > 1 - this.precision && (h = !0);\n const a = (o - i.originalParam) / (1 - i.originalParam), u = de(\n [i.p0, i.p1, this.lastPoint],\n h ? 1 : a\n ), c = h ? this.lastPoint : (t == null ? void 0 : t.get(o)) ?? u[0][0], g = u[1][0], d = u[1][1], w = new _t(\n i.p0,\n c,\n g\n );\n return i = {\n param: a,\n originalParam: o,\n p0: c,\n p1: d\n }, l === n.length - 1 && !h ? [\n w,\n new _t(\n i.p0,\n this.lastPoint,\n i.p1\n )\n ] : w;\n });\n }\n splitAt(e) {\n let t;\n if (Array.isArray(e) && e.length === 0)\n return [this];\n Array.isArray(e[0]) ? t = e : t = [e];\n const n = t.map((o) => this.pointToParam(o)), i = new Map(\n Jt([n, t])\n );\n return this.splitAtParameters(n, i);\n }\n transform(e) {\n return new _t(\n e.transform(this.firstPoint),\n e.transform(this.lastPoint),\n e.transform(this.controlPoint)\n );\n }\n paramPoint(e) {\n const t = 1 - e, n = t * t, i = 2 * t * e, o = e * e;\n return [\n n * this.firstPoint[0] + i * this.controlPoint[0] + o * this.lastPoint[0],\n n * this.firstPoint[1] + i * this.controlPoint[1] + o * this.lastPoint[1]\n ];\n }\n get polynomialCoefficients() {\n if (this._polynomialCoefficients === null) {\n const e = (t) => {\n const n = this.firstPoint[t], i = this.controlPoint[t], o = this.lastPoint[t], l = n - 2 * i + o, h = 2 * (i - n);\n return [n, h, l];\n };\n this._polynomialCoefficients = [e(0), e(1)];\n }\n return this._polynomialCoefficients;\n }\n paramsAtY(e) {\n const [t, n, i] = this.polynomialCoefficients[1];\n return ee(t - e, n, i).filter(\n (o) => o >= -this.precision && o <= 1 + this.precision\n );\n }\n pointToParam(e) {\n const t = this.paramsAtY(e[1]);\n if (t.length === 0)\n throw new Error(\"Point is not on the curve!\");\n const n = (o) => Math.abs(this.paramPoint(o)[0] - e[0]) <= this.precision, i = t.find(n);\n if (i === void 0)\n throw new Error(\"Point is not on the curve\");\n return i;\n }\n}\nexport {\n at as A,\n ft as B,\n Et as C,\n fe as D,\n jt as E,\n Ie as F,\n Z as G,\n lt as L,\n _t as Q,\n Ue as R,\n et as T,\n ut as a,\n Wt as b,\n St as c,\n W as d,\n cn as e,\n J as f,\n wn as g,\n We as h,\n X as i,\n Tt as j,\n Ye as k,\n me as l,\n Rt as m,\n H as n,\n Pe as o,\n rt as p,\n sn as q,\n Te as r,\n wt as s,\n fn as t,\n gn as u,\n It as v,\n an as w,\n un as x,\n Ze as y,\n Jt as z\n};\n//# sourceMappingURL=QuadraticBezier-BzVqiExF.js.map\n","var tn = Object.defineProperty;\nvar nn = (t, n, e) => n in t ? tn(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;\nvar C = (t, n, e) => nn(t, typeof n != \"symbol\" ? n + \"\" : n, e);\nimport { i as k, o as en, f as Ot, a as q, s as V, n as sn, p as Tt, r as U, A as S, d as g, q as Lt, E as M, T as on, u as rn, Q as A, v as H, C as I, c as ln, w as cn, L as y, x as zt, y as lt, z as N, F as un, l as an, m as fn, G as dt, B as hn } from \"./QuadraticBezier-BzVqiExF.js\";\nfunction pn(t, n) {\n const e = k(n, t.firstPoint), s = en(e, t.V) / t.squareLength;\n return t.paramPoint(s);\n}\nfunction J(t, n, e) {\n const s = e || t.precision, i = pn(t, n.center), o = Ot(i, n.center);\n if (o > n.radius + s) return [];\n if (Math.abs(o - n.radius) < s) {\n const u = i;\n return t.isOnSegment(u) && n.isOnSegment(u) ? [u] : [];\n }\n const r = [], l = Math.sqrt(\n n.radius * n.radius - o * o\n ), c = t.tangentAtFirstPoint, a = q(i, V(c, l));\n t.isOnSegment(a) && n.isOnSegment(a) && r.push(a);\n const f = q(i, V(c, -l));\n return t.isOnSegment(f) && n.isOnSegment(f) && r.push(f), r;\n}\nconst dn = (t) => {\n const { firstPoint: n, lastPoint: e, center: s, clockwise: i } = t;\n return new S(e, n, s, i, {\n ignoreChecks: !0\n });\n}, mn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.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, i) => t.pointToParam(s) - t.pointToParam(i));\n if (e.length === 0) return [];\n if (e.length === 1) return [];\n if (e.length === 2)\n return t.isSame(dn(n)) ? [] : [new S(e[0], e[1], t.center, t.clockwise)];\n if (e.length === 3) {\n const s = g(e[0], n.lastPoint) || g(e[0], n.firstPoint) ? 1 : 0;\n return [\n new S(\n e[0 + s],\n e[1 + s],\n t.center,\n t.clockwise\n )\n ];\n } else if (e.length === 4)\n return [\n new S(e[0], e[1], t.center, t.clockwise),\n new S(e[2], e[3], t.center, t.clockwise)\n ];\n throw new Error(\"Bug in the arc arc overlap algorithm\");\n};\nfunction qt(t, n, e = !1, s) {\n const i = s || t.precision, o = Ot(t.center, n.center), r = t.radius + n.radius;\n if (o > r + i)\n return [];\n const l = Math.abs(t.radius - n.radius);\n if (o < l - i)\n return [];\n if (o < i)\n return l > i ? [] : e ? mn(t, n) : [];\n const c = sn(k(n.center, t.center)), a = o > r - i;\n if (\n // circles are outside each other\n a || // circles are inside each other\n Math.abs(o - l) < i\n ) {\n const w = a || t.radius > n.radius ? 1 : -1, x = q(\n t.center,\n V(c, w * t.radius)\n );\n return t.isOnSegment(x) && n.isOnSegment(x) ? [x] : [];\n }\n const f = t.radius * t.radius / (2 * o) - n.radius * n.radius / (2 * o) + o / 2, u = q(\n t.center,\n V(c, f)\n ), h = Math.sqrt(\n t.radius * t.radius - f * f\n ), p = Tt(c), d = q(u, V(p, h)), m = q(u, V(p, -h)), P = [];\n return t.isOnSegment(d) && n.isOnSegment(d) && P.push(d), t.isOnSegment(m) && n.isOnSegment(m) && P.push(m), P;\n}\nfunction et(t, n, e = 1e-9) {\n const s = t.transform(n.ellipseReferenceFrameTransform), i = s.slope, o = s.yIntercept, r = n.majorRadius * n.majorRadius, l = n.minorRadius * n.minorRadius, c = n.majorRadius * n.minorRadius, a = s.slope * s.slope, f = s.yIntercept * s.yIntercept, u = (w) => w.map(\n (x) => n.reverseEllipseReferenceFrameTransform.transform(x)\n ).filter((x) => t.isOnSegment(x) && n.isOnSegment(x));\n if (!Number.isFinite(i)) {\n const w = s.firstPoint[0];\n if (Math.abs(w) - n.majorRadius > e) return [];\n if (Math.abs(Math.abs(w) - n.majorRadius) < e)\n return u([[w, 0]]);\n const x = n.minorRadius * Math.sqrt(1 - w * w / r), F = [w, x], b = [w, -x];\n return u([F, b]);\n }\n const h = r * a + l - f;\n if (h < -e)\n return [];\n const p = r * a + l;\n if (Math.abs(h) < e) {\n const w = -(r * i * o) / p, x = l * o / p;\n return u([[w, x]]);\n }\n const d = Math.sqrt(h), m = [\n -(r * i * o + c * d) / p,\n (l * o - c * i * d) / p\n ], P = [\n -(r * i * o - c * d) / p,\n (l * o + c * i * d) / p\n ];\n return u([m, P]);\n}\nfunction Dt(t, n) {\n const e = Math.max(t.precision, n.precision), s = t.coefficients, i = s.x2, o = s.xy, r = s.y2, l = s.x, c = s.y, a = s.c, f = n.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = {\n z0: a * i * d * d + i * i * P * P - l * i * d * P + u * u * a * a - 2 * i * P * u * a - l * d * u * a + u * l * l * P,\n z1: m * l * l * u - P * d * i * o - 2 * i * P * u * c - a * u * h * l + 2 * d * h * i * a + 2 * m * P * i * i + d * d * i * c - m * d * i * l - 2 * i * m * u * a - a * u * d * o + 2 * a * c * u * u - P * h * i * l - c * u * d * l + 2 * P * o * u * l,\n z2: m * m * i * i + 2 * p * P * i * i - c * u * d * o + P * u * o * o - c * u * h * l - P * h * i * o - 2 * i * m * u * c + 2 * d * h * i * c - p * d * i * l - 2 * i * p * u * a + h * h * i * a + 2 * m * o * u * l + c * c * u * u - r * u * d * l - m * h * i * l + 2 * a * r * u * u - a * u * h * o + p * l * l * u + d * d * i * r - m * d * i * o - 2 * i * P * u * r,\n z3: -2 * i * u * r * m + m * u * o * o + 2 * p * o * u * l - r * u * h * l + h * h * i * c - m * h * i * o - 2 * i * p * u * c - c * u * h * o - p * h * i * l + 2 * m * p * i * i + 2 * c * r * u * u - r * u * d * o + 2 * d * h * i * r - p * d * i * o,\n z4: i * i * p * p - 2 * i * p * u * r + u * u * r * r - o * i * h * p - o * h * u * r + o * o * u * p + r * i * h * h\n }, F = Lt(\n [w.z0, w.z1, w.z2, w.z3, w.z4],\n e\n ).flatMap((b) => {\n const R = i * h * b + i * d - u * o * b - u * l;\n if (R)\n return [[-(i * P + i * p * b * b - u * r * b * b + i * m * b - u * c * b - u * a) / R, b]];\n const T = o * b + l, L = -T / (2 * i), j = r * b * b + c * b + a, z = T * T / (4 * i * i) - j / i;\n if (Math.abs(z) < e)\n return [[L, b]];\n if (z > 0) {\n const $ = Math.sqrt(z);\n return [[L + $, b], [L - $, b]];\n }\n return [];\n });\n return U(F, e);\n}\nfunction mt(t, n) {\n return Dt(t, n).filter((s) => t.isOnSegment(s) && n.isOnSegment(s));\n}\nconst gn = (t) => {\n const {\n firstPoint: n,\n lastPoint: e,\n center: s,\n majorRadius: i,\n minorRadius: o,\n tiltAngle: r,\n clockwise: l\n } = t;\n return new M(\n e,\n n,\n s,\n i,\n o,\n r,\n l,\n {\n ignoreChecks: !0,\n angleUnits: \"rad\"\n }\n );\n}, Pn = (t, n) => {\n if (t.isSame(n))\n return [t];\n const e = (i, o) => new M(\n i,\n o,\n t.center,\n t.majorRadius,\n t.minorRadius,\n t.tiltAngle,\n t.clockwise,\n { ignoreChecks: !0, angleUnits: \"rad\" }\n ), s = U(\n [\n n.isOnSegment(t.firstPoint) ? t.firstPoint : null,\n n.isOnSegment(t.lastPoint) ? t.lastPoint : null,\n t.isOnSegment(n.firstPoint) ? n.firstPoint : null,\n t.isOnSegment(n.lastPoint) ? n.lastPoint : null\n ].filter((i) => i !== 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((i, o) => t.pointToParam(i) - t.pointToParam(o));\n if (s.length === 0) return [];\n if (s.length === 1) return [];\n if (s.length === 2)\n return t.isSame(gn(n)) ? [] : [e(s[0], s[1])];\n if (s.length === 3) {\n const i = g(s[0], n.lastPoint) || g(s[0], n.firstPoint) ? 1 : 0;\n return [e(s[0 + i], s[1 + i])];\n } else if (s.length === 4)\n return [e(s[0], s[1]), e(s[2], s[3])];\n throw new Error(\"Bug in the ellipse arc ellipse arc overlap algorithm\");\n};\nfunction wn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n return g(t.center, n.center) && Math.abs(t.majorRadius - n.majorRadius) < s && Math.abs(t.minorRadius - n.minorRadius) < s && (Math.abs(t.tiltAngle - n.tiltAngle) < s || Math.abs(Math.abs(t.tiltAngle - n.tiltAngle) - Math.PI) < s) ? e ? Pn(t, n) : [] : Dt(t, n).filter((r) => t.isOnSegment(r) && n.isOnSegment(r));\n}\nfunction gt(t, n) {\n const [e, s] = t.firstPoint, [i, o] = t.lastPoint, r = new on().rotate(-Math.atan2(o - s, i - e)).translate(-e, -s), l = r.clone().inverse(), c = n.transform(r);\n return c.paramsAtY(0).map((a) => c.paramPoint(a)).map((a) => l.transform(a)).filter((a) => t.isOnSegment(a));\n}\nconst xn = (t, n = 1e-9) => {\n let e = t;\n return Math.abs(t) < n && (e = 0), e.toFixed(-Math.log10(n));\n};\nfunction Rt(t, n = 1e-9) {\n return Array.from(\n new Map(t.map((e) => [xn(e, n), e])).values()\n );\n}\nconst Sn = (t, n) => {\n const [[e, s, i, o], [r, l, c, a]] = n.polynomialCoefficients, f = t.coefficients, u = f.x2, h = f.xy, p = f.y2, d = f.x, m = f.y, P = f.c, w = e * e, x = s * s, F = i * i, b = o * o, R = r * r, T = l * l, L = c * c, j = a * a, z = P + d * e + u * w + m * r + h * e * r + p * R, $ = d * s + 2 * u * e * s + h * s * r + m * l + h * e * l + 2 * p * r * l, Qt = u * x + d * i + 2 * u * e * i + h * i * r + h * s * l + p * T + m * c + h * e * c + 2 * p * r * c, Wt = 2 * u * s * i + d * o + 2 * u * e * o + h * o * r + h * i * l + h * s * c + 2 * p * l * c + m * a + h * e * a + 2 * p * r * a, Jt = u * F + 2 * u * s * o + h * o * l + h * i * c + p * L + h * s * a + 2 * p * l * a, Kt = 2 * u * i * o + h * o * c + h * i * a + 2 * p * c * a, Zt = u * b + h * o * a + p * j;\n return [z, $, Qt, Wt, Jt, Kt, Zt];\n};\nfunction Pt(t, n) {\n const e = Math.max(t.precision, n.precision), s = Sn(t, n), i = Lt(s, e).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nconst yn = (t, n) => {\n const [[e, s, i], [o, r, l]] = n.polynomialCoefficients, c = t.coefficients, a = c.x2, f = c.xy, u = c.y2, h = c.x, p = c.y, d = c.c, m = e * e, P = s * s, w = i * i, x = o * o, F = r * r, b = l * l, R = a * m + f * e * o + u * x + h * e + p * o + d, T = 2 * a * e * s + f * e * r + f * s * o + 2 * u * o * r + h * s + p * r, L = 2 * a * e * i + a * P + f * e * l + f * s * r + f * i * o + 2 * u * o * l + u * F + h * i + p * l, j = 2 * a * s * i + f * s * l + f * i * r + 2 * u * r * l, z = a * w + f * i * l + u * b;\n return [R, T, L, j, z];\n};\nfunction wt(t, n) {\n const e = Math.max(t.precision, n.precision), s = yn(t, n), i = rn(...s).filter((o) => o >= -n.precision && o <= 1 + n.precision);\n return Rt(i, e).map((o) => n.paramPoint(o)).filter((o) => t.isOnSegment(o));\n}\nfunction E(t, { firstPoint: n, lastPoint: e }, s = 1e-9) {\n const i = k(e, n);\n return Math.abs(i[0]) < s ? i[1] > 0 ? n[0] - t[0] : t[0] - n[0] : Math.abs(i[1]) < s ? i[0] > 0 ? t[1] - n[1] : n[1] - t[1] : ln(i, k(t, n)) / cn(i);\n}\nclass ct {\n constructor(n, e, s, i) {\n this.firstPoint = n, this.lastPoint = e, this.negativeThickness = s, this.positiveThickness = i;\n }\n get width() {\n return this.positiveThickness - this.negativeThickness;\n }\n}\nconst bn = 3 / 4, Cn = 4 / 9;\nfunction Mn(t) {\n const n = E(t.firstControlPoint, t), e = E(t.lastControlPoint, t), s = n * e > 0 ? bn : Cn;\n return new ct(\n t.firstPoint,\n t.lastPoint,\n s * Math.min(0, n, e),\n s * Math.max(0, n, e)\n );\n}\nfunction An(t) {\n const n = E(t.controlPoint, t);\n return new ct(\n t.firstPoint,\n t.lastPoint,\n Math.min(0, n / 2),\n Math.max(0, n / 2)\n );\n}\nfunction In(t) {\n if (t instanceof I)\n return Mn(t);\n if (t instanceof A)\n return An(t);\n throw new Error(\"Not implemented\");\n}\nfunction En(t) {\n const n = t.paramPoint(0.5), e = Tt(k(n, t.firstPoint)), s = q(n, e), i = {\n firstPoint: n,\n lastPoint: s\n }, o = [\n E(t.firstPoint, i),\n E(t.lastPoint, i)\n ];\n return t instanceof I ? o.push(\n E(t.firstControlPoint, i),\n E(t.lastControlPoint, i)\n ) : t instanceof A && o.push(E(t.controlPoint, i)), new ct(\n n,\n s,\n Math.min(...o),\n Math.max(...o)\n );\n}\nfunction xt(t, n) {\n const e = [];\n for (let s = 1; s < t.length; s++) {\n const i = t[s];\n if (i[1] === n) {\n e.push(i[0]);\n continue;\n }\n const o = t[s - 1], r = n - o[1], l = n - i[1];\n if (r * l < 0) {\n e.push(\n o[0] + (n - o[1]) * (i[0] - o[0]) / (i[1] - o[1])\n );\n continue;\n }\n }\n return e;\n}\nclass Y {\n constructor(n, e) {\n this.from = n, this.to = e;\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(n) {\n return this.from === \"start\" ? this.to === \"end\" ? n : n.splitAtParameters([this.to])[0] : this.to === \"end\" ? n.splitAtParameters([this.from])[1] : n.splitAtParameters([this.from, this.to])[1];\n }\n}\nfunction Fn(t, n) {\n if (t instanceof I)\n return new Bn([\n E(t.firstPoint, n),\n E(t.firstControlPoint, n),\n E(t.lastControlPoint, n),\n E(t.lastPoint, n)\n ]);\n if (t instanceof A)\n return new vn([\n E(t.firstPoint, n),\n E(t.controlPoint, n),\n E(t.lastPoint, n)\n ]);\n throw new Error(\"Not implemented\");\n}\nclass vn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i] = n, o = [0, e], r = [1 / 2, s], l = [1, i], c = i - e, a = e;\n s - (c * (1 / 2) + a) > 0 ? (this.topHull = [o, r, l], this.bottomHull = [o, l]) : (this.topHull = [o, l], this.bottomHull = [o, r, l]);\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[2];\n }\n}\nclass Bn {\n constructor(n) {\n C(this, \"topHull\", []);\n C(this, \"bottomHull\", []);\n this.distances = n;\n const [e, s, i, o] = n, r = [0, e], l = [1 / 3, s], c = [2 / 3, i], a = [1, o], f = o - e, u = e, h = s - (f * (1 / 3) + u), p = i - (f * (2 / 3) + u);\n let d = null, m = null;\n if (h * p < 0)\n d = [r, l, a], m = [r, c, a];\n else {\n const w = h / p;\n w >= 2 ? (d = [r, l, a], m = [r, a]) : w <= 0.5 ? (d = [r, c, a], m = [r, a]) : (d = [r, l, c, a], m = [r, a]);\n }\n h < 0 && ([d, m] = [m, d]), this.topHull = d, this.bottomHull = m;\n }\n get startDistance() {\n return this.distances[0];\n }\n get endDistance() {\n return this.distances[3];\n }\n}\nfunction St(t, n) {\n const e = Fn(n, t), s = xt(\n e.topHull,\n t.negativeThickness\n ), i = xt(\n e.bottomHull,\n t.positiveThickness\n ), o = e.endDistance >= t.negativeThickness && e.endDistance <= t.positiveThickness;\n if (!s.length && !i.length)\n return o ? new Y(\"start\", \"end\") : null;\n if (s.length === 1 && i.length === 1)\n return new Y(s[0], i[0]);\n if (s.length === 2 && i.length === 2)\n throw new Error(\n \"Bug in the clipping algorithm, unexpected number of crossing points\"\n );\n const r = s.length ? s : i;\n return r.length === 2 ? new Y(r[0], r[1]) : o ? new Y(r[0], \"end\") : new Y(\"start\", r[0]);\n}\nfunction yt(t, n) {\n const e = In(t), s = St(e, n);\n if (!s)\n return null;\n const i = En(t), o = St(\n i,\n n\n );\n return o ? s.size > o.size ? o.clipCurve(n) : s.clipCurve(n) : null;\n}\nconst W = (t) => t instanceof A ? H(k(t.controlPoint, t.firstPoint)) + H(k(t.controlPoint, t.lastPoint)) : H(k(t.firstControlPoint, t.firstPoint)) + H(k(t.lastControlPoint, t.firstControlPoint)) + H(k(t.lastControlPoint, t.lastPoint));\nfunction D(t, n, e = 1e-9, { maxIterations: s = 100 } = {}) {\n const i = Math.max(e * e, Number.EPSILON * 10);\n let o = t, r = n, l = W(o), c = W(r);\n for (let a = 0; a < s; a++) {\n const f = l > i ? yt(r, o) : o;\n if (!f) return [];\n const u = W(f), h = c > i ? yt(f, r) : r;\n if (!h) return [];\n const p = W(h);\n if (u <= i && p <= i)\n return [\n f.boundingBox.intersection(h.boundingBox).center\n ];\n if (g(f.firstPoint, f.lastPoint) && h.isOnSegment(f.firstPoint))\n return [f.firstPoint];\n if (g(h.firstPoint, h.lastPoint) && f.isOnSegment(h.firstPoint))\n return [h.firstPoint];\n if (u > 0.8 * l && p > 0.8 * c)\n if (u / l > p / c) {\n const [d, m] = f.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(d, h, e, {\n maxIterations: s - a\n }),\n ...D(m, h, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n } else {\n const [d, m] = h.splitAtParameters([\n 0.5\n ]);\n return U(\n [\n ...D(f, d, e, {\n maxIterations: s - a\n }),\n ...D(f, m, e, {\n maxIterations: s - a\n })\n ],\n e\n );\n }\n o = f, r = h, l = u, c = p;\n }\n throw new Error(\"Bézier clip: Maximum number of iterations reached\");\n}\nfunction kn(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction _n(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = kn(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction On(t, n) {\n const e = [];\n if ([\n [t.firstPoint, n],\n [t.lastPoint, n],\n [n.firstPoint, t],\n [n.lastPoint, t]\n ].forEach(([i, o]) => {\n o.isOnSegment(i) && e.push(i);\n }), e.length < 2)\n return null;\n if (e.length === 2)\n return [t.splitAt(e)[1]];\n if (e.length === 3)\n return g(e[0], t.firstPoint) && g(e[1], t.lastPoint) ? [t] : [n];\n if (e.length === 4)\n return [t];\n}\nfunction Tn(t, n, e = !1) {\n const s = Math.max(t.precision, n.precision);\n if (e) {\n const i = On(t, n);\n if (i)\n return i;\n }\n return D(t, n, s);\n}\nfunction ae(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !1,\n e\n );\n return s === null ? [] : [s];\n }\n if (t instanceof y && n instanceof S)\n return J(t, n, e);\n if (t instanceof S && n instanceof y)\n return J(n, t, e);\n if (t instanceof S && n instanceof S)\n return qt(t, n, !1, e);\n throw new Error(\"Not implemented\");\n}\nfunction K(t, n, e) {\n if (t instanceof y && n instanceof y) {\n const s = zt(\n t,\n n,\n !0,\n e\n );\n return s === null ? { intersections: [], overlaps: [], count: 0 } : s instanceof y ? { intersections: [], overlaps: [s], count: 1 } : { intersections: [s], overlaps: [], count: 1 };\n }\n if (!t.boundingBox.overlaps(n.boundingBox))\n return { intersections: [], overlaps: [], count: 0 };\n if (t instanceof y && n instanceof S) {\n const s = J(t, n, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof y) {\n const s = J(n, t, e);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof S) {\n const s = qt(\n t,\n n,\n !0,\n e\n );\n return s.length ? s[0] instanceof S ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && n instanceof M) {\n const s = et(\n t,\n n,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && t instanceof M) {\n const s = et(\n n,\n t,\n e\n );\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof S && n instanceof M) {\n const s = mt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof S && t instanceof M) {\n const s = mt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof M && n instanceof M) {\n const s = wn(\n t,\n n,\n !0\n );\n return s.length ? s[0] instanceof M ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof y && (n instanceof I || n instanceof A)) {\n const s = gt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (n instanceof y && (t instanceof I || t instanceof A)) {\n const s = gt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof A) {\n const s = wt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof A) {\n const s = wt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((t instanceof S || t instanceof M) && n instanceof I) {\n const s = Pt(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if ((n instanceof S || n instanceof M) && t instanceof I) {\n const s = Pt(n, t);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof A && n instanceof A) {\n const s = Tn(\n t,\n n\n );\n return s.length ? s[0] instanceof A ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n if (t instanceof A && n instanceof I || n instanceof A && t instanceof I) {\n const s = D(t, n);\n return { intersections: s, overlaps: [], count: s.length };\n }\n if (t instanceof I && n instanceof I) {\n const s = _n(\n t,\n n\n );\n return s.length ? s[0] instanceof I ? {\n intersections: [],\n overlaps: s,\n count: s.length\n } : {\n intersections: s,\n overlaps: [],\n count: s.length\n } : { intersections: [], overlaps: [], count: 0 };\n }\n throw new Error(\"Not implemented\");\n}\nfunction Vt(t) {\n const n = [];\n for (let e = 0; e < t; e++)\n for (let s = 0; s <= e; s++)\n n.push([e, s]);\n return n;\n}\nfunction* st(t) {\n for (const [n, e] of Vt(t.length))\n n !== e && (yield [t[n], t[e]]);\n}\nclass Nt extends lt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"segments\");\n C(this, \"_boundingBox\", null);\n s || Ut(e), this.segments = e;\n }\n get repr() {\n return this.segments.map((e) => e.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(e) {\n return this.segments.some((s) => s.isOnSegment(e));\n }\n intersects(e) {\n return this.boundingBox.overlaps(e.boundingBox) ? this.segments.some(\n (s) => e.segments.some(\n (i) => K(s, i).count > 0\n )\n ) : !1;\n }\n overlappingSegments(e) {\n return this.segments.flatMap((s) => e.segments.flatMap((i) => s.boundingBox.overlaps(i.boundingBox) ? K(s, i).overlaps : []));\n }\n get boundingBox() {\n if (this._boundingBox === null) {\n let e = this.segments[0].boundingBox;\n this.segments.slice(1).forEach((s) => {\n e = e.merge(s.boundingBox);\n }), this._boundingBox = e;\n }\n return this._boundingBox;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return this.repr;\n }\n}\nfunction Ln(t, n = \"Stroke\") {\n Vt(t.length).forEach(\n ([e, s]) => {\n if (e === s) return;\n const i = t[e], o = t[s], r = K(i, o), l = Math.max(i.precision, o.precision);\n if (r.count !== 0) {\n if (r.count === 1 && !r.overlaps.length) {\n const c = e - s, a = r.intersections[0];\n if (c === 1 && g(i.firstPoint, a, l) || c === -1 && g(i.lastPoint, a, l) || c === t.length - 1 && g(i.lastPoint, a, l) && g(o.firstPoint, a, l) || -c === t.length - 1 && g(i.firstPoint, a, l) && g(o.lastPoint, a, l))\n return;\n }\n if (!(r.count === 2 && t.length === 2 && (g(\n i.firstPoint,\n r.intersections[0],\n l\n ) && g(\n i.lastPoint,\n r.intersections[1],\n l\n ) || g(\n i.firstPoint,\n r.intersections[1],\n l\n ) && g(\n i.lastPoint,\n r.intersections[0],\n l\n ))))\n throw new Error(\n `${n} segments must not intersect, but segments ${i.info} and ${o.info} do at ${JSON.stringify(\n r.intersections\n )}`\n );\n }\n }\n );\n}\nfunction Ut(t, n = \"Stroke\") {\n if (t.length === 0)\n throw new Error(`${n} must have at least one segment`);\n N([t.slice(0, -1), t.slice(1)]).forEach(\n ([e, s]) => {\n if (!g(e.lastPoint, s.firstPoint))\n throw new Error(\n `${n} segments must be connected, but ${e.info} and ${s.info} are not`\n );\n }\n ), Ln(t, n);\n}\nfunction bt(t, n) {\n return !!(t instanceof y && n instanceof y && un(t.V, n.V) || t instanceof S && n instanceof S && g(t.center, n.center) && t.radius - n.radius < t.precision);\n}\nfunction Ct(t, n) {\n if (t instanceof y && n instanceof y)\n return new y(t.firstPoint, n.lastPoint);\n if (t instanceof S && n instanceof S)\n return new S(\n t.firstPoint,\n n.lastPoint,\n t.center,\n t.clockwise\n );\n throw new Error(\"Not implemented\");\n}\nfunction jt(t) {\n let n = !1;\n const e = [];\n for (const s of t.segments) {\n if (e.length === 0) {\n e.push(s);\n continue;\n }\n const i = e[e.length - 1];\n bt(i, s) ? (n = !0, e.pop(), e.push(Ct(i, s))) : e.push(s);\n }\n if (g(t.firstPoint, t.lastPoint) && bt(\n e[0],\n e[e.length - 1]\n )) {\n n = !0;\n const s = e.pop();\n e[0] = Ct(s, e[0]);\n }\n return n ? e : null;\n}\nclass B extends Nt {\n constructor() {\n super(...arguments);\n C(this, \"strokeType\", \"STRAND\");\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new B(e, { ignoreChecks: !0 });\n }\n clone() {\n return new B(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n extend(e) {\n if (!g(this.lastPoint, e.firstPoint))\n throw console.error(this.repr, e.repr), new Error(\"Cannot extend strand: connection point is not the same\");\n return new B([...this.segments, ...e.segments]);\n }\n simplify() {\n const e = jt(this);\n return e ? new B(e, { ignoreChecks: !0 }) : this;\n }\n transform(e) {\n return new B(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n}\nconst zn = (t, n) => {\n const e = an(n, {\n V: [1, 0],\n firstPoint: t,\n precision: n.precision\n });\n if (e === \"parallel\")\n return 0;\n const { intersectionParam1: s, intersectionParam2: i } = e;\n if (!n.isValidParameter(s) || i <= -n.precision) return 0;\n if (Math.abs(s) < n.precision || Math.abs(s - 1) < n.precision) {\n const [, o] = n.midPoint;\n return t[1] - o < 0 ? 1 : 0;\n }\n return 1;\n};\nclass ut {\n constructor(n) {\n C(this, \"_count\", 0);\n C(this, \"segment\");\n this.segment = n;\n }\n update(n, e = !1) {\n !e && !this.segment.isOnSegment(n) || (g(n, this.segment.firstPoint) ? this._count += this.segment.tangentAtFirstPoint[1] > 0 ? 1 : 0 : g(n, 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 qn = (t, n) => {\n const e = n.precision, s = Math.abs(t[1] - n.center[1]);\n if (s > n.radius + e) return 0;\n const i = fn(t, n.center), o = n.radius * n.radius, r = e * e;\n if (Math.abs(i - o) < r && n.isOnSegment(t))\n return 0;\n const l = i - o > r;\n if (l && n.center[0] < t[0]) return 0;\n const c = Math.sqrt(\n n.radius * n.radius - s * s\n ), a = new ut(n);\n return a.update([n.center[0] + c, t[1]]), l && a.update([n.center[0] - c, t[1]]), a.count;\n}, Dn = (t, n) => {\n const e = n.boundingBox.xMax + n.boundingBox.width / 2, s = new y(t, [e, t[1]]), i = new ut(n);\n return et(s, n).forEach((o) => {\n i.update(o, !0);\n }), i.count;\n}, Rn = (t, n) => {\n const e = new ut(n);\n return n.paramsAtY(t[1]).map((s) => {\n try {\n return n.paramPoint(s);\n } catch {\n return null;\n }\n }).filter((s) => s !== null).filter((s) => {\n const [i] = s;\n return i >= t[0];\n }).forEach((s) => {\n e.update(s, !0);\n }), e.count;\n};\nfunction Vn(t, n) {\n if (n instanceof y)\n return zn(t, n);\n if (n instanceof S)\n return qn(t, n);\n if (n instanceof M)\n return Dn(t, n);\n if (n instanceof I || n instanceof A)\n return Rn(t, n);\n throw new Error(\"Not implemented\");\n}\nclass O extends Nt {\n constructor(e, { ignoreChecks: s = !1 } = {}) {\n super(e, { ignoreChecks: !0 });\n C(this, \"strokeType\", \"LOOP\");\n C(this, \"_clockwise\", null);\n s || Nn(e);\n }\n get clockwise() {\n if (this._clockwise === null) {\n const e = this.segments.flatMap((i) => i instanceof y ? [i.firstPoint] : [i.firstPoint, i.paramPoint(0.5)]), s = e.map((i, o) => {\n const r = e[(o + 1) % e.length];\n return (r[0] - i[0]) * (r[1] + i[1]);\n }).reduce((i, o) => i + o, 0);\n this._clockwise = s > 0;\n }\n return this._clockwise;\n }\n clone() {\n return new O(\n this.segments.map((e) => e.clone()),\n { ignoreChecks: !0 }\n );\n }\n reverse() {\n const e = this.segments.map((s) => s.reverse());\n return e.reverse(), new O(e, { ignoreChecks: !0 });\n }\n transform(e) {\n return new O(\n this.segments.map((s) => s.transform(e)),\n { ignoreChecks: !0 }\n );\n }\n contains(e) {\n return this.onStroke(e) || !this.boundingBox.contains(e) ? !1 : this.segments.reduce((i, o) => i + Vn(e, o), 0) % 2 === 1;\n }\n simplify() {\n const e = jt(this);\n return e ? new O(e, { ignoreChecks: !0 }) : this;\n }\n}\nfunction Nn(t) {\n if (Ut(t, \"Loop\"), !g(t[0].firstPoint, t[t.length - 1].lastPoint))\n throw new Error(\"Loop segment must be closed\");\n}\nconst Un = [\n y,\n S,\n M,\n A,\n I\n];\nfunction jn(t) {\n return Un.some((n) => t instanceof n);\n}\nfunction $t(t) {\n if (t instanceof y)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint\n };\n if (t instanceof S)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise\n };\n if (t instanceof M)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n center: t.center,\n clockwise: t.clockwise,\n majorRadius: t.majorRadius,\n minorRadius: t.minorRadius,\n tiltAngle: t.tiltAngle\n };\n if (t instanceof A)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n controlPoint: t.controlPoint\n };\n if (t instanceof I)\n return {\n type: t.segmentType,\n firstPoint: t.firstPoint,\n lastPoint: t.lastPoint,\n firstControlPoint: t.firstControlPoint,\n lastControlPoint: t.lastControlPoint\n };\n throw new Error(\"Unknown segment type\");\n}\nfunction it(t) {\n return {\n type: \"LOOP\",\n segments: t.segments.map($t)\n };\n}\nfunction Ht(t) {\n return {\n type: \"FIGURE\",\n contour: it(t.contour),\n holes: t.holes.map(it)\n };\n}\nfunction $n(t) {\n return {\n type: \"DIAGRAM\",\n figures: t.figures.map(Ht)\n };\n}\nfunction Mt(t) {\n if (t instanceof _)\n return $n(t);\n if (t instanceof v)\n return Ht(t);\n if (t instanceof O)\n return it(t);\n if (jn(t))\n return $t(t);\n throw new Error(\"Unknown shape type\");\n}\nclass Hn {\n constructor() {\n this.ids = [], this.values = [], this.length = 0;\n }\n clear() {\n this.length = 0;\n }\n push(n, e) {\n let s = this.length++;\n for (; s > 0; ) {\n const i = s - 1 >> 1, o = this.values[i];\n if (e >= o) break;\n this.ids[s] = this.ids[i], this.values[s] = o, s = i;\n }\n this.ids[s] = n, this.values[s] = e;\n }\n pop() {\n if (this.length === 0) return;\n const n = this.ids[0];\n if (this.length--, this.length > 0) {\n const e = this.ids[0] = this.ids[this.length], s = this.values[0] = this.values[this.length], i = this.length >> 1;\n let o = 0;\n for (; o < i; ) {\n let r = (o << 1) + 1;\n const l = r + 1;\n let c = this.ids[r], a = this.values[r];\n const f = this.values[l];\n if (l < this.length && f < a && (r = l, c = this.ids[l], a = f), a >= s) break;\n this.ids[o] = c, this.values[o] = a, o = r;\n }\n this.ids[o] = e, this.values[o] = s;\n }\n return n;\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 At = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], nt = 3;\nclass at {\n /**\n * Recreate a Flatbush index from raw `ArrayBuffer` or `SharedArrayBuffer` data.\n * @param {ArrayBuffer | SharedArrayBuffer} data\n * @param {number} [byteOffset=0] byte offset to the start of the Flatbush buffer in the referenced ArrayBuffer.\n * @returns {Flatbush} index\n */\n static from(n, e = 0) {\n if (e % 8 !== 0)\n throw new Error(\"byteOffset must be 8-byte aligned.\");\n if (!n || n.byteLength === void 0 || n.buffer)\n throw new Error(\"Data must be an instance of ArrayBuffer or SharedArrayBuffer.\");\n const [s, i] = new Uint8Array(n, e + 0, 2);\n if (s !== 251)\n throw new Error(\"Data does not appear to be in a Flatbush format.\");\n const o = i >> 4;\n if (o !== nt)\n throw new Error(`Got v${o} data when expected v${nt}.`);\n const r = At[i & 15];\n if (!r)\n throw new Error(\"Unrecognized array type.\");\n const [l] = new Uint16Array(n, e + 2, 1), [c] = new Uint32Array(n, e + 4, 1);\n return new at(c, l, r, void 0, n, e);\n }\n /**\n * Create a Flatbush index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=16] Size of the tree node (16 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBufferConstructor | SharedArrayBufferConstructor} [ArrayBufferType=ArrayBuffer] The array buffer type used to store data (`ArrayBuffer` by default).\n * @param {ArrayBuffer | SharedArrayBuffer} [data] (Only used internally)\n * @param {number} [byteOffset=0] (Only used internally)\n */\n constructor(n, e = 16, s = Float64Array, i = ArrayBuffer, o, r = 0) {\n if (n === void 0) throw new Error(\"Missing required argument: numItems.\");\n if (isNaN(n) || n <= 0) throw new Error(`Unexpected numItems value: ${n}.`);\n this.numItems = +n, this.nodeSize = Math.min(Math.max(+e, 2), 65535), this.byteOffset = r;\n let l = n, c = l;\n this._levelBounds = [l * 4];\n do\n l = Math.ceil(l / this.nodeSize), c += l, this._levelBounds.push(c * 4);\n while (l !== 1);\n this.ArrayType = s, this.IndexArrayType = c < 16384 ? Uint16Array : Uint32Array;\n const a = At.indexOf(this.ArrayType), f = c * 4 * this.ArrayType.BYTES_PER_ELEMENT;\n if (a < 0)\n throw new Error(`Unexpected typed array class: ${s}.`);\n o && o.byteLength !== void 0 && !o.buffer ? (this.data = o, this._boxes = new this.ArrayType(this.data, r + 8, c * 4), this._indices = new this.IndexArrayType(this.data, r + 8 + f, c), this._pos = c * 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 i(8 + f + c * this.IndexArrayType.BYTES_PER_ELEMENT), this._boxes = new this.ArrayType(this.data, 8, c * 4), this._indices = new this.IndexArrayType(this.data, 8 + f, c), 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, (nt << 4) + a]), new Uint16Array(this.data, 2, 1)[0] = e, new Uint32Array(this.data, 4, 1)[0] = n), this._queue = new Hn();\n }\n /**\n * Add a given rectangle to the index.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number} A zero-based, incremental number that represents the newly added rectangle.\n */\n add(n, e, s = n, i = e) {\n const o = this._pos >> 2, r = this._boxes;\n return this._indices[o] = o, r[this._pos++] = n, r[this._pos++] = e, r[this._pos++] = s, r[this._pos++] = i, n < this.minX && (this.minX = n), e < this.minY && (this.minY = e), s > this.maxX && (this.maxX = s), i > this.maxY && (this.maxY = i), o;\n }\n /** Perform indexing of the added rectangles. */\n finish() {\n if (this._pos >> 2 !== this.numItems)\n throw new Error(`Added ${this._pos >> 2} items when expected ${this.numItems}.`);\n const n = this._boxes;\n if (this.numItems <= this.nodeSize) {\n n[this._pos++] = this.minX, n[this._pos++] = this.minY, n[this._pos++] = this.maxX, n[this._pos++] = this.maxY;\n return;\n }\n const e = this.maxX - this.minX || 1, s = this.maxY - this.minY || 1, i = new Uint32Array(this.numItems), o = 65535;\n for (let r = 0, l = 0; r < this.numItems; r++) {\n const c = n[l++], a = n[l++], f = n[l++], u = n[l++], h = Math.floor(o * ((c + f) / 2 - this.minX) / e), p = Math.floor(o * ((a + u) / 2 - this.minY) / s);\n i[r] = Xn(h, p);\n }\n ot(i, n, this._indices, 0, this.numItems - 1, this.nodeSize);\n for (let r = 0, l = 0; r < this._levelBounds.length - 1; r++) {\n const c = this._levelBounds[r];\n for (; l < c; ) {\n const a = l;\n let f = n[l++], u = n[l++], h = n[l++], p = n[l++];\n for (let d = 1; d < this.nodeSize && l < c; d++)\n f = Math.min(f, n[l++]), u = Math.min(u, n[l++]), h = Math.max(h, n[l++]), p = Math.max(p, n[l++]);\n this._indices[this._pos >> 2] = a, n[this._pos++] = f, n[this._pos++] = u, n[this._pos++] = h, n[this._pos++] = p;\n }\n }\n }\n /**\n * Search the index by a bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items intersecting or touching the given bounding box.\n */\n search(n, e, s, i, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = [], c = [];\n for (; r !== void 0; ) {\n const a = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let f = r; f < a; f += 4) {\n if (s < this._boxes[f] || i < this._boxes[f + 1] || n > this._boxes[f + 2] || e > this._boxes[f + 3]) continue;\n const u = this._indices[f >> 2] | 0;\n r >= this.numItems * 4 ? l.push(u) : (o === void 0 || o(u)) && c.push(u);\n }\n r = l.pop();\n }\n return c;\n }\n /**\n * Search items in order of distance from the given point.\n * @param {number} x\n * @param {number} y\n * @param {number} [maxResults=Infinity]\n * @param {number} [maxDistance=Infinity]\n * @param {(index: number) => boolean} [filterFn] An optional function for filtering the results.\n * @returns {number[]} An array of indices of items found.\n */\n neighbors(n, e, s = 1 / 0, i = 1 / 0, o) {\n if (this._pos !== this._boxes.length)\n throw new Error(\"Data not yet indexed - call index.finish().\");\n let r = this._boxes.length - 4;\n const l = this._queue, c = [], a = i * i;\n t: for (; r !== void 0; ) {\n const f = Math.min(r + this.nodeSize * 4, Et(r, this._levelBounds));\n for (let u = r; u < f; u += 4) {\n const h = this._indices[u >> 2] | 0, p = It(n, this._boxes[u], this._boxes[u + 2]), d = It(e, this._boxes[u + 1], this._boxes[u + 3]), m = p * p + d * d;\n m > a || (r >= this.numItems * 4 ? l.push(h << 1, m) : (o === void 0 || o(h)) && l.push((h << 1) + 1, m));\n }\n for (; l.length && l.peek() & 1; )\n if (l.peekValue() > a || (c.push(l.pop() >> 1), c.length === s)) break t;\n r = l.length ? l.pop() >> 1 : void 0;\n }\n return l.clear(), c;\n }\n}\nfunction It(t, n, e) {\n return t < n ? n - t : t <= e ? 0 : t - e;\n}\nfunction Et(t, n) {\n let e = 0, s = n.length - 1;\n for (; e < s; ) {\n const i = e + s >> 1;\n n[i] > t ? s = i : e = i + 1;\n }\n return n[e];\n}\nfunction ot(t, n, e, s, i, o) {\n if (Math.floor(s / o) >= Math.floor(i / o)) return;\n const r = t[s + i >> 1];\n let l = s - 1, c = i + 1;\n for (; ; ) {\n do\n l++;\n while (t[l] < r);\n do\n c--;\n while (t[c] > r);\n if (l >= c) break;\n Yn(t, n, e, l, c);\n }\n ot(t, n, e, s, c, o), ot(t, n, e, c + 1, i, o);\n}\nfunction Yn(t, n, e, s, i) {\n const o = t[s];\n t[s] = t[i], t[i] = o;\n const r = 4 * s, l = 4 * i, c = n[r], a = n[r + 1], f = n[r + 2], u = n[r + 3];\n n[r] = n[l], n[r + 1] = n[l + 1], n[r + 2] = n[l + 2], n[r + 3] = n[l + 3], n[l] = c, n[l + 1] = a, n[l + 2] = f, n[l + 3] = u;\n const h = e[s];\n e[s] = e[i], e[i] = h;\n}\nfunction Xn(t, n) {\n let e = t ^ n, s = 65535 ^ e, i = 65535 ^ (t | n), o = t & (n ^ 65535), r = e | s >> 1, l = e >> 1 ^ e, c = i >> 1 ^ s & o >> 1 ^ i, a = e & i >> 1 ^ o >> 1 ^ o;\n e = r, s = l, i = c, o = a, r = e & e >> 2 ^ s & s >> 2, l = e & s >> 2 ^ s & (e ^ s) >> 2, c ^= e & i >> 2 ^ s & o >> 2, a ^= s & i >> 2 ^ (e ^ s) & o >> 2, e = r, s = l, i = c, o = a, r = e & e >> 4 ^ s & s >> 4, l = e & s >> 4 ^ s & (e ^ s) >> 4, c ^= e & i >> 4 ^ s & o >> 4, a ^= s & i >> 4 ^ (e ^ s) & o >> 4, e = r, s = l, i = c, o = a, c ^= e & i >> 8 ^ s & o >> 8, a ^= s & i >> 8 ^ (e ^ s) & o >> 8, e = c ^ c >> 1, s = a ^ a >> 1;\n let f = t ^ n, u = s | 65535 ^ (f | e);\n return f = (f | f << 8) & 16711935, f = (f | f << 4) & 252645135, f = (f | f << 2) & 858993459, f = (f | f << 1) & 1431655765, u = (u | u << 8) & 16711935, u = (u | u << 4) & 252645135, u = (u | u << 2) & 858993459, u = (u | u << 1) & 1431655765, (u << 1 | f) >>> 0;\n}\nfunction Yt(t, n = 1e-7) {\n if (t.length === 0) return [];\n if (t.length === 1) return [t];\n const e = new at(t.length);\n t.forEach((o) => {\n const [r, l] = o.firstPoint;\n e.add(r - n, l - n, r + n, l + n);\n }), e.finish();\n const s = [], i = /* @__PURE__ */ new Set();\n return t.forEach((o, r) => {\n if (i.has(r)) return;\n const l = [o];\n let c = r;\n i.add(r);\n let a = t.length;\n for (; ; ) {\n if (a-- < 0)\n throw new Error(\"Infinite loop detected\");\n const f = l[l.length - 1].lastPoint, [u, h] = f, p = e.search(\n u - n,\n h - n,\n u + n,\n h + n\n ), d = (x) => Math.abs((c - x) % t.length), m = p.filter((x) => !i.has(x)).map((x) => [\n t[x],\n x,\n d(x)\n ]).sort(([, , x], [, , F]) => d(x) - d(F));\n if (m.length === 0) {\n s.push(l);\n break;\n }\n const [P, w] = m[0];\n l.push(P), i.add(w), c = w;\n }\n }), s;\n}\nclass v extends lt {\n constructor(e, s = [], { ignoreChecks: i = !1 } = {}) {\n super();\n C(this, \"contour\");\n C(this, \"holes\");\n i || Gn(e, s), this.contour = e, this.holes = s;\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 v(\n this.contour.clone(),\n this.holes.map((e) => e.clone())\n );\n }\n transform(e) {\n return new v(\n this.contour.transform(e),\n this.holes.map((s) => s.transform(e))\n );\n }\n contains(e) {\n return this.contour.contains(e) && !this.holes.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.allLoops.some(\n (s) => e.allLoops.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n const s = e instanceof v ? e.allLoops : [e], i = this.allLoops.flatMap((o) => s.flatMap((r) => o.overlappingSegments(r)));\n return Yt(i).map((o) => new B(o));\n }\n}\nfunction Gn(t, n = []) {\n if (!t) throw new Error(\"Figure must have a contour\");\n for (const [e, s] of st([t, ...n]))\n if (e.intersects(s))\n throw new Error(\"Loops in a figure must not intersect\");\n if (n.some(\n (e) => !t.contains(e.firstPoint) && !t.onStroke(e.firstPoint)\n ))\n throw new Error(\"Holes must be inside the contour\");\n for (const [e, s] of st(n))\n if (e.contains(s.firstPoint))\n throw console.error(Mt(e), Mt(s)), new Error(\"Holes must not be inside other holes\");\n}\nconst Qn = (t) => {\n const n = t.map((i, o) => t.slice(o + 1).map((r, l) => [l + o + 1, r]).filter(([, r]) => i.boundingBox.overlaps(r.boundingBox)).map(([r]) => r)), e = [], s = Array(n.length);\n return n.forEach((i, o) => {\n let r = s[o];\n r || (r = [], e.push(r)), r.push(t[o]), i.length && i.forEach((l) => {\n s[l] = r;\n });\n }), e;\n}, Xt = (t) => t.map((n, e) => {\n const i = n.segments[0].midPoint, o = t.filter((r, l) => e === l ? !1 : r.contains(i));\n return {\n loop: n,\n isIn: o\n };\n}), Wn = (t, n) => t.flatMap(({ loop: e }) => ft(\n n.filter(\n ({ loop: s, isIn: i }) => s === e || i.indexOf(e) !== -1\n )\n)), Jn = (t, n) => {\n const e = n.filter(({ isIn: i }) => i.length <= 1), s = ft(\n Xt(t.map(({ loop: i }) => i))\n );\n return [e, ...s];\n}, ft = (t) => {\n if (!t.length) return [];\n const n = t.filter(({ isIn: s }) => !s.length), e = t.filter(({ isIn: s }) => s.length > 1);\n return n.length === 1 && e.length === 0 ? [t] : n.length > 1 ? Wn(n, t) : Jn(e, t);\n};\nfunction X(t) {\n return Qn(t).map(Xt).flatMap(ft).map((e) => {\n if (e.length === 1) return new v(e[0].loop);\n e.sort((o, r) => o.isIn.length - r.isIn.length);\n const [s, ...i] = e.map(({ loop: o }) => o);\n return new v(s, i);\n });\n}\nfunction Kn(t, n) {\n const e = [];\n for (const s of t)\n for (const i of n)\n e.push([s, i]);\n return e;\n}\nfunction* Ft(t, n, e) {\n const s = (r) => n.some((l) => g(l, r.lastPoint)), i = (r) => e.some((l) => r.isSame(l));\n let o = [];\n for (const r of t)\n s(r) ? (o.push(r), yield new B(o, { ignoreChecks: !0 }), o = []) : i(r) ? (o.length && (yield new B(o, { ignoreChecks: !0 }), o = []), yield new B([r], { ignoreChecks: !0 })) : o.push(r);\n o.length && (yield new B(o, { ignoreChecks: !0 }));\n}\nconst vt = (t, n) => {\n const e = t.findIndex((o) => g(n, o.firstPoint)), s = t.slice(0, e);\n return t.slice(e).concat(s);\n}, Bt = (t, n) => {\n let e = t;\n const s = (l) => g(l.firstPoint, n.firstPoint) && g(l.lastPoint, n.lastPoint);\n let i = t.findIndex(s);\n if (i === -1) {\n const l = t.map((c) => c.reverse());\n if (l.reverse(), i = l.findIndex(s), i === -1)\n throw console.error(\n l.map((c) => c.repr),\n n.repr\n ), new Error(\"Failed to rotate to segment start\");\n e = l;\n }\n const o = e.slice(0, i);\n return e.slice(i).concat(o);\n};\nfunction Zn(t, n, e) {\n return t.filter((s) => {\n const i = n.filter((l) => g(l.firstPoint, s) || g(l.lastPoint, s));\n if (i.length % 2)\n throw new Error(\"Bug in the intersection algo on non crossing point\");\n const o = i.map((l) => e.contains(l.midPoint));\n return !(o.every((l) => l) || !o.some((l) => l));\n });\n}\nfunction te(t, n, e) {\n let s = [];\n const i = [], o = new Array(t.segments.length).fill(0).map(() => []), r = new Array(n.segments.length).fill(0).map(() => []);\n if (t.segments.forEach((h, p) => {\n n.segments.forEach((d, m) => {\n const { intersections: P, overlaps: w } = K(\n h,\n d,\n e\n );\n s.push(...P), o[p].push(...P), r[m].push(...P), i.push(...w);\n const x = w.flatMap((F) => [\n F.firstPoint,\n F.lastPoint\n ]);\n s.push(...x), o[p].push(...x), r[m].push(...x);\n });\n }), s = U(s, e), !s.length || s.length === 1) return null;\n const l = ([h, p]) => p.length ? h.splitAt(p) : [h];\n let c = N([t.segments, o]).flatMap(l), a = N([n.segments, r]).flatMap(l);\n if (s = Zn(\n s,\n c,\n n\n ), !s.length && !i.length) return null;\n if (i.length) {\n const h = i[0];\n c = Bt(\n c,\n h\n ), a = Bt(\n a,\n h\n );\n } else {\n const h = s[0];\n c = vt(c, h), a = vt(a, h);\n }\n let f = Array.from(\n Ft(\n c,\n s,\n i\n )\n ), u = Array.from(\n Ft(\n a,\n s,\n i\n )\n );\n return (!g(\n u[0].lastPoint,\n f[0].lastPoint\n ) || i.length > 0 && u[0].segmentsCount !== 1) && (u = u.map((h) => h.reverse()).reverse(), g(u[0].lastPoint, f[0].lastPoint) || (f = f.map((h) => h.reverse()).reverse())), N([f, u]).map(([h, p]) => h.segmentsCount === 1 && i.some((d) => h.segments[0].isSame(d)) ? [h, \"same\"] : [h, p]);\n}\nfunction kt(t) {\n let n = t[0];\n for (const e of t.slice(1))\n n = n.extend(e);\n if (!g(n.firstPoint, n.lastPoint))\n throw console.error(\n dt(n.firstPoint),\n dt(n.lastPoint)\n ), new Error(\"Bug in the intersection algo on non closing strand\");\n return new O(n.segments);\n}\nfunction ne(t, n) {\n const e = N([\n n.slice(0, -1),\n n.slice(1)\n ]).map(([i, o]) => kt(t.slice(i, o)));\n let s = t.slice(\n n[n.length - 1]\n );\n return n[0] !== 0 && (s = s.concat(t.slice(0, n[0]))), e.push(kt(s)), e;\n}\nfunction ee(t) {\n if (!t.length) return [];\n const n = t.map((i) => i.firstPoint);\n let e = t.map((i) => i.lastPoint);\n e = e.slice(-1).concat(e.slice(0, -1));\n const s = N([n, e]).flatMap(\n ([i, o], r) => g(i, o) ? [] : r\n );\n try {\n return ne(t, s);\n } catch {\n return Yt(t.flatMap((o) => o.segments)).filter((o) => o.length > 1).filter((o) => g(o[0].firstPoint, o.at(-1).lastPoint)).map((o) => new O(o));\n }\n}\nconst _t = (t, n) => {\n if (t.length === 0) return [n];\n const e = t.at(-1);\n return g(e.lastPoint, n.firstPoint) ? t.slice(0, -1).concat([e.extend(n)]) : g(e.lastPoint, n.lastPoint) ? t.slice(0, -1).concat([e.extend(n.reverse())]) : t.concat([n]);\n}, se = (t, n) => t.length === 0 ? [n] : g(t[0].firstPoint, n.lastPoint) ? [n.extend(t[0])].concat(t.slice(1)) : [n].concat(t);\nfunction ht(t, n, {\n firstInside: e,\n secondInside: s\n}) {\n const i = te(t, n);\n if (!i) {\n const c = t.segments[0].midPoint, a = n.contains(c), f = n.segments[0].midPoint, u = t.contains(f);\n return {\n identical: !1,\n firstCurveInSecond: a,\n secondCurveInFirst: u\n };\n }\n if (i.every(([, c]) => c === \"same\"))\n return { identical: !0 };\n let o = null, r = null;\n const l = i.flatMap(([c, a]) => {\n let f = [], u = 0;\n if (a === \"same\")\n return r === 1 ? (r = 1, c) : r === 2 || r === 0 ? (r = null, []) : r === null ? (o ? o = o.extend(c) : o = c, []) : (console.error(\"weird situation\"), []);\n const h = c.segments[0].midPoint, p = n.contains(h);\n (e === \"keep\" && p || e === \"remove\" && !p) && (u += 1, f = _t(f, c));\n const d = a.segments[0].midPoint, m = t.contains(d);\n if (s === \"keep\" && m || s === \"remove\" && !m) {\n const P = a;\n u += 1, u === 2 && f.length ? (f = _t(f, P), o = null) : f = [P];\n }\n return r === null && u === 1 && o && (f = se(f, o)), u === 1 && (r = u, o = null), f.length ? f : (o = null, []);\n });\n return ee(l);\n}\nconst ie = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"remove\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [n] : e.secondCurveInFirst ? [t] : [t, n];\n}, Z = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"remove\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [] : e.firstCurveInSecond ? [] : e.secondCurveInFirst ? [t, n] : [t];\n}, pt = (t, n) => {\n const e = ht(t, n, {\n firstInside: \"keep\",\n secondInside: \"keep\"\n });\n return Array.isArray(e) ? e : e.identical ? [t] : e.firstCurveInSecond ? [t] : e.secondCurveInFirst ? [n] : [];\n};\nfunction oe(t) {\n const n = /* @__PURE__ */ new Map(), e = [];\n return t.forEach((s, i) => {\n let o;\n n.has(i) ? o = n.get(i) : (o = { current: [s], fusedWith: /* @__PURE__ */ new Set([i]) }, e.push(o)), t.slice(i + 1).forEach((r, l) => {\n const c = o.current, a = i + l + 1;\n if (o.fusedWith.has(a)) return;\n let f = [r], u = !1;\n if (n.has(a) && (f = n.get(a).current, u = !0), !c.some(\n (d) => f.some((m) => d.intersects(m))\n )) return;\n let p;\n c.length > 1 || f.length > 1 ? p = G(c, f) : p = Gt(c[0], f[0]), o.fusedWith.add(a), o.current = p, u || n.set(a, o);\n });\n }), e.flatMap(({ current: s }) => s);\n}\nfunction Gt(t, n) {\n const e = ie(t.contour, n.contour), s = n.holes.flatMap((r) => Z(r, t.contour)), i = t.holes.flatMap((r) => Z(r, n.contour)), o = Kn(t.holes, n.holes).flatMap(\n ([r, l]) => pt(r, l)\n );\n return X([\n ...e,\n ...s,\n ...i,\n ...o\n ]);\n}\nfunction tt(t, n) {\n if (t.isFull && n.isFull)\n return X(Z(t.contour, n.contour));\n if (t.isFull) {\n const s = Z(t.contour, n.contour), i = n.holes.flatMap(\n (o) => pt(o, t.contour)\n );\n return X([...s, ...i]);\n } else if (n.isFull && !t.contour.intersects(n.contour))\n if (t.contour.contains(n.contour.firstPoint)) {\n const s = G(\n t.holes.map((i) => new v(i)),\n [n]\n );\n return X([\n t.contour,\n ...s.flatMap((i) => i.allLoops)\n ]);\n } else\n return [t];\n let e = tt(new v(t.contour), n);\n return t.holes.forEach((s) => {\n e = e.flatMap((i) => tt(i, new v(s)));\n }), e;\n}\nfunction re(t, n) {\n const e = pt(t.contour, n.contour);\n if (!e.length) return [];\n let s = X(e);\n return s = Q(\n s,\n t.holes.map((i) => new v(i))\n ), Q(\n s,\n n.holes.map((i) => new v(i))\n );\n}\nfunction G(t, n) {\n if (!t.length) return n;\n if (!n.length) return t;\n if (t.length === 1 && n.length > 1 || n.length === 1 && t.length > 1)\n return oe([...t, ...n]);\n if (t.length > 1 && n.length > 1) {\n let e = G([t[0]], n);\n return t.slice(1).forEach((s) => {\n e = G([s], e);\n }), e;\n }\n return t.length === 1 && n.length === 1 ? Gt(t[0], n[0]) : [];\n}\nfunction Q(t, n) {\n if (!t.length) return [];\n if (!n.length) return t;\n if (t.length === 1 && n.length === 1)\n return tt(t[0], n[0]);\n if (t.length > 1)\n return t.flatMap((s) => Q([s], n));\n let e = tt(t[0], n[0]);\n return n.slice(1).forEach((s) => {\n e = Q(e, [s]);\n }), e;\n}\nfunction rt(t, n) {\n return !t.length || !n.length ? [] : t.length === 1 && n.length === 1 ? re(t[0], n[0]) : t.length > 1 ? t.flatMap((e) => rt([e], n)) : n.flatMap((e) => rt(t, [e]));\n}\nclass _ extends lt {\n constructor(e = [], { ignoreChecks: s = !1 } = {}) {\n super();\n C(this, \"figures\");\n C(this, \"_boundingBox\", null);\n s || le(e), this.figures = e;\n }\n get isEmpty() {\n return this.figures.length === 0;\n }\n get boundingBox() {\n if (this.isEmpty) return new hn();\n if (this._boundingBox === null) {\n let e = this.figures[0].boundingBox;\n for (const s of this.figures.slice(1))\n e = e.merge(s.boundingBox);\n this._boundingBox = e;\n }\n return this._boundingBox;\n }\n clone() {\n return new _(this.figures.map((e) => e.clone()));\n }\n transform(e) {\n return new _(this.figures.map((s) => s.transform(e)));\n }\n contains(e) {\n return this.figures.some((s) => s.contains(e));\n }\n intersects(e) {\n return this.figures.some(\n (s) => e.figures.some((i) => s.intersects(i))\n );\n }\n overlappingStrands(e) {\n return this.figures.flatMap((s) => e instanceof _ ? e.figures.flatMap(\n (i) => s.overlappingStrands(i)\n ) : s.overlappingStrands(e));\n }\n fuse(e) {\n return new _(G(this.figures, e.figures));\n }\n cut(e) {\n return new _(Q(this.figures, e.figures));\n }\n intersect(e) {\n return new _(rt(this.figures, e.figures));\n }\n}\nfunction le(t) {\n for (const [n, e] of st(t))\n if (n.intersects(e))\n throw new Error(\"Diagram figures must not intersect\");\n}\nexport {\n _ as D,\n v as F,\n O as L,\n B as S,\n K as a,\n G as b,\n Q as c,\n qt as d,\n Yt as e,\n ae as f,\n jn as g,\n Mt as h,\n rt as i,\n J as l,\n pn as p,\n Ft as s\n};\n//# sourceMappingURL=models-WQ-B7GSL.js.map\n","var N = Object.defineProperty;\nvar Y = (r, t, e) => t in r ? N(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;\nvar p = (r, t, e) => Y(r, typeof t != \"symbol\" ? t + \"\" : t, e);\nimport { L as f, A as F, a as u, s as g, p as S, t as _, c as I, b as O, d as A, e as V, f as v, g as W, h as G, i as L, R as Q, C as j, Q as q, T as $, j as d, n as b, D as T } from \"./QuadraticBezier-BzVqiExF.js\";\nimport { f as H, S as J, D as K, F as U, L as X } from \"./models-WQ-B7GSL.js\";\nclass C {\n constructor(t, e) {\n this.firstPoint = t, this.lastPoint = e;\n }\n}\nfunction x(r, t) {\n if (r instanceof f)\n return Z(r, t);\n if (r instanceof F)\n return tt(r, t);\n throw new Error(\"Not implemented\");\n}\nfunction Z(r, t) {\n const { firstPoint: e, lastPoint: n } = r, i = r.normalVector;\n return new f(\n u(e, g(i, t)),\n u(n, g(i, t))\n );\n}\nfunction tt(r, t) {\n const e = u(\n r.firstPoint,\n g(S(r.tangentAtFirstPoint), t)\n ), n = u(\n r.lastPoint,\n g(S(r.tangentAtLastPoint), t)\n ), i = t * (r.clockwise ? 1 : -1);\n return r.radius + i < r.precision ? new C(e, n) : new F(e, n, r.center, r.clockwise);\n}\nfunction R(r, t, e) {\n const n = I(\n r.tangentAtLastPoint,\n t.tangentAtFirstPoint\n );\n if (Math.abs(n) < 1e-10) return null;\n const i = n > 0 ? 1 : -1, s = Math.abs(e) * i, o = x(r, s), a = x(t, s);\n if (o instanceof C || a instanceof C)\n return null;\n let c;\n try {\n c = H(o, a, 1e-9).at(-1);\n } catch {\n return null;\n }\n if (!c)\n return null;\n const h = c, m = (w, k) => {\n const B = k.tangentAt(h), z = O(B), M = u(h, g(z, s));\n return w.splitAt(M);\n }, [l] = m(r, o), [, P] = m(t, a);\n return { first: l, second: P, center: h };\n}\nfunction E(r, t, e) {\n const n = R(r, t, e);\n if (!n)\n return console.warn(\n \"Cannot fillet between segments\",\n r.repr,\n t.repr\n ), [r, t];\n const { first: i, second: s } = n;\n return [\n i,\n _(i.lastPoint, s.firstPoint, i.tangentAtLastPoint),\n s\n ];\n}\nfunction D(r, t, e) {\n const n = R(r, t, e);\n if (!n)\n return console.warn(\n \"Cannot chamfer between segments\",\n r.repr,\n t.repr\n ), [r, t];\n const { first: i, second: s } = n;\n return [i, new f(i.lastPoint, s.firstPoint), s];\n}\nconst et = (r) => {\n let t;\n r ? typeof r == \"number\" || Array.isArray(r) && r.length === 2 ? t = { endTangent: r } : t = { endTangent: 0, ...r } : t = { endTangent: [1, 0] };\n const {\n endTangent: e,\n startFactor: n = 1,\n endFactor: i = 1,\n startTangent: s\n } = t;\n let o;\n typeof e == \"number\" ? o = d(1, e * T) : o = e;\n let a;\n return typeof s == \"number\" ? a = d(1, s * T) : a = s, { endTangent: o, startFactor: n, endFactor: i, startTangent: a };\n};\nfunction y(r, { ignoreChecks: t = !1 } = {}) {\n return new K([new U(new X([...r], { ignoreChecks: t }))]);\n}\nclass nt {\n constructor(t = [0, 0]) {\n p(this, \"pointer\");\n p(this, \"firstPoint\");\n p(this, \"pendingSegments\");\n p(this, \"_nextCorner\");\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 (A(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) throw new Error(\"bug in the custom corner algorithm\");\n const n = this._nextCorner.mode === \"chamfer\" ? D : 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 f(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 * T, i = d(t, n);\n return this.lineTo(i);\n }\n polarLine(t, e) {\n const n = e * T, [i, s] = d(t, n);\n return this.line(i, s);\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, i] = e.tangentAtLastPoint;\n return this.line(n * t, i * t);\n }\n threePointsArcTo(t, e) {\n return this.saveSegment(V(this.pointer, e, t)), this.pointer = t, this;\n }\n threePointsArc(t, e, n, i) {\n const [s, o] = this.pointer;\n return this.threePointsArcTo(\n [s + t, o + e],\n [s + n, o + i]\n );\n }\n sagittaArcTo(t, e) {\n if (!e) return this.lineTo(t);\n const n = new f(this.pointer, t), i = S(n.tangentAtFirstPoint), s = u(n.midPoint, g(i, e));\n return this.threePointsArcTo(t, s);\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) return this.lineTo(t);\n const n = v(this.pointer, t) / 2, i = -e * n;\n return this.sagittaArcTo(t, i);\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 _(\n this.pointer,\n t,\n e ?? n.tangentAtLastPoint\n )\n ), this.pointer = t, this;\n }\n tangentArc(t, e, n) {\n const [i, s] = this.pointer;\n return this.tangentArcTo([t + i, e + s], n);\n }\n ellipseTo(t, e, n, i, s, o) {\n return this.saveSegment(\n W(this.pointer, t, e, n, i, s, o)\n ), this.pointer = t, this;\n }\n ellipse(t, e, n, i, s, o, a) {\n return this.ellipseTo(\n [t + this.pointer[0], e + this.pointer[1]],\n n,\n i,\n s,\n o,\n a\n );\n }\n halfEllipseTo(t, e) {\n const [n, i] = G(L(t, this.pointer));\n return this.ellipseTo(\n t,\n n / 2,\n Math.abs(e),\n i * Q,\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 j(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: i, startFactor: s, endFactor: o } = et(e), a = this.pendingSegments.length ? this.pendingSegments[this.pendingSegments.length - 1] : null, c = v(this.pointer, t) / 3;\n let h;\n i ? h = i : a ? h = a.tangentAtLastPoint : h = [1, 0], h = b(h);\n const m = [\n this.pointer[0] + h[0] * s * c,\n this.pointer[1] + h[1] * s * c\n ];\n let l = n;\n l = b(l);\n const P = [\n t[0] - l[0] * o * c,\n t[1] - l[1] * o * c\n ];\n return this.cubicBezierCurveTo(t, m, P);\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) return;\n const n = this.pendingSegments.pop(), i = this.pendingSegments.shift();\n if (!n || !i)\n throw new Error(\"Not enough curves to close and fillet\");\n const s = e === \"chamfer\" ? D : E;\n this.pendingSegments.push(...s(n, i, t));\n }\n close(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1);\n return A(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), y(this.pendingSegments, { ignoreChecks: t });\n }\n closeWithMirror(t = !1) {\n if (!this.pendingSegments.length) throw new Error(\"No segments to close\");\n const e = this.pendingSegments[0], n = this.pendingSegments.at(-1), i = L(\n n.lastPoint,\n e.firstPoint\n ), s = new $().mirrorLine(\n i,\n e.firstPoint\n ), o = this.pendingSegments.map(\n (a) => a.transform(s).reverse()\n );\n return o.reverse(), y(\n [...this.pendingSegments, ...o],\n { ignoreChecks: t }\n );\n }\n asStrand() {\n return new J([...this.pendingSegments]);\n }\n get isClosed() {\n var t;\n return A(this.pointer, (t = this.pendingSegments[0]) == null ? void 0 : t.firstPoint);\n }\n}\nfunction ot(r = [0, 0]) {\n return new nt(r);\n}\nexport {\n C as D,\n ot as d,\n x as o\n};\n//# sourceMappingURL=draw-DqsKIWJD.js.map\n","import { L as $, A as f, E as l, R as u, Q as e, C as h } from \"./QuadraticBezier-BzVqiExF.js\";\nfunction i([t, n]) {\n return `${t} ${n}`;\n}\nfunction s(t) {\n if (t instanceof $)\n return `L ${i(t.lastPoint)}`;\n if (t instanceof f)\n return `A ${t.radius} ${t.radius} 0 ${t.angularLength > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof l)\n return `A ${t.majorRadius} ${t.minorRadius} ${t.tiltAngle * u} ${t.deltaAngle > Math.PI ? \"1\" : \"0\"} ${t.clockwise ? \"0\" : \"1\"} ${i(t.lastPoint)}`;\n if (t instanceof e)\n return `Q ${[\n i(t.controlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n if (t instanceof h)\n return `C ${[\n i(t.firstControlPoint),\n i(t.lastControlPoint),\n i(t.lastPoint)\n ].join(\" \")}`;\n throw new Error(\"Unknown segment type\");\n}\nfunction w(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o} Z`;\n}\nfunction p(t) {\n return `<path d=\"${t.allLoops.map(w).join(\" \")}\" />`;\n}\nfunction d(t) {\n return `<g>\n ${t.figures.map(p).join(`\n`)}\n</g>`;\n}\nfunction j(t) {\n const n = `M ${t.firstPoint.join(\" \")}`, o = t.segments.map(s).join(\" \");\n return `${n} ${o}`;\n}\nfunction v(t, n = 1) {\n const o = t.xMin - n, r = t.yMin - n;\n return `${o} ${r} ${t.width + 2 * n} ${t.height + 2 * n}`;\n}\nfunction A(t, n, o = 1, r) {\n const a = v(n, o), c = r ? `width=\"${n.width + 2 * o}${r}\" height=\"${n.height + 2 * o}${r}\"` : \"\";\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${a}\" fill=\"none\" stroke=\"black\" stroke-width=\"0.2%\" vector-effect=\"non-scaling-stroke\" ${c}>\n ${t}\n</svg>`;\n}\nexport {\n p as a,\n w as b,\n j as c,\n s as d,\n v as e,\n d as s,\n A as w\n};\n//# sourceMappingURL=svg-BylQQgsL.js.map\n","var lt = Object.defineProperty;\nvar ut = (t, e, n) => e in t ? lt(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;\nvar p = (t, e, n) => ut(t, typeof e != \"symbol\" ? e + \"\" : e, n);\nimport { o as gt, D } from \"./draw-DqsKIWJD.js\";\nimport { d as Pe } from \"./draw-DqsKIWJD.js\";\nimport { F as d, L as P, D as g, a as B, s as ht, b as pt, c as dt, i as mt, S as C, l as Pt, p as wt, d as Mt, e as X, g as It } from \"./models-WQ-B7GSL.js\";\nimport { h as Me } from \"./models-WQ-B7GSL.js\";\nimport { r as St, z as bt, l as Lt, f as w, n as Y, i as E, a as vt, s as kt, k as At, m as j, L as S, A as b, d as M, t as Et, c as yt, B as Ft, E as Ct, Q as xt, C as Dt } from \"./QuadraticBezier-BzVqiExF.js\";\nimport { s as Rt, a as Ot, b as Bt, c as $t, d as Gt, w as z } from \"./svg-BylQQgsL.js\";\nfunction I(t) {\n if (t instanceof d)\n return [t];\n if (t instanceof P)\n return [new d(t)];\n if (t instanceof g)\n return t.figures;\n throw new Error(\"Unknown shape\");\n}\nfunction tt(t, e, n = 1e-9) {\n let s = [];\n const r = [], i = new Array(e.segments.length).fill(0).map(() => []);\n e.segments.forEach((c, f) => {\n t.segments.forEach((a) => {\n const { intersections: u, overlaps: m } = B(\n c,\n a,\n n\n );\n s.push(...u), i[f].push(...u), r.push(...m);\n const h = m.flatMap((l) => [\n l.firstPoint,\n l.lastPoint\n ]);\n s.push(...h), i[f].push(...h);\n });\n }), s = St(s, n);\n const o = bt([e.segments, i]).flatMap(([c, f]) => f.length ? c.splitAt(f) : [c]);\n return Array.from(\n ht(\n o,\n s,\n r\n )\n );\n}\nfunction $(t, e, n = !1) {\n return tt(e, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return e.onStroke(i) ? !n : !e.contains(i);\n });\n}\nfunction G(t, e, n = !1) {\n return tt(e, t).filter((r) => {\n const i = r.segments[0].midPoint;\n return e.onStroke(i) ? !n : e.contains(i);\n });\n}\nfunction V(t, e, n = !1) {\n const s = $(\n t,\n e.contour,\n n\n ), r = e.holes.flatMap(\n (i) => G(t, i, n)\n );\n return [...s, ...r];\n}\nfunction _(t, e, n = !1) {\n let s = G(\n t,\n e.contour,\n n\n );\n return e.holes.forEach((r) => {\n s = s.flatMap(\n (i) => $(i, r, n)\n );\n }), s;\n}\nfunction Tt(t, e) {\n return new g(\n pt(I(t), I(e))\n );\n}\nfunction y(t) {\n return t.reduce(\n (e, n) => Tt(e, n),\n new g()\n );\n}\nfunction et(t, e) {\n return new g(\n dt(I(t), I(e))\n );\n}\nfunction oe(t, e) {\n return new g(\n mt(I(t), I(e))\n );\n}\nfunction ae(t, e, n = !0) {\n if (e instanceof P)\n return $(t, e, n);\n if (e instanceof d)\n return V(t, e, n);\n let s = [new C([...t.segments])];\n return e.figures.forEach((r) => {\n s = s.flatMap((i) => V(i, r, n));\n }), s;\n}\nfunction ce(t, e, n = !1) {\n if (e instanceof P)\n return G(t, e, n);\n if (e instanceof d)\n return _(t, e, n);\n let s = [new C([...t.segments])];\n return e.figures.forEach((r) => {\n s = s.flatMap((i) => _(i, r, n));\n }), s;\n}\nfunction N(t) {\n return t < 0 ? \"before\" : t > 1 ? \"after\" : \"between\";\n}\nconst q = (t, e, n) => {\n if (n === \"before\")\n return t.distanceFrom(e.firstPoint);\n if (n === \"after\")\n return t.distanceFrom(e.lastPoint);\n throw new Error(\"Invalid position\");\n};\nfunction Ut(t, e) {\n const n = Lt(t, e);\n if (n === \"parallel\")\n return Math.min(\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint)\n );\n const { intersectionParam1: s, intersectionParam2: r } = n, i = N(s), o = N(r);\n if (i === \"between\" && o === \"between\")\n return 0;\n if (i === \"between\" && o !== \"between\")\n return q(t, e, o);\n if (o === \"between\" && i !== \"between\")\n return q(e, t, i);\n if (i === \"before\" && o === \"before\")\n return w(t.firstPoint, e.firstPoint);\n if (i === \"after\" && o === \"after\")\n return w(t.lastPoint, e.lastPoint);\n if (i === \"before\" && o === \"after\")\n return w(t.firstPoint, e.lastPoint);\n if (i === \"after\" && o === \"before\")\n return w(t.lastPoint, e.firstPoint);\n throw new Error(\"Invalid position\");\n}\nfunction J(t, e) {\n if (Pt(t, e).length > 0)\n return 0;\n const n = wt(t, e.center);\n if (t.isOnSegment(n)) {\n const s = w(n, e.center);\n if (Math.abs(s - e.radius) < t.precision && e.isOnSegment(n))\n return 0;\n if (s - e.radius > t.precision) {\n const r = Y(\n E(n, e.center)\n ), i = vt(\n e.center,\n kt(r, e.radius)\n );\n if (e.isOnSegment(i))\n return w(i, n);\n }\n }\n return Math.min(\n e.distanceFrom(t.firstPoint),\n e.distanceFrom(t.lastPoint),\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint)\n );\n}\nconst zt = (t, e) => {\n const n = t.angleToParam(e.firstAngle);\n if (t.isValidParameter(n)) return !0;\n const s = t.angleToParam(e.lastAngle);\n return !!t.isValidParameter(s);\n};\nfunction Vt(t, e) {\n if (Mt(t, e, !0).length > 0) return 0;\n const n = w(t.center, e.center);\n if (n < t.precision && zt(t, e))\n return Math.abs(t.radius - e.radius);\n const s = Y(E(e.center, t.center)), r = n - Math.abs(t.radius - e.radius) < t.precision;\n let i = At(s);\n r && e.radius > t.radius && (i += Math.PI);\n const o = r ? i : i + Math.PI, c = t.angleToParam(i), f = e.angleToParam(o);\n return t.isValidParameter(c) && e.isValidParameter(f) ? w(t.paramPoint(c), e.paramPoint(f)) : Math.min(\n t.distanceFrom(e.firstPoint),\n t.distanceFrom(e.lastPoint),\n e.distanceFrom(t.firstPoint),\n e.distanceFrom(t.lastPoint)\n );\n}\nfunction _t(t, e, n) {\n let s = 0, r = t.length - 1;\n for (; s <= r; ) {\n const i = Math.floor((s + r) / 2), o = n(t[i], e);\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 Nt(t, e, n) {\n const s = _t(t, e, n);\n s < 0 ? t.splice(-(s + 1), 0, e) : t.splice(s, 0, e);\n}\nclass qt {\n constructor() {\n p(this, \"buckets\");\n this.buckets = [];\n }\n addInterval(e) {\n const n = this.buckets[e.rectangle.diagonalBucketIndex];\n n === void 0 ? this.buckets[e.rectangle.diagonalBucketIndex] = [e] : Nt(n, e, (s, r) => s.value - r.value);\n }\n removeInterval(e) {\n const n = this.buckets[e.rectangle.diagonalBucketIndex];\n if (n === void 0)\n throw new Error(\"Interval not found\");\n n.shift();\n }\n getBottomRightHullIntervals() {\n const e = [];\n for (let n = this.buckets.length - 1; n >= 0; n--) {\n const s = this.buckets[n];\n if (!s === void 0) continue;\n const r = s[0];\n if (r !== void 0) {\n if (!e.length) {\n e.push(r);\n continue;\n }\n for (; e.length && e[e.length - 1].value >= r.value; )\n e.pop();\n for (; e.length >= 2; ) {\n const i = e[e.length - 1], o = e[e.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 e.pop();\n else\n break;\n }\n e.push(r);\n }\n }\n return e;\n }\n}\nclass Jt {\n constructor(e, n) {\n p(this, \"diagonal\");\n p(this, \"diagonalBucketIndex\");\n p(this, \"xLength\");\n p(this, \"yLength\");\n p(this, \"index\");\n this.x = e, this.y = n, this.xLength = Math.pow(3, -e), this.yLength = Math.pow(3, -n), this.diagonal = Math.sqrt(\n this.xLength * this.xLength + this.yLength * this.yLength\n ), this.diagonalBucketIndex = e + n, this.index = `${e},${n}`;\n }\n}\nclass Qt {\n constructor(e, n = 1e-8, s = 1e3, r = 1e-6) {\n p(this, \"rectangles\");\n p(this, \"buckets\");\n p(this, \"fMin\");\n p(this, \"argMin\");\n p(this, \"tol\");\n this.fcn = e, this.endTolerance = n, this.maxIterations = s, this.epsilon = r, this.fcn = e, this.epsilon = r, this.endTolerance = n, this.maxIterations = s, this.rectangles = /* @__PURE__ */ new Map(), this.buckets = new qt();\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(e) {\n this.buckets.addInterval(e), e.value <= this.fMin && (this.fMin = e.value, this.argMin = e.center, this.tol = e.rectangle.diagonal);\n }\n rect(e, n) {\n const s = `${e},${n}`;\n return this.rectangles.has(s) || this.rectangles.set(s, new Jt(e, n)), this.rectangles.get(s);\n }\n splitInterval(e) {\n let n, s, r;\n const [i, o] = e.center;\n return e.rectangle.x <= e.rectangle.y ? (n = this.rect(e.rectangle.x + 1, e.rectangle.y), s = [i - n.xLength, o], r = [i + n.xLength, o]) : (n = this.rect(e.rectangle.x, e.rectangle.y + 1), s = [i, o - n.yLength], r = [i, o + n.yLength]), [\n new A(s, this.fcn(s), n),\n new A(e.center, e.value, n),\n new A(r, this.fcn(r), n)\n ];\n }\n single_iteration() {\n const e = this.buckets.getBottomRightHullIntervals();\n for (; e.length >= 2; ) {\n const n = e[0], s = e[1], r = (s.value - n.value) / ((s.rectangle.diagonal - n.rectangle.diagonal) / 2), i = n.value - r * s.value / 2;\n if ((this.fMin - i) / Math.abs(this.fMin) < this.epsilon)\n e.shift();\n else\n break;\n }\n e.forEach((n) => {\n this.buckets.removeInterval(n);\n });\n for (const n of e) {\n const [s, r, i] = this.splitInterval(n);\n this.registerInterval(s), this.registerInterval(r), this.registerInterval(i);\n }\n }\n run() {\n let e = 0;\n for (; this.tol > this.endTolerance / 2 && (this.single_iteration(), e++, !(e > this.maxIterations)); )\n ;\n return {\n fMin: this.fMin,\n argMin: this.argMin,\n tol: this.tol,\n iterations: e\n };\n }\n}\nclass A {\n constructor(e, n, s) {\n this.center = e, this.value = n, this.rectangle = s;\n }\n}\nfunction Zt(t, e = 1e-8, n = 1e3, s = 1e-6) {\n return new Qt(\n t,\n e,\n n,\n s\n ).run();\n}\nfunction Ht(t, e, n = 1e-9) {\n const s = Zt((r) => {\n const i = t.paramPoint(r[0]), o = e.paramPoint(r[1]);\n return j(i, o);\n }, n);\n return Math.sqrt(s.fMin);\n}\nfunction Wt(t, e) {\n return t instanceof S && e instanceof S ? Ut(t, e) : t instanceof S && e instanceof b ? J(t, e) : t instanceof b && e instanceof S ? J(e, t) : t instanceof b && e instanceof b ? Vt(t, e) : Ht(t, e);\n}\nconst T = 1e-8;\nfunction R(t, e, n = !0) {\n const s = t.map((a) => ({\n offset: gt(a, e),\n original: a\n })), r = [];\n let i = n ? null : s.at(-1), o = n ? s.at(-1) : null;\n if (r.length === 1) return r;\n const c = (a) => {\n i ? a.offset instanceof D ? M(a.offset.firstPoint, a.offset.lastPoint) || r.push(\n new S(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) 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, m = a.offset.firstPoint;\n if (M(u, m)) {\n c(o), o = a;\n continue;\n }\n let h = [];\n if (!(o.offset instanceof D) && !(a.offset instanceof D)) {\n const { intersections: L, overlaps: x } = B(\n o.offset,\n a.offset,\n T / 100\n );\n h = [\n ...L,\n ...x.flatMap((v) => [v.firstPoint, v.lastPoint])\n ];\n }\n if (h.length > 0) {\n let L = h[0];\n if (h.length > 1) {\n const ct = o == null ? void 0 : o.original.lastPoint, U = h.map(\n (ft) => j(ft, ct)\n );\n L = h[U.indexOf(Math.min(...U))];\n }\n const x = o.offset.splitAt([\n L\n ])[0], v = a.offset.splitAt([L]).at(-1);\n if (!v) throw new Error(\"Bug in the splitting algo in offset\");\n c({\n offset: x,\n original: o.original\n }), o = { offset: v, original: a.original };\n continue;\n }\n const l = o.original.lastPoint, k = yt(\n E(m, l),\n E(u, l)\n ) > 0, at = new b(u, m, l, k);\n c(o), r.push(at), o = a;\n }\n return o && c(o), r;\n}\nfunction nt(t) {\n const e = /* @__PURE__ */ new Map(), n = (s, r) => {\n const i = e.get(s) || [];\n e.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 } = B(s, i, T), a = [\n ...c,\n ...f.flatMap((u) => [u.firstPoint, u.lastPoint])\n ].filter((u) => {\n const m = M(u, s.firstPoint) || M(u, s.lastPoint), h = M(u, i.firstPoint) || M(u, i.lastPoint);\n return !(m && h);\n });\n a.length && (n(r, a), n(o + r + 1, a));\n });\n }), e;\n}\nfunction st(t, e) {\n return e.flatMap((n, s) => {\n if (!t.has(s)) return n;\n const r = t.get(s);\n return r ? n.splitAt(r) : n;\n });\n}\nfunction it(t, e, n) {\n return t.filter((s) => !e.segments.some((i) => Wt(i, s) < Math.abs(n) - T));\n}\nfunction F(t, e) {\n const n = t.clockwise ? e : -e, s = R(t.segments, n);\n if (s.length < 2) return new g();\n const r = nt(s);\n if (!r.size) {\n const a = new P(s);\n return new g([new d(a)]);\n }\n const i = st(\n r,\n s\n ), o = it(i, t, e);\n if (!o.length) return new g();\n const f = X(o).filter((a) => a.length > 1).filter((a) => M(a[0].firstPoint, a.at(-1).lastPoint)).map((a) => new P(a));\n return f.length ? new g(f.map((a) => new d(a))) : new g();\n}\nfunction Kt(t, e, n = \"round\") {\n const s = e / 2, r = R(t.segments, s, !1), i = R(t.segments, -s, !1).map(\n (l) => l.reverse()\n );\n i.reverse();\n const o = (l, k) => n === \"round\" ? Et(\n l.lastPoint,\n k.firstPoint,\n l.tangentAtLastPoint\n ) : new S(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 = nt(c);\n if (!f.size) {\n const l = new P(c);\n return new g([new d(l)]);\n }\n const a = st(\n f,\n c\n ), u = it(a, t, s);\n if (!u.length) return new g();\n const h = X(u).filter((l) => l.length > 1).filter((l) => M(l[0].firstPoint, l.at(-1).lastPoint)).map((l) => new P(l));\n return h.length ? new g(h.map((l) => new d(l))) : new g();\n}\nfunction Xt(t, e) {\n const n = t.map((s) => {\n const r = y(\n s.holes.map((i) => F(i, e))\n );\n return et(F(s.contour, e), r);\n });\n return y(n);\n}\nfunction Yt(t, e) {\n const n = Math.abs(e / 2), s = t.map(\n (r) => y(\n r.allLoops.map((i) => et(F(i, n), F(i, -n)))\n )\n );\n return y(s);\n}\nfunction fe(t, e) {\n return Xt(I(t), e);\n}\nfunction le(t, e, { endCap: n = \"round\" } = {}) {\n return t instanceof C ? Kt(t, e, n) : Yt(I(t), e);\n}\nfunction Q(t) {\n if (t instanceof g)\n return Rt(t);\n if (t instanceof d)\n return Ot(t);\n if (t instanceof P)\n return `<path d=\"${Bt(t)}\" />`;\n if (t instanceof C)\n return `<path d=\"${$t(t)}\" />`;\n if (It(t))\n return `<path d=\"${`M ${t.firstPoint.join(\" \")}`} ${Gt(\n t\n )}\" />`;\n throw new Error(\"Unknown shape type\");\n}\nconst Z = (t) => \"shape\" in t ? t.shape : t, H = (t, e) => {\n if (!(\"shape\" in t)) return e;\n const { color: n } = t;\n return n ? `<g stroke=\"${n}\">${e}</g>` : e;\n}, W = (t) => new Ft(t.xMin, -t.yMax, t.xMax, -t.yMin);\nfunction ue(t, {\n margin: e = 1,\n unit: n = null,\n viewBox: s\n} = {}) {\n if (Array.isArray(t)) {\n const i = t.map((f) => Z(f).mirror()), o = i.map((f, a) => H(t[a], Q(f))).join(`\n`), c = i.slice(1).reduce((f, a) => f.merge(a.boundingBox), i[0].boundingBox);\n return z(o, s ? W(s) : c, e, n);\n }\n const r = Z(t).mirror();\n return z(\n H(t, Q(r)),\n s ? W(s) : r.boundingBox,\n e,\n n\n );\n}\nconst rt = (t) => {\n if (t.type === \"LINE\")\n return new S(t.firstPoint, t.lastPoint);\n if (t.type === \"ARC\")\n return new b(\n t.firstPoint,\n t.lastPoint,\n t.center,\n t.clockwise\n );\n if (t.type === \"ELLIPSE_ARC\")\n return new Ct(\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 xt(\n t.firstPoint,\n t.lastPoint,\n t.controlPoint\n );\n if (t.type === \"CUBIC_BEZIER\")\n return new Dt(\n t.firstPoint,\n t.lastPoint,\n t.firstControlPoint,\n t.lastControlPoint\n );\n throw new Error(\"Unknown segment type\");\n}, O = (t) => {\n const e = t.segments.map(rt);\n return new P(e);\n}, ot = (t) => {\n const e = O(t.contour), n = t.holes.map(O);\n return new d(e, n);\n}, jt = (t) => {\n const e = t.figures.map(ot);\n return new g(e);\n};\nfunction ge(t) {\n if (t.type === \"DIAGRAM\")\n return jt(t);\n if (t.type === \"FIGURE\")\n return ot(t);\n if (t.type === \"LOOP\")\n return O(t);\n if (t.type === \"LINE\" || t.type === \"ARC\" || t.type === \"ELLIPSE_ARC\" || t.type === \"CUBIC_BEZIER\")\n return rt(t);\n throw new Error(\"Unknown shape type\");\n}\nconst K = Math.PI / 180, te = 180 / Math.PI;\nfunction he(t, e) {\n const n = Math.cos(e * K) * t, s = Math.sin(e * K) * t;\n return [n, s];\n}\nfunction pe([t, e]) {\n const n = Math.sqrt(t * t + e * e), s = Math.atan2(e, t) * te;\n return [n, s];\n}\nexport {\n K as DEG2RAD,\n te as RAD2DEG,\n pe as cartesianToPolar,\n ce as confineStrand,\n et as cut,\n Pe as draw,\n ae as eraseStrand,\n Me as exportJSON,\n ue as exportSVG,\n Tt as fuse,\n y as fuseAll,\n ge as importJSON,\n oe as intersect,\n fe as offset,\n le as outlineStroke,\n he as polarToCartesian,\n Q 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":["Be","Me","r","Oe","s","q","oe","ot","le","Lt","t","he","Dt","ft$1","ft","n","ce","ye","Te","fe","Ue","Z","W","ut","X","It","an","wt","Rt","J","St","Pe","H","Tt","Ye","We","Ie","i","rt","Wt","Qe","Mt","l","a","u","c","g","d","w","E","Ge","Xe","et$3","et","Ze","e","lt","Ft","o","h","Je","Jt","gt","Xt","me","un","zt","at","cn","fn","be","Bt","Ee","_e","Ke","He","R","L","S","k","D","v","Ce","qe","$","ts","Ct","es","ss","ns","is","rs","os","ls","tt","je","Ot","Fe","hs","xe","as","us","Se","cs","nt","it","Pt","bt","ge","we","ae","Ut","Kt","yt","fs","ms","gs","ws","ps","ds","Ms","ys","Ps","bs","Es","_s","js","Ss","ks","Rs","vs","Ts","V$1","V","_","m","b","j","C","F","I","O","x","N","A","B","U","z","G","Q","Y","se","ne","ie","re","xt","At","Vt","Nt","$t","ke","Is","qt","ue","dt","K","Zt","pt","Ht","Cs","ct","qs","Fs","xs","As","Vs","Qt","Ns","$s","Ae","Ls","st","te$1","ht","pe","vt$1","Ds","vt","Ve","te","Gt","zs","Bs","Os","Us","Ys","Ws","Ne","Qs","Gs","Zs","Yt","$e","Le","Js","De","Re","Ks","Hs","ee","kt","ze","gn","ve","mt","tn","en","nn","rn","de","Et","p","P","jt","ln","wn","on","_t","pn","f","dn","mn","sn","T","M","Pn","xn","Sn","yn","bn","Cn","Mn","An","In","En","Y$1","Fn","Bn","vn","kn","_n","On","Tn","y","Ln","zn","qn","Dn","Rn","Vn","Nn","Un","jn","$n","Hn","Xn","Yn","Gn","Qn","Wn","Jn","Kn","Zn","hn","Dieline","Transformable","body","cutLines","foldLines","foldLinesForwards","foldLinesBackwards","__publicField","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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"}
|