@tscircuit/hypergraph 0.0.41 → 0.0.42

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.
Files changed (2) hide show
  1. package/dist/index.js +1714 -43
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,3 +1,1471 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+
27
+ // node_modules/binary-search-bounds/search-bounds.js
28
+ var require_search_bounds = __commonJS({
29
+ "node_modules/binary-search-bounds/search-bounds.js"(exports, module) {
30
+ "use strict";
31
+ function ge(a, y, c, l, h) {
32
+ var i = h + 1;
33
+ while (l <= h) {
34
+ var m = l + h >>> 1, x = a[m];
35
+ var p = c !== void 0 ? c(x, y) : x - y;
36
+ if (p >= 0) {
37
+ i = m;
38
+ h = m - 1;
39
+ } else {
40
+ l = m + 1;
41
+ }
42
+ }
43
+ return i;
44
+ }
45
+ function gt(a, y, c, l, h) {
46
+ var i = h + 1;
47
+ while (l <= h) {
48
+ var m = l + h >>> 1, x = a[m];
49
+ var p = c !== void 0 ? c(x, y) : x - y;
50
+ if (p > 0) {
51
+ i = m;
52
+ h = m - 1;
53
+ } else {
54
+ l = m + 1;
55
+ }
56
+ }
57
+ return i;
58
+ }
59
+ function lt(a, y, c, l, h) {
60
+ var i = l - 1;
61
+ while (l <= h) {
62
+ var m = l + h >>> 1, x = a[m];
63
+ var p = c !== void 0 ? c(x, y) : x - y;
64
+ if (p < 0) {
65
+ i = m;
66
+ l = m + 1;
67
+ } else {
68
+ h = m - 1;
69
+ }
70
+ }
71
+ return i;
72
+ }
73
+ function le(a, y, c, l, h) {
74
+ var i = l - 1;
75
+ while (l <= h) {
76
+ var m = l + h >>> 1, x = a[m];
77
+ var p = c !== void 0 ? c(x, y) : x - y;
78
+ if (p <= 0) {
79
+ i = m;
80
+ l = m + 1;
81
+ } else {
82
+ h = m - 1;
83
+ }
84
+ }
85
+ return i;
86
+ }
87
+ function eq(a, y, c, l, h) {
88
+ while (l <= h) {
89
+ var m = l + h >>> 1, x = a[m];
90
+ var p = c !== void 0 ? c(x, y) : x - y;
91
+ if (p === 0) {
92
+ return m;
93
+ }
94
+ if (p <= 0) {
95
+ l = m + 1;
96
+ } else {
97
+ h = m - 1;
98
+ }
99
+ }
100
+ return -1;
101
+ }
102
+ function norm(a, y, c, l, h, f) {
103
+ if (typeof c === "function") {
104
+ return f(a, y, c, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0);
105
+ }
106
+ return f(a, y, void 0, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0);
107
+ }
108
+ module.exports = {
109
+ ge: function(a, y, c, l, h) {
110
+ return norm(a, y, c, l, h, ge);
111
+ },
112
+ gt: function(a, y, c, l, h) {
113
+ return norm(a, y, c, l, h, gt);
114
+ },
115
+ lt: function(a, y, c, l, h) {
116
+ return norm(a, y, c, l, h, lt);
117
+ },
118
+ le: function(a, y, c, l, h) {
119
+ return norm(a, y, c, l, h, le);
120
+ },
121
+ eq: function(a, y, c, l, h) {
122
+ return norm(a, y, c, l, h, eq);
123
+ }
124
+ };
125
+ }
126
+ });
127
+
128
+ // node_modules/two-product/two-product.js
129
+ var require_two_product = __commonJS({
130
+ "node_modules/two-product/two-product.js"(exports, module) {
131
+ "use strict";
132
+ module.exports = twoProduct;
133
+ var SPLITTER = +(Math.pow(2, 27) + 1);
134
+ function twoProduct(a, b, result) {
135
+ var x = a * b;
136
+ var c = SPLITTER * a;
137
+ var abig = c - a;
138
+ var ahi = c - abig;
139
+ var alo = a - ahi;
140
+ var d = SPLITTER * b;
141
+ var bbig = d - b;
142
+ var bhi = d - bbig;
143
+ var blo = b - bhi;
144
+ var err1 = x - ahi * bhi;
145
+ var err2 = err1 - alo * bhi;
146
+ var err3 = err2 - ahi * blo;
147
+ var y = alo * blo - err3;
148
+ if (result) {
149
+ result[0] = y;
150
+ result[1] = x;
151
+ return result;
152
+ }
153
+ return [y, x];
154
+ }
155
+ }
156
+ });
157
+
158
+ // node_modules/robust-sum/robust-sum.js
159
+ var require_robust_sum = __commonJS({
160
+ "node_modules/robust-sum/robust-sum.js"(exports, module) {
161
+ "use strict";
162
+ module.exports = linearExpansionSum;
163
+ function scalarScalar(a, b) {
164
+ var x = a + b;
165
+ var bv = x - a;
166
+ var av = x - bv;
167
+ var br = b - bv;
168
+ var ar = a - av;
169
+ var y = ar + br;
170
+ if (y) {
171
+ return [y, x];
172
+ }
173
+ return [x];
174
+ }
175
+ function linearExpansionSum(e, f) {
176
+ var ne = e.length | 0;
177
+ var nf = f.length | 0;
178
+ if (ne === 1 && nf === 1) {
179
+ return scalarScalar(e[0], f[0]);
180
+ }
181
+ var n = ne + nf;
182
+ var g = new Array(n);
183
+ var count = 0;
184
+ var eptr = 0;
185
+ var fptr = 0;
186
+ var abs = Math.abs;
187
+ var ei = e[eptr];
188
+ var ea = abs(ei);
189
+ var fi = f[fptr];
190
+ var fa = abs(fi);
191
+ var a, b;
192
+ if (ea < fa) {
193
+ b = ei;
194
+ eptr += 1;
195
+ if (eptr < ne) {
196
+ ei = e[eptr];
197
+ ea = abs(ei);
198
+ }
199
+ } else {
200
+ b = fi;
201
+ fptr += 1;
202
+ if (fptr < nf) {
203
+ fi = f[fptr];
204
+ fa = abs(fi);
205
+ }
206
+ }
207
+ if (eptr < ne && ea < fa || fptr >= nf) {
208
+ a = ei;
209
+ eptr += 1;
210
+ if (eptr < ne) {
211
+ ei = e[eptr];
212
+ ea = abs(ei);
213
+ }
214
+ } else {
215
+ a = fi;
216
+ fptr += 1;
217
+ if (fptr < nf) {
218
+ fi = f[fptr];
219
+ fa = abs(fi);
220
+ }
221
+ }
222
+ var x = a + b;
223
+ var bv = x - a;
224
+ var y = b - bv;
225
+ var q0 = y;
226
+ var q1 = x;
227
+ var _x, _bv, _av, _br, _ar;
228
+ while (eptr < ne && fptr < nf) {
229
+ if (ea < fa) {
230
+ a = ei;
231
+ eptr += 1;
232
+ if (eptr < ne) {
233
+ ei = e[eptr];
234
+ ea = abs(ei);
235
+ }
236
+ } else {
237
+ a = fi;
238
+ fptr += 1;
239
+ if (fptr < nf) {
240
+ fi = f[fptr];
241
+ fa = abs(fi);
242
+ }
243
+ }
244
+ b = q0;
245
+ x = a + b;
246
+ bv = x - a;
247
+ y = b - bv;
248
+ if (y) {
249
+ g[count++] = y;
250
+ }
251
+ _x = q1 + x;
252
+ _bv = _x - q1;
253
+ _av = _x - _bv;
254
+ _br = x - _bv;
255
+ _ar = q1 - _av;
256
+ q0 = _ar + _br;
257
+ q1 = _x;
258
+ }
259
+ while (eptr < ne) {
260
+ a = ei;
261
+ b = q0;
262
+ x = a + b;
263
+ bv = x - a;
264
+ y = b - bv;
265
+ if (y) {
266
+ g[count++] = y;
267
+ }
268
+ _x = q1 + x;
269
+ _bv = _x - q1;
270
+ _av = _x - _bv;
271
+ _br = x - _bv;
272
+ _ar = q1 - _av;
273
+ q0 = _ar + _br;
274
+ q1 = _x;
275
+ eptr += 1;
276
+ if (eptr < ne) {
277
+ ei = e[eptr];
278
+ }
279
+ }
280
+ while (fptr < nf) {
281
+ a = fi;
282
+ b = q0;
283
+ x = a + b;
284
+ bv = x - a;
285
+ y = b - bv;
286
+ if (y) {
287
+ g[count++] = y;
288
+ }
289
+ _x = q1 + x;
290
+ _bv = _x - q1;
291
+ _av = _x - _bv;
292
+ _br = x - _bv;
293
+ _ar = q1 - _av;
294
+ q0 = _ar + _br;
295
+ q1 = _x;
296
+ fptr += 1;
297
+ if (fptr < nf) {
298
+ fi = f[fptr];
299
+ }
300
+ }
301
+ if (q0) {
302
+ g[count++] = q0;
303
+ }
304
+ if (q1) {
305
+ g[count++] = q1;
306
+ }
307
+ if (!count) {
308
+ g[count++] = 0;
309
+ }
310
+ g.length = count;
311
+ return g;
312
+ }
313
+ }
314
+ });
315
+
316
+ // node_modules/two-sum/two-sum.js
317
+ var require_two_sum = __commonJS({
318
+ "node_modules/two-sum/two-sum.js"(exports, module) {
319
+ "use strict";
320
+ module.exports = fastTwoSum;
321
+ function fastTwoSum(a, b, result) {
322
+ var x = a + b;
323
+ var bv = x - a;
324
+ var av = x - bv;
325
+ var br = b - bv;
326
+ var ar = a - av;
327
+ if (result) {
328
+ result[0] = ar + br;
329
+ result[1] = x;
330
+ return result;
331
+ }
332
+ return [ar + br, x];
333
+ }
334
+ }
335
+ });
336
+
337
+ // node_modules/robust-scale/robust-scale.js
338
+ var require_robust_scale = __commonJS({
339
+ "node_modules/robust-scale/robust-scale.js"(exports, module) {
340
+ "use strict";
341
+ var twoProduct = require_two_product();
342
+ var twoSum = require_two_sum();
343
+ module.exports = scaleLinearExpansion;
344
+ function scaleLinearExpansion(e, scale2) {
345
+ var n = e.length;
346
+ if (n === 1) {
347
+ var ts = twoProduct(e[0], scale2);
348
+ if (ts[0]) {
349
+ return ts;
350
+ }
351
+ return [ts[1]];
352
+ }
353
+ var g = new Array(2 * n);
354
+ var q = [0.1, 0.1];
355
+ var t = [0.1, 0.1];
356
+ var count = 0;
357
+ twoProduct(e[0], scale2, q);
358
+ if (q[0]) {
359
+ g[count++] = q[0];
360
+ }
361
+ for (var i = 1; i < n; ++i) {
362
+ twoProduct(e[i], scale2, t);
363
+ var pq = q[1];
364
+ twoSum(pq, t[0], q);
365
+ if (q[0]) {
366
+ g[count++] = q[0];
367
+ }
368
+ var a = t[1];
369
+ var b = q[1];
370
+ var x = a + b;
371
+ var bv = x - a;
372
+ var y = b - bv;
373
+ q[1] = x;
374
+ if (y) {
375
+ g[count++] = y;
376
+ }
377
+ }
378
+ if (q[1]) {
379
+ g[count++] = q[1];
380
+ }
381
+ if (count === 0) {
382
+ g[count++] = 0;
383
+ }
384
+ g.length = count;
385
+ return g;
386
+ }
387
+ }
388
+ });
389
+
390
+ // node_modules/robust-subtract/robust-diff.js
391
+ var require_robust_diff = __commonJS({
392
+ "node_modules/robust-subtract/robust-diff.js"(exports, module) {
393
+ "use strict";
394
+ module.exports = robustSubtract;
395
+ function scalarScalar(a, b) {
396
+ var x = a + b;
397
+ var bv = x - a;
398
+ var av = x - bv;
399
+ var br = b - bv;
400
+ var ar = a - av;
401
+ var y = ar + br;
402
+ if (y) {
403
+ return [y, x];
404
+ }
405
+ return [x];
406
+ }
407
+ function robustSubtract(e, f) {
408
+ var ne = e.length | 0;
409
+ var nf = f.length | 0;
410
+ if (ne === 1 && nf === 1) {
411
+ return scalarScalar(e[0], -f[0]);
412
+ }
413
+ var n = ne + nf;
414
+ var g = new Array(n);
415
+ var count = 0;
416
+ var eptr = 0;
417
+ var fptr = 0;
418
+ var abs = Math.abs;
419
+ var ei = e[eptr];
420
+ var ea = abs(ei);
421
+ var fi = -f[fptr];
422
+ var fa = abs(fi);
423
+ var a, b;
424
+ if (ea < fa) {
425
+ b = ei;
426
+ eptr += 1;
427
+ if (eptr < ne) {
428
+ ei = e[eptr];
429
+ ea = abs(ei);
430
+ }
431
+ } else {
432
+ b = fi;
433
+ fptr += 1;
434
+ if (fptr < nf) {
435
+ fi = -f[fptr];
436
+ fa = abs(fi);
437
+ }
438
+ }
439
+ if (eptr < ne && ea < fa || fptr >= nf) {
440
+ a = ei;
441
+ eptr += 1;
442
+ if (eptr < ne) {
443
+ ei = e[eptr];
444
+ ea = abs(ei);
445
+ }
446
+ } else {
447
+ a = fi;
448
+ fptr += 1;
449
+ if (fptr < nf) {
450
+ fi = -f[fptr];
451
+ fa = abs(fi);
452
+ }
453
+ }
454
+ var x = a + b;
455
+ var bv = x - a;
456
+ var y = b - bv;
457
+ var q0 = y;
458
+ var q1 = x;
459
+ var _x, _bv, _av, _br, _ar;
460
+ while (eptr < ne && fptr < nf) {
461
+ if (ea < fa) {
462
+ a = ei;
463
+ eptr += 1;
464
+ if (eptr < ne) {
465
+ ei = e[eptr];
466
+ ea = abs(ei);
467
+ }
468
+ } else {
469
+ a = fi;
470
+ fptr += 1;
471
+ if (fptr < nf) {
472
+ fi = -f[fptr];
473
+ fa = abs(fi);
474
+ }
475
+ }
476
+ b = q0;
477
+ x = a + b;
478
+ bv = x - a;
479
+ y = b - bv;
480
+ if (y) {
481
+ g[count++] = y;
482
+ }
483
+ _x = q1 + x;
484
+ _bv = _x - q1;
485
+ _av = _x - _bv;
486
+ _br = x - _bv;
487
+ _ar = q1 - _av;
488
+ q0 = _ar + _br;
489
+ q1 = _x;
490
+ }
491
+ while (eptr < ne) {
492
+ a = ei;
493
+ b = q0;
494
+ x = a + b;
495
+ bv = x - a;
496
+ y = b - bv;
497
+ if (y) {
498
+ g[count++] = y;
499
+ }
500
+ _x = q1 + x;
501
+ _bv = _x - q1;
502
+ _av = _x - _bv;
503
+ _br = x - _bv;
504
+ _ar = q1 - _av;
505
+ q0 = _ar + _br;
506
+ q1 = _x;
507
+ eptr += 1;
508
+ if (eptr < ne) {
509
+ ei = e[eptr];
510
+ }
511
+ }
512
+ while (fptr < nf) {
513
+ a = fi;
514
+ b = q0;
515
+ x = a + b;
516
+ bv = x - a;
517
+ y = b - bv;
518
+ if (y) {
519
+ g[count++] = y;
520
+ }
521
+ _x = q1 + x;
522
+ _bv = _x - q1;
523
+ _av = _x - _bv;
524
+ _br = x - _bv;
525
+ _ar = q1 - _av;
526
+ q0 = _ar + _br;
527
+ q1 = _x;
528
+ fptr += 1;
529
+ if (fptr < nf) {
530
+ fi = -f[fptr];
531
+ }
532
+ }
533
+ if (q0) {
534
+ g[count++] = q0;
535
+ }
536
+ if (q1) {
537
+ g[count++] = q1;
538
+ }
539
+ if (!count) {
540
+ g[count++] = 0;
541
+ }
542
+ g.length = count;
543
+ return g;
544
+ }
545
+ }
546
+ });
547
+
548
+ // node_modules/robust-orientation/orientation.js
549
+ var require_orientation = __commonJS({
550
+ "node_modules/robust-orientation/orientation.js"(exports, module) {
551
+ "use strict";
552
+ var twoProduct = require_two_product();
553
+ var robustSum = require_robust_sum();
554
+ var robustScale = require_robust_scale();
555
+ var robustSubtract = require_robust_diff();
556
+ var NUM_EXPAND = 5;
557
+ var EPSILON = 11102230246251565e-32;
558
+ var ERRBOUND3 = (3 + 16 * EPSILON) * EPSILON;
559
+ var ERRBOUND4 = (7 + 56 * EPSILON) * EPSILON;
560
+ function orientation_3(sum, prod, scale2, sub) {
561
+ return function orientation3Exact2(m0, m1, m2) {
562
+ var p = sum(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])));
563
+ var n = sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0]));
564
+ var d = sub(p, n);
565
+ return d[d.length - 1];
566
+ };
567
+ }
568
+ function orientation_4(sum, prod, scale2, sub) {
569
+ return function orientation4Exact2(m0, m1, m2, m3) {
570
+ var p = sum(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))));
571
+ var n = sum(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))));
572
+ var d = sub(p, n);
573
+ return d[d.length - 1];
574
+ };
575
+ }
576
+ function orientation_5(sum, prod, scale2, sub) {
577
+ return function orientation5Exact(m0, m1, m2, m3, m4) {
578
+ var p = sum(sum(sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m1[3]), sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), -m2[3]), scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m3[3]))), sum(scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), -m4[3]), sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m3[2]), scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m1[3])))), sum(sum(scale2(sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m3[3]), sum(scale2(sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), -m4[3]), scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m3[2]))), m0[3]))), sum(scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m1[3]), sum(scale2(sum(scale2(sum(prod(m1[1], m3[0]), prod(-m3[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m3[2]))), m2[3]), scale2(sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m3[3])))));
579
+ var n = sum(sum(sum(scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m2[2]), sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), -m3[2]), scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m3[1], m4[0]), prod(-m4[1], m3[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m3[2]), scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), m4[2]))), -m2[3])), sum(scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), m3[3]), scale2(sum(scale2(sum(prod(m2[1], m3[0]), prod(-m3[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m3[0]), prod(-m3[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m3[2]))), -m4[3]))), sum(sum(scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m1[2]), sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), -m2[2]), scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m4[2]))), m0[3]), scale2(sum(scale2(sum(prod(m2[1], m4[0]), prod(-m4[1], m2[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m2[2]), scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), m4[2]))), -m1[3])), sum(scale2(sum(scale2(sum(prod(m1[1], m4[0]), prod(-m4[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m4[0]), prod(-m4[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m4[2]))), m2[3]), scale2(sum(scale2(sum(prod(m1[1], m2[0]), prod(-m2[1], m1[0])), m0[2]), sum(scale2(sum(prod(m0[1], m2[0]), prod(-m2[1], m0[0])), -m1[2]), scale2(sum(prod(m0[1], m1[0]), prod(-m1[1], m0[0])), m2[2]))), -m4[3]))));
580
+ var d = sub(p, n);
581
+ return d[d.length - 1];
582
+ };
583
+ }
584
+ function orientation2(n) {
585
+ var fn = n === 3 ? orientation_3 : n === 4 ? orientation_4 : orientation_5;
586
+ return fn(robustSum, twoProduct, robustScale, robustSubtract);
587
+ }
588
+ var orientation3Exact = orientation2(3);
589
+ var orientation4Exact = orientation2(4);
590
+ var CACHED = [
591
+ function orientation0() {
592
+ return 0;
593
+ },
594
+ function orientation1() {
595
+ return 0;
596
+ },
597
+ function orientation22(a, b) {
598
+ return b[0] - a[0];
599
+ },
600
+ function orientation3(a, b, c) {
601
+ var l = (a[1] - c[1]) * (b[0] - c[0]);
602
+ var r = (a[0] - c[0]) * (b[1] - c[1]);
603
+ var det = l - r;
604
+ var s;
605
+ if (l > 0) {
606
+ if (r <= 0) {
607
+ return det;
608
+ } else {
609
+ s = l + r;
610
+ }
611
+ } else if (l < 0) {
612
+ if (r >= 0) {
613
+ return det;
614
+ } else {
615
+ s = -(l + r);
616
+ }
617
+ } else {
618
+ return det;
619
+ }
620
+ var tol = ERRBOUND3 * s;
621
+ if (det >= tol || det <= -tol) {
622
+ return det;
623
+ }
624
+ return orientation3Exact(a, b, c);
625
+ },
626
+ function orientation4(a, b, c, d) {
627
+ var adx = a[0] - d[0];
628
+ var bdx = b[0] - d[0];
629
+ var cdx = c[0] - d[0];
630
+ var ady = a[1] - d[1];
631
+ var bdy = b[1] - d[1];
632
+ var cdy = c[1] - d[1];
633
+ var adz = a[2] - d[2];
634
+ var bdz = b[2] - d[2];
635
+ var cdz = c[2] - d[2];
636
+ var bdxcdy = bdx * cdy;
637
+ var cdxbdy = cdx * bdy;
638
+ var cdxady = cdx * ady;
639
+ var adxcdy = adx * cdy;
640
+ var adxbdy = adx * bdy;
641
+ var bdxady = bdx * ady;
642
+ var det = adz * (bdxcdy - cdxbdy) + bdz * (cdxady - adxcdy) + cdz * (adxbdy - bdxady);
643
+ var permanent = (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) + (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) + (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);
644
+ var tol = ERRBOUND4 * permanent;
645
+ if (det > tol || -det > tol) {
646
+ return det;
647
+ }
648
+ return orientation4Exact(a, b, c, d);
649
+ }
650
+ ];
651
+ function slowOrient(args) {
652
+ var proc2 = CACHED[args.length];
653
+ if (!proc2) {
654
+ proc2 = CACHED[args.length] = orientation2(args.length);
655
+ }
656
+ return proc2.apply(void 0, args);
657
+ }
658
+ function proc(slow, o0, o1, o2, o3, o4, o5) {
659
+ return function getOrientation(a0, a1, a2, a3, a4) {
660
+ switch (arguments.length) {
661
+ case 0:
662
+ case 1:
663
+ return 0;
664
+ case 2:
665
+ return o2(a0, a1);
666
+ case 3:
667
+ return o3(a0, a1, a2);
668
+ case 4:
669
+ return o4(a0, a1, a2, a3);
670
+ case 5:
671
+ return o5(a0, a1, a2, a3, a4);
672
+ }
673
+ var s = new Array(arguments.length);
674
+ for (var i = 0; i < arguments.length; ++i) {
675
+ s[i] = arguments[i];
676
+ }
677
+ return slow(s);
678
+ };
679
+ }
680
+ function generateOrientationProc() {
681
+ while (CACHED.length <= NUM_EXPAND) {
682
+ CACHED.push(orientation2(CACHED.length));
683
+ }
684
+ module.exports = proc.apply(void 0, [slowOrient].concat(CACHED));
685
+ for (var i = 0; i <= NUM_EXPAND; ++i) {
686
+ module.exports[i] = CACHED[i];
687
+ }
688
+ }
689
+ generateOrientationProc();
690
+ }
691
+ });
692
+
693
+ // node_modules/cdt2d/lib/monotone.js
694
+ var require_monotone = __commonJS({
695
+ "node_modules/cdt2d/lib/monotone.js"(exports, module) {
696
+ "use strict";
697
+ var bsearch = require_search_bounds();
698
+ var orient = require_orientation()[3];
699
+ var EVENT_POINT = 0;
700
+ var EVENT_END = 1;
701
+ var EVENT_START = 2;
702
+ module.exports = monotoneTriangulate;
703
+ function PartialHull(a, b, idx, lowerIds, upperIds) {
704
+ this.a = a;
705
+ this.b = b;
706
+ this.idx = idx;
707
+ this.lowerIds = lowerIds;
708
+ this.upperIds = upperIds;
709
+ }
710
+ function Event(a, b, type, idx) {
711
+ this.a = a;
712
+ this.b = b;
713
+ this.type = type;
714
+ this.idx = idx;
715
+ }
716
+ function compareEvent(a, b) {
717
+ var d = a.a[0] - b.a[0] || a.a[1] - b.a[1] || a.type - b.type;
718
+ if (d) {
719
+ return d;
720
+ }
721
+ if (a.type !== EVENT_POINT) {
722
+ d = orient(a.a, a.b, b.b);
723
+ if (d) {
724
+ return d;
725
+ }
726
+ }
727
+ return a.idx - b.idx;
728
+ }
729
+ function testPoint(hull, p) {
730
+ return orient(hull.a, hull.b, p);
731
+ }
732
+ function addPoint(cells, hulls, points, p, idx) {
733
+ var lo = bsearch.lt(hulls, p, testPoint);
734
+ var hi = bsearch.gt(hulls, p, testPoint);
735
+ for (var i = lo; i < hi; ++i) {
736
+ var hull = hulls[i];
737
+ var lowerIds = hull.lowerIds;
738
+ var m = lowerIds.length;
739
+ while (m > 1 && orient(
740
+ points[lowerIds[m - 2]],
741
+ points[lowerIds[m - 1]],
742
+ p
743
+ ) > 0) {
744
+ cells.push(
745
+ [
746
+ lowerIds[m - 1],
747
+ lowerIds[m - 2],
748
+ idx
749
+ ]
750
+ );
751
+ m -= 1;
752
+ }
753
+ lowerIds.length = m;
754
+ lowerIds.push(idx);
755
+ var upperIds = hull.upperIds;
756
+ var m = upperIds.length;
757
+ while (m > 1 && orient(
758
+ points[upperIds[m - 2]],
759
+ points[upperIds[m - 1]],
760
+ p
761
+ ) < 0) {
762
+ cells.push(
763
+ [
764
+ upperIds[m - 2],
765
+ upperIds[m - 1],
766
+ idx
767
+ ]
768
+ );
769
+ m -= 1;
770
+ }
771
+ upperIds.length = m;
772
+ upperIds.push(idx);
773
+ }
774
+ }
775
+ function findSplit(hull, edge) {
776
+ var d;
777
+ if (hull.a[0] < edge.a[0]) {
778
+ d = orient(hull.a, hull.b, edge.a);
779
+ } else {
780
+ d = orient(edge.b, edge.a, hull.a);
781
+ }
782
+ if (d) {
783
+ return d;
784
+ }
785
+ if (edge.b[0] < hull.b[0]) {
786
+ d = orient(hull.a, hull.b, edge.b);
787
+ } else {
788
+ d = orient(edge.b, edge.a, hull.b);
789
+ }
790
+ return d || hull.idx - edge.idx;
791
+ }
792
+ function splitHulls(hulls, points, event) {
793
+ var splitIdx = bsearch.le(hulls, event, findSplit);
794
+ var hull = hulls[splitIdx];
795
+ var upperIds = hull.upperIds;
796
+ var x = upperIds[upperIds.length - 1];
797
+ hull.upperIds = [x];
798
+ hulls.splice(
799
+ splitIdx + 1,
800
+ 0,
801
+ new PartialHull(event.a, event.b, event.idx, [x], upperIds)
802
+ );
803
+ }
804
+ function mergeHulls(hulls, points, event) {
805
+ var tmp = event.a;
806
+ event.a = event.b;
807
+ event.b = tmp;
808
+ var mergeIdx = bsearch.eq(hulls, event, findSplit);
809
+ var upper = hulls[mergeIdx];
810
+ var lower = hulls[mergeIdx - 1];
811
+ lower.upperIds = upper.upperIds;
812
+ hulls.splice(mergeIdx, 1);
813
+ }
814
+ function monotoneTriangulate(points, edges) {
815
+ var numPoints = points.length;
816
+ var numEdges = edges.length;
817
+ var events = [];
818
+ for (var i = 0; i < numPoints; ++i) {
819
+ events.push(new Event(
820
+ points[i],
821
+ null,
822
+ EVENT_POINT,
823
+ i
824
+ ));
825
+ }
826
+ for (var i = 0; i < numEdges; ++i) {
827
+ var e = edges[i];
828
+ var a = points[e[0]];
829
+ var b = points[e[1]];
830
+ if (a[0] < b[0]) {
831
+ events.push(
832
+ new Event(a, b, EVENT_START, i),
833
+ new Event(b, a, EVENT_END, i)
834
+ );
835
+ } else if (a[0] > b[0]) {
836
+ events.push(
837
+ new Event(b, a, EVENT_START, i),
838
+ new Event(a, b, EVENT_END, i)
839
+ );
840
+ }
841
+ }
842
+ events.sort(compareEvent);
843
+ var minX = events[0].a[0] - (1 + Math.abs(events[0].a[0])) * Math.pow(2, -52);
844
+ var hull = [new PartialHull([minX, 1], [minX, 0], -1, [], [], [], [])];
845
+ var cells = [];
846
+ for (var i = 0, numEvents = events.length; i < numEvents; ++i) {
847
+ var event = events[i];
848
+ var type = event.type;
849
+ if (type === EVENT_POINT) {
850
+ addPoint(cells, hull, points, event.a, event.idx);
851
+ } else if (type === EVENT_START) {
852
+ splitHulls(hull, points, event);
853
+ } else {
854
+ mergeHulls(hull, points, event);
855
+ }
856
+ }
857
+ return cells;
858
+ }
859
+ }
860
+ });
861
+
862
+ // node_modules/cdt2d/lib/triangulation.js
863
+ var require_triangulation = __commonJS({
864
+ "node_modules/cdt2d/lib/triangulation.js"(exports, module) {
865
+ "use strict";
866
+ var bsearch = require_search_bounds();
867
+ module.exports = createTriangulation;
868
+ function Triangulation(stars, edges) {
869
+ this.stars = stars;
870
+ this.edges = edges;
871
+ }
872
+ var proto = Triangulation.prototype;
873
+ function removePair(list, j, k) {
874
+ for (var i = 1, n = list.length; i < n; i += 2) {
875
+ if (list[i - 1] === j && list[i] === k) {
876
+ list[i - 1] = list[n - 2];
877
+ list[i] = list[n - 1];
878
+ list.length = n - 2;
879
+ return;
880
+ }
881
+ }
882
+ }
883
+ proto.isConstraint = /* @__PURE__ */ (function() {
884
+ var e = [0, 0];
885
+ function compareLex(a, b) {
886
+ return a[0] - b[0] || a[1] - b[1];
887
+ }
888
+ return function(i, j) {
889
+ e[0] = Math.min(i, j);
890
+ e[1] = Math.max(i, j);
891
+ return bsearch.eq(this.edges, e, compareLex) >= 0;
892
+ };
893
+ })();
894
+ proto.removeTriangle = function(i, j, k) {
895
+ var stars = this.stars;
896
+ removePair(stars[i], j, k);
897
+ removePair(stars[j], k, i);
898
+ removePair(stars[k], i, j);
899
+ };
900
+ proto.addTriangle = function(i, j, k) {
901
+ var stars = this.stars;
902
+ stars[i].push(j, k);
903
+ stars[j].push(k, i);
904
+ stars[k].push(i, j);
905
+ };
906
+ proto.opposite = function(j, i) {
907
+ var list = this.stars[i];
908
+ for (var k = 1, n = list.length; k < n; k += 2) {
909
+ if (list[k] === j) {
910
+ return list[k - 1];
911
+ }
912
+ }
913
+ return -1;
914
+ };
915
+ proto.flip = function(i, j) {
916
+ var a = this.opposite(i, j);
917
+ var b = this.opposite(j, i);
918
+ this.removeTriangle(i, j, a);
919
+ this.removeTriangle(j, i, b);
920
+ this.addTriangle(i, b, a);
921
+ this.addTriangle(j, a, b);
922
+ };
923
+ proto.edges = function() {
924
+ var stars = this.stars;
925
+ var result = [];
926
+ for (var i = 0, n = stars.length; i < n; ++i) {
927
+ var list = stars[i];
928
+ for (var j = 0, m = list.length; j < m; j += 2) {
929
+ result.push([list[j], list[j + 1]]);
930
+ }
931
+ }
932
+ return result;
933
+ };
934
+ proto.cells = function() {
935
+ var stars = this.stars;
936
+ var result = [];
937
+ for (var i = 0, n = stars.length; i < n; ++i) {
938
+ var list = stars[i];
939
+ for (var j = 0, m = list.length; j < m; j += 2) {
940
+ var s = list[j];
941
+ var t = list[j + 1];
942
+ if (i < Math.min(s, t)) {
943
+ result.push([i, s, t]);
944
+ }
945
+ }
946
+ }
947
+ return result;
948
+ };
949
+ function createTriangulation(numVerts, edges) {
950
+ var stars = new Array(numVerts);
951
+ for (var i = 0; i < numVerts; ++i) {
952
+ stars[i] = [];
953
+ }
954
+ return new Triangulation(stars, edges);
955
+ }
956
+ }
957
+ });
958
+
959
+ // node_modules/robust-in-sphere/in-sphere.js
960
+ var require_in_sphere = __commonJS({
961
+ "node_modules/robust-in-sphere/in-sphere.js"(exports, module) {
962
+ "use strict";
963
+ var twoProduct = require_two_product();
964
+ var robustSum = require_robust_sum();
965
+ var robustDiff = require_robust_diff();
966
+ var robustScale = require_robust_scale();
967
+ var NUM_EXPAND = 6;
968
+ function orientation2(n) {
969
+ var fn = n === 3 ? inSphere3 : n === 4 ? inSphere4 : n === 5 ? inSphere5 : inSphere6;
970
+ return fn(robustSum, robustDiff, twoProduct, robustScale);
971
+ }
972
+ function inSphere0() {
973
+ return 0;
974
+ }
975
+ function inSphere1() {
976
+ return 0;
977
+ }
978
+ function inSphere2() {
979
+ return 0;
980
+ }
981
+ function inSphere3(sum, diff, prod, scale2) {
982
+ function exactInSphere3(m0, m1, m2) {
983
+ var w0 = prod(m0[0], m0[0]);
984
+ var w0m1 = scale2(w0, m1[0]);
985
+ var w0m2 = scale2(w0, m2[0]);
986
+ var w1 = prod(m1[0], m1[0]);
987
+ var w1m0 = scale2(w1, m0[0]);
988
+ var w1m2 = scale2(w1, m2[0]);
989
+ var w2 = prod(m2[0], m2[0]);
990
+ var w2m0 = scale2(w2, m0[0]);
991
+ var w2m1 = scale2(w2, m1[0]);
992
+ var p = sum(diff(w2m1, w1m2), diff(w1m0, w0m1));
993
+ var n = diff(w2m0, w0m2);
994
+ var d = diff(p, n);
995
+ return d[d.length - 1];
996
+ }
997
+ return exactInSphere3;
998
+ }
999
+ function inSphere4(sum, diff, prod, scale2) {
1000
+ function exactInSphere4(m0, m1, m2, m3) {
1001
+ var w0 = sum(prod(m0[0], m0[0]), prod(m0[1], m0[1]));
1002
+ var w0m1 = scale2(w0, m1[0]);
1003
+ var w0m2 = scale2(w0, m2[0]);
1004
+ var w0m3 = scale2(w0, m3[0]);
1005
+ var w1 = sum(prod(m1[0], m1[0]), prod(m1[1], m1[1]));
1006
+ var w1m0 = scale2(w1, m0[0]);
1007
+ var w1m2 = scale2(w1, m2[0]);
1008
+ var w1m3 = scale2(w1, m3[0]);
1009
+ var w2 = sum(prod(m2[0], m2[0]), prod(m2[1], m2[1]));
1010
+ var w2m0 = scale2(w2, m0[0]);
1011
+ var w2m1 = scale2(w2, m1[0]);
1012
+ var w2m3 = scale2(w2, m3[0]);
1013
+ var w3 = sum(prod(m3[0], m3[0]), prod(m3[1], m3[1]));
1014
+ var w3m0 = scale2(w3, m0[0]);
1015
+ var w3m1 = scale2(w3, m1[0]);
1016
+ var w3m2 = scale2(w3, m2[0]);
1017
+ var p = sum(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))));
1018
+ var n = sum(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))));
1019
+ var d = diff(p, n);
1020
+ return d[d.length - 1];
1021
+ }
1022
+ return exactInSphere4;
1023
+ }
1024
+ function inSphere5(sum, diff, prod, scale2) {
1025
+ function exactInSphere5(m0, m1, m2, m3, m4) {
1026
+ var w0 = sum(prod(m0[0], m0[0]), sum(prod(m0[1], m0[1]), prod(m0[2], m0[2])));
1027
+ var w0m1 = scale2(w0, m1[0]);
1028
+ var w0m2 = scale2(w0, m2[0]);
1029
+ var w0m3 = scale2(w0, m3[0]);
1030
+ var w0m4 = scale2(w0, m4[0]);
1031
+ var w1 = sum(prod(m1[0], m1[0]), sum(prod(m1[1], m1[1]), prod(m1[2], m1[2])));
1032
+ var w1m0 = scale2(w1, m0[0]);
1033
+ var w1m2 = scale2(w1, m2[0]);
1034
+ var w1m3 = scale2(w1, m3[0]);
1035
+ var w1m4 = scale2(w1, m4[0]);
1036
+ var w2 = sum(prod(m2[0], m2[0]), sum(prod(m2[1], m2[1]), prod(m2[2], m2[2])));
1037
+ var w2m0 = scale2(w2, m0[0]);
1038
+ var w2m1 = scale2(w2, m1[0]);
1039
+ var w2m3 = scale2(w2, m3[0]);
1040
+ var w2m4 = scale2(w2, m4[0]);
1041
+ var w3 = sum(prod(m3[0], m3[0]), sum(prod(m3[1], m3[1]), prod(m3[2], m3[2])));
1042
+ var w3m0 = scale2(w3, m0[0]);
1043
+ var w3m1 = scale2(w3, m1[0]);
1044
+ var w3m2 = scale2(w3, m2[0]);
1045
+ var w3m4 = scale2(w3, m4[0]);
1046
+ var w4 = sum(prod(m4[0], m4[0]), sum(prod(m4[1], m4[1]), prod(m4[2], m4[2])));
1047
+ var w4m0 = scale2(w4, m0[0]);
1048
+ var w4m1 = scale2(w4, m1[0]);
1049
+ var w4m2 = scale2(w4, m2[0]);
1050
+ var w4m3 = scale2(w4, m3[0]);
1051
+ var p = sum(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]))), sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]), sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])))), sum(sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]))), sum(scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2]), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2])))));
1052
+ var n = sum(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))));
1053
+ var d = diff(p, n);
1054
+ return d[d.length - 1];
1055
+ }
1056
+ return exactInSphere5;
1057
+ }
1058
+ function inSphere6(sum, diff, prod, scale2) {
1059
+ function exactInSphere6(m0, m1, m2, m3, m4, m5) {
1060
+ var w0 = sum(sum(prod(m0[0], m0[0]), prod(m0[1], m0[1])), sum(prod(m0[2], m0[2]), prod(m0[3], m0[3])));
1061
+ var w0m1 = scale2(w0, m1[0]);
1062
+ var w0m2 = scale2(w0, m2[0]);
1063
+ var w0m3 = scale2(w0, m3[0]);
1064
+ var w0m4 = scale2(w0, m4[0]);
1065
+ var w0m5 = scale2(w0, m5[0]);
1066
+ var w1 = sum(sum(prod(m1[0], m1[0]), prod(m1[1], m1[1])), sum(prod(m1[2], m1[2]), prod(m1[3], m1[3])));
1067
+ var w1m0 = scale2(w1, m0[0]);
1068
+ var w1m2 = scale2(w1, m2[0]);
1069
+ var w1m3 = scale2(w1, m3[0]);
1070
+ var w1m4 = scale2(w1, m4[0]);
1071
+ var w1m5 = scale2(w1, m5[0]);
1072
+ var w2 = sum(sum(prod(m2[0], m2[0]), prod(m2[1], m2[1])), sum(prod(m2[2], m2[2]), prod(m2[3], m2[3])));
1073
+ var w2m0 = scale2(w2, m0[0]);
1074
+ var w2m1 = scale2(w2, m1[0]);
1075
+ var w2m3 = scale2(w2, m3[0]);
1076
+ var w2m4 = scale2(w2, m4[0]);
1077
+ var w2m5 = scale2(w2, m5[0]);
1078
+ var w3 = sum(sum(prod(m3[0], m3[0]), prod(m3[1], m3[1])), sum(prod(m3[2], m3[2]), prod(m3[3], m3[3])));
1079
+ var w3m0 = scale2(w3, m0[0]);
1080
+ var w3m1 = scale2(w3, m1[0]);
1081
+ var w3m2 = scale2(w3, m2[0]);
1082
+ var w3m4 = scale2(w3, m4[0]);
1083
+ var w3m5 = scale2(w3, m5[0]);
1084
+ var w4 = sum(sum(prod(m4[0], m4[0]), prod(m4[1], m4[1])), sum(prod(m4[2], m4[2]), prod(m4[3], m4[3])));
1085
+ var w4m0 = scale2(w4, m0[0]);
1086
+ var w4m1 = scale2(w4, m1[0]);
1087
+ var w4m2 = scale2(w4, m2[0]);
1088
+ var w4m3 = scale2(w4, m3[0]);
1089
+ var w4m5 = scale2(w4, m5[0]);
1090
+ var w5 = sum(sum(prod(m5[0], m5[0]), prod(m5[1], m5[1])), sum(prod(m5[2], m5[2]), prod(m5[3], m5[3])));
1091
+ var w5m0 = scale2(w5, m0[0]);
1092
+ var w5m1 = scale2(w5, m1[0]);
1093
+ var w5m2 = scale2(w5, m2[0]);
1094
+ var w5m3 = scale2(w5, m3[0]);
1095
+ var w5m4 = scale2(w5, m4[0]);
1096
+ var p = sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m2[2]), scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), -m5[2]))), m1[3]), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m5[2]))), -m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), -m5[2]))), m3[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m5[2]))), -m4[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]))), m5[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m5[2]))), m0[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m5[2]))), -m1[3])))), sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), -m5[2]))), m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m5[2]))), -m4[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]))), m5[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m5[2]))), m0[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m5[2]))), -m1[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m3[1]), scale2(diff(w3m1, w1m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m5[2]))), m2[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m5[2]))), -m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2]))), m5[3])))));
1097
+ var n = sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m2[2]), scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), -m5[2]))), m0[3]), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m3[1]), sum(scale2(diff(w5m3, w3m5), -m4[1]), scale2(diff(w4m3, w3m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m3[2])), sum(scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m5[2]))), -m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m5[2]))), m3[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m3, w3m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m3[1]), scale2(diff(w3m2, w2m3), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m3, w3m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m3[1]), scale2(diff(w3m0, w0m3), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m5[2]))), -m4[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), m5[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m1[2]), scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), -m5[2]))), m0[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m2[1]), sum(scale2(diff(w5m2, w2m5), -m4[1]), scale2(diff(w4m2, w2m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m5[2]))), -m1[3])))), sum(sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w5m4, w4m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m4[1]), scale2(diff(w4m1, w1m4), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m4, w4m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m4[1]), scale2(diff(w4m0, w0m4), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m4[2]), scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), -m5[2]))), m2[3]), scale2(sum(sum(scale2(sum(scale2(diff(w5m2, w2m5), m1[1]), sum(scale2(diff(w5m1, w1m5), -m2[1]), scale2(diff(w2m1, w1m2), m5[1]))), m0[2]), scale2(sum(scale2(diff(w5m2, w2m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m2[1]), scale2(diff(w2m0, w0m2), m5[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w5m1, w1m5), m0[1]), sum(scale2(diff(w5m0, w0m5), -m1[1]), scale2(diff(w1m0, w0m1), m5[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m5[2]))), -m4[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))), m5[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m1[2]), scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), -m4[2]))), m0[3]))), sum(sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m2[1]), sum(scale2(diff(w4m2, w2m4), -m3[1]), scale2(diff(w3m2, w2m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m2[2])), sum(scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m4[2]))), -m1[3]), scale2(sum(sum(scale2(sum(scale2(diff(w4m3, w3m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m3[1]), scale2(diff(w3m1, w1m3), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m3, w3m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m3[1]), scale2(diff(w3m0, w0m3), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m3[2]), scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), -m4[2]))), m2[3])), sum(scale2(sum(sum(scale2(sum(scale2(diff(w4m2, w2m4), m1[1]), sum(scale2(diff(w4m1, w1m4), -m2[1]), scale2(diff(w2m1, w1m2), m4[1]))), m0[2]), scale2(sum(scale2(diff(w4m2, w2m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m2[1]), scale2(diff(w2m0, w0m2), m4[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w4m1, w1m4), m0[1]), sum(scale2(diff(w4m0, w0m4), -m1[1]), scale2(diff(w1m0, w0m1), m4[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m4[2]))), -m3[3]), scale2(sum(sum(scale2(sum(scale2(diff(w3m2, w2m3), m1[1]), sum(scale2(diff(w3m1, w1m3), -m2[1]), scale2(diff(w2m1, w1m2), m3[1]))), m0[2]), scale2(sum(scale2(diff(w3m2, w2m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m2[1]), scale2(diff(w2m0, w0m2), m3[1]))), -m1[2])), sum(scale2(sum(scale2(diff(w3m1, w1m3), m0[1]), sum(scale2(diff(w3m0, w0m3), -m1[1]), scale2(diff(w1m0, w0m1), m3[1]))), m2[2]), scale2(sum(scale2(diff(w2m1, w1m2), m0[1]), sum(scale2(diff(w2m0, w0m2), -m1[1]), scale2(diff(w1m0, w0m1), m2[1]))), -m3[2]))), m4[3])))));
1098
+ var d = diff(p, n);
1099
+ return d[d.length - 1];
1100
+ }
1101
+ return exactInSphere6;
1102
+ }
1103
+ var CACHED = [
1104
+ inSphere0,
1105
+ inSphere1,
1106
+ inSphere2
1107
+ ];
1108
+ function slowInSphere(args) {
1109
+ var proc2 = CACHED[args.length];
1110
+ if (!proc2) {
1111
+ proc2 = CACHED[args.length] = orientation2(args.length);
1112
+ }
1113
+ return proc2.apply(void 0, args);
1114
+ }
1115
+ function proc(slow, o0, o1, o2, o3, o4, o5, o6) {
1116
+ function testInSphere(a0, a1, a2, a3, a4, a5) {
1117
+ switch (arguments.length) {
1118
+ case 0:
1119
+ case 1:
1120
+ return 0;
1121
+ case 2:
1122
+ return o2(a0, a1);
1123
+ case 3:
1124
+ return o3(a0, a1, a2);
1125
+ case 4:
1126
+ return o4(a0, a1, a2, a3);
1127
+ case 5:
1128
+ return o5(a0, a1, a2, a3, a4);
1129
+ case 6:
1130
+ return o6(a0, a1, a2, a3, a4, a5);
1131
+ }
1132
+ var s = new Array(arguments.length);
1133
+ for (var i = 0; i < arguments.length; ++i) {
1134
+ s[i] = arguments[i];
1135
+ }
1136
+ return slow(s);
1137
+ }
1138
+ return testInSphere;
1139
+ }
1140
+ function generateInSphereTest() {
1141
+ while (CACHED.length <= NUM_EXPAND) {
1142
+ CACHED.push(orientation2(CACHED.length));
1143
+ }
1144
+ module.exports = proc.apply(void 0, [slowInSphere].concat(CACHED));
1145
+ for (var i = 0; i <= NUM_EXPAND; ++i) {
1146
+ module.exports[i] = CACHED[i];
1147
+ }
1148
+ }
1149
+ generateInSphereTest();
1150
+ }
1151
+ });
1152
+
1153
+ // node_modules/cdt2d/lib/delaunay.js
1154
+ var require_delaunay = __commonJS({
1155
+ "node_modules/cdt2d/lib/delaunay.js"(exports, module) {
1156
+ "use strict";
1157
+ var inCircle = require_in_sphere()[4];
1158
+ var bsearch = require_search_bounds();
1159
+ module.exports = delaunayRefine;
1160
+ function testFlip(points, triangulation, stack, a, b, x) {
1161
+ var y = triangulation.opposite(a, b);
1162
+ if (y < 0) {
1163
+ return;
1164
+ }
1165
+ if (b < a) {
1166
+ var tmp = a;
1167
+ a = b;
1168
+ b = tmp;
1169
+ tmp = x;
1170
+ x = y;
1171
+ y = tmp;
1172
+ }
1173
+ if (triangulation.isConstraint(a, b)) {
1174
+ return;
1175
+ }
1176
+ if (inCircle(points[a], points[b], points[x], points[y]) < 0) {
1177
+ stack.push(a, b);
1178
+ }
1179
+ }
1180
+ function delaunayRefine(points, triangulation) {
1181
+ var stack = [];
1182
+ var numPoints = points.length;
1183
+ var stars = triangulation.stars;
1184
+ for (var a = 0; a < numPoints; ++a) {
1185
+ var star = stars[a];
1186
+ for (var j = 1; j < star.length; j += 2) {
1187
+ var b = star[j];
1188
+ if (b < a) {
1189
+ continue;
1190
+ }
1191
+ if (triangulation.isConstraint(a, b)) {
1192
+ continue;
1193
+ }
1194
+ var x = star[j - 1], y = -1;
1195
+ for (var k = 1; k < star.length; k += 2) {
1196
+ if (star[k - 1] === b) {
1197
+ y = star[k];
1198
+ break;
1199
+ }
1200
+ }
1201
+ if (y < 0) {
1202
+ continue;
1203
+ }
1204
+ if (inCircle(points[a], points[b], points[x], points[y]) < 0) {
1205
+ stack.push(a, b);
1206
+ }
1207
+ }
1208
+ }
1209
+ while (stack.length > 0) {
1210
+ var b = stack.pop();
1211
+ var a = stack.pop();
1212
+ var x = -1, y = -1;
1213
+ var star = stars[a];
1214
+ for (var i = 1; i < star.length; i += 2) {
1215
+ var s = star[i - 1];
1216
+ var t = star[i];
1217
+ if (s === b) {
1218
+ y = t;
1219
+ } else if (t === b) {
1220
+ x = s;
1221
+ }
1222
+ }
1223
+ if (x < 0 || y < 0) {
1224
+ continue;
1225
+ }
1226
+ if (inCircle(points[a], points[b], points[x], points[y]) >= 0) {
1227
+ continue;
1228
+ }
1229
+ triangulation.flip(a, b);
1230
+ testFlip(points, triangulation, stack, x, a, y);
1231
+ testFlip(points, triangulation, stack, a, y, x);
1232
+ testFlip(points, triangulation, stack, y, b, x);
1233
+ testFlip(points, triangulation, stack, b, x, y);
1234
+ }
1235
+ }
1236
+ }
1237
+ });
1238
+
1239
+ // node_modules/cdt2d/lib/filter.js
1240
+ var require_filter = __commonJS({
1241
+ "node_modules/cdt2d/lib/filter.js"(exports, module) {
1242
+ "use strict";
1243
+ var bsearch = require_search_bounds();
1244
+ module.exports = classifyFaces;
1245
+ function FaceIndex(cells, neighbor, constraint, flags, active, next, boundary) {
1246
+ this.cells = cells;
1247
+ this.neighbor = neighbor;
1248
+ this.flags = flags;
1249
+ this.constraint = constraint;
1250
+ this.active = active;
1251
+ this.next = next;
1252
+ this.boundary = boundary;
1253
+ }
1254
+ var proto = FaceIndex.prototype;
1255
+ function compareCell(a, b) {
1256
+ return a[0] - b[0] || a[1] - b[1] || a[2] - b[2];
1257
+ }
1258
+ proto.locate = /* @__PURE__ */ (function() {
1259
+ var key = [0, 0, 0];
1260
+ return function(a, b, c) {
1261
+ var x = a, y = b, z = c;
1262
+ if (b < c) {
1263
+ if (b < a) {
1264
+ x = b;
1265
+ y = c;
1266
+ z = a;
1267
+ }
1268
+ } else if (c < a) {
1269
+ x = c;
1270
+ y = a;
1271
+ z = b;
1272
+ }
1273
+ if (x < 0) {
1274
+ return -1;
1275
+ }
1276
+ key[0] = x;
1277
+ key[1] = y;
1278
+ key[2] = z;
1279
+ return bsearch.eq(this.cells, key, compareCell);
1280
+ };
1281
+ })();
1282
+ function indexCells(triangulation, infinity) {
1283
+ var cells = triangulation.cells();
1284
+ var nc = cells.length;
1285
+ for (var i = 0; i < nc; ++i) {
1286
+ var c = cells[i];
1287
+ var x = c[0], y = c[1], z = c[2];
1288
+ if (y < z) {
1289
+ if (y < x) {
1290
+ c[0] = y;
1291
+ c[1] = z;
1292
+ c[2] = x;
1293
+ }
1294
+ } else if (z < x) {
1295
+ c[0] = z;
1296
+ c[1] = x;
1297
+ c[2] = y;
1298
+ }
1299
+ }
1300
+ cells.sort(compareCell);
1301
+ var flags = new Array(nc);
1302
+ for (var i = 0; i < flags.length; ++i) {
1303
+ flags[i] = 0;
1304
+ }
1305
+ var active = [];
1306
+ var next = [];
1307
+ var neighbor = new Array(3 * nc);
1308
+ var constraint = new Array(3 * nc);
1309
+ var boundary = null;
1310
+ if (infinity) {
1311
+ boundary = [];
1312
+ }
1313
+ var index = new FaceIndex(
1314
+ cells,
1315
+ neighbor,
1316
+ constraint,
1317
+ flags,
1318
+ active,
1319
+ next,
1320
+ boundary
1321
+ );
1322
+ for (var i = 0; i < nc; ++i) {
1323
+ var c = cells[i];
1324
+ for (var j = 0; j < 3; ++j) {
1325
+ var x = c[j], y = c[(j + 1) % 3];
1326
+ var a = neighbor[3 * i + j] = index.locate(y, x, triangulation.opposite(y, x));
1327
+ var b = constraint[3 * i + j] = triangulation.isConstraint(x, y);
1328
+ if (a < 0) {
1329
+ if (b) {
1330
+ next.push(i);
1331
+ } else {
1332
+ active.push(i);
1333
+ flags[i] = 1;
1334
+ }
1335
+ if (infinity) {
1336
+ boundary.push([y, x, -1]);
1337
+ }
1338
+ }
1339
+ }
1340
+ }
1341
+ return index;
1342
+ }
1343
+ function filterCells(cells, flags, target) {
1344
+ var ptr = 0;
1345
+ for (var i = 0; i < cells.length; ++i) {
1346
+ if (flags[i] === target) {
1347
+ cells[ptr++] = cells[i];
1348
+ }
1349
+ }
1350
+ cells.length = ptr;
1351
+ return cells;
1352
+ }
1353
+ function classifyFaces(triangulation, target, infinity) {
1354
+ var index = indexCells(triangulation, infinity);
1355
+ if (target === 0) {
1356
+ if (infinity) {
1357
+ return index.cells.concat(index.boundary);
1358
+ } else {
1359
+ return index.cells;
1360
+ }
1361
+ }
1362
+ var side = 1;
1363
+ var active = index.active;
1364
+ var next = index.next;
1365
+ var flags = index.flags;
1366
+ var cells = index.cells;
1367
+ var constraint = index.constraint;
1368
+ var neighbor = index.neighbor;
1369
+ while (active.length > 0 || next.length > 0) {
1370
+ while (active.length > 0) {
1371
+ var t = active.pop();
1372
+ if (flags[t] === -side) {
1373
+ continue;
1374
+ }
1375
+ flags[t] = side;
1376
+ var c = cells[t];
1377
+ for (var j = 0; j < 3; ++j) {
1378
+ var f = neighbor[3 * t + j];
1379
+ if (f >= 0 && flags[f] === 0) {
1380
+ if (constraint[3 * t + j]) {
1381
+ next.push(f);
1382
+ } else {
1383
+ active.push(f);
1384
+ flags[f] = side;
1385
+ }
1386
+ }
1387
+ }
1388
+ }
1389
+ var tmp = next;
1390
+ next = active;
1391
+ active = tmp;
1392
+ next.length = 0;
1393
+ side = -side;
1394
+ }
1395
+ var result = filterCells(cells, flags, target);
1396
+ if (infinity) {
1397
+ return result.concat(index.boundary);
1398
+ }
1399
+ return result;
1400
+ }
1401
+ }
1402
+ });
1403
+
1404
+ // node_modules/cdt2d/cdt2d.js
1405
+ var require_cdt2d = __commonJS({
1406
+ "node_modules/cdt2d/cdt2d.js"(exports, module) {
1407
+ "use strict";
1408
+ var monotoneTriangulate = require_monotone();
1409
+ var makeIndex = require_triangulation();
1410
+ var delaunayFlip = require_delaunay();
1411
+ var filterTriangulation = require_filter();
1412
+ module.exports = cdt2d2;
1413
+ function canonicalizeEdge(e) {
1414
+ return [Math.min(e[0], e[1]), Math.max(e[0], e[1])];
1415
+ }
1416
+ function compareEdge(a, b) {
1417
+ return a[0] - b[0] || a[1] - b[1];
1418
+ }
1419
+ function canonicalizeEdges(edges) {
1420
+ return edges.map(canonicalizeEdge).sort(compareEdge);
1421
+ }
1422
+ function getDefault(options, property, dflt) {
1423
+ if (property in options) {
1424
+ return options[property];
1425
+ }
1426
+ return dflt;
1427
+ }
1428
+ function cdt2d2(points, edges, options) {
1429
+ if (!Array.isArray(edges)) {
1430
+ options = edges || {};
1431
+ edges = [];
1432
+ } else {
1433
+ options = options || {};
1434
+ edges = edges || [];
1435
+ }
1436
+ var delaunay2 = !!getDefault(options, "delaunay", true);
1437
+ var interior = !!getDefault(options, "interior", true);
1438
+ var exterior = !!getDefault(options, "exterior", true);
1439
+ var infinity = !!getDefault(options, "infinity", false);
1440
+ if (!interior && !exterior || points.length === 0) {
1441
+ return [];
1442
+ }
1443
+ var cells = monotoneTriangulate(points, edges);
1444
+ if (delaunay2 || interior !== exterior || infinity) {
1445
+ var triangulation = makeIndex(points.length, canonicalizeEdges(edges));
1446
+ for (var i = 0; i < cells.length; ++i) {
1447
+ var f = cells[i];
1448
+ triangulation.addTriangle(f[0], f[1], f[2]);
1449
+ }
1450
+ if (delaunay2) {
1451
+ delaunayFlip(points, triangulation);
1452
+ }
1453
+ if (!exterior) {
1454
+ return filterTriangulation(triangulation, -1);
1455
+ } else if (!interior) {
1456
+ return filterTriangulation(triangulation, 1, infinity);
1457
+ } else if (infinity) {
1458
+ return filterTriangulation(triangulation, 0, infinity);
1459
+ } else {
1460
+ return triangulation.cells();
1461
+ }
1462
+ } else {
1463
+ return cells;
1464
+ }
1465
+ }
1466
+ }
1467
+ });
1468
+
1
1469
  // lib/convertConnectionsToSerializedConnections.ts
