@tscircuit/math-utils 0.0.22 → 0.0.24
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/README.md +1 -1
- package/dist/{chunk-QE7MTLD2.js → chunk-6PD3WN3Y.js} +2 -2
- package/dist/{chunk-G6ZGTC5I.js → chunk-BLY7FZPX.js} +2 -2
- package/dist/{chunk-KWIMOCAS.js → chunk-DRDDWFOS.js} +7 -3
- package/dist/chunk-DRDDWFOS.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -3
- package/dist/nearest-box.d.ts +9 -1
- package/dist/nearest-box.js +3 -1
- package/dist/point-distance.js +2 -2
- package/dist/segment-distance.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-KWIMOCAS.js.map +0 -1
- /package/dist/{chunk-QE7MTLD2.js.map → chunk-6PD3WN3Y.js.map} +0 -0
- /package/dist/{chunk-G6ZGTC5I.js.map → chunk-BLY7FZPX.js.map} +0 -0
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ console.log("Lines intersect:", intersects)
|
|
|
52
52
|
| [`distance(p1, p2)`](./src/line-intersections.ts) | Euclidean distance between two points. |
|
|
53
53
|
| [`getSegmentIntersection(a, b, u, v)`](./src/line-intersections.ts) | Intersection point of two segments or `null` if none. |
|
|
54
54
|
| [`getBoundingBox(box)`](./src/nearest-box.ts) | Compute the bounding box of a box. |
|
|
55
|
-
| [`
|
|
55
|
+
| [`computeManhattanDistanceBetweenBoxes(boxA, boxB)`](./src/nearest-box.ts) | Minimum Manhattan distance between two boxes and the nearest points. |
|
|
56
56
|
| [`clamp(value, min, max)`](./src/nearest-box.ts) | Clamp a value between `min` and `max`. |
|
|
57
57
|
| [`findNearestPointsBetweenBoxSets(setA, setB)`](./src/nearest-box.ts) | Find nearest points between two sets of boxes. |
|
|
58
58
|
| [`getUnitVectorFromPointAToB(a, b)`](./src/get-unit-vector.ts) | Unit vector pointing from point A to B. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
clamp
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DRDDWFOS.js";
|
|
4
4
|
import {
|
|
5
5
|
distance,
|
|
6
6
|
doSegmentsIntersect,
|
|
@@ -109,4 +109,4 @@ export {
|
|
|
109
109
|
segmentToCircleMinDistance,
|
|
110
110
|
pointToSegmentClosestPoint
|
|
111
111
|
};
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
112
|
+
//# sourceMappingURL=chunk-6PD3WN3Y.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
clamp
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DRDDWFOS.js";
|
|
4
4
|
import {
|
|
5
5
|
distance
|
|
6
6
|
} from "./chunk-EFLPMB4J.js";
|
|
@@ -46,4 +46,4 @@ export {
|
|
|
46
46
|
midpoint,
|
|
47
47
|
distSq
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-BLY7FZPX.js.map
|
|
@@ -9,7 +9,7 @@ function getBoundingBox(box) {
|
|
|
9
9
|
maxY: box.center.y + halfHeight
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
function
|
|
12
|
+
function computeManhattanDistanceBetweenBoxes(boxA, boxB) {
|
|
13
13
|
const a = getBoundingBox(boxA);
|
|
14
14
|
const b = getBoundingBox(boxB);
|
|
15
15
|
const dx = Math.max(a.minX - b.maxX, b.minX - a.maxX, 0);
|
|
@@ -26,6 +26,9 @@ function computeDistanceBetweenBoxes(boxA, boxB) {
|
|
|
26
26
|
const distance = Math.hypot(pointA.x - pointB.x, pointA.y - pointB.y);
|
|
27
27
|
return { distance, pointA, pointB };
|
|
28
28
|
}
|
|
29
|
+
function computeDistanceBetweenBoxes(boxA, boxB) {
|
|
30
|
+
return computeManhattanDistanceBetweenBoxes(boxA, boxB);
|
|
31
|
+
}
|
|
29
32
|
function computeGapBetweenBoxes(boxA, boxB) {
|
|
30
33
|
const a = getBoundingBox(boxA);
|
|
31
34
|
const b = getBoundingBox(boxB);
|
|
@@ -43,7 +46,7 @@ function findNearestPointsBetweenBoxSets(boxSetA, boxSetB) {
|
|
|
43
46
|
let nearestPointB = { x: 0, y: 0 };
|
|
44
47
|
for (const boxA of boxSetA) {
|
|
45
48
|
for (const boxB of boxSetB) {
|
|
46
|
-
const { distance, pointA, pointB } =
|
|
49
|
+
const { distance, pointA, pointB } = computeManhattanDistanceBetweenBoxes(
|
|
47
50
|
boxA,
|
|
48
51
|
boxB
|
|
49
52
|
);
|
|
@@ -63,9 +66,10 @@ function findNearestPointsBetweenBoxSets(boxSetA, boxSetB) {
|
|
|
63
66
|
|
|
64
67
|
export {
|
|
65
68
|
getBoundingBox,
|
|
69
|
+
computeManhattanDistanceBetweenBoxes,
|
|
66
70
|
computeDistanceBetweenBoxes,
|
|
67
71
|
computeGapBetweenBoxes,
|
|
68
72
|
clamp,
|
|
69
73
|
findNearestPointsBetweenBoxSets
|
|
70
74
|
};
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-DRDDWFOS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/nearest-box.ts"],"sourcesContent":["import type { Point } from \"./common\"\n\nexport type Box = { center: Point; width: number; height: number }\nexport type BoxSet = Box[]\n\nexport type GridCell = { boxes: Box[] }\n\nexport function getBoundingBox(box: Box) {\n const halfWidth = box.width / 2\n const halfHeight = box.height / 2\n return {\n minX: box.center.x - halfWidth,\n maxX: box.center.x + halfWidth,\n minY: box.center.y - halfHeight,\n maxY: box.center.y + halfHeight,\n }\n}\n\nexport function computeManhattanDistanceBetweenBoxes(\n boxA: Box,\n boxB: Box,\n): { distance: number; pointA: Point; pointB: Point } {\n const a = getBoundingBox(boxA)\n const b = getBoundingBox(boxB)\n\n const dx = Math.max(a.minX - b.maxX, b.minX - a.maxX, 0)\n const dy = Math.max(a.minY - b.maxY, b.minY - a.maxY, 0)\n\n const pointA: Point = { x: 0, y: 0 }\n const pointB: Point = { x: 0, y: 0 }\n\n if (dx === 0 && dy === 0) {\n // Boxes overlap\n return { distance: 0, pointA: boxA.center, pointB: boxB.center }\n }\n\n // Compute the closest points on the edges\n pointA.x = clamp(boxA.center.x, b.minX, b.maxX)\n pointA.y = clamp(boxA.center.y, b.minY, b.maxY)\n\n pointB.x = clamp(boxB.center.x, a.minX, a.maxX)\n pointB.y = clamp(boxB.center.y, a.minY, a.maxY)\n\n const distance = Math.hypot(pointA.x - pointB.x, pointA.y - pointB.y)\n return { distance, pointA, pointB }\n}\n\n/**\n * @deprecated Use {@link computeManhattanDistanceBetweenBoxes} instead.\n */\nexport function computeDistanceBetweenBoxes(\n boxA: Box,\n boxB: Box,\n): { distance: number; pointA: Point; pointB: Point } {\n return computeManhattanDistanceBetweenBoxes(boxA, boxB)\n}\n\nexport function computeGapBetweenBoxes(boxA: Box, boxB: Box): number {\n const a = getBoundingBox(boxA)\n const b = getBoundingBox(boxB)\n\n const dx = Math.max(a.minX - b.maxX, b.minX - a.maxX, 0)\n const dy = Math.max(a.minY - b.maxY, b.minY - a.maxY, 0)\n\n const distance = Math.hypot(dx, dy)\n return distance\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function findNearestPointsBetweenBoxSets(\n boxSetA: BoxSet,\n boxSetB: BoxSet,\n): { pointA: Point; pointB: Point; distance: number } {\n let minDistance = Number.POSITIVE_INFINITY\n let nearestPointA: Point = { x: 0, y: 0 }\n let nearestPointB: Point = { x: 0, y: 0 }\n\n for (const boxA of boxSetA) {\n for (const boxB of boxSetB) {\n const { distance, pointA, pointB } = computeManhattanDistanceBetweenBoxes(\n boxA,\n boxB,\n )\n if (distance < minDistance) {\n minDistance = distance\n nearestPointA = pointA\n nearestPointB = pointB\n }\n }\n }\n\n return {\n pointA: nearestPointA,\n pointB: nearestPointB,\n distance: minDistance,\n }\n}\n"],"mappings":";AAOO,SAAS,eAAe,KAAU;AACvC,QAAM,YAAY,IAAI,QAAQ;AAC9B,QAAM,aAAa,IAAI,SAAS;AAChC,SAAO;AAAA,IACL,MAAM,IAAI,OAAO,IAAI;AAAA,IACrB,MAAM,IAAI,OAAO,IAAI;AAAA,IACrB,MAAM,IAAI,OAAO,IAAI;AAAA,IACrB,MAAM,IAAI,OAAO,IAAI;AAAA,EACvB;AACF;AAEO,SAAS,qCACd,MACA,MACoD;AACpD,QAAM,IAAI,eAAe,IAAI;AAC7B,QAAM,IAAI,eAAe,IAAI;AAE7B,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACvD,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAEvD,QAAM,SAAgB,EAAE,GAAG,GAAG,GAAG,EAAE;AACnC,QAAM,SAAgB,EAAE,GAAG,GAAG,GAAG,EAAE;AAEnC,MAAI,OAAO,KAAK,OAAO,GAAG;AAExB,WAAO,EAAE,UAAU,GAAG,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAAA,EACjE;AAGA,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAC9C,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAE9C,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAC9C,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAE9C,QAAM,WAAW,KAAK,MAAM,OAAO,IAAI,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC;AACpE,SAAO,EAAE,UAAU,QAAQ,OAAO;AACpC;AAKO,SAAS,4BACd,MACA,MACoD;AACpD,SAAO,qCAAqC,MAAM,IAAI;AACxD;AAEO,SAAS,uBAAuB,MAAW,MAAmB;AACnE,QAAM,IAAI,eAAe,IAAI;AAC7B,QAAM,IAAI,eAAe,IAAI;AAE7B,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACvD,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAEvD,QAAM,WAAW,KAAK,MAAM,IAAI,EAAE;AAClC,SAAO;AACT;AAEO,SAAS,MAAM,OAAe,KAAa,KAAqB;AACrE,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;AAC3C;AAEO,SAAS,gCACd,SACA,SACoD;AACpD,MAAI,cAAc,OAAO;AACzB,MAAI,gBAAuB,EAAE,GAAG,GAAG,GAAG,EAAE;AACxC,MAAI,gBAAuB,EAAE,GAAG,GAAG,GAAG,EAAE;AAExC,aAAW,QAAQ,SAAS;AAC1B,eAAW,QAAQ,SAAS;AAC1B,YAAM,EAAE,UAAU,QAAQ,OAAO,IAAI;AAAA,QACnC;AAAA,QACA;AAAA,MACF;AACA,UAAI,WAAW,aAAa;AAC1B,sBAAc;AACd,wBAAgB;AAChB,wBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { distance, doSegmentsIntersect, doesLineIntersectLine, doesSegmentIntersectRect, getSegmentIntersection, onSegment, orientation, pointToSegmentDistance } from './line-intersections.js';
|
|
2
|
-
export { Box, BoxSet, GridCell, clamp, computeDistanceBetweenBoxes, computeGapBetweenBoxes, findNearestPointsBetweenBoxSets, getBoundingBox } from './nearest-box.js';
|
|
2
|
+
export { Box, BoxSet, GridCell, clamp, computeDistanceBetweenBoxes, computeGapBetweenBoxes, computeManhattanDistanceBetweenBoxes, findNearestPointsBetweenBoxSets, getBoundingBox } from './nearest-box.js';
|
|
3
3
|
export { Bounds, Point } from './common.js';
|
|
4
4
|
export { getUnitVectorFromDirection, getUnitVectorFromPointAToB } from './get-unit-vector.js';
|
|
5
5
|
export { GridCellPositions, GridOptions, grid } from './grid.js';
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
midpoint,
|
|
4
4
|
pointToBoundsDistance,
|
|
5
5
|
pointToBoxDistance
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BLY7FZPX.js";
|
|
7
7
|
import "./chunk-MTORG67J.js";
|
|
8
8
|
import {
|
|
9
9
|
range
|
|
@@ -14,14 +14,15 @@ import {
|
|
|
14
14
|
segmentToBoxMinDistance,
|
|
15
15
|
segmentToCircleMinDistance,
|
|
16
16
|
segmentToSegmentMinDistance
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6PD3WN3Y.js";
|
|
18
18
|
import {
|
|
19
19
|
clamp,
|
|
20
20
|
computeDistanceBetweenBoxes,
|
|
21
21
|
computeGapBetweenBoxes,
|
|
22
|
+
computeManhattanDistanceBetweenBoxes,
|
|
22
23
|
findNearestPointsBetweenBoxSets,
|
|
23
24
|
getBoundingBox
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-DRDDWFOS.js";
|
|
25
26
|
import {
|
|
26
27
|
boundsAreaOverlap
|
|
27
28
|
} from "./chunk-YA3GC5BB.js";
|
|
@@ -55,6 +56,7 @@ export {
|
|
|
55
56
|
clamp,
|
|
56
57
|
computeDistanceBetweenBoxes,
|
|
57
58
|
computeGapBetweenBoxes,
|
|
59
|
+
computeManhattanDistanceBetweenBoxes,
|
|
58
60
|
distSq,
|
|
59
61
|
distance,
|
|
60
62
|
doBoundsOverlap,
|
package/dist/nearest-box.d.ts
CHANGED
|
@@ -15,6 +15,14 @@ declare function getBoundingBox(box: Box): {
|
|
|
15
15
|
minY: number;
|
|
16
16
|
maxY: number;
|
|
17
17
|
};
|
|
18
|
+
declare function computeManhattanDistanceBetweenBoxes(boxA: Box, boxB: Box): {
|
|
19
|
+
distance: number;
|
|
20
|
+
pointA: Point;
|
|
21
|
+
pointB: Point;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated Use {@link computeManhattanDistanceBetweenBoxes} instead.
|
|
25
|
+
*/
|
|
18
26
|
declare function computeDistanceBetweenBoxes(boxA: Box, boxB: Box): {
|
|
19
27
|
distance: number;
|
|
20
28
|
pointA: Point;
|
|
@@ -28,4 +36,4 @@ declare function findNearestPointsBetweenBoxSets(boxSetA: BoxSet, boxSetB: BoxSe
|
|
|
28
36
|
distance: number;
|
|
29
37
|
};
|
|
30
38
|
|
|
31
|
-
export { type Box, type BoxSet, type GridCell, clamp, computeDistanceBetweenBoxes, computeGapBetweenBoxes, findNearestPointsBetweenBoxSets, getBoundingBox };
|
|
39
|
+
export { type Box, type BoxSet, type GridCell, clamp, computeDistanceBetweenBoxes, computeGapBetweenBoxes, computeManhattanDistanceBetweenBoxes, findNearestPointsBetweenBoxSets, getBoundingBox };
|
package/dist/nearest-box.js
CHANGED
|
@@ -2,13 +2,15 @@ import {
|
|
|
2
2
|
clamp,
|
|
3
3
|
computeDistanceBetweenBoxes,
|
|
4
4
|
computeGapBetweenBoxes,
|
|
5
|
+
computeManhattanDistanceBetweenBoxes,
|
|
5
6
|
findNearestPointsBetweenBoxSets,
|
|
6
7
|
getBoundingBox
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DRDDWFOS.js";
|
|
8
9
|
export {
|
|
9
10
|
clamp,
|
|
10
11
|
computeDistanceBetweenBoxes,
|
|
11
12
|
computeGapBetweenBoxes,
|
|
13
|
+
computeManhattanDistanceBetweenBoxes,
|
|
12
14
|
findNearestPointsBetweenBoxSets,
|
|
13
15
|
getBoundingBox
|
|
14
16
|
};
|
package/dist/point-distance.js
CHANGED
package/dist/segment-distance.js
CHANGED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
segmentToBoxMinDistance,
|
|
5
5
|
segmentToCircleMinDistance,
|
|
6
6
|
segmentToSegmentMinDistance
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-6PD3WN3Y.js";
|
|
8
|
+
import "./chunk-DRDDWFOS.js";
|
|
9
9
|
import "./chunk-EFLPMB4J.js";
|
|
10
10
|
export {
|
|
11
11
|
pointToSegmentClosestPoint,
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/nearest-box.ts"],"sourcesContent":["import type { Point } from \"./common\"\n\nexport type Box = { center: Point; width: number; height: number }\nexport type BoxSet = Box[]\n\nexport type GridCell = { boxes: Box[] }\n\nexport function getBoundingBox(box: Box) {\n const halfWidth = box.width / 2\n const halfHeight = box.height / 2\n return {\n minX: box.center.x - halfWidth,\n maxX: box.center.x + halfWidth,\n minY: box.center.y - halfHeight,\n maxY: box.center.y + halfHeight,\n }\n}\n\nexport function computeDistanceBetweenBoxes(\n boxA: Box,\n boxB: Box,\n): { distance: number; pointA: Point; pointB: Point } {\n const a = getBoundingBox(boxA)\n const b = getBoundingBox(boxB)\n\n const dx = Math.max(a.minX - b.maxX, b.minX - a.maxX, 0)\n const dy = Math.max(a.minY - b.maxY, b.minY - a.maxY, 0)\n\n const pointA: Point = { x: 0, y: 0 }\n const pointB: Point = { x: 0, y: 0 }\n\n if (dx === 0 && dy === 0) {\n // Boxes overlap\n return { distance: 0, pointA: boxA.center, pointB: boxB.center }\n }\n\n // Compute the closest points on the edges\n pointA.x = clamp(boxA.center.x, b.minX, b.maxX)\n pointA.y = clamp(boxA.center.y, b.minY, b.maxY)\n\n pointB.x = clamp(boxB.center.x, a.minX, a.maxX)\n pointB.y = clamp(boxB.center.y, a.minY, a.maxY)\n\n const distance = Math.hypot(pointA.x - pointB.x, pointA.y - pointB.y)\n return { distance, pointA, pointB }\n}\n\nexport function computeGapBetweenBoxes(boxA: Box, boxB: Box): number {\n const a = getBoundingBox(boxA)\n const b = getBoundingBox(boxB)\n\n const dx = Math.max(a.minX - b.maxX, b.minX - a.maxX, 0)\n const dy = Math.max(a.minY - b.maxY, b.minY - a.maxY, 0)\n\n const distance = Math.hypot(dx, dy)\n return distance\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function findNearestPointsBetweenBoxSets(\n boxSetA: BoxSet,\n boxSetB: BoxSet,\n): { pointA: Point; pointB: Point; distance: number } {\n let minDistance = Number.POSITIVE_INFINITY\n let nearestPointA: Point = { x: 0, y: 0 }\n let nearestPointB: Point = { x: 0, y: 0 }\n\n for (const boxA of boxSetA) {\n for (const boxB of boxSetB) {\n const { distance, pointA, pointB } = computeDistanceBetweenBoxes(\n boxA,\n boxB,\n )\n if (distance < minDistance) {\n minDistance = distance\n nearestPointA = pointA\n nearestPointB = pointB\n }\n }\n }\n\n return {\n pointA: nearestPointA,\n pointB: nearestPointB,\n distance: minDistance,\n }\n}\n"],"mappings":";AAOO,SAAS,eAAe,KAAU;AACvC,QAAM,YAAY,IAAI,QAAQ;AAC9B,QAAM,aAAa,IAAI,SAAS;AAChC,SAAO;AAAA,IACL,MAAM,IAAI,OAAO,IAAI;AAAA,IACrB,MAAM,IAAI,OAAO,IAAI;AAAA,IACrB,MAAM,IAAI,OAAO,IAAI;AAAA,IACrB,MAAM,IAAI,OAAO,IAAI;AAAA,EACvB;AACF;AAEO,SAAS,4BACd,MACA,MACoD;AACpD,QAAM,IAAI,eAAe,IAAI;AAC7B,QAAM,IAAI,eAAe,IAAI;AAE7B,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACvD,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAEvD,QAAM,SAAgB,EAAE,GAAG,GAAG,GAAG,EAAE;AACnC,QAAM,SAAgB,EAAE,GAAG,GAAG,GAAG,EAAE;AAEnC,MAAI,OAAO,KAAK,OAAO,GAAG;AAExB,WAAO,EAAE,UAAU,GAAG,QAAQ,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAAA,EACjE;AAGA,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAC9C,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAE9C,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAC9C,SAAO,IAAI,MAAM,KAAK,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI;AAE9C,QAAM,WAAW,KAAK,MAAM,OAAO,IAAI,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC;AACpE,SAAO,EAAE,UAAU,QAAQ,OAAO;AACpC;AAEO,SAAS,uBAAuB,MAAW,MAAmB;AACnE,QAAM,IAAI,eAAe,IAAI;AAC7B,QAAM,IAAI,eAAe,IAAI;AAE7B,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACvD,QAAM,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAEvD,QAAM,WAAW,KAAK,MAAM,IAAI,EAAE;AAClC,SAAO;AACT;AAEO,SAAS,MAAM,OAAe,KAAa,KAAqB;AACrE,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;AAC3C;AAEO,SAAS,gCACd,SACA,SACoD;AACpD,MAAI,cAAc,OAAO;AACzB,MAAI,gBAAuB,EAAE,GAAG,GAAG,GAAG,EAAE;AACxC,MAAI,gBAAuB,EAAE,GAAG,GAAG,GAAG,EAAE;AAExC,aAAW,QAAQ,SAAS;AAC1B,eAAW,QAAQ,SAAS;AAC1B,YAAM,EAAE,UAAU,QAAQ,OAAO,IAAI;AAAA,QACnC;AAAA,QACA;AAAA,MACF;AACA,UAAI,WAAW,aAAa;AAC1B,sBAAc;AACd,wBAAgB;AAChB,wBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF;","names":[]}
|
|
File without changes
|
|
File without changes
|