2
1470
  var convertConnectionsToSerializedConnections = (connections) => {
3
1471
  return connections.map((conn) => ({
@@ -12700,32 +14168,33 @@ Flatten.BooleanOperations = BooleanOperations;
12700
14168
  Flatten.Relations = Relations;
12701
14169
 
12702
14170
  // node_modules/@tscircuit/find-convex-regions/dist/index.js
12703
- var __create = Object.create;
12704
- var __defProp = Object.defineProperty;
12705
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12706
- var __getOwnPropNames = Object.getOwnPropertyNames;
12707
- var __getProtoOf = Object.getPrototypeOf;
12708
- var __hasOwnProp = Object.prototype.hasOwnProperty;
12709
- var __commonJS = (cb, mod) => function __require() {
12710
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
14171
+ var import_cdt2d = __toESM(require_cdt2d(), 1);
14172
+ var __create2 = Object.create;
14173
+ var __defProp2 = Object.defineProperty;
14174
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
14175
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
14176
+ var __getProtoOf2 = Object.getPrototypeOf;
14177
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
14178
+ var __commonJS2 = (cb, mod) => function __require() {
14179
+ return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12711
14180
  };
12712
- var __copyProps = (to, from, except, desc) => {
14181
+ var __copyProps2 = (to, from, except, desc) => {
12713
14182
  if (from && typeof from === "object" || typeof from === "function") {
12714
- for (let key of __getOwnPropNames(from))
12715
- if (!__hasOwnProp.call(to, key) && key !== except)
12716
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14183
+ for (let key of __getOwnPropNames2(from))
14184
+ if (!__hasOwnProp2.call(to, key) && key !== except)
14185
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
12717
14186
  }
12718
14187
  return to;
12719
14188
  };
12720
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
14189
+ var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
12721
14190
  // If the importer is in node compatibility mode or this is not an ESM
12722
14191
  // file that has been converted to a CommonJS file using a Babel-
12723
14192
  // compatible transform (i.e. "__esModule" has not been set), then set
12724
14193
  // "default" to the CommonJS "module.exports" for node compatibility.
12725
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
14194
+ isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
12726
14195
  mod
12727
14196
  ));
12728
- var require_is_buffer = __commonJS({
14197
+ var require_is_buffer = __commonJS2({
12729
14198
  "node_modules/is-buffer/index.js"(exports, module) {
12730
14199
  "use strict";
12731
14200
  module.exports = function(obj) {
@@ -12739,7 +14208,7 @@ var require_is_buffer = __commonJS({
12739
14208
  }
12740
14209
  }
12741
14210
  });
12742
- var require_kind_of = __commonJS({
14211
+ var require_kind_of = __commonJS2({
12743
14212
  "node_modules/kind-of/index.js"(exports, module) {
12744
14213
  "use strict";
12745
14214
  var isBuffer = require_is_buffer();
@@ -12834,7 +14303,7 @@ var require_kind_of = __commonJS({
12834
14303
  };
12835
14304
  }
12836
14305
  });
12837
- var require_rename_keys = __commonJS({
14306
+ var require_rename_keys = __commonJS2({
12838
14307
  "node_modules/rename-keys/index.js"(exports, module) {
12839
14308
  "use strict";
12840
14309
  (function() {
@@ -12865,7 +14334,7 @@ var require_rename_keys = __commonJS({
12865
14334
  })();
12866
14335
  }
12867
14336
  });
12868
- var require_deep_rename_keys = __commonJS({
14337
+ var require_deep_rename_keys = __commonJS2({
12869
14338
  "node_modules/deep-rename-keys/index.js"(exports, module) {
12870
14339
  "use strict";
12871
14340
  var typeOf = require_kind_of();
@@ -12894,7 +14363,7 @@ var require_deep_rename_keys = __commonJS({
12894
14363
  };
12895
14364
  }
12896
14365
  });
12897
- var require_eventemitter3 = __commonJS({
14366
+ var require_eventemitter3 = __commonJS2({
12898
14367
  "node_modules/eventemitter3/index.js"(exports, module) {
12899
14368
  "use strict";
12900
14369
  var has = Object.prototype.hasOwnProperty;
@@ -13052,7 +14521,7 @@ var require_eventemitter3 = __commonJS({
13052
14521
  }
13053
14522
  }
13054
14523
  });
13055
- var require_lexer = __commonJS({
14524
+ var require_lexer = __commonJS2({
13056
14525
  "node_modules/xml-lexer/dist/lexer.js"(exports, module) {
13057
14526
  "use strict";
13058
14527
  function _defineProperty(obj, key, value) {
@@ -13295,7 +14764,7 @@ var require_lexer = __commonJS({
13295
14764
  };
13296
14765
  }
13297
14766
  });
13298
- var require_reader = __commonJS({
14767
+ var require_reader = __commonJS2({
13299
14768
  "node_modules/xml-reader/dist/reader.js"(exports, module) {
13300
14769
  "use strict";
13301
14770
  var EventEmitter = require_eventemitter3();
@@ -13412,8 +14881,8 @@ var require_reader = __commonJS({
13412
14881
  });
13413
14882
  var { cos: cos2, sin: sin2, PI: PI2 } = Math;
13414
14883
  var { tan: tan2 } = Math;
13415
- var import_deep_rename_keys = __toESM(require_deep_rename_keys());
13416
- var import_xml_reader = __toESM(require_reader());
14884
+ var import_deep_rename_keys = __toESM2(require_deep_rename_keys());
14885
+ var import_xml_reader = __toESM2(require_reader());
13417
14886
  function setStepOfAllObjects(graphics, step) {
13418
14887
  if (graphics.points) {
13419
14888
  for (const p of graphics.points) {
@@ -13823,7 +15292,7 @@ var BuildRegionsSolver = class extends BaseSolver2 {
13823
15292
  }
13824
15293
  };
13825
15294
  var getOffsetPolygonPoints = (params) => {
13826
- const { polygon: polygon2, clearance } = params;
15295
+ const { polygon: polygon2, clearance, verticesOnly = false } = params;
13827
15296
  const pts = polygon2.points;
13828
15297
  const n = pts.length;
13829
15298
  if (n < 3) return [];
@@ -13859,6 +15328,9 @@ var getOffsetPolygonPoints = (params) => {
13859
15328
  offsetVertices.push({ x: currLine.pt.x, y: currLine.pt.y });
13860
15329
  }
13861
15330
  }
15331
+ if (verticesOnly) {
15332
+ return offsetVertices;
15333
+ }
13862
15334
  const result = [];
13863
15335
  for (let i = 0; i < n; i++) {
13864
15336
  const v1 = offsetVertices[i];
@@ -13886,7 +15358,14 @@ var rotatePoint = (params) => {
13886
15358
  };
13887
15359
  };
13888
15360
  var generateBoundaryPoints = (params) => {
13889
- const { bounds, vias, clearance, rects, polygons = [] } = params;
15361
+ const {
15362
+ bounds,
15363
+ vias,
15364
+ clearance,
15365
+ rects,
15366
+ polygons = [],
15367
+ viaSegments = 24
15368
+ } = params;
13890
15369
  const points = [];
13891
15370
  const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
13892
15371
  points.push(
@@ -13903,7 +15382,6 @@ var generateBoundaryPoints = (params) => {
13903
15382
  points.push({ x: x1 - t * (x1 - x0), y: y1 });
13904
15383
  points.push({ x: x0, y: y1 - t * (y1 - y0) });
13905
15384
  }
13906
- const viaSegments = 24;
13907
15385
  for (const via of vias) {
13908
15386
  const radius = via.diameter / 2 + clearance;
13909
15387
  for (let i = 0; i < viaSegments; i++) {
@@ -13963,6 +15441,159 @@ var generateBoundaryPoints = (params) => {
13963
15441
  y: pt.y + (i % 5 - 2) * 1e-6
13964
15442
  }));
13965
15443
  };
15444
+ var resolveConstraintCrossings = (pts, constraintEdges, ringBoundaries) => {
15445
+ const edgeRing = new Array(constraintEdges.length);
15446
+ for (let ei = 0; ei < constraintEdges.length; ei++) {
15447
+ for (let ri = ringBoundaries.length - 1; ri >= 0; ri--) {
15448
+ if (ei >= ringBoundaries[ri]) {
15449
+ edgeRing[ei] = ri;
15450
+ break;
15451
+ }
15452
+ }
15453
+ }
15454
+ const edgeSplits = /* @__PURE__ */ new Map();
15455
+ const outPts = pts.slice();
15456
+ for (let i = 0; i < constraintEdges.length; i++) {
15457
+ for (let j = i + 1; j < constraintEdges.length; j++) {
15458
+ if (edgeRing[i] === edgeRing[j]) continue;
15459
+ const [a1, a2] = constraintEdges[i];
15460
+ const [b1, b2] = constraintEdges[j];
15461
+ const p1 = outPts[a1];
15462
+ const p2 = outPts[a2];
15463
+ const p3 = outPts[b1];
15464
+ const p4 = outPts[b2];
15465
+ const d1x = p2.x - p1.x;
15466
+ const d1y = p2.y - p1.y;
15467
+ const d2x = p4.x - p3.x;
15468
+ const d2y = p4.y - p3.y;
15469
+ const denom = d1x * d2y - d1y * d2x;
15470
+ if (Math.abs(denom) < 1e-10) continue;
15471
+ const t = ((p3.x - p1.x) * d2y - (p3.y - p1.y) * d2x) / denom;
15472
+ const u = ((p3.x - p1.x) * d1y - (p3.y - p1.y) * d1x) / denom;
15473
+ if (t > 1e-6 && t < 1 - 1e-6 && u > 1e-6 && u < 1 - 1e-6) {
15474
+ const ix = p1.x + t * d1x;
15475
+ const iy = p1.y + t * d1y;
15476
+ const newIdx = outPts.length;
15477
+ outPts.push({ x: ix, y: iy });
15478
+ if (!edgeSplits.has(i)) edgeSplits.set(i, []);
15479
+ edgeSplits.get(i).push({ t, idx: newIdx });
15480
+ if (!edgeSplits.has(j)) edgeSplits.set(j, []);
15481
+ edgeSplits.get(j).push({ t: u, idx: newIdx });
15482
+ }
15483
+ }
15484
+ }
15485
+ if (edgeSplits.size === 0) {
15486
+ return { pts, constraintEdges, hadCrossings: false };
15487
+ }
15488
+ const outEdges = [];
15489
+ for (let ei = 0; ei < constraintEdges.length; ei++) {
15490
+ const splits = edgeSplits.get(ei);
15491
+ if (!splits || splits.length === 0) {
15492
+ outEdges.push(constraintEdges[ei]);
15493
+ continue;
15494
+ }
15495
+ splits.sort((a, b) => a.t - b.t);
15496
+ const [startIdx, endIdx] = constraintEdges[ei];
15497
+ let prev = startIdx;
15498
+ for (const split of splits) {
15499
+ outEdges.push([prev, split.idx]);
15500
+ prev = split.idx;
15501
+ }
15502
+ outEdges.push([prev, endIdx]);
15503
+ }
15504
+ return { pts: outPts, constraintEdges: outEdges, hadCrossings: true };
15505
+ };
15506
+ var addRing = (ringPts, allPts, constraintEdges) => {
15507
+ const startIdx = allPts.length;
15508
+ allPts.push(...ringPts);
15509
+ const n = ringPts.length;
15510
+ for (let i = 0; i < n; i++) {
15511
+ constraintEdges.push([startIdx + i, startIdx + (i + 1) % n]);
15512
+ }
15513
+ };
15514
+ var generateBoundaryPointsWithEdges = (params) => {
15515
+ const {
15516
+ bounds,
15517
+ vias,
15518
+ clearance,
15519
+ rects,
15520
+ polygons = [],
15521
+ viaSegments = 8
15522
+ } = params;
15523
+ const allPts = [];
15524
+ const constraintEdges = [];
15525
+ const ringBoundaries = [];
15526
+ const { minX: x0, maxX: x1, minY: y0, maxY: y1 } = bounds;
15527
+ const edgeSegments = 10;
15528
+ const boundsPts = [];
15529
+ for (let i = 0; i < edgeSegments; i++) {
15530
+ const t = i / edgeSegments;
15531
+ boundsPts.push({ x: x0 + t * (x1 - x0), y: y0 });
15532
+ }
15533
+ for (let i = 0; i < edgeSegments; i++) {
15534
+ const t = i / edgeSegments;
15535
+ boundsPts.push({ x: x1, y: y0 + t * (y1 - y0) });
15536
+ }
15537
+ for (let i = 0; i < edgeSegments; i++) {
15538
+ const t = i / edgeSegments;
15539
+ boundsPts.push({ x: x1 - t * (x1 - x0), y: y1 });
15540
+ }
15541
+ for (let i = 0; i < edgeSegments; i++) {
15542
+ const t = i / edgeSegments;
15543
+ boundsPts.push({ x: x0, y: y1 - t * (y1 - y0) });
15544
+ }
15545
+ ringBoundaries.push(constraintEdges.length);
15546
+ addRing(boundsPts, allPts, constraintEdges);
15547
+ for (const via of vias) {
15548
+ const radius = via.diameter / 2 + clearance;
15549
+ const viaPts = [];
15550
+ for (let i = 0; i < viaSegments; i++) {
15551
+ const angle = 2 * Math.PI * i / viaSegments;
15552
+ viaPts.push({
15553
+ x: via.center.x + radius * Math.cos(angle),
15554
+ y: via.center.y + radius * Math.sin(angle)
15555
+ });
15556
+ }
15557
+ ringBoundaries.push(constraintEdges.length);
15558
+ addRing(viaPts, allPts, constraintEdges);
15559
+ }
15560
+ for (const rect of rects) {
15561
+ const halfWidth = rect.width / 2 + clearance;
15562
+ const halfHeight = rect.height / 2 + clearance;
15563
+ const rectPts = [
15564
+ rotatePoint({ localX: -halfWidth, localY: -halfHeight, rect }),
15565
+ rotatePoint({ localX: halfWidth, localY: -halfHeight, rect }),
15566
+ rotatePoint({ localX: halfWidth, localY: halfHeight, rect }),
15567
+ rotatePoint({ localX: -halfWidth, localY: halfHeight, rect })
15568
+ ];
15569
+ ringBoundaries.push(constraintEdges.length);
15570
+ addRing(rectPts, allPts, constraintEdges);
15571
+ }
15572
+ for (const polygon2 of polygons) {
15573
+ if (polygon2.points.length < 3) continue;
15574
+ const offsetPoints = getOffsetPolygonPoints({
15575
+ polygon: polygon2,
15576
+ clearance,
15577
+ verticesOnly: true
15578
+ });
15579
+ ringBoundaries.push(constraintEdges.length);
15580
+ addRing(offsetPoints, allPts, constraintEdges);
15581
+ }
15582
+ const resolved = resolveConstraintCrossings(
15583
+ allPts,
15584
+ constraintEdges,
15585
+ ringBoundaries
15586
+ );
15587
+ const jitteredPts = resolved.pts.map((pt, i) => ({
15588
+ x: pt.x + (i % 7 - 3) * 1e-6,
15589
+ y: pt.y + (i % 5 - 2) * 1e-6
15590
+ }));
15591
+ return {
15592
+ pts: jitteredPts,
15593
+ constraintEdges: resolved.constraintEdges,
15594
+ hadCrossings: resolved.hadCrossings
15595
+ };
15596
+ };
13966
15597
  var GeneratePointsSolver = class extends BaseSolver2 {
13967
15598
  input;
13968
15599
  output = null;
@@ -13974,15 +15605,32 @@ var GeneratePointsSolver = class extends BaseSolver2 {
13974
15605
  const vias = this.input.vias ?? [];
13975
15606
  const rects = this.input.rects ?? [];
13976
15607
  const polygons = this.input.polygons ?? [];
13977
- this.output = {
13978
- pts: generateBoundaryPoints({
15608
+ if (this.input.useConstrainedDelaunay !== false) {
15609
+ const result = generateBoundaryPointsWithEdges({
13979
15610
  bounds: this.input.bounds,
13980
15611
  vias,
13981
15612
  clearance: this.input.clearance,
13982
15613
  rects,
13983
- polygons
13984
- })
13985
- };
15614
+ polygons,
15615
+ viaSegments: this.input.viaSegments
15616
+ });
15617
+ this.output = {
15618
+ pts: result.pts,
15619
+ constraintEdges: result.constraintEdges,
15620
+ hadCrossings: result.hadCrossings
15621
+ };
15622
+ } else {
15623
+ this.output = {
15624
+ pts: generateBoundaryPoints({
15625
+ bounds: this.input.bounds,
15626
+ vias,
15627
+ clearance: this.input.clearance,
15628
+ rects,
15629
+ polygons,
15630
+ viaSegments: this.input.viaSegments
15631
+ })
15632
+ };
15633
+ }
13986
15634
  this.stats = { points: this.output.pts.length };
13987
15635
  this.solved = true;
13988
15636
  }
@@ -14212,6 +15860,10 @@ var MergeCellsSolver = class extends BaseSolver2 {
14212
15860
  };
14213
15861
  }
14214
15862
  };
15863
+ var constrainedDelaunay = (pts, constraintEdges) => {
15864
+ const coords = pts.map((p) => [p.x, p.y]);
15865
+ return (0, import_cdt2d.default)(coords, constraintEdges, { exterior: false });
15866
+ };
14215
15867
  var circumcircle = (params) => {
14216
15868
  const { a, b, c } = params;
14217
15869
  const d = 2 * (a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y));
@@ -14407,22 +16059,38 @@ var TriangulateSolver = class extends BaseSolver2 {
14407
16059
  const vias = this.input.vias ?? [];
14408
16060
  const rects = this.input.rects ?? [];
14409
16061
  const polygons = this.input.polygons ?? [];
14410
- const allTriangles = delaunay(this.input.pts);
14411
- const validTris = filterTris({
14412
- triangles: allTriangles,
14413
- pts: this.input.pts,
14414
- bounds: this.input.bounds,
14415
- vias,
14416
- clearance: this.input.clearance,
14417
- rects,
14418
- polygons
14419
- });
16062
+ let validTris;
16063
+ if (this.input.useConstrainedDelaunay !== false && this.input.constraintEdges) {
16064
+ const cdtTris = constrainedDelaunay(
16065
+ this.input.pts,
16066
+ this.input.constraintEdges
16067
+ );
16068
+ validTris = this.input.hadCrossings ? filterTris({
16069
+ triangles: cdtTris,
16070
+ pts: this.input.pts,
16071
+ bounds: this.input.bounds,
16072
+ vias,
16073
+ clearance: this.input.clearance,
16074
+ rects,
16075
+ polygons
16076
+ }) : cdtTris;
16077
+ } else {
16078
+ const allTriangles = delaunay(this.input.pts);
16079
+ validTris = filterTris({
16080
+ triangles: allTriangles,
16081
+ pts: this.input.pts,
16082
+ bounds: this.input.bounds,
16083
+ vias,
16084
+ clearance: this.input.clearance,
16085
+ rects,
16086
+ polygons
16087
+ });
16088
+ }
14420
16089
  this.output = {
14421
16090
  pts: this.input.pts,
14422
16091
  validTris
14423
16092
  };
14424
16093
  this.stats = {
14425
- candidateTriangles: allTriangles.length,
14426
16094
  validTriangles: validTris.length
14427
16095
  };
14428
16096
  this.solved = true;
@@ -14480,7 +16148,10 @@ var ConvexRegionsSolver = class extends BasePipelineSolver {
14480
16148
  vias: instance.inputProblem.vias,
14481
16149
  rects: instance.inputProblem.rects,
14482
16150
  polygons: instance.inputProblem.polygons,
14483
- clearance: instance.inputProblem.clearance
16151
+ clearance: instance.inputProblem.clearance,
16152
+ useConstrainedDelaunay: instance.inputProblem.useConstrainedDelaunay,
16153
+ constraintEdges: generated.constraintEdges,
16154
+ hadCrossings: generated.hadCrossings
14484
16155
  }
14485
16156
  ];
14486
16157
  }),