brepjs-cad 0.109.0 → 0.110.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.110.0](https://github.com/andymai/brepjs/compare/brepjs-cad-v0.109.2...brepjs-cad-v0.110.0) (2026-08-02)
4
+
5
+
6
+ ### Features
7
+
8
+ * **brepjs-cad:** add airfoils.md feature recipe (swept fans/props/impellers) ([#1566](https://github.com/andymai/brepjs/issues/1566)) ([8c786db](https://github.com/andymai/brepjs/commit/8c786db69ead59edcdc9d0f8525e43324552e4db))
9
+ * **brepjs-cad:** aimed section cut for the design judge (Phase 3) ([#1543](https://github.com/andymai/brepjs/issues/1543)) ([40e5acd](https://github.com/andymai/brepjs/commit/40e5acd54318d768dc5a620403d17d43e358e698))
10
+ * **brepjs-cad:** decomposed, cross-checked design-judge rubric (Phase 1.5) ([#1539](https://github.com/andymai/brepjs/issues/1539)) ([8059b6d](https://github.com/andymai/brepjs/commit/8059b6d701ae5980e6bb11f51695aa102fe2bb43))
11
+ * **brepjs-cad:** deterministic body/interference metrics for the design judge (Phase 1) ([#1531](https://github.com/andymai/brepjs/issues/1531)) ([d296b54](https://github.com/andymai/brepjs/commit/d296b545f2d7084b861683d61b626ace4747a371))
12
+ * **brepjs-cad:** grade judge quality against a reference exemplar ([#1731](https://github.com/andymai/brepjs/issues/1731)) ([9d4aaeb](https://github.com/andymai/brepjs/commit/9d4aaeb8e4830c6be78668854730367194b6a9e5))
13
+ * **brepjs-cad:** kernel-anchored Set-of-Marks for the design judge ([#1545](https://github.com/andymai/brepjs/issues/1545)) ([2b6f5b4](https://github.com/andymai/brepjs/commit/2b6f5b436f2a73c96747cc71f83afc8715765cd0))
14
+ * **brepjs-cad:** reliable internal-bore detection for the design judge (keystone) ([#1542](https://github.com/andymai/brepjs/issues/1542)) ([0d780c3](https://github.com/andymai/brepjs/commit/0d780c3b73c2551dab2f04a6ff31bf9ec8cae2ab))
15
+ * **brepjs-cad:** surface fragmentation in verify --check (the [#1](https://github.com/andymai/brepjs/issues/1) design defect) ([#1560](https://github.com/andymai/brepjs/issues/1560)) ([45a4f6e](https://github.com/andymai/brepjs/commit/45a4f6e268331b7816cd9957fbdab4c0893b2000))
16
+ * **brepjs-cad:** xray internal-reveal shot for the design judge (Phase 2a) ([#1540](https://github.com/andymai/brepjs/issues/1540)) ([eca5bc9](https://github.com/andymai/brepjs/commit/eca5bc9ad20fc7947132d647952245cfe466a7f4))
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **brepjs-cad:** add a triangular-gusset recipe to the implement skill (bracket/enclosure eval) ([#1571](https://github.com/andymai/brepjs/issues/1571)) ([346d042](https://github.com/andymai/brepjs/commit/346d0423fefa3bd163f4075f69bf96d478543bf5))
22
+ * **brepjs-cad:** add the "realize the designed object" bar to the implement skill ([#1563](https://github.com/andymai/brepjs/issues/1563)) ([e150357](https://github.com/andymai/brepjs/commit/e1503570aaf271ebef1e39d48be9c70a5ffe8f03))
23
+ * **brepjs-cad:** bore detector misses full-cylinder through-holes ([#1551](https://github.com/andymai/brepjs/issues/1551)) ([#1586](https://github.com/andymai/brepjs/issues/1586)) ([b6d61eb](https://github.com/andymai/brepjs/commit/b6d61eb6d88e2e4a3aa1c55b78dc2e76315ebc02))
24
+ * **brepjs-cad:** close gear-teeth edge cases found by /eval-skill (ring, worm tip relief, GT2) ([#1548](https://github.com/andymai/brepjs/issues/1548)) ([4bd0494](https://github.com/andymai/brepjs/commit/4bd049401f3affcc3f38e3a31bb9520653a3e89c))
25
+ * **brepjs-cad:** code + hint the degenerate-edge (duplicate-vertex) verify failure ([#1550](https://github.com/andymai/brepjs/issues/1550)) ([502dffc](https://github.com/andymai/brepjs/commit/502dffc4a2ae495ae5c98b0c7966721abe0d5f48))
26
+ * **brepjs-cad:** correct spur-gear example flanks + add root fillet ([#1528](https://github.com/andymai/brepjs/issues/1528)) ([6971c6b](https://github.com/andymai/brepjs/commit/6971c6befa1fea36a8c2f3ee89c4aa20946020c7))
27
+ * **brepjs-cad:** exploded-joint legibility + disjoint-compound caveat (basics eval) ([#1565](https://github.com/andymai/brepjs/issues/1565)) ([9d06121](https://github.com/andymai/brepjs/commit/9d0612111a595e57fcfca6fd191ed9169fc2c062))
28
+ * **brepjs-cad:** handle brepjs/playground refs + summarize body relations in the digest ([#1547](https://github.com/andymai/brepjs/issues/1547)) ([b0acef0](https://github.com/andymai/brepjs/commit/b0acef0ad80cdd61f0d2683f1e6d0ece0cae028e))
29
+ * **brepjs-cad:** heal 6 implement-skill findings from the full-flywheel re-run ([#1568](https://github.com/andymai/brepjs/issues/1568)) ([f63bf3d](https://github.com/andymai/brepjs/commit/f63bf3d5a0aa638d06e11dd7e2c27e84dbf74746))
30
+ * **brepjs-cad:** heal implement + polish skills from clean-room eval ([#1526](https://github.com/andymai/brepjs/issues/1526)) ([0645e16](https://github.com/andymai/brepjs/commit/0645e163e1d8759c95406d0f9526d0aa3b5dd480))
31
+ * **brepjs-cad:** heal implement skill — deep-stack bounds extremes aren't datums ([#1529](https://github.com/andymai/brepjs/issues/1529)) ([5ed366f](https://github.com/andymai/brepjs/commit/5ed366f266b3e6e50ae4b54d5779aa05453e894a))
32
+ * **brepjs-cad:** heal implement skill from the eval flywheel (3 findings) ([#1552](https://github.com/andymai/brepjs/issues/1552)) ([51def82](https://github.com/andymai/brepjs/commit/51def82db4e0600e85f45e4dd828cc9caee58d15))
33
+ * **brepjs-cad:** heal implement skill from the full-corpus eval flywheel (4 findings) ([#1554](https://github.com/andymai/brepjs/issues/1554)) ([3cfc28e](https://github.com/andymai/brepjs/commit/3cfc28ed8b82c46330f1d75f1e98c13fd4d65a06))
34
+ * **brepjs-cad:** make blind-judge reference adaptation render multi-body parts at scale ([#1530](https://github.com/andymai/brepjs/issues/1530)) ([18d4523](https://github.com/andymai/brepjs/commit/18d4523c85e1b22496bb5c0b8fb382a1146429c6))
35
+ * **brepjs-cad:** polish skill — bosses on shells must fuse, or they float (eval finding) ([#1553](https://github.com/andymai/brepjs/issues/1553)) ([07cbf93](https://github.com/andymai/brepjs/commit/07cbf93e47fbf880df53bc2a1cee05bf0d17e2d5))
36
+ * **brepjs-cad:** teach worm-wheel and rack tooth recipes; fix gear-build contradiction ([#1544](https://github.com/andymai/brepjs/issues/1544)) ([b0da85f](https://github.com/andymai/brepjs/commit/b0da85f218d463e0f1ef0ca8760cec54b4814b02))
37
+ * **core:** bump occt-wasm to 3.7.0 with borrowed adjacency handles ([#1821](https://github.com/andymai/brepjs/issues/1821)) ([4b76974](https://github.com/andymai/brepjs/commit/4b76974833f2d9900740fffcec2dd589de952ff9))
38
+ * **deps:** clear all remaining OSV findings to get main green ([#1917](https://github.com/andymai/brepjs/issues/1917)) ([2456ef4](https://github.com/andymai/brepjs/commit/2456ef40860129a59027d055978c002004104925))
39
+ * **release:** unbreak Vercel — repin brepjs-cad to brepjs >=18.0.0 ([#1711](https://github.com/andymai/brepjs/issues/1711)) ([78c780a](https://github.com/andymai/brepjs/commit/78c780a3ab2fcc78f26b32029df72795582e145c))
40
+
41
+
42
+ ### Reverts
43
+
44
+ * restore brepjs-cad brepjs dep floor — "*" did not fix the release churn ([#1854](https://github.com/andymai/brepjs/issues/1854)) ([194caba](https://github.com/andymai/brepjs/commit/194cabaa6c7196ee38a3b3ddaa68a881909ae263))
45
+
46
+ ## [0.109.1](https://github.com/andymai/brepjs/compare/brepjs-cad-v0.109.0...brepjs-cad-v0.109.1) (2026-08-01)
47
+
48
+
49
+ ### Bug Fixes
50
+
51
+ * **deps:** clear all remaining OSV findings to get main green ([#1917](https://github.com/andymai/brepjs/issues/1917)) ([2456ef4](https://github.com/andymai/brepjs/commit/2456ef40860129a59027d055978c002004104925))
52
+
3
53
  ## [0.109.0](https://github.com/andymai/brepjs/compare/brepjs-cad-v0.108.0...brepjs-cad-v0.109.0) (2026-08-01)
4
54
 
5
55
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brepjs-cad",
3
- "version": "0.109.0",
3
+ "version": "0.110.0",
4
4
  "description": "Brainstorm → design → author → verify → polish pipeline for parametric brepjs CAD, with the brep CLI",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -56,7 +56,7 @@
56
56
  "prepack": "npm run build"
57
57
  },
58
58
  "dependencies": {
59
- "@modelcontextprotocol/sdk": "1.29.0",
59
+ "@modelcontextprotocol/sdk": "1.30.0",
60
60
  "brepjs": ">=18.117.1",
61
61
  "commander": "^15.0.0",
62
62
  "occt-wasm": "^3.0.0",
@@ -4,7 +4,7 @@ var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);function
4
4
  `)+`
5
5
  `).buffer}function Ir(e,t,n){let r=e(t,{tolerance:n,angularTolerance:.5,skipNormals:!1}),i=r.vertices,a=r.normals,o=r.triangles,s=i.length/3,c=o.length/3,l=a.length===i.length,u=[`ply`,`format ascii 1.0`,`comment brepjs PLY export`,`element vertex ${s}`,`property float x`,`property float y`,`property float z`];l&&u.push(`property float nx`,`property float ny`,`property float nz`),u.push(`element face ${c}`,`property list uchar int vertex_index`,`end_header`);for(let e=0;e<s;e++){let t=e*3,n=i[t]??0,r=i[t+1]??0,o=i[t+2]??0;if(l){let e=a[t]??0,i=a[t+1]??0,s=a[t+2]??0;u.push(`${n} ${r} ${o} ${e} ${i} ${s}`)}else u.push(`${n} ${r} ${o}`)}for(let e=0;e<c;e++){let t=o[e*3]??0,n=o[e*3+1]??0,r=o[e*3+2]??0;u.push(`3 ${t} ${n} ${r}`)}return new TextEncoder().encode(u.join(`
6
6
  `)+`
7
- `).buffer}function Lr(e,t){return e.toBREP(E(t))}function Rr(e,t){return D(e,e.fromBREP(t))}function zr(e,t,n){let r=e.xcafNewDocument();for(let t of n){let n=e.xcafAddShape(r,E(t.shape));if(t.name&&e.xcafSetName(r,n,t.name),t.color){let[i,a,o]=t.color;e.xcafSetColor(r,n,i/255,a/255,o/255)}}return T(`compound`,r)}function Br(e,t,n){let r=E(t),i=e.xcafGetRootLabels(r),a=(()=>{try{return i.size()>0}finally{i.delete()}})();try{return a?e.xcafExportSTEP(r):``}finally{e.xcafClose(r)}}function Vr(e,t,n,r){if(n.length===0)return``;let i=zr(e,t,n.map(e=>({shape:e.shape,name:e.name??``,color:e.color})));try{return Br(e,i)}finally{i.delete()}}function Hr(e,t,n,r){return T(`vertex`,e.makeVertex(t,n,r))}function Ur(e,t){throw Pe(t)?Error(`occt-wasm: makeEdge from curve handle is not implemented`):Error(`occt-wasm: makeEdge is not implemented`)}function Wr(e,t,n){let r=Ie(t,n.map(E));try{return T(`wire`,e.makeWire(r))}finally{r.delete()}}function Gr(e,t,n){let r=[],i=new Set(n.map(e=>E(e)));for(let t of n){let n=e.getSubShapes(E(t),`edge`);try{let e=n.size();for(let t=0;t<e;t++)r.push(n.get(t))}finally{n.delete()}}let a=Ie(t,r);try{return T(`wire`,e.makeWire(a))}finally{a.delete();for(let t of r)i.has(t)||e.release(t)}}function Kr(e,t,n){return T(`face`,e.makeFace(E(t)))}function qr(e,t,n){return T(`edge`,e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Jr(e,t,n,r){return T(`edge`,e.makeCircleEdge(t[0],t[1],t[2],n[0],n[1],n[2],r))}function Yr(e,t,n,r,i,a){return T(`edge`,e.makeCircleArc(t[0],t[1],t[2],n[0],n[1],n[2],r,i,a))}function Xr(e,t,n,r){return T(`edge`,e.makeArcEdge(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function Zr(e,t,n,r,i){return T(`edge`,e.makeEllipseEdge(t[0],t[1],t[2],n[0],n[1],n[2],r,i))}function Qr(e,t,n,r,i,a,o){return T(`edge`,e.makeEllipseArc(t[0],t[1],t[2],n[0],n[1],n[2],r,i,a,o))}function $r(e,t,n){let r=[];for(let e of n)r.push(e[0],e[1],e[2]);let i=Re(t,r);try{return T(`edge`,e.makeBezierEdge(i))}finally{i.delete()}}function ei(e,t,n,r){let[i,a,o]=t,[s,c,l]=n,[u,d,f]=r;return T(`edge`,e.makeTangentArc(i,a,o,s,c,l,u,d,f))}function ti(e,t,n,r,i,a){let o=i?i[0]:0,s=i?i[1]:0,c=i?i[2]:0,l=a?a[0]:0,u=a?a[1]:0,d=a?a[2]:1,f=e.makeHelixWire(o,s,c,l,u,d,t,n,r);return e.buildCurves3d(f),T(`wire`,f)}function ni(e,t,n){let r=Ie(t,n.map(E));try{return T(`compound`,e.makeCompound(r))}finally{r.delete()}}function ri(e,t){return T(`solid`,e.solidFromShell(E(t)))}function ii(e,t,n,r,i){let a=[];for(let[t,i,o]of r){let r=n[t],s=n[i],c=n[o];!r||!s||!c||a.push(e.buildTriFace(r.x,r.y,r.z,s.x,s.y,s.z,c.x,c.y,c.z))}let o=Ie(t,a);try{let t=e.sewAndSolidify(o,i),n=e.fixFaceOrientations(t);return n!==t&&e.release(t),D(e,n)}finally{o.delete();for(let t of a)e.release(t)}}function ai(e,t){return T(`face`,e.makeNonPlanarFace(E(t)))}function oi(e,t,n,r){let i=Ie(t,r.map(E));try{return T(`face`,e.addHolesInFace(E(n),i))}finally{i.delete()}}function si(e,t,n){let r=e.getSubShapes(E(n),`wire`),i=(()=>{try{return r.size()-1}finally{r.delete()}})(),a=[];for(let e=0;e<i;e++)a.push(e);let o=Le(t,a);try{return T(`face`,e.removeHolesFromFace(E(n),o))}finally{o.delete()}}function ci(e,t,n){let r=E(t);return T(`face`,e.makeFaceOnSurface(r,E(n)))}function li(e,t,n,r,i){let a=new t.VectorDouble;for(let[e,t,r]of n)a.push_back(e),a.push_back(t),a.push_back(r);try{return T(`face`,e.bsplineSurface(a,r,i))}finally{a.delete()}}function ui(e,t,n,r,i){let a=[];for(let t=0;t<r-1;t++)for(let r=0;r<i-1;r++){let o=t*i+r,s=(t+1)*i+r,c=t*i+(r+1),l=(t+1)*i+(r+1),u=n[o],d=n[s],f=n[c],p=n[l];u&&d&&f&&a.push(e.buildTriFace(u[0],u[1],u[2],d[0],d[1],d[2],f[0],f[1],f[2])),d&&p&&f&&a.push(e.buildTriFace(d[0],d[1],d[2],p[0],p[1],p[2],f[0],f[1],f[2]))}let o=Ie(t,a);try{return D(e,e.sewAndSolidify(o,.001))}finally{o.delete();for(let t of a)e.release(t)}}function di(e,t,n,r){let i=e.buildTriFace(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]);return i===0?null:T(`face`,i)}function fi(e,t,n,r){let i=Ie(t,n.map(E));try{let t=e.sewAndSolidify(i,r),n=e.fixFaceOrientations(t);return n!==t&&e.release(t),T(`solid`,n)}finally{i.delete()}}function pi(e,t,n){return{x:e,y:t,z:n,__type:`point3d`,delete:Ne}}function mi(e,t,n){return{x:e,y:t,z:n,__type:`direction3d`,delete:Ne}}function hi(e,t,n){return{x:e,y:t,z:n,__type:`vector3d`,delete:Ne}}function gi(e,t,n,r,i,a){return{origin:{x:e,y:t,z:n},direction:{x:r,y:i,z:a},__type:`axis1`,delete:Ne}}function _i(e,t,n,r,i,a,o,s,c){return{origin:{x:e,y:t,z:n},zDir:{x:r,y:i,z:a},xDir:o===void 0?void 0:{x:o,y:s,z:c},__type:`axis2`,delete:Ne}}function vi(e,t,n,r,i,a,o,s,c){return{origin:{x:e,y:t,z:n},zDir:{x:r,y:i,z:a},xDir:o===void 0?void 0:{x:o,y:s,z:c},__type:`axis3`,delete:Ne}}function yi(e){return e}function bi(e){return e}function xi(e,t){return{x:e,y:t}}function Si(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`occt-wasm: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function Ci(e,t){return{x:e,y:t}}function wi(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete(){}}}function Ti(e){return e}function Ei(e,t,n,r){return bi(te(e,t,n,r))}function Di(e,t,n,r){return bi(ne(e,t,n,r))}function Oi(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));if(Math.abs(o)<1e-12)return bi(te(e,t,i,a));let s=((e*e+t*t)*(r-a)+(n*n+r*r)*(a-t)+(i*i+a*a)*(t-r))/o,c=((e*e+t*t)*(i-n)+(n*n+r*r)*(e-i)+(i*i+a*a)*(n-e))/o,l=Math.sqrt((e-s)**2+(t-c)**2),u=Math.atan2(t-c,e-s),d=Math.atan2(r-c,n-s),f=Math.atan2(a-c,i-s),p=d-u;p<0&&(p+=2*Math.PI);let m=f-u;m<0&&(m+=2*Math.PI);let h=p<m,g=ne(s,c,l,h);if(!h){let e=-u,t=-f;return t<e-1e-9&&(t+=2*Math.PI),bi({__bk2d:`trimmed`,basis:g,tStart:e,tEnd:t})}let _=f;return _<u-1e-9&&(_+=2*Math.PI),bi({__bk2d:`trimmed`,basis:g,tStart:u,tEnd:_})}function ki(e,t,n,r,i,a){let o=Math.sqrt(n*n+r*r),s=o>0?n/o:0,c=o>0?r/o:0,l=e-i,u=t-a,d=2*(u*s-l*c);if(Math.abs(d)<1e-12)return bi(te(e,t,i,a));let f=-(l*l+u*u)/d,p=e-f*c,m=t+f*s,h=Math.abs(f),g=Math.atan2(t-m,e-p),_=Math.atan2(a-m,i-p),v=-(t-m)/h,y=(e-p)/h,b=v*s+y*c>0,x=ne(p,m,h,b);if(!b){let e=-g,t=-_;return t<e-1e-9&&(t+=2*Math.PI),bi({__bk2d:`trimmed`,basis:x,tStart:e,tEnd:t})}let S=_;return S<g-1e-9&&(S+=2*Math.PI),bi({__bk2d:`trimmed`,basis:x,tStart:g,tEnd:S})}function Ai(e,t,n,r,i,a,o){return bi(ae(e,t,n,r,i??1,a??0,o??!0))}function ji(e,t,n,r,i,a,o,s,c){return bi({...ae(e,t,n,r,o??1,s??0,c??!0),__bk2d:`ellipse`,startAngle:i,endAngle:a})}function Mi(e){return bi(oe(e))}function Ni(e,t){let n=e,r=n.length,i=Math.max(1,Math.min(t?.degMax??3,r-1)),a=[0],o=[i+1],s=r-i-1;for(let e=1;e<=s;e++)a.push(e/(s+1)),o.push(1);return a.push(1),o.push(i+1),bi({__bk2d:`bspline`,poles:n,knots:a,multiplicities:o,degree:i,isPeriodic:!1})}function Pi(e,t){return S(yi(e),t)}function Fi(e,t){return{point:S(yi(e),t),tangent:C(yi(e),t)}}function Ii(e){return w(yi(e))}function Li(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return ee(t)}function Ri(e,t,n){return bi({__bk2d:`trimmed`,basis:yi(e),tStart:t,tEnd:n})}function zi(e){return bi(JSON.parse(JSON.stringify(yi(e))))}function Bi(e,t){let n=yi(e),r=w(n),i=[];for(let e=0;e<=20;e++){let a=r.first+(r.last-r.first)*e/20,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l)||1;i.push([o-l/u*t,s+c/u*t])}return bi(oe(i.length<=25?i:i.filter((e,t)=>t%2==0||t===i.length-1)))}function Vi(e,t,n){return bi(se(yi(e),t,n))}function Hi(e,t,n,r){return bi(ce(yi(e),t,n,r))}function Ui(e,t,n,r){return bi(le(yi(e),t,n,r))}function Wi(e,t,n){return bi(ue(yi(e),t,n))}function Gi(e,t,n,r,i){return bi(de(yi(e),t,n,r,i))}function Ki(e,t,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return e;let s=-i/o,c=r/o,l=a-1,u=1+l*s*s,d=l*s*c,f=l*c*s,p=1+l*c*c,m=t-u*t-d*n,h=n-f*t-p*n,g=yi(e),_=w(g),v=[];for(let e=0;e<=20;e++){let[t,n]=S(g,_.first+(_.last-_.first)*e/20);v.push([u*t+d*n+m,f*t+p*n+h])}return bi(oe(v))}function qi(e,t,n,r,i,a){return Ki(e,t,n,r,i,a)}function Ji(){return{type:`identity2d`,delete(){}}}function Yi(e,t,n,r,i){return{type:`affinity2d`,axOriginX:e,axOriginY:t,axDirX:n,axDirY:r,ratio:i,delete(){}}}function Xi(e,t){return{type:`translate2d`,dx:e,dy:t,delete(){}}}function Zi(e,t,n,r,i,a,o){return{type:`mirror2d`,cx:e,cy:t,mode:n,originX:r,originY:i,dirX:a,dirY:o,delete(){}}}function Qi(e,t,n){return{type:`rotate2d`,angle:e,cx:t,cy:n,delete(){}}}function $i(e,t,n){return{type:`scale2d`,sx:e,sy:e,cx:t,cy:n,delete(){}}}function ea(e,t,n){let r=e;r.dx=(Number(r.dx)||0)+t,r.dy=(Number(r.dy)||0)+n}function ta(e,t){let n=e,r=t;n.dx=(Number(n.dx)||0)+(Number(r.dx)||0),n.dy=(Number(n.dy)||0)+(Number(r.dy)||0),r.type===`scale2d`&&(n.type=`scale2d`,n.sx=r.sx,n.sy=r.sy)}function na(e,t){let n=t;return n.type===`translate2d`?Vi(e,Number(n.dx)||0,Number(n.dy)||0):n.type===`rotate2d`?Hi(e,Number(n.angle)||0,Number(n.cx)||0,Number(n.cy)||0):n.type===`scale2d`?Ui(e,Number(n.sx)||1,Number(n.cx)||0,Number(n.cy)||0):n.type===`mirror2d`?Wi(e,Number(n.ox)||0,Number(n.oy)||0):n.type===`affinity2d`?Ki(e,Number(n.axOriginX)||0,Number(n.axOriginY)||0,Number(n.axDirX)||0,Number(n.axDirY)||0,Number(n.ratio)||1):Number(n.dx)||Number(n.dy)?Vi(e,Number(n.dx)||0,Number(n.dy)||0):e}function ra(e,t,n){let r=fe(yi(e),yi(t),n);return{points:r.points,segments:r.segments.map(e=>bi(e))}}function ia(e,t,n){let r=yi(e),i=w(r),a=(e,r,i)=>{if(e.__bk2d===`line`){let a=(t-e.ox)*e.dx+(n-e.oy)*e.dy,o=Math.max(r,Math.min(i,a)),[s,c]=S(e,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}let a=r,o=1/0;for(let s=0;s<=200;s++){let c=r+(i-r)*s/200,[l,u]=S(e,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}return{param:a,distance:Math.sqrt(o)}};if(r.__bk2d===`trimmed`){let e=r.tStart,t=r.tEnd,n=a(r.basis,e,t);if(!n)return null;let i=t-e,o=i>1e-15?(n.param-e)/i:0;return{param:Math.max(0,Math.min(1,o)),distance:n.distance}}return a(r,i.first,i.last)}function aa(e,t,n,r,i,a){let o=1/0;for(let s=0;s<=20;s++){let c=n+(r-n)*(s/20),[l,u]=S(yi(e),c);for(let e=0;e<=20;e++){let n=i+(a-i)*(e/20),[r,s]=S(yi(t),n),c=Math.sqrt((r-l)**2+(s-u)**2);c<o&&(o=c)}}return o}function oa(e,t){let n=yi(e),r=w(n),i=Math.min(Math.max(t+1,10),100),a=[];for(let e=0;e<i;e++){let t=r.first+(r.last-r.first)*e/(i-1);a.push(S(n,t))}let o=Math.min(3,i-1),s=a.length,c=[],l=[],u=s-o-1;c.push(0),l.push(o+1);for(let e=1;e<=u;e++)c.push(e/(u+1)),l.push(1);return c.push(1),l.push(o+1),bi({__bk2d:`bspline`,poles:a,knots:c,multiplicities:l,degree:o,isPeriodic:!1})}function sa(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;if(t.__bk2d!==`bspline`)return[e];let n=t.poles,r=t.degree,i=[];for(let e=0;e<t.knots.length;e++){let n=t.knots[e]??0,r=t.multiplicities[e]??0;for(let e=0;e<r;e++)i.push(n)}let a=n.length-1+r+1;if(r<1||i.length!==a+1)return[bi(oe(n))];let o=e=>[e[0],e[1]],s=[],c=r,l=r+1,u=[];for(let e=0;e<=r;e++)u[e]=o(n[e]);let d=[];for(;l<a;){let e=l;for(;l<a&&i[l+1]===i[l];)l++;let t=l-e+1;if(t<r){let e=i[l]-i[c],n=[];for(let a=r;a>t;a--)n[a-t-1]=e/(i[c+a]-i[c]);let s=r-t;for(let e=1;e<=s;e++){let i=s-e,c=t+e;for(let e=r;e>=c;e--){let t=n[e-c],r=u[e],i=u[e-1];u[e]=[t*r[0]+(1-t)*i[0],t*r[1]+(1-t)*i[1]]}l<a&&(d[i]=o(u[r]))}}if(s.push(u),l<a){for(let e=r-t;e<=r;e++)d[e]=o(n[l-r+e]);u=d,d=[],c=l,l++}}return s.map(e=>bi(oe(e)))}function ca(){return Ce()}function la(e,t,n){we(e,yi(t),n)}function ua(e){return{xMin:e.xMin,yMin:e.yMin,xMax:e.xMax,yMax:e.yMax}}function da(e,t){e.xMin=Math.min(e.xMin,t.xMin),e.yMin=Math.min(e.yMin,t.yMin),e.xMax=Math.max(e.xMax,t.xMax),e.yMax=Math.max(e.yMax,t.yMax)}function fa(e,t){return e.xMax<t.xMin||e.xMin>t.xMax||e.yMax<t.yMin||e.yMin>t.yMax}function pa(e,t,n){return t<e.xMin||t>e.xMax||n<e.yMin||n>e.yMax}function ma(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function ha(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function ga(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles:null}function _a(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles.length-1:null}function va(e){return xe(yi(e))}function ya(e){return bi(Se(e))}function ba(e,t){let n=w(yi(e)),r=[n.first,...t.sort((e,t)=>e-t),n.last],i=[];for(let t=0;t<r.length-1;t++){let a=r[t]??n.first,o=r[t+1]??n.last;i.push(Ri(e,a,o))}return i}function xa(e,t,n,r,i,a){let o=yi(n),[s,c,l]=r,[u,d,f]=i,[p,m,h]=a,g=d*h-f*m,_=f*p-u*h,v=u*m-d*p,y=(e,t)=>[s+e*p+t*g,c+e*m+t*_,l+e*h+t*v],b=o.__bk2d;if(b===`line`){let t=w(o),[n,r]=S(o,t.first),[i,a]=S(o,t.last),s=y(n,r),c=y(i,a);return T(`edge`,e.makeLineEdge(s[0],s[1],s[2],c[0],c[1],c[2]))}if(b===`trimmed`){let t=o;if(t.basis&&t.basis.__bk2d===`line`){let[t,n]=S(o,0),[r,i]=S(o,1),a=y(t,n),s=y(r,i);return T(`edge`,e.makeLineEdge(a[0],a[1],a[2],s[0],s[1],s[2]))}if(t.basis&&t.basis.__bk2d===`circle`){let t=w(o),[n,r]=S(o,t.first),[i,a]=S(o,(t.first+t.last)/2),[s,c]=S(o,t.last),l=y(n,r),u=y(i,a),d=y(s,c);return T(`edge`,e.makeArcEdge(l[0],l[1],l[2],u[0],u[1],u[2],d[0],d[1],d[2]))}}if(b===`circle`){let t=o;if(t.cx!==void 0&&t.radius!==void 0){let[n,r,i]=y(t.cx,t.cy);return T(`edge`,e.makeCircleEdge(n,r,i,u,d,f,t.radius))}let n=w(o),[r,i]=S(o,n.first),[a,s]=S(o,(n.first+n.last)/2),[c,l]=S(o,n.last),p=y(r,i),m=y(a,s),h=y(c,l);return T(`edge`,e.makeArcEdge(p[0],p[1],p[2],m[0],m[1],m[2],h[0],h[1],h[2]))}let x=w(o),C=(x.last-x.first)/24,ee=[];for(let e=0;e<=24;e++){let[t,n]=S(o,x.first+e*C),[r,i,a]=y(t,n);ee.push(r,i,a)}let te=new t.VectorDouble;for(let e of ee)te.push_back(e);try{return T(`edge`,e.interpolatePoints(te,!1))}finally{te.delete()}}function Sa(e,t,n,r){let i=yi(n),a=w(i),o=E(r),s=new t.VectorDouble;for(let t=0;t<=30;t++){let[n,r]=S(i,a.first+(a.last-a.first)*t/30),c=e.pointOnSurface(o,n,r);try{s.push_back(c.get(0)),s.push_back(c.get(1)),s.push_back(c.get(2))}finally{c.delete()}}try{return T(`edge`,e.interpolatePoints(s,!1))}finally{s.delete()}}function Ca(e){return e}function wa(e,t,n){let[r,i]=Vt(e,t),a=[];for(let o=0;o<=60;o++){let s=yn(e,n,Ht(e,t,r+(i-r)*o/60));s&&a.push(s)}if(a.length<2)throw Error(`occt-wasm: extractCurve2dFromEdge could not project the edge onto the face surface`);return Ni(a)}function Ta(e,t){e.buildCurves3d(E(t))}function Ea(e,t,n,r){return T(`wire`,e.fixWireOnFace(E(t),E(n),r))}function Da(e){try{let t=ze(e.modified),n=ze(e.generated),r=ze(e.deleted),i=e=>{let t=new Map,n=0;for(;n+1<e.length;){let r=e[n]??0,i=e[n+1]??0;n+=2;let a=[];for(let t=0;t<i&&n<e.length;t++,n++)a.push(e[n]??0);t.set(r,a)}return t};return{id:e.resultId,evolution:{modified:i(t),generated:i(n),deleted:new Set(r)}}}finally{e.delete()}}function Oa(e,t,n,r,i,a,o,s){let c=Le(t,o);try{let{id:t,evolution:o}=Da(e.translateWithHistory(E(n),r,i,a,c,s));return{shape:D(e,t),evolution:o}}finally{c.delete()}}function ka(e,t,n,r,i,a,o,s){let c=o??[0,0,1],l=s??[0,0,0],u=Le(t,i);try{let{id:t,evolution:i}=Da(e.rotateWithHistory(E(n),l[0],l[1],l[2],c[0],c[1],c[2],r,u,a));return{shape:D(e,t),evolution:i}}finally{u.delete()}}function Aa(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=Da(e.mirrorWithHistory(E(n),r[0],r[1],r[2],i[0],i[1],i[2],s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function ja(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=Da(e.scaleWithHistory(E(n),r[0],r[1],r[2],i,s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function Ma(e,t,n,r,i,a){let o=e(t,n,r,i),s=new Map;for(let e of a)s.set(e,[e]);return{shape:o,evolution:{modified:s,generated:new Map,deleted:new Set}}}function Na(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=Da(e.fuseWithHistory(E(n),E(r),s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete()}}function Pa(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=Da(e.cutWithHistory(E(n),c.id,s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete(),c?.dispose()}}function Fa(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=Da(e.intersectWithHistory(E(n),c.id,s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete(),c?.dispose()}}function Ia(e,t,n,r,i,a,o){let s=Ve(r,i),c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Da(e.filletWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function La(e,t,n,r,i,a,o){let s=Ve(r,i),c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Da(e.chamferWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Ra(e,t,n,r,i,a,o,s){let c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Da(e.shellWithHistory(E(n),c,i,s??.001,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function za(e,t,n,r,i,a){let o=Le(t,i);try{let{id:t,evolution:i}=Da(e.thickenWithHistory(E(n),r,.001,o,a));return{shape:D(e,t),evolution:i}}finally{o.delete()}}function Ba(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=Da(e.offsetWithHistory(E(n),r,o??1e-6,s,a));return{shape:D(e,t),evolution:i}}finally{s.delete()}}function Va(e,t,n,r,i){let[a,o,s]=r,c=E(t);for(let t of n){let n=(typeof i==`number`?i:i(t))*Math.PI/180;c=e.draft(c,E(t),n,a,o,s)}return{shape:D(e,c),evolution:{modified:new Map,generated:new Map,deleted:new Set}}}function Ha(e,t,n,r,i,a,o){let s=e(r,i),c=t(s,`face`),l=new Map,u=Math.min(a.length,c.length);for(let e=0;e<u;e++){let t=c[e],r=a[e];t!==void 0&&r!==void 0&&l.set(r,[n(t,o)])}return{shape:s,evolution:{modified:l,generated:new Map,deleted:new Set}}}function Ua(e,t,n,r){if(n.length<4)throw Error(`hullFromPoints: need at least 4 points`);let{points:i,faces:a}=x(n,r);if(a.length<4)throw Error(`hullFromPoints: degenerate hull (fewer than 4 faces)`);return ii(e,t,[...i],[...a],r)}function Wa(e,t,n,r){let i=Math.max(r,1),a=[];for(let r of n){let n=e.tessellate(E(r),i,i*.5);try{let e=n.positionCount,r=n.getPositionsPtr()>>2;for(let n=0;n<e;n+=3)a.push({x:t.HEAPF32[r+n]??0,y:t.HEAPF32[r+n+1]??0,z:t.HEAPF32[r+n+2]??0})}finally{n.delete()}}return a}function Ga(e,t,n,r){if(n.length===0)throw Error(`hull: no shapes provided`);let i=Wa(e,t,n,r);if(i.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);return Ua(e,t,i,r)}function Ka(e){throw new c(`occt-wasm: ${e} is not yet implemented`)}var qa=class e{oc;kernelId=`occt-wasm`;capabilities=a;Module;k;owner;constructor(e,t,n){this.Module=e,this.k=Ue(t,e),this.oc=We(e,this.k),this.owner=n}static fromKernel(t){let n=t.getRawModule(),r=t.getRawKernel();return new e(n,r,t)}get retainedKernelOwner(){return this.owner}dispose(e){Pe(e)?this.k.release(e.id):typeof e.delete==`function`&&e.delete()}executeBatch(e){Ka(`executeBatch`)}openCheckpoints=[];checkpoint(){let e=this.k.checkpoint();return this.openCheckpoints.push(e),e}checkpointCount(){return this.openCheckpoints.length}restoreCheckpoint(e){let t=this.openCheckpoints.lastIndexOf(e);if(t===-1)throw new r(`occtWasmAdapter.restoreCheckpoint`,`checkpoint ${e} is not open — releaseSince would erase unrelated live handles`);this.k.releaseSince(e),this.openCheckpoints.length=t}discardCheckpoint(e){this.closeCheckpoint(e)}closeCheckpoint(e){let t=this.openCheckpoints.lastIndexOf(e);t!==-1&&(this.openCheckpoints.length=t)}makeBox(e,t,n){return nt(this.k,e,t,n)}makeCylinder(e,t,n,r){return rt(this.k,e,t,n,r)}makeSphere(e,t){return it(this.k,e,t)}makeCone(e,t,n,r,i){return at(this.k,e,t,n,r,i)}makeTorus(e,t,n,r){return ot(this.k,e,t,n,r)}makeEllipsoid(e,t,n){return st(this.k,e,t,n)}makeBoxFromCorners(e,t){return ct(this.k,e,t)}makeRectangle(e,t){return lt(this.k,e,t)}fuse(e,t,n){return Ke(this.k,e,t,n)}cut(e,t,n){return qe(this.k,e,t,n)}intersect(e,t,n){return Je(this.k,e,t,n)}section(e,t,n){return Ye(this.k,e,t,n)}fuseAll(e,t){return Xe(this.k,this.Module,e,t)}cutAll(e,t,n){return Ze(this.k,this.Module,e,t,n)}split(e,t){return Qe(this.k,this.Module,e,t)}checkBoolean(e,t,n){return $e(this.k,e,t,n)}meshBoolean(e,t,n,r,i,a){return et(e,t,n,r,i,a)}makeVertex(e,t,n){return Hr(this.k,e,t,n)}makeEdge(e,t,n){return Ur(this.k,e)}makeWire(e){return Wr(this.k,this.Module,e)}makeFace(e,t){return Kr(this.k,e,t)}makeLineEdge(e,t){return qr(this.k,e,t)}makeCircleEdge(e,t,n){return Jr(this.k,e,t,n)}makeCircleArc(e,t,n,r,i){return Yr(this.k,e,t,n,r,i)}makeArcEdge(e,t,n){return Xr(this.k,e,t,n)}makeEllipseEdge(e,t,n,r,i){return Zr(this.k,e,t,n,r)}makeEllipseArc(e,t,n,r,i,a,o){return Qr(this.k,e,t,n,r,i,a)}makeBezierEdge(e){return $r(this.k,this.Module,e)}makeTangentArc(e,t,n){return ei(this.k,e,t,n)}makeHelixWire(e,t,n,r,i,a){return ti(this.k,e,t,n,r,i)}makeWireFromMixed(e){return Gr(this.k,this.Module,e)}makeCompound(e){return ni(this.k,this.Module,e)}solidFromShell(e){return ri(this.k,e)}hull(e,t){return Ga(this.k,this.Module,e,t)}hullFromPoints(e,t){return Ua(this.k,this.Module,e,t)}buildSolidFromFaces(e,t,n){return ii(this.k,this.Module,e,t,n)}makeNonPlanarFace(e){return ai(this.k,e)}addHolesInFace(e,t){return oi(this.k,this.Module,e,t)}removeHolesFromFace(e){return si(this.k,this.Module,e)}makeFaceOnSurface(e,t){return ci(this.k,e,t)}bsplineSurface(e,t,n){return li(this.k,this.Module,e,t,n)}triangulatedSurface(e,t,n){return ui(this.k,this.Module,e,t,n)}buildTriFace(e,t,n){return di(this.k,e,t,n)}sewAndSolidify(e,t){return fi(this.k,this.Module,e,t)}createPoint3d(e,t,n){return pi(e,t,n)}createDirection3d(e,t,n){return mi(e,t,n)}createVector3d(e,t,n){return hi(e,t,n)}createAxis1(e,t,n,r,i,a){return gi(e,t,n,r,i,a)}createAxis2(e,t,n,r,i,a,o,s,c){return _i(e,t,n,r,i,a,o,s,c)}createAxis3(e,t,n,r,i,a,o,s,c){return vi(e,t,n,r,i,a,o,s,c)}extrude(e,t,n){return nr(this.k,e,t,n)}revolve(e,t,n){return rr(this.k,e,t,n)}loft(e,t,n,r){return ir(this.k,this.Module,e,t,n,r)}sweep(e,t,n){return ar(this.k,e,t,n)}simplePipe(e,t){return or(this.k,e,t)}helicalSweep(e,t,n,r,i,a){throw Error(`helicalSweep on occt-wasm requires profile positioning+orientation logic not yet implemented; brepkit has a native implementation`)}sweepWithOptions(e,t,n,r,i){Ka(`sweepWithOptions`)}sweepPipeShell(e,t,n){return sr(this.k,e,t,n)}loftAdvanced(e,t){return cr(this.k,this.Module,e,t)}buildExtrusionLaw(e,t,n){return lr(this.k,e,t,n)}revolveVec(e,t,n,r){return ur(this.k,e,t,n,r)}draftPrism(e,t,n,r,i,a){return dr(this.k,e,t,n,r,i,a)}fillet(e,t,n){return Un(this.k,this.Module,e,t,n)}chamfer(e,t,n){return Wn(this.k,this.Module,e,t,n)}chamferDistAngle(e,t,n,r){return Gn(this.k,this.Module,e,t,n,r)}shell(e,t,n,r){return Kn(this.k,this.Module,e,t,n,r)}thicken(e,t){return qn(this.k,e,t)}offset(e,t,n){return Jn(this.k,e,t,n)}filletVariable(e,t){return Xn(this.k,e,t)}draft(e,t,n,r,i){return Zn(this.k,e,t,n,r,i)}defeature(e,t){return Qn(this.k,this.Module,e,t)}offsetWire2D(e,t,n){return $n(this.k,e,t,n)}simplify(e){return er(this.k,e)}reverseShape(e){return tr(this.k,e)}composeTransform(e){return fr(e)}transform(e,t){return mr(this.k,this.Module,e,t)}locate(e,t){return hr(this.k,this.Module,e,t)}translate(e,t,n,r){return gr(this.k,e,t,n,r)}rotate(e,t,n,r){return _r(this.k,e,t,n,r)}mirror(e,t,n){return vr(this.k,e,t,n)}scale(e,t,n){return yr(this.k,e,t,n)}generalTransform(e,t,n,r){return br(this.k,this.Module,e,t,n,r)}generalTransformNonOrthogonal(e,t,n){return br(this.k,this.Module,e,t,n,!1)}positionOnCurve(e,t,n){return xr(this.k,this.Module,e,t,n)}linearPattern(e,t,n,r){return Sr(this.k,e,t,n,r)}circularPattern(e,t,n,r,i){return Cr(this.k,e,t,n,r,i)}transformBatch(e){return wr(this.k,e)}translateWithHistory(e,t,n,r,i,a){return Oa(this.k,this.Module,e,t,n,r,i,a)}rotateWithHistory(e,t,n,r,i,a){return ka(this.k,this.Module,e,t,n,r,i,a)}mirrorWithHistory(e,t,n,r,i){return Aa(this.k,this.Module,e,t,n,r,i)}scaleWithHistory(e,t,n,r,i){return ja(this.k,this.Module,e,t,n,r,i)}generalTransformWithHistory(e,t,n,r,i,a){return Ma((e,t,n,r)=>this.generalTransform(e,t,n,r),e,t,n,r,i)}fuseWithHistory(e,t,n,r,i){return Na(this.k,this.Module,e,t,n,r,i)}cutWithHistory(e,t,n,r,i){return Pa(this.k,this.Module,e,t,n,r,i)}intersectWithHistory(e,t,n,r,i){return Fa(this.k,this.Module,e,t,n,r,i)}filletWithHistory(e,t,n,r,i){return Ia(this.k,this.Module,e,t,n,r,i)}chamferWithHistory(e,t,n,r,i){return La(this.k,this.Module,e,t,n,r,i)}shellWithHistory(e,t,n,r,i,a){return Ra(this.k,this.Module,e,t,n,r,i,a)}thickenWithHistory(e,t,n,r){return za(this.k,this.Module,e,t,n,r)}offsetWithHistory(e,t,n,r,i){return Ba(this.k,this.Module,e,t,n,r,i)}draftWithHistory(e,t,n,r,i,a,o){return Va(this.k,e,t,n,i)}applyComposedTransformWithHistory(e,t,n,r){return Ha((e,t)=>this.transform(e,t),(e,t)=>this.iterShapes(e,t),(e,t)=>this.hashCode(e,t),e,t,n,r)}mesh(e,t){return Pt(this.k,this.Module,e,t)}meshEdges(e,t,n){return It(this.k,this.Module,e,t,n)}hasTriangulation(e){return Lt(this.k,e)}meshShape(e,t,n){Rt(this.k,e,t,n)}exportSTEP(e){return Dr(this.k,this.makeCompound.bind(this),e)}exportSTL(e,t,n,r){return Or(this.mesh.bind(this),e,t,n,r)}importSTEP(e){return kr(this.k,e)}importSTL(e){return Ar(this.k,this.Module,e)}exportIGES(e){return jr(this.k,this.makeCompound.bind(this),e)}importIGES(e){return Mr(this.k,e)}exportSTEPAssembly(e,t){return Nr(this.k,this.Module,e,t)}export3MF(e,t){throw Error(`export3MF is only available with the brepkit kernel`)}exportGLB(e,t){return Pr(this.mesh.bind(this),e,t)}exportOBJ(e,t){return Fr(this.mesh.bind(this),e,t)}exportPLY(e,t){return Ir(this.mesh.bind(this),e,t)}import3MF(e){throw Error(`import3MF is only available with the brepkit kernel`)}importOBJ(e){throw Error(`importOBJ is only available with the brepkit kernel`)}importGLB(e){throw Error(`importGLB is only available with the brepkit kernel`)}toBREP(e){return Lr(this.k,e)}fromBREP(e){return Rr(this.k,e)}createXCAFDocument(e){return zr(this.k,this.Module,e)}writeXCAFToSTEP(e,t){return Br(this.k,e,t)}exportSTEPConfigured(e,t){return Vr(this.k,this.Module,e,t)}volume(e){return Cn(this.k,e)}area(e){return wn(this.k,e)}length(e){return Tn(this.k,e)}centerOfMass(e){return En(this.k,e)}linearCenterOfMass(e){return Dn(this.k,e)}boundingBox(e){return On(this.k,e)}distance(e,t){return Pn(this.k,this.Module,e,t)}surfaceCurvature(e,t,n){return Vn(this.k,e,t,n)}surfaceCenterOfMass(e){return kn(this.k,e)}measureBulk(e,t){return An(this.k,e,t)}createDistanceQuery(e){return jn(this.k,e)}iterShapes(e,t){return ut(this.k,e,t)}iterShapeList(e,t){throw Error(`iterShapeList is not applicable to occt-wasm: the arena model has no TopTools_ListOfShape handles`)}shapeType(e){return dt(this.k,e)}isSame(e,t){return ft(this.k,e,t)}isEqual(e,t){return pt(this.k,e,t)}downcast(e,t){return mt(this.k,e,t)}copyShape(e){return ht(this.k,e)}hashCode(e,t){return gt(this.k,e,t)}subShapeCount(e,t){return bt(this.k,e,t)}subShapeHashes(e,t,n){return xt(this.k,e,t,n)}isNull(e){return _t(this.k,e)}shapeOrientation(e){return vt(this.k,e)}edgeToFaceMap(e){return yt(this.k,e)}sharedEdges(e,t){return St(this.k,e,t)}adjacentFaces(e,t){return Ct(this.k,e,t)}sew(e,t){return wt(this.k,this.Module,e,t)}curveType(e){return Bt(this.k,e)}curveParameters(e){return Vt(this.k,e)}curvePointAtParam(e,t){return Ht(this.k,e,t)}curveTangent(e,t){return Ut(this.k,e,t)}curveIsClosed(e){return Wt(this.k,e)}curveIsPeriodic(e){return Gt(this.k,e)}curvePeriod(e){return Kt(this.k,e)}interpolatePoints(e,t){return qt(this.k,this.Module,e,t)}approximatePoints(e,t){return Jt(this.k,this.Module,e,t)}curveDegreeElevate(e,t){return Yt(this.k,e,t)}curveKnotInsert(e,t,n){return Xt(this.k,e,t,n)}curveKnotRemove(e,t,n){return Zt(this.k,e,t,n)}curveSplit(e,t){return Qt(this.k,e,t)}getBezierPenultimatePole(e){return $t(this.k,e)}createCurveAdaptor(e){Ka(`createCurveAdaptor`)}vertexPosition(e){return tn(this.k,e)}surfaceType(e){return nn(this.k,e)}uvBounds(e){return rn(this.k,e)}outerWire(e){return an(this.k,e)}surfaceNormal(e,t,n){return sn(this.k,e,t,n)}pointOnSurface(e,t,n){return cn(this.k,e,t,n)}uvFromPoint(e,t){return yn(this.k,e,t)}projectPointOnFace(e,t){return bn(this.k,e,t)}classifyPointOnFace(e,t,n,r){return xn(this.k,e,t,n,r)}classifyPointRobust(e,t,n){Ka(`classifyPointRobust`)}classifyPointWinding(e,t,n){Ka(`classifyPointWinding`)}approximateSurfaceLspia(e,t,n,r,i,a,o,s,c){Ka(`approximateSurfaceLspia`)}untrimFace(e,t,n){Ka(`untrimFace`)}getSurfaceCylinderData(e){return vn(this.k,e)}getSurfaceAxis(e){return _n(this.k,e)}reverseSurfaceU(e){return on(this.k,e)}detectSmallFeatures(e,t,n){Ka(`detectSmallFeatures`)}recognizeFeatures(e,t){Ka(`recognizeFeatures`)}projectEdges(e,t,n,r){return Sn(this.k,this.Module,e,t,n,r)}isValid(e){return Et(this.k,e)}healSolid(e){return Dt(this.k,e)}healFace(e){return Ot(this.k,e)}healWire(e,t){return kt(this.k,e,t)}mergeCoincidentVertices(e,t){return At(this.k,e,t)}removeDegenerateEdges(e,t){return jt(this.k,e,t)}fixFaceOrientations(e){return Mt(this.k,e)}fixShape(e){return Nt(this.k,e)}fixSelfIntersection(e){return kt(this.k,e)}createPoint2d(e,t){return xi(e,t)}createDirection2d(e,t){return Si(e,t)}createVector2d(e,t){return Ci(e,t)}createAxis2d(e,t,n,r){return wi(e,t,n,r)}wrapCurve2dHandle(e){return Ti(e)}createCurve2dAdaptor(e){Ka(`createCurve2dAdaptor`)}makeLine2d(e,t,n,r){return Ei(e,t,n,r)}makeCircle2d(e,t,n,r){return Di(e,t,n,r)}makeArc2dThreePoints(e,t,n,r,i,a){return Oi(e,t,n,r,i,a)}makeArc2dTangent(e,t,n,r,i,a){return ki(e,t,n,r,i,a)}makeEllipse2d(e,t,n,r,i,a,o){return Ai(e,t,n,r,i,a,o)}makeEllipseArc2d(e,t,n,r,i,a,o,s,c){return ji(e,t,n,r,i,a,o,s,c)}makeBezier2d(e){return Mi(e)}makeBSpline2d(e,t){return Ni(e)}evaluateCurve2d(e,t){return Pi(e,t)}evaluateCurve2dD1(e,t){return Fi(e,t)}getCurve2dBounds(e){return Ii(e)}getCurve2dType(e){return Li(e)}trimCurve2d(e,t,n){return Ri(e,t,n)}reverseCurve2d(e){}copyCurve2d(e){return zi(e)}offsetCurve2d(e,t){return Bi(e,t)}translateCurve2d(e,t,n){return Vi(e,t,n)}rotateCurve2d(e,t,n,r){return Hi(e,t,n,r)}scaleCurve2d(e,t,n,r){return Ui(e,t,n,r)}mirrorCurve2dAtPoint(e,t,n){return Wi(e,t,n)}mirrorCurve2dAcrossAxis(e,t,n,r,i){return Gi(e,t,n,r,i)}affinityTransform2d(e,t,n,r,i,a){return qi(e,t,n,r,i,a)}createIdentityGTrsf2d(){return Ji()}createAffinityGTrsf2d(e,t,n,r,i){return Yi(e,t,n,r,i)}createTranslationGTrsf2d(e,t){return Xi(e,t)}createMirrorGTrsf2d(e,t,n,r,i,a,o){return Zi(e,t,n,r,i,a,o)}createRotationGTrsf2d(e,t,n){return Qi(e,t,n)}createScaleGTrsf2d(e,t,n){return $i(e,t,n)}setGTrsf2dTranslationPart(e,t,n){ea(e,t,n)}multiplyGTrsf2d(e,t){ta(e,t)}transformCurve2dGeneral(e,t){return na(e,t)}intersectCurves2d(e,t,n){return ra(e,t,n)}projectPointOnCurve2d(e,t,n){return ia(e,t,n)}distanceBetweenCurves2d(e,t,n,r,i,a){return aa(e,t,n,r,i,a)}approximateCurve2dAsBSpline(e,t,n,r){return oa(e,r)}decomposeBSpline2dToBeziers(e){return sa(e)}createBoundingBox2d(){return ca()}addCurveToBBox2d(e,t,n){la(e,t,n)}getBBox2dBounds(e){return ua(e)}mergeBBox2d(e,t){da(e,t)}isBBox2dOut(e,t){return fa(e,t)}isBBox2dOutPoint(e,t,n){return pa(e,t,n)}getCurve2dCircleData(e){return ma(e)}getCurve2dEllipseData(e){return ha(e)}getCurve2dBezierPoles(e){return ga(e)}getCurve2dBezierDegree(e){return _a(e)}getCurve2dBSplineData(e){Ka(`getCurve2dBSplineData`)}serializeCurve2d(e){return va(e)}deserializeCurve2d(e){return ya(e)}splitCurve2d(e,t){return ba(e,t)}liftCurve2dToPlane(e,t,n,r){return xa(this.k,this.Module,e,t,n,r)}buildEdgeOnSurface(e,t){return Sa(this.k,this.Module,e,t)}extractSurfaceFromFace(e){return Ca(e)}extractCurve2dFromEdge(e,t){return wa(this.k,e,t)}buildCurves3d(e){Ta(this.k,e)}fixWireOnFace(e,t,n){return Ea(this.k,e,t,n)}fillSurface(e,t){Ka(`fillSurface`)}getNurbsCurveData(e){return en(this.k,e)}},Ja={draft:{tolerance:.01,angularTolerance:.5},standard:{tolerance:.001,angularTolerance:.1},fine:{tolerance:1e-4,angularTolerance:.05}},Ya=`standard`;function Xa(){return Ya}function Za(e=Ya){return Ja[e]}function Qa(e){Ya=e}function $a(e){return`makeLine2d`in e}var eo=[`boolean`,`loft`,`extrude`,`shell`,`fillet`,`mesh`,`edgeMesh`,`transform`],to=Object.create(null),no=Object.create(null);function ro(){for(let e of eo)to[e]=0,no[e]=0}ro();function io(e){let t=performance.now();return()=>{to[e]=(to[e]??0)+(performance.now()-t),no[e]=(no[e]??0)+1}}function ao(){let e={};for(let t of eo)e[t]={totalMs:to[t]??0,count:no[t]??0};return e}function oo(){ro()}var so;function co(){so=void 0}function lo(e){return so??=typeof e.BooleanBatch==`function`,so}function uo(e){return e===`commonFace`?1:e===`sameFace`?2:0}function fo(e,t,n={}){if(!lo(e))return null;let r=io(`boolean`),i=new e.BooleanBatch;try{for(let e of t)i.addShape(e);return i.fuseAll(uo(n.optimisation),!!n.simplify,n.fuzzyValue??0)}finally{i.delete(),r()}}function po(e,t,n,r={}){if(!lo(e))return null;if(n.length===0)return t;let i=io(`boolean`),a=new e.BooleanBatch;try{for(let e of n)a.addShape(e);return a.cutAll(t,uo(r.optimisation),!!r.simplify,r.fuzzyValue??0)}finally{a.delete(),i()}}var mo=2147483647,ho;function go(){ho=void 0}function _o(e){return ho??=typeof e.MeasurementExtractor?.extract==`function`,ho}function vo(e,t,n=!1){if(_o(e)){let r=e.MeasurementExtractor.extract(t,n);try{let t=r.getDataPtr()/8,n=r.getDataSize(),i=e.HEAPF64.slice(t,t+n);return{volume:i[0]??0,area:i[1]??0,length:i[2]??0,centerOfMass:[i[3]??0,i[4]??0,i[5]??0],boundingBox:{min:[i[6]??0,i[7]??0,i[8]??0],max:[i[9]??0,i[10]??0,i[11]??0]}}}finally{r.delete()}}return{volume:yo(e,t),area:bo(e,t),length:n?xo(e,t):0,centerOfMass:So(e,t),boundingBox:wo(e,t)}}function yo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(t,n,!0,!1,!1);let r=n.Mass();return n.delete(),r}function bo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.SurfaceProperties_2(t,n,1e-7,!0);let r=n.Mass();return n.delete(),r}function xo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.LinearProperties(t,n,!0,!1);let r=n.Mass();return n.delete(),r}function So(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(t,n,!0,!1,!1);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function Co(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.LinearProperties(t,n,!0,!1);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function wo(e,t){let n=new e.Bnd_Box;e.BRepBndLib.Add(t,n,!0);let r={min:[n.GetXMin(),n.GetYMin(),n.GetZMin()],max:[n.GetXMax(),n.GetYMax(),n.GetZMax()]};return n.delete(),r}function To(e,t,n){let r=new e.BRepExtrema_DistShapeShape_1;r.LoadS1(t),r.LoadS2(n);let i=new e.Message_ProgressRange_1;if(r.Perform(i),!r.IsDone())throw i.delete(),r.delete(),Error(`BRepExtrema_DistShapeShape failed`);let a=r.Value(),o=r.PointOnShape1(1),s=r.PointOnShape2(1),c={value:a,point1:[o.X(),o.Y(),o.Z()],point2:[s.X(),s.Y(),s.Z()]};return o.delete(),s.delete(),i.delete(),r.delete(),c}function Eo(e,t,n,r,i=1e-6){if(!e.BRepClass_FaceClassifier)throw Error(`BRepClass_FaceClassifier not available in this WASM build`);let a=new e.gp_Pnt2d_3(n,r),o=new e.BRepClass_FaceClassifier_3(t,a,i),s=o.State();a.delete(),o.delete();let c=e.TopAbs_State;return s===c.TopAbs_IN?`in`:s===c.TopAbs_ON?`on`:`out`}function Do(e){return{volume:t=>yo(e,t),area:t=>bo(e,t),length:t=>xo(e,t),centerOfMass:t=>So(e,t),linearCenterOfMass:t=>Co(e,t),boundingBox:t=>wo(e,t),distance:(t,n)=>To(e,t,n),classifyPointOnFace:(t,n,r,i)=>Eo(e,t,n,r,i),measureBulk:(t,n)=>vo(e,t,n)}}var Oo={vertex:7,edge:6,wire:5,face:4,shell:3,solid:2,compsolid:1,compound:0};function ko(e,t,n){let r=e.TopologyExtractor.extract(t,Oo[n]),i=r.getShapesCount(),a=[];for(let e=0;e<i;e++)a.push(r.getShape(e));return r.delete(),a}var Ao=new WeakMap;function jo(e,t,n){let r=Ao.get(e);if(!r){let t=e.TopAbs_ShapeEnum;r={vertex:t.TopAbs_VERTEX,edge:t.TopAbs_EDGE,wire:t.TopAbs_WIRE,face:t.TopAbs_FACE,shell:t.TopAbs_SHELL,solid:t.TopAbs_SOLID,compsolid:t.TopAbs_COMPSOLID,compound:t.TopAbs_COMPOUND},Ao.set(e,r)}let i=new e.TopExp_Explorer_2(t,r[n],e.TopAbs_ShapeEnum.TopAbs_SHAPE),a=[],o=new Map;for(;i.More();){let t=i.Current(),n=e.shapeHashCode(t,mo),r=o.get(n);r?r.some(e=>e.IsSame(t))||(r.push(t),a.push(t)):(o.set(n,[t]),a.push(t)),i.Next()}return i.delete(),a}function Mo(e,t,n){return e.TopologyExtractor?ko(e,t,n):jo(e,t,n)}var No=new WeakMap;function Po(e){let t=No.get(e);if(!t){let n=e.TopAbs_ShapeEnum;t=new Map([[n.TopAbs_VERTEX,`vertex`],[n.TopAbs_EDGE,`edge`],[n.TopAbs_WIRE,`wire`],[n.TopAbs_FACE,`face`],[n.TopAbs_SHELL,`shell`],[n.TopAbs_SOLID,`solid`],[n.TopAbs_COMPSOLID,`compsolid`],[n.TopAbs_COMPOUND,`compound`]]),No.set(e,t)}return t}function Fo(e,t){if(t.IsNull())throw Error(`Cannot determine shape type: shape is null`);let n=Po(e).get(t.ShapeType());if(!n)throw Error(`Unknown shape type enum value`);return n}function Io(e,t){let n=new e.BRepCheck_Analyzer(t,!0,!1,!1),r=n.IsValid_2();return n.delete(),r}function Lo(e,t,n=1e-6){let r=new e.BRepBuilderAPI_Sewing(n,!0,!0,!0,!1);for(let e of t)r.Add(e);let i=new e.Message_ProgressRange_1;r.Perform(i);let a=r.SewedShape();return i.delete(),r.delete(),a}function Ro(e,t,n){if(e.TopTools_ListIteratorOfListOfShape){let r=new e.TopTools_ListIteratorOfListOfShape(t);for(;r.More();)n(r.Value()),r.Next();r.delete()}else{let r=new e.TopTools_ListOfShape_3(t);for(;r.Size()>0;)n(r.First_1()),r.RemoveFirst();r.delete()}}function zo(e,t){return e.IsSame(t)}function Bo(e,t){return e.IsEqual(t)}function Vo(e){return{iterShapes:(t,n)=>Mo(e,t,n),iterShapeList:(t,n)=>{Ro(e,t,n)},shapeType:t=>Fo(e,t),isSame:(e,t)=>zo(e,t),isEqual:(e,t)=>Bo(e,t),isValid:t=>Io(e,t),sew:(t,n)=>Lo(e,t,n)}}var Ho=.001;function Uo(e,t,n){n===`commonFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueShift),n===`sameFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueFull)}function Wo(e,t){e.SetRunParallel(!0),e.SetUseOBB?.(!0),t!==void 0&&t>0&&e.SetFuzzyValue?.(t)}function Go(e,t){if(t.length<3)return 0;let n=t[0];if(!n)return 0;let r=new e.Bnd_Box;if(e.BRepBndLib.Add(n,r,!0),r.IsVoid())return r.delete(),0;let i=r.CornerMin(),a=r.CornerMax(),o=a.X()-i.X(),s=a.Y()-i.Y(),c=a.Z()-i.Z();return i.delete(),a.delete(),r.delete(),Math.sqrt(o*o+s*s+c*c)>1?1e-5:0}function Ko(e,t){let n=new e.TopoDS_Builder,r=new e.TopoDS_Compound;n.MakeCompound(r);for(let e of t)n.Add(r,e);return n.delete(),r}function qo(e,t,n,r={}){let i=io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Fuse_3(t,n,s);Uo(e,c,i),Wo(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ho);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Jo(e,t,n,r={}){let i=io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Cut_3(t,n,s);Uo(e,c,i),Wo(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ho);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Yo(e,t,n,r={}){let i=io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Common_3(t,n,s);Uo(e,c,i),Wo(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ho);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Xo(e,t,n,r=!0){let i=new e.Message_ProgressRange_1,a=new e.BRepAlgoAPI_Section_3(t,n,!1);if(a.Approximation(r),Wo(a),a.Build(i),!a.IsDone())throw a.delete(),i.delete(),Error(`BRepAlgoAPI_Section build failed`);let o=a.Shape();return a.delete(),i.delete(),o}function Zo(e,t,n={}){let r=fo(e,t,n);if(r!==null)return r;let i=io(`boolean`);try{let{optimisation:r,simplify:i=!1}=n,a=n.fuzzyValue??Go(e,t),o=new e.TopTools_ListOfShape_1;for(let e of t)o.Append_1(e);let s=new e.BRepAlgoAPI_BuilderAlgo_1;s.SetArguments(o),Uo(e,s,r),Wo(s,a);let c=new e.Message_ProgressRange_1;s.Build(c);let l=s.Shape();if(i){let t=new e.ShapeUpgrade_UnifySameDomain_2(l,!0,!0,!1);t.Build(),l=t.Shape(),t.delete()}return o.delete(),s.delete(),c.delete(),l}finally{i()}}function Qo(e,n,r,i,a){a.signal?.throwIfAborted();let o=i-r;if(o===1)return t(n,r);if(o===2)return qo(e,n[r],n[r+1],{...a,simplify:!1});let s=r+Math.ceil(o/2);return qo(e,Qo(e,n,r,s,a),Qo(e,n,s,i,a),{...a,simplify:!1})}function $o(e,t,n={}){let r=Qo(e,t,0,t.length,n);if(n.simplify){let t=new e.ShapeUpgrade_UnifySameDomain_2(r,!0,!0,!1);t.Build();let n=t.Shape();return t.delete(),n}return r}function es(e,n,r={}){if(n.length===0)throw Error(`fuseAll requires at least one shape`);if(n.length===1)return t(n,0);let{strategy:i=`native`}=r;return i===`pairwise`?$o(e,n,r):Zo(e,n,r)}function ts(e,t,n){if(!e.BRepAlgoAPI_Splitter)throw Error(`BRepAlgoAPI_Splitter not available in this WASM build`);let r=new e.TopTools_ListOfShape_1;r.Append_1(t);let i=new e.TopTools_ListOfShape_1;for(let e of n)i.Append_1(e);let a=new e.BRepAlgoAPI_Splitter;a.SetArguments(r),a.SetTools(i),Wo(a);let o=new e.Message_ProgressRange_1;a.Build(o);let s=a.Shape();return a.delete(),o.delete(),r.delete(),i.delete(),s}function ns(e,t,n,r={}){if(n.length===0)return t;let i=po(e,t,n,r);if(i!==null)return i;let a=Ko(e,n),o=Jo(e,t,a,r);return a.delete(),o}function rs(e,t,n,r,i){let a=[];return t.IsNull()&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),n.IsNull()&&a.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),a.length>0?{valid:!1,issues:a}:(i(t)||a.push({operand:`base`,issue:`not-valid`,message:`Base shape fails BRepCheck validation. Try autoHeal() first.`}),i(n)||a.push({operand:`tool`,issue:`not-valid`,message:`Tool shape fails BRepCheck validation. Try autoHeal() first.`}),{valid:a.length===0,issues:a})}function is(e){return{fuse:(t,n,r)=>qo(e,t,n,r),cut:(t,n,r)=>Jo(e,t,n,r),intersect:(t,n,r)=>Yo(e,t,n,r),section:(t,n,r)=>Xo(e,t,n,r),fuseAll:(t,n)=>es(e,t,n),cutAll:(t,n,r)=>ns(e,t,n,r),split:(t,n)=>ts(e,t,n),checkBoolean:(t,n,r)=>rs(e,t,n,r,t=>Io(e,t))}}var as={fuse:0,cut:1,intersect:2};function os(e,t,n,r={}){let{glueMode:i=0,fuzzyValue:a=0}=r;if(typeof e.BooleanPipeline==`function`){let r=new e.BooleanPipeline;try{for(let e of n)r.addStep(as[e.op],e.tool);let e=r.execute(t,i,a);return e.IsNull()?null:e}finally{r.delete()}}}function ss(e){return{booleanPipeline:(t,n,r)=>os(e,t,n,r)??null}}function cs(e,t,n,r){let i=new e.gp_Pnt_3(t,n,r),a=new e.BRepBuilderAPI_MakeVertex(i),o=a.Vertex();return a.delete(),i.delete(),o}function ls(e,t,n,r){let i=n!==void 0&&r!==void 0?new e.BRepBuilderAPI_MakeEdge_24(t,n,r):new e.BRepBuilderAPI_MakeEdge_24(t),a=i.Edge();return i.delete(),a}function us(e,t){let n=new e.BRepBuilderAPI_MakeWire_1;for(let e of t)n.Add_1(e);let r=new e.Message_ProgressRange_1;n.Build(r);let i=n.Wire();return n.delete(),r.delete(),i}function ds(e,t,n=!0){if(n){let n=new e.BRepBuilderAPI_MakeFace_15(t,!1),r=n.Face();return n.delete(),r}let r=new e.BRepOffsetAPI_MakeFilling(3,15,2,!1,1e-5,1e-4,.01,.1,8,9),i=Mo(e,t,`edge`);for(let t of i)r.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,!0);let a=new e.Message_ProgressRange_1;r.Build(a);let o=r.Shape();return r.delete(),a.delete(),o}function fs(e,t,n,r){let i=new e.BRepPrimAPI_MakeBox_2(t,n,r),a=i.Solid();return i.delete(),a}function ps(e,t,n,r=[0,0,0],i=[0,0,1]){let a=new e.gp_Pnt_3(...r),o=new e.gp_Dir_5(...i),s=new e.gp_Ax2_4(a,o),c=new e.BRepPrimAPI_MakeCylinder_3(s,t,n),l=c.Shape();return c.delete(),s.delete(),a.delete(),o.delete(),l}function ms(e,t,n=[0,0,0]){if(n[0]===0&&n[1]===0&&n[2]===0){let n=new e.BRepPrimAPI_MakeSphere_1(t),r=n.Shape();return n.delete(),r}let r=new e.gp_Pnt_3(...n),i=new e.BRepPrimAPI_MakeSphere_2(r,t),a=i.Shape();return i.delete(),r.delete(),a}function hs(e,t,n,r,i=[0,0,0],a=[0,0,1]){let o=new e.gp_Pnt_3(...i),s=new e.gp_Dir_5(...a),c=new e.gp_Ax2_4(o,s),l=new e.BRepPrimAPI_MakeCone_3(c,t,n,r),u=l.Shape();return l.delete(),c.delete(),o.delete(),s.delete(),u}function gs(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.BRepBuilderAPI_MakeEdge_3(i,a),c=new e.BRepBuilderAPI_MakeEdge_3(a,o),l=new e.BRepBuilderAPI_MakeEdge_3(o,i),u=new e.BRepBuilderAPI_MakeWire_1;u.Add_1(s.Edge()),u.Add_1(c.Edge()),u.Add_1(l.Edge());let d=null;if(u.IsDone()){let t=new e.BRepBuilderAPI_MakeFace_15(u.Wire(),!1);t.IsDone()&&(d=t.Face()),t.delete()}return u.delete(),s.delete(),c.delete(),l.delete(),i.delete(),a.delete(),o.delete(),d}function _s(e,t){let n=new e.BRepBuilderAPI_MakeWire_1;for(let r of t){let t=r.ShapeType();t===e.TopAbs_ShapeEnum.TopAbs_EDGE?n.Add_1(r):t===e.TopAbs_ShapeEnum.TopAbs_WIRE&&n.Add_2(r)}let r=new e.Message_ProgressRange_1;n.Build(r);let i=n.Wire();return n.delete(),r.delete(),i}function vs(e,t,n,r=[0,0,0],i=[0,0,1]){let a=new e.gp_Pnt_3(...r),o=new e.gp_Dir_5(...i),s=new e.gp_Ax2_4(a,o),c=new e.BRepPrimAPI_MakeTorus_5(s,t,n),l=c.Shape();return c.delete(),s.delete(),a.delete(),o.delete(),l}function ys(e){return{makeVertex:(t,n,r)=>cs(e,t,n,r),makeEdge:(t,n,r)=>ls(e,t,n,r),makeWire:t=>us(e,t),makeWireFromMixed:t=>_s(e,t),makeFace:(t,n)=>ds(e,t,n),makeBox:(t,n,r)=>fs(e,t,n,r),makeCylinder:(t,n,r,i)=>ps(e,t,n,r,i),makeSphere:(t,n)=>ms(e,t,n),makeCone:(t,n,r,i,a)=>hs(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>vs(e,t,n,r,i),buildTriFace:(t,n,r)=>gs(e,t,n,r)}}function bs(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function xs(e,t,n){let r=[],i=Math.max(n,1);for(let n of t){new e.BRepMesh_IncrementalMeshWrapper(n,i,!1,i*.5,!1).delete();let t=new e.TopExp_Explorer_2(n,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;t.More();){let n=e.TopoDS_Cast.Face(t.Current()),i=new e.TopLoc_Location_1,a=e.BRep_Tool_Triangulation(n,i,0);if(!a.IsNull()){let e=i.Transformation(),t=a.get().NbNodes();for(let n=1;n<=t;n++){let t=a.get().Node(n),i=t.Transformed(e);r.push({x:i.X(),y:i.Y(),z:i.Z()}),i.delete(),t.delete()}e.delete()}i.delete(),t.Next()}t.delete()}return r}function Ss(e,t,n){let{faces:r,points:i}=t,a=[];for(let[t,n,o]of r){let r=bs(i,t),s=bs(i,n),c=bs(i,o),l=gs(e,[r.x,r.y,r.z],[s.x,s.y,s.z],[c.x,c.y,c.z]);l!==null&&a.push(l)}if(a.length<4)throw Error(`hull: only ${a.length} faces built, need at least 4 for a solid`);let o=Math.max(n,1e-4),s=new e.BRepBuilderAPI_Sewing(o,!0,!0,!0,!1);for(let e of a)s.Add(e);let c=new e.Message_ProgressRange_1;s.Perform(c),c.delete();let l=s.SewedShape();s.delete();let u=new e.TopExp_Explorer_2(l,e.TopAbs_ShapeEnum.TopAbs_SHELL,e.TopAbs_ShapeEnum.TopAbs_SHAPE);if(u.More()){let t=e.TopoDS_Cast.Shell(u.Current());u.delete();let n=new e.BRepBuilderAPI_MakeSolid_1;n.Add(t);let r=new e.Message_ProgressRange_1;if(n.Build(r),r.delete(),n.IsDone()){let r=n.Solid();n.delete(),t.delete();let i=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(r,i,!1,!1,!1);let a=i.Mass();return i.delete(),a<0&&r.Complement(),r}return t.delete(),n.delete(),l}return u.delete(),l}function Cs(e,t,n){if(t.length===0)throw Error(`hull: no shapes provided`);let r=xs(e,t,n);if(r.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);let i=x(r,n);if(i.faces.length<4)throw Error(`hull: degenerate hull (fewer than 4 faces)`);return Ss(e,i,n)}function ws(e,t,n,r){return Ss(e,{points:t,faces:n},r)}function Ts(e,t,n){if(t.length<4)throw Error(`hullFromPoints: fewer than 4 points`);let r=x(t,n);if(r.faces.length<4)throw Error(`hullFromPoints: degenerate hull (fewer than 4 faces)`);return Ss(e,r,n)}function Es(e){return{hull:(t,n)=>Cs(e,t,n),hullFromPoints:(t,n)=>Ts(e,t,n),buildSolidFromFaces:(t,n,r)=>ws(e,t,n,r)}}function Ds(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepBuilderAPI_MakeEdge_3(r,i),o=a.Edge();return a.delete(),r.delete(),i.delete(),o}function Os(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Dir_5(n[0],n[1],n[2]),o=new e.gp_Ax2_4(i,a),s=new e.gp_Circ_2(o,r),c=new e.BRepBuilderAPI_MakeEdge_8(s),l=c.Edge();return c.delete(),s.delete(),o.delete(),a.delete(),i.delete(),l}function ks(e,t,n,r,i,a){let o=new e.gp_Pnt_3(t[0],t[1],t[2]),s=new e.gp_Dir_5(n[0],n[1],n[2]),c=new e.gp_Ax2_4(o,s),l=new e.gp_Circ_2(c,r),u=new e.BRepBuilderAPI_MakeEdge_9(l,i,a),d=u.Edge();return u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),d}function As(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_4(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function js(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Vec_4(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_5(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function Ms(e,t,n,r,i,a){let o=new e.gp_Pnt_3(t[0],t[1],t[2]),s=new e.gp_Dir_5(n[0],n[1],n[2]),c;if(a){let t=new e.gp_Dir_5(a[0],a[1],a[2]);c=new e.gp_Ax2_2(o,s,t),t.delete()}else c=new e.gp_Ax2_4(o,s);let l=new e.gp_Elips_2(c,r,i),u=new e.BRepBuilderAPI_MakeEdge_12(l),d=u.Edge();return u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),d}function Ns(e,t,n,r,i,a,o,s){let c=new e.gp_Pnt_3(t[0],t[1],t[2]),l=new e.gp_Dir_5(n[0],n[1],n[2]),u;if(s){let t=new e.gp_Dir_5(s[0],s[1],s[2]);u=new e.gp_Ax2_2(c,l,t),t.delete()}else u=new e.gp_Ax2_4(c,l);let d=new e.gp_Elips_2(u,r,i),f=new e.BRepBuilderAPI_MakeEdge_13(d,a,o),p=f.Edge();return f.delete(),d.delete(),u.delete(),l.delete(),c.delete(),p}function Ps(e,n){let r=new e.TColgp_Array1OfPnt_2(1,n.length);for(let i=0;i<n.length;i++){let a=t(n,i),o=new e.gp_Pnt_3(a[0],a[1],a[2]);r.SetValue_1(i+1,o),o.delete()}let i=new e.Geom_BezierCurve_1(r),a=new e.Handle_Geom_Curve_2(i),o=new e.BRepBuilderAPI_MakeEdge_24(a),s=o.Edge();return o.delete(),a.delete(),r.delete(),s}function Fs(e,t,n,r,i=[0,0,0],a=[0,0,1],o=!1){let s=e.HelixWireBuilder;if(typeof s?.build==`function`){let e=s.build(r,t,n,i[0],i[1],i[2],a[0],a[1],a[2],o);if(!e.IsNull())return e}let c=n/t,l=o?-2*Math.PI:2*Math.PI,u=new e.gp_Pnt_3(i[0],i[1],i[2]),d=new e.gp_Dir_5(a[0],a[1],a[2]),f=new e.gp_Ax3_5(u,d),p=new e.Geom_CylindricalSurface_1(f,r);f.delete();let m=new e.gp_Pnt2d_3(0,0),h=new e.gp_Dir2d_5(l,t),g=new e.Geom2d_Line_3(m,h),_=g.Value(0),v=g.Value(c*Math.sqrt((2*Math.PI)**2+t**2)),y=new e.GCE2d_MakeSegment_1(_,v),b=new e.Handle_Geom2d_Curve_2(y.Value().get()),x=new e.Handle_Geom_Surface_2(p),S=new e.BRepBuilderAPI_MakeEdge_30(b,x),C=S.Edge();e.BRepLib.BuildCurves3d_2(C);let w=new e.BRepBuilderAPI_MakeWire_2(C),ee=w.Wire();return w.delete(),S.delete(),b.delete(),x.delete(),_.delete(),v.delete(),g.delete(),m.delete(),h.delete(),d.delete(),u.delete(),ee}function Is(e,t,n,r){let i=Math.sqrt(t*n/r),a=t/i,o=n/i,s=new e.gp_Pnt_3(0,0,0),c=new e.gp_Dir_5(0,1,0),l=new e.gp_Ax1_2(s,c),u=new e.gp_Dir_5(0,0,1),d=new e.gp_Ax1_2(s,u),f=new e.gp_Dir_5(1,0,0),p=new e.gp_Ax1_2(s,f),m=new e.gp_GTrsf_1;m.SetAffinity_1(l,a);let h=new e.gp_GTrsf_1;h.SetAffinity_1(d,i);let g=new e.gp_GTrsf_1;return g.SetAffinity_1(p,o),m.Multiply(h),m.Multiply(g),h.delete(),g.delete(),l.delete(),d.delete(),p.delete(),c.delete(),u.delete(),f.delete(),s.delete(),{transform:m,applyToPoint(t){let n=t.XYZ();m.Transforms_1(n);let r=new e.gp_Pnt_2(n);return n.delete(),r}}}function Ls(e,t,n,r){let i=new e.gp_Sphere_1;i.SetRadius(1);let a=new e.Geom_SphericalSurface_2(i),o=e.GeomConvert.SurfaceToBSplineSurface(a.UReversed()).get();i.delete(),a.delete();try{let i=Is(e,t,n,r),a=o.NbUPoles(),s=o.NbVPoles();for(let t=1;t<=a;t++)for(let n=1;n<=s;n++){let r=e.bsplineSurfacePole(o,t,n),a=i.applyToPoint(r);o.SetPole_1(t,n,a),r.delete(),a.delete()}i.transform.delete();let c=new e.BRepBuilderAPI_MakeShell_2(o.UReversed(),!1),l=c.Shell();c.delete();let u=new e.ShapeFix_Solid_1,d=u.SolidFromShell(l);return u.delete(),d}finally{o.delete()}}function Rs(e,t){let n=new e.TopoDS_Builder,r=new e.TopoDS_Compound;n.MakeCompound(r);for(let e of t)n.Add(r,e);return n.delete(),r}function zs(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepPrimAPI_MakeBox_4(r,i),o=a.Solid();return a.delete(),r.delete(),i.delete(),o}function Bs(e,t){let n=new e.ShapeFix_Solid_1,r=n.SolidFromShell(e.TopoDS_Cast.Shell(t));return n.delete(),r}function Vs(e,t){return e.BRepToolsWrapper.Write(t)}function Hs(e,t){return e.BRepToolsWrapper.Read(t)}function Us(e,t,n={}){let r=n.unit??`MM`;e.Interface_Static.SetCVal(`xstep.cascade.unit`,r),e.Interface_Static.SetCVal(`write.step.unit`,r),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,5),new e.STEPCAFControl_Writer_1().delete();let i=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),a=new e.TDocStd_Document(i);i.delete();let o=a.Main(),s=e.XCAFDoc_DocumentTool.ShapeTool(o).get(),c=e.XCAFDoc_DocumentTool.ColorTool(o).get();e.XCAFDoc_ShapeTool.SetAutoNaming(!1);for(let n of t){let t=s.AddShape(n.shape,!1,!0),r=new e.TCollection_ExtendedString_2(n.name,!0);if(e.TDataStd_Name.Set_1(t,r),r.delete(),n.color){let[r,i,a,o]=n.color,s=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,o/255);c.SetColor_6(t,s,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),s.delete()}}let l=new e.XSControl_WorkSession,u=new e.Handle_XSControl_WorkSession_2(l),d=new e.STEPCAFControl_Writer_2(u,!1),f=new e.Handle_TDocStd_Document_2(a),p=new e.Message_ProgressRange_1;d.Transfer_1(f,e.STEPControl_StepModelType.STEPControl_AsIs,null,p),p.delete();let m=`assembly_export_${Date.now()}.step`,h=d.Write_1(m),g=``;if(h===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+m);g=new TextDecoder().decode(t),e.FS.unlink(`/`+m)}return d.delete(),u.delete(),f.delete(),a.delete(),g}function Ws(e,t){try{t.delete()}catch{}}function Gs(e,t,n){let r=Ds(e,[0,0,0],[t,0,0]),i=Ds(e,[t,0,0],[t,n,0]),a=Ds(e,[t,n,0],[0,n,0]),o=Ds(e,[0,n,0],[0,0,0]),s=new e.BRepBuilderAPI_MakeWire_1;s.Add_1(r),s.Add_1(i),s.Add_1(a),s.Add_1(o);let c=s.Wire();s.delete(),r.delete(),i.delete(),a.delete(),o.delete();let l=new e.BRepBuilderAPI_MakeFace_15(c,!1),u=l.Face();return l.delete(),u}function Ks(e,t,n,r){return new e.gp_Pnt_3(t,n,r)}function qs(e,t,n,r){return new e.gp_Dir_5(t,n,r)}function Js(e,t,n,r){return new e.gp_Vec_4(t,n,r)}function Ys(e,t,n,r,i,a,o){let s=new e.gp_Pnt_3(t,n,r),c=new e.gp_Dir_5(i,a,o),l=new e.gp_Ax1_2(s,c);return s.delete(),c.delete(),l}function Xs(e,t,n,r,i,a,o,s,c,l){let u=new e.gp_Pnt_3(t,n,r),d=new e.gp_Dir_5(i,a,o),f;if(s!==void 0&&c!==void 0&&l!==void 0){let t=new e.gp_Dir_5(s,c,l);f=new e.gp_Ax2_2(u,d,t),t.delete()}else f=new e.gp_Ax2_4(u,d);return u.delete(),d.delete(),f}function Zs(e,t,n,r,i,a,o,s,c,l){let u=new e.gp_Pnt_3(t,n,r),d=new e.gp_Dir_5(i,a,o),f;if(s!==void 0&&c!==void 0&&l!==void 0){let t=new e.gp_Dir_5(s,c,l);f=new e.gp_Ax3_3(u,d,t),t.delete()}else f=new e.gp_Ax3_5(u,d);return u.delete(),d.delete(),f}function Qs(e){return{makeLineEdge:(t,n)=>Ds(e,t,n),makeCircleEdge:(t,n,r)=>Os(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>ks(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>As(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>Ms(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>Ns(e,t,n,r,i,a,o,s),makeBezierEdge:t=>Ps(e,t),makeTangentArc:(t,n,r)=>js(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>Fs(e,t,n,r,i,a,o),makeCompound:t=>Rs(e,t),makeBoxFromCorners:(t,n)=>zs(e,t,n),makeRectangle:(t,n)=>Gs(e,t,n),solidFromShell:t=>Bs(e,t),makeEllipsoid:(t,n,r)=>Ls(e,t,n,r),toBREP:t=>Vs(e,t),fromBREP:t=>Hs(e,t),exportSTEPAssembly:(t,n)=>Us(e,t,n??{}),dispose:t=>{Ws(e,t)},createPoint3d:(t,n,r)=>Ks(e,t,n,r),createDirection3d:(t,n,r)=>qs(e,t,n,r),createVector3d:(t,n,r)=>Js(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>Ys(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Xs(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>Zs(e,t,n,r,i,a,o,s,c,l)}}function $s(e,t,n,r){let i=io(`extrude`);try{let i=new e.gp_Vec_4(n[0]*r,n[1]*r,n[2]*r),a=new e.BRepPrimAPI_MakePrism_1(t,i,!1,!0),o=a.Shape();return a.delete(),i.delete(),o}finally{i()}}function ec(e,t,n,r){let i=new e.BRepPrimAPI_MakeRevol_1(t,n,r,!1),a=i.Shape();return i.delete(),a}function tc(e,t,n=!1,r,i){let a=io(`loft`);try{let a=new e.BRepOffsetAPI_ThruSections(!0,n,1e-6);r&&a.AddVertex(r);for(let e of t)a.AddWire(e);i&&a.AddVertex(i);let o=new e.Message_ProgressRange_1;a.Build(o);let s=a.Shape();return a.delete(),o.delete(),s}finally{a()}}function nc(e,t,n,r={}){let{transitionMode:i}=r,a=new e.BRepOffsetAPI_MakePipeShell(n);typeof a.SetIsBuildHistory==`function`&&a.SetIsBuildHistory(!1),i!==void 0&&a.SetTransitionMode(i),a.Add_1(t,!1,!1);let o=new e.Message_ProgressRange_1;if(a.Build(o),o.delete(),!a.IsDone())throw a.delete(),Error(`Sweep build failed (IsDone=false)`);a.MakeSolid();let s=a.Shape();return a.delete(),s}function rc(e,t,n){let r=new e.BRepOffsetAPI_MakePipe_1(n,t),i=new e.Message_ProgressRange_1;r.Build(i),i.delete();let a=r.Shape();if(a.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_SHELL){let t=new e.BRepBuilderAPI_MakeSolid_1,n=e.TopoDS_Cast.Shell(a);t.Add(n);let i=new e.Message_ProgressRange_1;t.Build(i),i.delete();let o=a;if(t.IsDone()){let n=t.Solid(),r=new e.BRepCheck_Analyzer(n,!0,!1,!1);r.IsValid_2()?o=n:n.delete(),r.delete()}return n.delete(),t.delete(),r.delete(),o}return r.delete(),a}var ic,ac;function oc(){ic=void 0}function sc(){ac=void 0}function cc(e){return ic??=typeof e.LoftBatch==`function`,ic}function lc(e){return ac??=typeof e.ExtrudeBatch==`function`,ac}function uc(e,t){if(t.length===0)return[];if(cc(e)){let n=io(`loft`),r=new e.LoftBatch;try{for(let e of t){let t=r.beginLoft(e.solid??!0,e.ruled??!1,e.tolerance??1e-6);e.startVertex&&r.setStartVertex(t,e.startVertex);for(let n of e.wires)r.addWire(t,n);e.endVertex&&r.setEndVertex(t,e.endVertex)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>tc(e,t.wires,t.ruled??!1,t.startVertex,t.endVertex))}function dc(e,t){if(t.length===0)return[];if(lc(e)){let n=io(`extrude`),r=new e.ExtrudeBatch;try{for(let e of t)r.addExtrude(e.face,e.direction[0]*e.length,e.direction[1]*e.length,e.direction[2]*e.length);let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>$s(e,t.face,t.direction,t.length))}function fc(e){return{extrude:(t,n,r)=>$s(e,t,n,r),revolve:(t,n,r)=>ec(e,t,n,r),loft:(t,n,r,i)=>tc(e,t,n,r,i),sweep:(t,n,r)=>nc(e,t,n,r??{}),simplePipe:(t,n)=>rc(e,t,n),loftBatch:t=>uc(e,t),extrudeBatch:t=>dc(e,t)}}function pc(e,t,n,r){let i=io(`fillet`);try{let i=new e.BRepFilletAPI_MakeFillet(t,e.ChFi3d_FilletShape.ChFi3d_Rational);for(let t of n){let n=typeof r==`function`?r(t):r,a=e.TopoDS_Cast.Edge(t);if(typeof n==`number`)n>0&&i.Add_2(n,a);else{let[e,t]=n;e>0&&t>0&&i.Add_3(e,t,a)}}let a=i.Shape();return i.delete(),a}finally{i()}}function mc(e,t,n,r){let i=new e.BRepFilletAPI_MakeChamfer(t),a=null;function o(){if(a)return a;a=new Map;let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let t=e.TopoDS_Cast.Face(n.Current()),r=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;r.More();){let n=e.shapeHashCode(r.Current(),2147483647);a.has(n)||a.set(n,t),r.Next()}r.delete(),n.Next()}return n.delete(),a}function s(t){return o().get(e.shapeHashCode(t,2147483647))??null}for(let t of n){let n=typeof r==`function`?r(t):r,a=e.TopoDS_Cast.Edge(t);if(typeof n==`number`)n>0&&i.Add_2(n,a);else{let[e,r]=n;if(e>0&&r>0){let n=s(t);n&&i.Add_3(e,r,a,n)}}}let c=i.Shape();return i.delete(),c}function hc(e,t,n,r,i=.001){let a=io(`shell`);try{let a=new e.TopTools_ListOfShape_1;for(let e of n)a.Append_1(e);let o=new e.Message_ProgressRange_1,s=new e.BRepOffsetAPI_MakeThickSolid;s.MakeThickSolidByJoin(t,a,-r,i,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,o);let c=s.Shape();return s.delete(),a.delete(),o.delete(),c}finally{a()}}function gc(e,t,n){let r=new e.BRepOffsetAPI_MakeThickSolid;r.MakeThickSolidBySimple(t,n);let i=new e.Message_ProgressRange_1;r.Build(i);let a=r.Shape();return r.delete(),i.delete(),a}function _c(e,t,n,r,i){let a=new e.BRepFilletAPI_MakeChamfer(t),o=i*Math.PI/180,s=new Map,c=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;c.More();){let t=e.TopoDS_Cast.Face(c.Current()),n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let r=e.shapeHashCode(n.Current(),2147483647);s.has(r)||s.set(r,t),n.Next()}n.delete(),c.Next()}c.delete();for(let t of n){let n=s.get(e.shapeHashCode(t,2147483647))??null;n&&r>0&&a.AddDA(r,o,e.TopoDS_Cast.Edge(t),n)}let l=a.Shape();return a.delete(),l}function vc(e,t,n,r){let i;i=typeof r==`string`?{arc:e.GeomAbs_JoinType.GeomAbs_Arc,intersection:e.GeomAbs_JoinType.GeomAbs_Intersection,tangent:e.GeomAbs_JoinType.GeomAbs_Tangent}[r]??e.GeomAbs_JoinType.GeomAbs_Arc:r??e.GeomAbs_JoinType.GeomAbs_Arc;let a=new e.BRepOffsetAPI_MakeOffset_3(t,i,!1);a.Perform(n,0);let o=a.Shape();return a.delete(),o}function yc(e,t,n,r=1e-6){let i=new e.Message_ProgressRange_1,a=new e.BRepOffsetAPI_MakeOffsetShape;a.PerformByJoin(t,n,r,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,i);let o=a.Shape();return a.delete(),i.delete(),o}var bc,xc;function Sc(){bc=void 0}function Cc(){xc=void 0}function wc(e){return bc??=typeof e.ShellBatch==`function`,bc}function Tc(e){return xc??=typeof e.FilletBatch==`function`,xc}function Ec(e,t){if(t.length===0)return[];if(wc(e)){let n=io(`shell`),r=new e.ShellBatch;try{for(let e of t){let t=r.beginShell(e.shape,e.thickness,e.tolerance??.001);for(let n of e.faces)r.addFaceToRemove(t,n)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>hc(e,t.shape,t.faces,t.thickness,t.tolerance??.001))}function Dc(e,t){if(t.length===0)return[];if(Tc(e)){let n=io(`fillet`),r=new e.FilletBatch;try{for(let e of t){let t=r.beginFillet(e.shape);for(let n of e.edges)n.r2===void 0?r.addEdge(t,n.edge,n.radius):r.addEdgeVariable(t,n.edge,n.radius,n.r2)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>{let n=t.edges.map(e=>e.edge);return pc(e,t.shape,n,e=>{let n=t.edges.find(t=>t.edge===e);return n?n.r2===void 0?n.radius:[n.radius,n.r2]:0})})}function Oc(e){return{fillet:(t,n,r)=>pc(e,t,n,r),chamfer:(t,n,r)=>mc(e,t,n,r),chamferDistAngle:(t,n,r,i)=>_c(e,t,n,r,i),shell:(t,n,r,i)=>hc(e,t,n,r,i),thicken:(t,n)=>gc(e,t,n),offset:(t,n,r)=>yc(e,t,n,r),offsetWire2D:(t,n,r)=>vc(e,t,n,r),shellBatch:t=>Ec(e,t),filletBatch:t=>Dc(e,t)}}var kc;function Ac(){kc=void 0}function jc(e){return kc??=typeof e.TransformBatch==`function`,kc}function Mc(e,t){if(t.length===0)return[];let n=io(`transform`);try{if(jc(e)){let n=new e.TransformBatch;try{for(let e of t)switch(e.type){case`translate`:n.addTranslate(e.shape,e.x,e.y,e.z);break;case`rotate`:n.addRotate(e.shape,e.angle*Math.PI/180,...e.axis,...e.center);break;case`scale`:n.addScale(e.shape,...e.center,e.factor);break;case`mirror`:n.addMirror(e.shape,...e.origin,...e.normal);break}let e=n.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{n.delete()}}return t.map(t=>{switch(t.type){case`translate`:return Fc(e,t.shape,t.x,t.y,t.z);case`rotate`:return Ic(e,t.shape,t.angle,[...t.axis],[...t.center]);case`scale`:return Rc(e,t.shape,[...t.center],t.factor);case`mirror`:return Lc(e,t.shape,[...t.origin],[...t.normal])}})}finally{n()}}function Nc(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),i=r.ModifiedShape(t);return r.delete(),i}function Pc(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!1,!1);try{return r.ModifiedShape(t)}finally{r.delete()}}function Fc(e,t,n,r,i){let a=new e.gp_Trsf_1,o=new e.gp_Vec_4(n,r,i);a.SetTranslation_1(o);let s=Nc(e,t,a);return a.delete(),o.delete(),s}function Ic(e,t,n,r=[0,0,1],i=[0,0,0]){let a=new e.gp_Trsf_1,o=new e.gp_Pnt_3(...i),s=new e.gp_Dir_5(...r),c=new e.gp_Ax1_2(o,s);a.SetRotation_1(c,n*Math.PI/180);let l=Nc(e,t,a);return a.delete(),c.delete(),o.delete(),s.delete(),l}function Lc(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n),o=new e.gp_Dir_5(...r),s=new e.gp_Ax2_4(a,o);i.SetMirror_3(s);let c=Nc(e,t,i);return i.delete(),s.delete(),a.delete(),o.delete(),c}function Rc(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n);i.SetScale(a,r);let o=Nc(e,t,i);return i.delete(),a.delete(),o}function zc(e,t,n,r,i){if(i){let i=new e.gp_Trsf_1;i.SetValues(n[0],n[1],n[2],r[0],n[3],n[4],n[5],r[1],n[6],n[7],n[8],r[2]);let a=new e.BRepBuilderAPI_Transform_2(t,i,!0,!1),o=a.ModifiedShape(t);return a.delete(),i.delete(),o}let a=new e.gp_GTrsf_1;for(let e=0;e<3;e++)for(let t=0;t<3;t++)a.SetValue(e+1,t+1,n[e*3+t]);let o=new e.gp_XYZ_2(r[0],r[1],r[2]);a.SetTranslationPart(o),o.delete();let s=new e.BRepBuilderAPI_GTransform_2(t,a,!0),c=s.ModifiedShape(t);return s.delete(),a.delete(),c}function Bc(e,t){let n=new e.ShapeUpgrade_UnifySameDomain_2(t,!0,!0,!1);n.Build();let r=n.Shape();return n.delete(),r}function Vc(e){return{transform:(t,n)=>Nc(e,t,n),locate:(t,n)=>Pc(e,t,n),translate:(t,n,r,i)=>Fc(e,t,n,r,i),rotate:(t,n,r,i)=>Ic(e,t,n,r,i),mirror:(t,n,r)=>Lc(e,t,n,r),scale:(t,n,r)=>Rc(e,t,n,r),transformBatch:t=>Mc(e,t),generalTransform:(t,n,r,i)=>zc(e,t,n,r,i),simplify:t=>Bc(e,t)}}function Hc(e,t,n){if(n===0)return new Float32Array;let r=t/4;return e.slice(r,r+n)}function Uc(e,t,n){let r=io(`mesh`);try{let r=e.MeshExtractor.extract(t,n.tolerance,n.angularTolerance,!!n.skipNormals,!!n.includeUVs),i=r.getVerticesSize(),a=r.getNormalsSize(),o=r.getTrianglesSize(),s=r.getFaceGroupsSize(),c=r.getUvsSize(),l=Hc(e.HEAPF32,r.getVerticesPtr(),i),u=n.skipNormals||a===0?new Float32Array:Hc(e.HEAPF32,r.getNormalsPtr(),a),d=r.getTrianglesPtr()/4,f=e.HEAPU32.slice(d,d+o),p=c>0?Hc(e.HEAPF32,r.getUvsPtr(),c):new Float32Array,m=[];if(s>0){let t=r.getFaceGroupsPtr()/4,n=e.HEAP32.slice(t,t+s);for(let e=0;e<n.length;e+=3)m.push({start:n[e],count:n[e+1],faceHash:n[e+2]})}return r.delete(),{vertices:l,normals:u,triangles:f,uvs:p,faceGroups:m}}finally{r()}}function Wc(e,t,n,r){let i=io(`edgeMesh`);try{let i=e.EdgeMeshExtractor.extract(t,n,r),a=i.getLinesSize(),o=i.getEdgeGroupsSize(),s=Hc(e.HEAPF32,i.getLinesPtr(),a),c=[];if(o>0){let t=i.getEdgeGroupsPtr()/4,n=e.HEAP32.slice(t,t+o);for(let e=0;e<n.length;e+=3)c.push({start:n[e],count:n[e+1],edgeHash:n[e+2]})}return i.delete(),{lines:s,edgeGroups:c}}finally{i()}}function Gc(e){return{mesh:(t,n)=>Uc(e,t,n),meshEdges:(t,n,r)=>Wc(e,t,n,r)}}var Kc=0;function qc(e,t){return`${e}_${++Kc}.${t}`}function Jc(e,t){let n=e.StepStreamIO;if(typeof n?.exportSTEP==`function`&&t.length===1)return n.exportSTEP(t[0],5);let r=new e.STEPControl_Writer_1;e.Interface_Static.SetIVal(`write.step.schema`,5),r.Model(!0).delete();let i=new e.Message_ProgressRange_1;for(let n of t)r.Transfer_1(n,e.STEPControl_StepModelType.STEPControl_AsIs,!0,i);let a=qc(`_export`,`step`),o=r.Write(a);if(r.delete(),i.delete(),o===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+a);return e.FS.unlink(`/`+a),new TextDecoder().decode(t)}throw Error(`STEP export failed: writer did not complete successfully`)}function Yc(e,t,n=!1){let r=qc(`_export`,`stl`);if(e.StlAPI.Write(t,r,!n)){let t=e.FS.readFile(`/`+r);return e.FS.unlink(`/`+r),n?t.buffer:new TextDecoder().decode(t)}throw Error(`STL export failed: StlAPI.Write returned false`)}function Xc(e,t){let n=new e.IGESControl_Writer_1;for(let e of t)n.AddShape(e);n.ComputeModel();let r=qc(`_export`,`iges`),i=n.Write_2(r);if(n.delete(),i){let t=e.FS.readFile(`/`+r);return e.FS.unlink(`/`+r),new TextDecoder().decode(t)}throw Error(`IGES export failed: writer did not complete successfully`)}function Zc(e,t){let n=typeof t==`string`?t:new TextDecoder().decode(new Uint8Array(t)),r=e.StepStreamIO;if(typeof r?.importSTEP==`function`){let e=r.importSTEP(n);if(e.IsNull())throw Error(`Failed to import STEP file: stream reader could not parse the input data`);return[e]}let i=qc(`_import`,`step`),a=new TextEncoder().encode(n);e.FS.writeFile(`/`+i,a);let o=new e.STEPControl_Reader_1;if(o.ReadFile(i)){e.FS.unlink(`/`+i);let t=new e.Message_ProgressRange_1;o.TransferRoots(t),t.delete();let n=o.OneShape();return o.delete(),[n]}throw e.FS.unlink(`/`+i),o.delete(),Error(`Failed to import STEP file: reader could not parse the input data`)}function Qc(e,t){let n=qc(`_import`,`stl`),r=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);e.FS.writeFile(`/`+n,r);let i=new e.StlAPI_Reader,a=new e.TopoDS_Shape;if(i.Read_1(a,`/`+n)){e.FS.unlink(`/`+n);let t=new e.ShapeUpgrade_UnifySameDomain_2(a,!0,!0,!1);t.Build();let r=t.Shape(),o=new e.BRepBuilderAPI_MakeSolid_1;o.Add(e.TopoDS_Cast.Shell(r));let s=o.Solid();return a.delete(),t.delete(),o.delete(),i.delete(),s}throw e.FS.unlink(`/`+n),a.delete(),i.delete(),Error(`Failed to import STL file: reader could not parse the input data`)}function $c(e,t){let n=qc(`_import`,`iges`),r=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);e.FS.writeFile(`/`+n,r);let i=new e.IGESControl_Reader_1;if(i.ReadFile(n)===e.IFSelect_ReturnStatus.IFSelect_RetDone){e.FS.unlink(`/`+n);let t=new e.Message_ProgressRange_1;i.TransferRoots(t),t.delete();let r=i.OneShape();return i.delete(),[r]}throw e.FS.unlink(`/`+n),i.delete(),Error(`Failed to import IGES file: reader could not parse the input data`)}function el(e){return{exportSTEP:t=>Jc(e,t),exportSTL:(t,n)=>Yc(e,t,n),importSTEP:t=>Zc(e,t),importSTL:t=>Qc(e,t),exportIGES:t=>Xc(e,t),importIGES:t=>$c(e,t)}}function tl(e,t){let n=e.BRep_Tool.Pnt(t),r=[n.X(),n.Y(),n.Z()];return n.delete(),r}function nl(e){let t=e.GeomAbs_SurfaceType;return new Map([[t.GeomAbs_Plane,`plane`],[t.GeomAbs_Cylinder,`cylinder`],[t.GeomAbs_Cone,`cone`],[t.GeomAbs_Sphere,`sphere`],[t.GeomAbs_Torus,`torus`],[t.GeomAbs_BezierSurface,`bezier`],[t.GeomAbs_BSplineSurface,`bspline`],[t.GeomAbs_SurfaceOfRevolution,`revolution`],[t.GeomAbs_SurfaceOfExtrusion,`extrusion`],[t.GeomAbs_OffsetSurface,`offset`],[t.GeomAbs_OtherSurface,`other`]])}var rl=new WeakMap;function il(e,t){let n=rl.get(e);n||(n=nl(e),rl.set(e,n));let r=new e.BRepAdaptor_Surface_2(t,!1),i=r.GetType();return r.delete(),n.get(i)??`other`}function al(e,t){let n=e.BRepTools.UVBounds_1(t);return{uMin:n.UMin,uMax:n.UMax,vMin:n.VMin,vMax:n.VMax}}function ol(e,t){return e.BRepTools.OuterWire(t)}function sl(e,t,n,r){let i=new e.BRepGProp_Face_2(t,!1),a=new e.gp_Pnt_1,o=new e.gp_Vec_1;i.Normal(n,r,a,o);let s=[o.X(),o.Y(),o.Z()];return i.delete(),a.delete(),o.delete(),s}function cl(e,t,n,r){let i=new e.BRepAdaptor_Surface_2(t,!1),a=new e.gp_Pnt_1;i.D0(n,r,a);let o=[a.X(),a.Y(),a.Z()];return i.delete(),a.delete(),o}function ll(e,t,n){let r=e.BRep_Tool.Surface_2(t),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.GeomAPI_ProjectPointOnSurf_2(i,r,e.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad),o=null;if(a.NbPoints()>0){let e=a.LowerDistanceParameters();o=[e.U,e.V]}return a.delete(),i.delete(),o}function ul(e,t,n){let r=e.BRep_Tool.Surface_2(t),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.GeomAPI_ProjectPointOnSurf_2(i,r,e.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad),o;if(a.NbPoints()>0){let e=a.NearestPoint();o=[e.X(),e.Y(),e.Z()],e.delete()}else o=n;return a.delete(),i.delete(),o}function dl(e,t,n){let r=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),i=new e.gp_Pnt_1,a=new e.gp_Vec_1;r.D1(n,i,a);let o={point:[i.X(),i.Y(),i.Z()],tangent:[a.X(),a.Y(),a.Z()]};return r.delete(),i.delete(),a.delete(),o}function fl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=[n.FirstParameter(),n.LastParameter()];return n.delete(),r}function pl(e,t,n){let r=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),i=r.Value(n),a=[i.X(),i.Y(),i.Z()];return i.delete(),r.delete(),a}function ml(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.IsClosed();return n.delete(),r}function hl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.IsPeriodic();return n.delete(),r}function gl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.Period();return n.delete(),r}function _l(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.GetType();return n.delete(),{0:`LINE`,1:`CIRCLE`,2:`ELLIPSE`,3:`HYPERBOLA`,4:`PARABOLA`,5:`BEZIER_CURVE`,6:`BSPLINE_CURVE`,7:`OFFSET_CURVE`,8:`OTHER_CURVE`}[typeof r==`number`?r:Number(r?.value??r)]??`OTHER_CURVE`}function vl(e,t){let n=t.Orientation_1(),r=e.TopAbs_Orientation;return n===r.TopAbs_FORWARD?`forward`:n===r.TopAbs_REVERSED?`reversed`:n===r.TopAbs_INTERNAL?`internal`:`external`}function yl(e,t,n){switch(n??bl(e,t)){case`vertex`:return e.TopoDS_Cast.Vertex(t);case`edge`:return e.TopoDS_Cast.Edge(t);case`wire`:return e.TopoDS_Cast.Wire(t);case`face`:return e.TopoDS_Cast.Face(t);case`shell`:return e.TopoDS_Cast.Shell(t);case`solid`:return e.TopoDS_Cast.Solid(t);case`compsolid`:return e.TopoDS_Cast.CompSolid(t);default:return e.TopoDS_Cast.Compound(t)}}function bl(e,t){let n=t.ShapeType(),r=e.TopAbs_ShapeEnum;return n===r.TopAbs_VERTEX?`vertex`:n===r.TopAbs_EDGE?`edge`:n===r.TopAbs_WIRE?`wire`:n===r.TopAbs_FACE?`face`:n===r.TopAbs_SHELL?`shell`:n===r.TopAbs_SOLID?`solid`:n===r.TopAbs_COMPSOLID?`compsolid`:`compound`}function xl(e,t,n){return e.shapeHashCode(t,n)}function Sl(e,t){return t.IsNull()}function Cl(e,t){return t.Reversed()}function wl(e,t){let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE),r=new e.TopLoc_Location_1,i=!1;for(;n.More();){let t=e.TopoDS_Cast.Face(n.Current());if(!e.BRep_Tool_Triangulation(t,r,0).IsNull()){i=!0;break}n.Next()}return n.delete(),r.delete(),i}function Tl(e,t,n,r){new e.BRepMesh_IncrementalMeshWrapper(t,n,!1,r,!1).delete()}function El(e,t){let n=new e.BRepAdaptor_Curve_2(t);try{let e=n.Bezier().get(),t=e.NbPoles();if(t<2)return null;let r=e.Pole(t-1),i=[r.X(),r.Y(),r.Z()];return r.delete(),i}catch{return null}finally{n.delete()}}function Dl(e,t){return t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t)}function Ol(e,t){let n=t.get();if(typeof n.Cylinder!=`function`)return null;let r=n.Cylinder(),i={radius:r.Radius(),isDirect:r.Direct()};return r.delete(),i}function kl(e,t){let n=null;try{if(t===7)return e.AxeOfRevolution();if(t===1)n=e.Cylinder();else if(t===2)n=e.Cone();else if(t===4)n=e.Torus();else return null;let r=n.Axis();return n.delete(),r}catch{return n?.delete?.(),null}}function Al(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let e=n.GetType(),t=kl(n,typeof e==`number`?e:Number(e?.value??e));if(!t)return null;let r=null,i=null;try{return r=t.Location(),i=t.Direction(),{origin:[r.X(),r.Y(),r.Z()],direction:[i.X(),i.Y(),i.Z()]}}finally{r?.delete?.(),i?.delete?.(),t.delete()}}finally{n.delete()}}function jl(e,t){return t.get().UReversed()}function Ml(e){return{vertexPosition:t=>tl(e,t),surfaceType:t=>il(e,t),uvBounds:t=>al(e,t),outerWire:t=>ol(e,t),surfaceNormal:(t,n,r)=>sl(e,t,n,r),pointOnSurface:(t,n,r)=>cl(e,t,n,r),uvFromPoint:(t,n)=>ll(e,t,n),projectPointOnFace:(t,n)=>ul(e,t,n),curveTangent:(t,n)=>dl(e,t,n),curveParameters:t=>fl(e,t),shapeOrientation:t=>vl(e,t),downcast:(t,n)=>yl(e,t,n),copyShape:t=>yl(e,t),hashCode:(t,n)=>xl(e,t,n),isNull:t=>Sl(e,t),hasTriangulation:t=>wl(e,t),meshShape:(t,n,r)=>{Tl(e,t,n,r)},getBezierPenultimatePole:t=>El(e,t),createCurveAdaptor:t=>Dl(e,t),reverseShape:t=>Cl(e,t),curvePointAtParam:(t,n)=>pl(e,t,n),curveIsClosed:t=>ml(e,t),curveIsPeriodic:t=>hl(e,t),curvePeriod:t=>gl(e,t),curveType:t=>_l(e,t),getSurfaceCylinderData:t=>Ol(e,t),getSurfaceAxis:t=>Al(e,t),reverseSurfaceU:t=>jl(e,t)}}function Nl(e,t){let n=new e.BRepAdaptor_Curve_2(t);try{let t=n.GetType(),r=typeof t==`number`?t:Number(t?.value??t),i=e.GeomAbs_CurveType,a=typeof i.GeomAbs_BSplineCurve==`number`?i.GeomAbs_BSplineCurve:Number(i.GeomAbs_BSplineCurve?.value??i.GeomAbs_BSplineCurve),o=typeof i.GeomAbs_BezierCurve==`number`?i.GeomAbs_BezierCurve:Number(i.GeomAbs_BezierCurve?.value??i.GeomAbs_BezierCurve);if(r!==a&&r!==o)return null;let s=n.BSpline(),c=s.get(),l=c.Degree(),u=c.NbPoles(),d=c.NbKnots(),f=c.IsPeriodic(),p=c.IsRational(),m=[];for(let e=1;e<=u;e++){let t=c.Pole(e);m.push([t.X(),t.Y(),t.Z()]),t.delete()}let h=[];for(let e=1;e<=u;e++)h.push(c.Weight(e));let g=[],_=[];for(let e=1;e<=d;e++)g.push(c.Knot(e)),_.push(c.Multiplicity(e));let v={degree:l,poles:m,weights:h,knots:g,multiplicities:_,isPeriodic:f,isRational:p};return s.delete(),v}catch{return null}finally{n.delete()}}function Pl(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let t=n.GetType(),r=typeof t==`number`?t:Number(t?.value??t),i=e.GeomAbs_SurfaceType;if(r!==(typeof i.GeomAbs_BSplineSurface==`number`?i.GeomAbs_BSplineSurface:Number(i.GeomAbs_BSplineSurface?.value??i.GeomAbs_BSplineSurface)))return null;let a=n.BSpline(),o=a.get(),s=o.UDegree(),c=o.VDegree(),l=o.NbUPoles(),u=o.NbVPoles(),d=o.IsUPeriodic(),f=o.IsVPeriodic(),p=o.IsURational()||o.IsVRational(),m=[],h=[];for(let e=1;e<=l;e++){let t=[],n=[];for(let r=1;r<=u;r++){let i=o.Pole(e,r);t.push([i.X(),i.Y(),i.Z()]),i.delete(),n.push(o.Weight(e,r))}m.push(t),h.push(n)}let g=o.NbUKnots(),_=[],v=[];for(let e=1;e<=g;e++)_.push(o.UKnot(e)),v.push(o.UMultiplicity(e));let y=o.NbVKnots(),b=[],x=[];for(let e=1;e<=y;e++)b.push(o.VKnot(e)),x.push(o.VMultiplicity(e));let S={degreeU:s,degreeV:c,nbPolesU:l,nbPolesV:u,poles:m,weights:h,knotsU:_,knotsV:b,multiplicitiesU:v,multiplicitiesV:x,isPeriodicU:d,isPeriodicV:f,isRational:p};return a.delete(),S}catch{return null}finally{n.delete()}}function Fl(e){return{getNurbsCurveData:t=>Nl(e,t),getNurbsSurfaceData:t=>Pl(e,t)}}function Il(e,t,n={}){let{tolerance:r=1e-8}=n,i=new e.TColgp_Array1OfPnt_2(1,t.length),a=new e.gp_Pnt_1,o=1;for(let e of t)a.SetCoord_2(e[0],e[1],e[2]),i.SetValue_1(o++,a);a.delete();let s=new e.GeomAPI_PointsToBSpline_2(i,3,8,e.GeomAbs_Shape.GeomAbs_C2,r);if(i.delete(),!s.IsDone())throw s.delete(),Error(`Interpolation failed — GeomAPI_PointsToBSpline did not converge`);let c=s.Curve(),l=new e.Handle_Geom_Curve_2(c.get()),u=new e.BRepBuilderAPI_MakeEdge_24(l),d=u.Edge();return u.delete(),s.delete(),d}function Ll(e,t,n={}){let{tolerance:r=.001,degMin:i=1,degMax:a=6,smoothing:o=null}=n,s=new e.TColgp_Array1OfPnt_2(1,t.length),c=new e.gp_Pnt_1,l=1;for(let e of t)c.SetCoord_2(e[0],e[1],e[2]),s.SetValue_1(l++,c);c.delete();let u;if(u=o?new e.GeomAPI_PointsToBSpline_5(s,o[0],o[1],o[2],a,e.GeomAbs_Shape.GeomAbs_C2,r):new e.GeomAPI_PointsToBSpline_2(s,i,a,e.GeomAbs_Shape.GeomAbs_C2,r),s.delete(),!u.IsDone())throw u.delete(),Error(`Approximation failed — GeomAPI_PointsToBSpline did not converge`);let d=u.Curve(),f=new e.Handle_Geom_Curve_2(d.get()),p=new e.BRepBuilderAPI_MakeEdge_24(f),m=p.Edge();return p.delete(),u.delete(),m}function Rl(e){return{interpolatePoints:(t,n)=>Il(e,t,n??{}),approximatePoints:(t,n)=>Ll(e,t,n??{})}}function zl(e,t){let n=new e.ShapeFix_Solid_2(t),r=new e.Message_ProgressRange_1;n.Perform(r),r.delete();let i=n.Solid();return n.delete(),i.IsNull()?null:i}function Bl(e,t){let n=new e.ShapeFix_Face_2(t);n.Perform();let r=n.Face();return n.delete(),r}function Vl(e,t,n){let r;n?r=new e.ShapeFix_Wire_2(t,n,1e-6):(r=new e.ShapeFix_Wire_1,r.Load_1(t)),r.Perform();let i=r.Wire();return r.delete(),i}function Hl(e){return{healSolid:t=>zl(e,t),healFace:t=>Bl(e,t),healWire:(t,n)=>Vl(e,t,n)}}var Ul={modified:new Map,generated:new Map,deleted:new Set};function Wl(e,t,n){let r=new Map;if(n===0)return r;let i=e.slice(t/4,t/4+n),a=0;for(;a+1<i.length;){let e=i[a++],t=i[a++];if(t<0||a+t>i.length)break;let n=[];for(let e=0;e<t;e++)n.push(i[a++]);r.set(e,n)}return r}function Gl(e,t){try{let n=Wl(e.HEAP32,t.getModifiedPtr(),t.getModifiedSize()),r=Wl(e.HEAP32,t.getGeneratedPtr(),t.getGeneratedSize()),i=new Set,a=t.getDeletedSize();if(a>0){let n=t.getDeletedPtr()/4,r=e.HEAP32.slice(n,n+a);for(let e=0;e<r.length;e++)i.add(r[e])}return{modified:n,generated:r,deleted:i}}finally{t.delete()}}function Kl(e,t,n){let r=[];if(t.Size()===0)return r;if(e.TopTools_ListIteratorOfListOfShape){let i=new e.TopTools_ListIteratorOfListOfShape(t);for(;i.More();)r.push(e.shapeHashCode(i.Value(),n)),i.Next();i.delete()}else{let i=new e.TopTools_ListOfShape_3(t);for(;i.Size()>0;)r.push(e.shapeHashCode(i.First_1(),n)),i.RemoveFirst();i.delete()}return r}function ql(e,t,n,r,i){if(r.length===0)return Ul;let a=Array.isArray(n)?n:[n];if(e.EvolutionExtractor){let n,r,o;if(a.length===1)n=a[0];else{r=new e.TopoDS_Builder,o=new e.TopoDS_Compound,r.MakeCompound(o);for(let e of a)r.Add(o,e);n=o}let s;try{s=e.EvolutionExtractor.extract(t,n,i)}catch{}finally{r?.delete(),o?.delete()}if(s!==void 0)return Gl(e,s)}let o=new Map,s=new Map,c=new Set,l=new Set(r),u=new Map;for(let t of a){let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let t=n.Current(),r=e.shapeHashCode(t,i);l.has(r)&&u.set(r,t),n.Next()}n.delete()}for(let[n,r]of u){if(t.IsDeleted?.(r)){c.add(n);continue}let a=t.Modified(r);a.Size()>0&&o.set(n,Kl(e,a,i));let l=t.Generated(r);l.Size()>0&&s.set(n,Kl(e,l,i))}return{modified:o,generated:s,deleted:c}}function Jl(e,t,n,r,i){let a=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),o=a.Shape(),s=r.length===0?Ul:ql(e,a,t,r,i);return a.delete(),{shape:o,evolution:s}}function Yl(e,t,n,r,i,a,o){return a&&t.SimplifyResult(!0,!0,.001),{shape:t.Shape(),evolution:ql(e,t,n,r,i),diagnostics:o??{hasErrors:!1,hasWarnings:!1,messages:[]}}}function Xl(e,t,n,r,i){return{shape:t.Shape(),evolution:ql(e,t,n,r,i)}}function Zl(e,t,n,r,i,a,o){let s=new e.gp_Trsf_1,c=new e.gp_Vec_4(n,r,i);s.SetTranslation_1(c),c.delete();let l=Jl(e,t,s,a,o);return s.delete(),l}function Ql(e,t,n,r,i,a=[0,0,1],o=[0,0,0]){let s=new e.gp_Trsf_1,c=new e.gp_Pnt_3(o[0],o[1],o[2]),l=new e.gp_Dir_5(a[0],a[1],a[2]),u=new e.gp_Ax1_2(c,l);s.SetRotation_1(u,n),c.delete(),l.delete(),u.delete();let d=Jl(e,t,s,r,i);return s.delete(),d}function $l(e,t,n,r,i,a){let o=new e.gp_Trsf_1,s=new e.gp_Pnt_3(n[0],n[1],n[2]),c=new e.gp_Dir_5(r[0],r[1],r[2]),l=new e.gp_Ax2_4(s,c);o.SetMirror_3(l),s.delete(),c.delete(),l.delete();let u=Jl(e,t,o,i,a);return o.delete(),u}function eu(e,t,n,r,i,a){let o=new e.gp_Trsf_1,s=new e.gp_Pnt_3(n[0],n[1],n[2]);o.SetScale(s,r),s.delete();let c=Jl(e,t,o,i,a);return o.delete(),c}function tu(e,t,n,r,i,a,o){let s=new e.gp_Trsf_1;s.SetValues(n[0],n[1],n[2],r[0],n[3],n[4],n[5],r[1],n[6],n[7],n[8],r[2]);let c=Jl(e,t,s,a,o);return s.delete(),c}function nu(e){return{hasErrors:e.HasErrors(),hasWarnings:e.HasWarnings(),messages:[]}}function ru(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Fuse_3(t,n,o);Uo(e,s,a.optimisation),Wo(s,a.fuzzyValue),s.Build(o);let c=nu(s),l=Yl(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function iu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Cut_3(t,n,o);Uo(e,s,a.optimisation),Wo(s,a.fuzzyValue),s.Build(o);let c=nu(s),l=Yl(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function au(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Common_3(t,n,o);Uo(e,s,a.optimisation),Wo(s,a.fuzzyValue),s.Build(o);let c=nu(s),l=Yl(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function ou(e,t,n,r,i,a){let o=new e.BRepFilletAPI_MakeFillet(t,e.ChFi3d_FilletShape.ChFi3d_Rational);for(let t of n){let n=typeof r==`function`?r(t):r;Array.isArray(n)?o.Add_3(n[0],n[1],e.TopoDS_Cast.Edge(t)):o.Add_2(n,e.TopoDS_Cast.Edge(t))}let s=new e.Message_ProgressRange_1;o.Build(s),s.delete();let c=Xl(e,o,t,i,a);return o.delete(),c}function su(e,t,n,r,i,a){let o=new e.BRepFilletAPI_MakeChamfer(t),s=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE),c=new Map;for(;s.More();){let t=e.TopoDS_Cast.Face(s.Current()),n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();)c.set(e.shapeHashCode(n.Current(),a),t),n.Next();n.delete(),s.Next()}s.delete();for(let t of n){let n=typeof r==`function`?r(t):r,i=c.get(e.shapeHashCode(t,a));if(Array.isArray(n)&&i)o.Add_3(n[0],n[1],e.TopoDS_Cast.Edge(t),i);else{let r=Array.isArray(n)?n[0]:n;o.Add_2(r,e.TopoDS_Cast.Edge(t))}}let l=new e.Message_ProgressRange_1;o.Build(l),l.delete();let u=Xl(e,o,t,i,a);return o.delete(),u}function cu(e,t,n,r,i,a,o=.001){let s=new e.BRepOffsetAPI_MakeThickSolid,c=new e.TopTools_ListOfShape_1;for(let e of n)c.Append_1(e);let l=new e.Message_ProgressRange_1;s.MakeThickSolidByJoin(t,c,-r,o,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,l),l.delete(),c.delete();let u=Xl(e,s,t,i,a);return s.delete(),u}function lu(e,t,n,r,i){let a=new e.BRepOffsetAPI_MakeThickSolid;a.MakeThickSolidBySimple(t,n);let o=new e.Message_ProgressRange_1;a.Build(o),o.delete();let s=Xl(e,a,t,r,i);return a.delete(),s}function uu(e,t,n,r,i,a=1e-6){let o=new e.BRepOffsetAPI_MakeOffsetShape,s=new e.Message_ProgressRange_1;o.PerformByJoin(t,n,a,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,s),s.delete();let c=Xl(e,o,t,r,i);return o.delete(),c}function du(e,t,n,r,i,a,o,s){if(!e.BRepOffsetAPI_DraftAngle)throw Error(`BRepOffsetAPI_DraftAngle not available in this WASM build. Rebuild brepjs-opencascade with the updated build config.`);let[c,l,u]=r,[d,f,p]=i,m=new e.gp_Dir_5(c,l,u),h=new e.gp_Pnt_3(d,f,p),g=new e.gp_Pln_3(h,m),_=new e.BRepOffsetAPI_DraftAngle_2(t);try{for(let t of n){let n=(typeof a==`function`?a(t):a)*Math.PI/180;_.Add(e.TopoDS_Cast.Face(t),m,n,g,!0)}let r=new e.Message_ProgressRange_1;return _.Build(r),r.delete(),Xl(e,_,t,o,s)}finally{_.delete(),g.delete(),h.delete(),m.delete()}}function fu(e){return{translateWithHistory:(t,n,r,i,a,o)=>Zl(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Ql(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>$l(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>eu(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>tu(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>ru(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>iu(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>au(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>ou(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>su(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>cu(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>lu(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>uu(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>du(e,t,n,r,i,a,o,s)}}function pu(e,t,n,r){let i=new e.gp_GTrsf_1;for(let e=0;e<3;e++)for(let t=0;t<3;t++)i.SetValue(e+1,t+1,n[e*3+t]);let a=new e.gp_XYZ_2(r[0],r[1],r[2]);i.SetTranslationPart(a),a.delete();let o=new e.BRepBuilderAPI_GTransform_2(t,i,!0),s=o.Shape();return o.delete(),i.delete(),s}function mu(e,t){let n=new e.gp_Trsf_1;for(let r of t){let t=new e.gp_Trsf_1;if(r.type===`translate`){let n=new e.gp_Vec_4(r.x,r.y,r.z);t.SetTranslation_1(n),n.delete()}else{let n=r.axis??[0,0,1],i=r.center??[0,0,0],a=new e.gp_Pnt_3(i[0],i[1],i[2]),o=new e.gp_Dir_5(n[0],n[1],n[2]),s=new e.gp_Ax1_2(a,o);t.SetRotation_1(s,r.angle*Math.PI/180),s.delete(),o.delete(),a.delete()}n.PreMultiply(t),t.delete()}return{handle:n,dispose:()=>n.delete()}}function hu(e,t,n,r,i){return Jl(e,t,n,r,i)}function gu(e,t){if(!t)return;let n=e.BRepBuilderAPI_TransitionMode;switch(t){case`transformed`:return n.BRepBuilderAPI_Transformed;case`round`:return n.BRepBuilderAPI_RoundCorner;case`right`:return n.BRepBuilderAPI_RightCorner}}function _u(e,t,n,r={}){let i=new e.BRepOffsetAPI_MakePipeShell(n);typeof i.SetIsBuildHistory==`function`&&i.SetIsBuildHistory(!1),r.tolerance!==void 0&&i.SetTolerance(r.tolerance,r.boundTolerance??r.tolerance,r.angularTolerance??1e-7),r.maxDegree!==void 0&&i.SetMaxDegree(r.maxDegree),r.maxSegments!==void 0&&i.SetMaxSegments(r.maxSegments);let a=gu(e,r.transitionMode);a!==void 0&&i.SetTransitionMode(a),r.support?i.SetMode_4(r.support):r.frenet&&i.SetMode_1(!0),r.auxiliary&&i.SetMode_5(r.auxiliary,!1,e.BRepFill_TypeOfContact.BRepFill_NoContact);let o=!!r.contact,s=!!r.correction;r.law?i.SetLaw_1(t,r.law,o,s):i.Add_1(t,o,s);let c=new e.Message_ProgressRange_1;if(i.Build(c),c.delete(),!i.IsDone())throw i.delete(),Error(`Sweep pipe shell build failed (IsDone=false)`);if(r.shellMode){let e=i.Shape(),t=i.FirstShape(),n=i.LastShape();return i.delete(),{shape:e,firstShape:t,lastShape:n}}i.MakeSolid();let l=i.Shape();return i.delete(),l}function vu(e,t,n={}){let r=n.solid??!0,i=n.ruled??!1,a=new e.BRepOffsetAPI_ThruSections(r,i,n.tolerance??1e-6);n.startVertex&&a.AddVertex(n.startVertex);for(let e of t)a.AddWire(e);n.endVertex&&a.AddVertex(n.endVertex);let o=new e.Message_ProgressRange_1;a.Build(o),o.delete();let s=a.Shape();return a.delete(),s}function yu(e,t,n,r){if(t===`linear`){let t=new e.Law_Linear;return t.Set(0,1,n,r),t}let i=new e.Law_S;return i.Set_1(0,1,n,r),i}function bu(e,t,n,r,i){let a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Dir_5(r[0],r[1],r[2]),s=new e.gp_Ax1_2(a,o),c=new e.BRepPrimAPI_MakeRevol_1(t,s,i,!1),l=c.Shape();return c.delete(),s.delete(),o.delete(),a.delete(),l}function xu(e,t,n,r,i){let a=[],o=new e.gp_Trsf_1;for(let s=0;s<i;s++){let i=n[0]*r*s,c=n[1]*r*s,l=n[2]*r*s,u=new e.gp_Vec_4(i,c,l);o.SetTranslation_1(u),u.delete();let d=new e.BRepBuilderAPI_Transform_2(t,o,!0,!1);a.push(d.Shape()),d.delete()}return o.delete(),a}function Su(e,t,n,r,i,a){let o=[],s=new e.gp_Pnt_3(n[0],n[1],n[2]),c=new e.gp_Dir_5(r[0],r[1],r[2]),l=new e.gp_Ax1_2(s,c),u=new e.gp_Trsf_1;for(let n=0;n<a;n++){let r=i*n*Math.PI/180;u.SetRotation_1(l,r);let a=new e.BRepBuilderAPI_Transform_2(t,u,!0,!1);o.push(a.Shape()),a.delete()}return u.delete(),l.delete(),c.delete(),s.delete(),o}function Cu(e,t,n,r){let i=n.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(n,!1):new e.BRepAdaptor_Curve_2(n),a=new e.gp_Pnt_1,o=new e.gp_Vec_1;try{i.D1(r,a,o);let n=new e.gp_Dir_2(o),s=new(e.gp_Ax3_5??e.gp_Ax3_4)(a,n),c=new e.gp_Trsf_1;c.SetTransformation_2(s),c.Invert();let l=new e.BRepBuilderAPI_Transform_2(t,c,!0,!1),u=l.Shape();return l.delete(),c.delete(),s.delete(),n.delete(),u}finally{o.delete(),a.delete(),i.delete()}}function wu(e,t){let n=new e.BRepOffsetAPI_MakeFilling(3,15,2,!1,1e-5,1e-4,.01,.1,8,9),r=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;r.More();){let t=e.TopoDS_Cast.Edge(r.Current());n.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,!0),r.Next()}r.delete();let i=new e.Message_ProgressRange_1;n.Build(i),i.delete();let a=n.Shape();return n.delete(),a}function Tu(e,t,n){let r=new e.BRepBuilderAPI_MakeFace_2(t);for(let e of n)r.Add(e);let i=r.Face();r.delete();let a=new e.ShapeFix_Face_2(i);a.FixOrientation_1(),a.Perform();let o=a.Face();return a.delete(),o}function Eu(e,t){let n=e.BRepTools.OuterWire(t),r=e.BRep_Tool.Surface_2(t);try{let t=new e.BRepBuilderAPI_MakeFace_21(r,n,!0),i=t.Face();t.delete();let a=new e.ShapeFix_Face_2(i);a.FixOrientation_1(),a.Perform();let o=a.Face();return a.delete(),o}finally{r.delete(),n.delete()}}function Du(e,t,n){let r=t,i=!1;try{t.ShapeType!==void 0&&(r=e.BRep_Tool.Surface_2(t),i=!0)}catch{}let a=new e.BRepBuilderAPI_MakeFace_21(r,n,!0),o=a.Face();return a.delete(),i&&r.delete(),o}function Ou(e,n,r,i){let a=new e.TColgp_Array2OfPnt_2(1,r,1,i);for(let o=0;o<r;o++)for(let r=0;r<i;r++){let s=t(n,o*i+r),c=new e.gp_Pnt_3(s[0],s[1],s[2]);a.SetValue_1(o+1,r+1,c),c.delete()}let o=new e.GeomAPI_PointsToBSplineSurface_2(a,3,8,e.GeomAbs_Shape.GeomAbs_C2,.001),s=o.Surface();a.delete();let c=new e.BRepBuilderAPI_MakeFace_8(s,1e-6),l=c.Face();return c.delete(),o.delete(),l}function ku(e,n,r,i){let a=new e.BRepBuilderAPI_Sewing(1e-6,!0,!0,!0,!1);for(let o=0;o<r-1;o++)for(let r=0;r<i-1;r++){let s=o*i+r,c=(o+1)*i+r,l=o*i+(r+1),u=(o+1)*i+(r+1),d=t(n,s),f=t(n,c),p=t(n,l),m=t(n,u),h=Au(e,d,f,p);a.Add(h);let g=Au(e,f,m,p);a.Add(g)}let o=new e.Message_ProgressRange_1;a.Perform(o),o.delete();let s=a.SewedShape();return a.delete(),s}function Au(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.BRepBuilderAPI_MakeEdge_3(i,a),c=new e.BRepBuilderAPI_MakeEdge_3(a,o),l=new e.BRepBuilderAPI_MakeEdge_3(o,i),u=new e.BRepBuilderAPI_MakeWire_4(s.Edge(),c.Edge(),l.Edge()),d=u.Wire(),f=new e.BRepBuilderAPI_MakeFace_15(d,!0),p=f.Face();return f.delete(),u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),a.delete(),i.delete(),p}function ju(e,t,n){let r=new e.BRepBuilderAPI_Sewing(n,!0,!0,!0,!1);for(let e of t)r.Add(e);let i=new e.Message_ProgressRange_1;r.Perform(i),i.delete();let a=r.SewedShape();r.delete();let o=new e.ShapeFix_Solid_1;try{let t=e.TopoDS_Cast.Shell(a);return o.SolidFromShell(t)}catch{return a}finally{o.delete()}}function Mu(e,t){let n=new e.ShapeFix_Shape_1(t),r=new e.Message_ProgressRange_1;n.Perform(r);let i=n.Shape();return r.delete(),n.delete(),i}function Nu(e,t){let n=new e.ShapeFix_Wire_1;n.Load_1(t),n.FixSelfIntersection();let r=n.Wire();return n.delete(),r}function Pu(){return{gaussian:0,mean:0,max:0,min:0,maxDirection:[1,0,0],minDirection:[0,1,0]}}function Fu(e,t,n,r,i,a){let o=e*n-t*t;if(Math.abs(o)<1e-15)return null;let s=(e*a-2*t*i+n*r)/(2*o),c=(r*a-i*i)/o,l=Math.sqrt(Math.max(0,s*s-c)),u=s+l,d=s-l,f=(n*i-t*a)/o,p=(e*i-t*r)/o,m=(n*r-t*i)/o,h,g;return Math.abs(f)>1e-15?(h=f,g=u-m):Math.abs(p)>1e-15?(h=u-(e*a-t*i)/o,g=p):(h=1,g=0),{mean:s,gaussian:c,k1:u,k2:d,du1:h,dv1:g}}function Iu(e,t,n,r){let i=new e.BRepAdaptor_Surface_2(t,!1),a=new e.gp_Pnt_1,o=new e.gp_Vec_1,s=new e.gp_Vec_1,c=new e.gp_Vec_1,l=new e.gp_Vec_1,u=new e.gp_Vec_1;i.D2(n,r,a,o,s,c,l,u);let d=o.Dot(o),f=o.Dot(s),p=s.Dot(s),m=o.Crossed(s),h=m.Magnitude(),g=Pu();if(h>=1e-15){m.Divide(h);let e=Fu(d,f,p,c.Dot(m),u.Dot(m),l.Dot(m));e&&(g={gaussian:e.gaussian,mean:e.mean,max:e.k1,min:e.k2,maxDirection:Lu(o,s,e.du1,e.dv1),minDirection:Lu(o,s,-e.dv1,e.du1)})}return a.delete(),o.delete(),s.delete(),c.delete(),l.delete(),u.delete(),m.delete(),i.delete(),g}function Lu(e,t,n,r){let i=n*e.X()+r*t.X(),a=n*e.Y()+r*t.Y(),o=n*e.Z()+r*t.Z(),s=Math.sqrt(i*i+a*a+o*o);return s<1e-15?[1,0,0]:[i/s,a/s,o/s]}function Ru(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.SurfaceProperties_2(t,n,1e-7,!0);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function zu(e,t){let n=new e.BRepExtrema_DistShapeShape_1;return n.LoadS1(t),{distanceTo(t){n.LoadS2(t);let r=new e.Message_ProgressRange_1;if(n.Perform(r),r.delete(),!n.IsDone())throw Error(`BRepExtrema_DistShapeShape failed`);let i=n.Value(),a=n.PointOnShape1(1),o=n.PointOnShape2(1),s={value:i,point1:[a.X(),a.Y(),a.Z()],point2:[o.X(),o.Y(),o.Z()]};return a.delete(),o.delete(),s},dispose(){n.delete()}}}function Bu(e,t,n,r,i){let a=new e.HLRBRep_Algo_1;a.Add_2(t,0);let o=new e.gp_Pnt_3(n[0],n[1],n[2]),s=new e.gp_Dir_5(r[0],r[1],r[2]),c;if(i){let t=new e.gp_Dir_5(i[0],i[1],i[2]);c=new e.gp_Ax2_2(o,s,t),t.delete()}else c=new e.gp_Ax2_4(o,s);let l=new e.HLRAlgo_Projector_2(c);a.Projector_1(l),a.Update(),a.Hide_1();let u=new e.Handle_HLRBRep_Algo_2(a),d=new e.HLRBRep_HLRToShape(u),f={visible:{outline:d.OutLineVCompound_1(),smooth:d.Rg1LineVCompound_1(),sharp:d.VCompound_1()},hidden:{outline:d.OutLineHCompound_1(),smooth:d.Rg1LineHCompound_1(),sharp:d.HCompound_1()}};for(let t of[f.visible,f.hidden])for(let n of[t.outline,t.smooth,t.sharp])n.IsNull()||e.BRepLib.BuildCurves3d_2(n);return d.delete(),u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),f}function Vu(e,t,n,r,i,a,o){let s=a*Math.PI/180,c=+!!o,l=new e.BRepFeat_MakeDPrism(t,n,r,s,c,!0);if(i!==null){let t=new e.Message_ProgressRange_1;l.Perform_1(i,t),t.delete()}else l.PerformThruAll();let u=l.Shape();return l.delete(),u}function Hu(e,t){let n=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),r=new e.TDocStd_Document(n);n.delete(),e.XCAFDoc_ShapeTool.SetAutoNaming(!1);let i=r.Main(),a=e.XCAFDoc_DocumentTool.ShapeTool(i).get(),o=e.XCAFDoc_DocumentTool.ColorTool(i).get();for(let n of t){let t=a.NewShape();a.SetShape(t,n.shape);let r=new e.TCollection_ExtendedString_2(n.name,!0);if(e.TDataStd_Name.Set_1(t,r),r.delete(),n.color){let[r,i,a,s]=n.color,c=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,s/255);o.SetColor_3(t,c,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),c.delete()}}return a.UpdateAssemblies(),r}function Uu(e,t,n={}){if(n.unit||n.modelUnit){new e.STEPCAFControl_Writer_1().delete();let t=(n.modelUnit??n.unit??`MM`).toUpperCase(),r=(n.unit??n.modelUnit??`MM`).toUpperCase();e.Interface_Static.SetCVal(`xstep.cascade.unit`,t),e.Interface_Static.SetCVal(`write.step.unit`,r)}let r=new e.XSControl_WorkSession,i=new e.Handle_XSControl_WorkSession_2(r),a=new e.STEPCAFControl_Writer_2(i,!1);a.SetColorMode(!0),a.SetLayerMode(!0),a.SetNameMode(!0),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,!0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,5);let o=new e.Handle_TDocStd_Document_2(t),s=new e.Message_ProgressRange_1;a.Transfer_1(o,e.STEPControl_StepModelType.STEPControl_AsIs,null,s),s.delete();let c=qc(`_xcaf_export`,`step`),l=a.Write(c),u=``;if(l===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+c);u=new TextDecoder().decode(t),e.FS.unlink(`/`+c)}return a.delete(),i.delete(),u}function Wu(e,t){new e.STEPCAFControl_Writer_1().delete();let n=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),r=new e.TDocStd_Document(n);n.delete();let i=r.Main(),a=e.XCAFDoc_DocumentTool.ShapeTool(i).get(),o=e.XCAFDoc_DocumentTool.ColorTool(i).get();e.XCAFDoc_ShapeTool.SetAutoNaming(!1);for(let n of t){let t=a.AddShape(n.shape,!1,!0);if(n.name){let r=new e.TCollection_ExtendedString_2(n.name,!0);e.TDataStd_Name.Set_1(t,r),r.delete()}if(n.color){let[r,i,a,s]=n.color,c=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,s/255);o.SetColor_3(t,c,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),c.delete()}}let s=new e.XSControl_WorkSession,c=new e.Handle_XSControl_WorkSession_2(s),l=new e.STEPCAFControl_Writer_2(c,!1),u=new e.Handle_TDocStd_Document_2(r),d=new e.Message_ProgressRange_1;l.Transfer_1(u,e.STEPControl_StepModelType.STEPControl_AsIs,null,d),d.delete();let f=qc(`_step_cfg_export`,`step`),p=l.Write(f),m=``;if(p===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+f);m=new TextDecoder().decode(t),e.FS.unlink(`/`+f)}return l.delete(),c.delete(),u.delete(),r.delete(),m}function Gu(e,t){let n=new e.STEPControl_Writer_1;n.Model(!0).delete();let r=new e.Message_ProgressRange_1;for(let i of t)n.Transfer(i.shape,e.STEPControl_StepModelType.STEPControl_AsIs,!0,r);let i=qc(`_step_cfg_export`,`step`),a=n.Write(i);if(n.delete(),r.delete(),a===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+i);return e.FS.unlink(`/`+i),new TextDecoder().decode(t)}throw Error(`STEP configured export failed: writer did not complete successfully`)}function Ku(e,t,n={}){let r=n.unit??`MM`,i=n.modelUnit??r,a=n.schema??5;return e.Interface_Static.SetCVal(`xstep.cascade.unit`,i),e.Interface_Static.SetCVal(`write.step.unit`,r),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,!0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,a),t.some(e=>e.name||e.color)?Wu(e,t):Gu(e,t)}function qu(e){return{composeTransform:t=>mu(e,t),applyComposedTransformWithHistory:(t,n,r,i)=>hu(e,t,n,r,i),sweepPipeShell:(t,n,r)=>_u(e,t,n,r??{}),loftAdvanced:(t,n)=>vu(e,t,n??{}),buildExtrusionLaw:(t,n,r)=>yu(e,t,n,r),revolveVec:(t,n,r,i)=>bu(e,t,n,r,i),positionOnCurve:(t,n,r)=>Cu(e,t,n,r),linearPattern:(t,n,r,i)=>xu(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>Su(e,t,n,r,i,a),makeNonPlanarFace:t=>wu(e,t),addHolesInFace:(t,n)=>Tu(e,t,n),removeHolesFromFace:t=>Eu(e,t),makeFaceOnSurface:(t,n)=>Du(e,t,n),bsplineSurface:(t,n,r)=>Ou(e,t,n,r),triangulatedSurface:(t,n,r)=>ku(e,t,n,r),sewAndSolidify:(t,n)=>ju(e,t,n),fixShape:t=>Mu(e,t),fixSelfIntersection:t=>Nu(e,t),surfaceCurvature:(t,n,r)=>Iu(e,t,n,r),surfaceCenterOfMass:t=>Ru(e,t),createDistanceQuery:t=>zu(e,t),projectEdges:(t,n,r,i)=>Bu(e,t,n,r,i),draftPrism:(t,n,r,i,a,o)=>Vu(e,t,n,r,i,a,o),generalTransformNonOrthogonal:(t,n,r)=>pu(e,t,n,r),createXCAFDocument:t=>Hu(e,t),writeXCAFToSTEP:(t,n)=>Uu(e,t,n??{}),exportSTEPConfigured:(t,n)=>Ku(e,t,n??{})}}var Ju=()=>{};function Yu(e){return e}function Xu(e){let t=Yu(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Zu(e){return e}function Qu(e,t){return{x:e,y:t}}function $u(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`occt: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function ed(e,t){return{x:e,y:t}}function td(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:Ju}}function nd(e){return e}function rd(e){return e}function id(e,t,n,r){return te(e,t,n,r)}function ad(e,t,n,r){return ne(e,t,n,r)}function od(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function sd(e,t,n,r,i,a,o,s,c){return{__bk2d:`trimmed`,basis:ae(e,t,n,r,o,s,c),tStart:i,tEnd:a}}function cd(e){return oe(e)}function ld(e,t){let n=e.length,r=Math.min(3,n-1),i=[],a=[];i.push(0),a.push(r+1);let o=n-r-1;for(let e=1;e<=o;e++)i.push(e/(o+1)),a.push(1);return i.push(1),a.push(r+1),{__bk2d:`bspline`,poles:[...e],knots:i,multiplicities:a,degree:r,isPeriodic:!1}}function ud(e,t){return S(Yu(e),t)}function dd(e,t){return{point:S(Yu(e),t),tangent:C(Yu(e),t)}}function fd(e){return w(Yu(e))}function pd(e){return ee(Xu(e))}function md(e,t,n){return{__bk2d:`trimmed`,basis:Yu(e),tStart:t,tEnd:n}}function hd(e){return JSON.parse(JSON.stringify(e))}function gd(e,t){let n=Yu(e),r=w(n),i=[];for(let e=0;e<=30;e++){let a=r.first+(r.last-r.first)*e/30,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l);u>1e-12?i.push([o-l/u*t,s+c/u*t]):i.push([o,s])}return ld(i)}function _d(e,t,n){return se(Yu(e),t,n)}function vd(e,t,n,r){return ce(Yu(e),t,n,r)}function yd(e,t,n,r){return le(Yu(e),t,n,r)}function bd(e,t,n){return ue(Yu(e),t,n)}function xd(e,t,n,r,i){return de(Yu(e),t,n,r,i)}function Sd(e,t,n,r,i,a){return Md(e,Td(t,n,r,i,a))}function Cd(e,t,n){return{m:e,tx:t,ty:n,delete:Ju}}function wd(){return Cd([1,0,0,0,1,0,0,0,1],0,0)}function Td(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return wd();let s=-i/o,c=r/o,l=a-1,u=[1+l*s*s,l*s*c,0,l*c*s,1+l*c*c,0,0,0,1];return Cd(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function Ed(e,t){return Cd([1,0,0,0,1,0,0,0,1],e,t)}function Dd(e,n,r,i,a,o,s){if(r===`axis`&&o!==void 0&&s!==void 0){let r=Math.sqrt(o*o+s*s),c=o/r,l=s/r,u=[2*c*c-1,2*c*l,0,2*c*l,2*l*l-1,0,0,0,1],d=i??e,f=a??n;return Cd(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return Cd([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function Od(e,t,n){let r=Math.cos(e),i=Math.sin(e);return Cd([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function kd(e,t,n){return Cd([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function Ad(e,t,n){e.tx=t,e.ty=n}function jd(e,n){let r=e.m,i=n.m,a=e=>t(r,e),o=e=>t(i,e);e.m=[a(0)*o(0)+a(1)*o(3)+a(2)*o(6),a(0)*o(1)+a(1)*o(4)+a(2)*o(7),a(0)*o(2)+a(1)*o(5)+a(2)*o(8),a(3)*o(0)+a(4)*o(3)+a(5)*o(6),a(3)*o(1)+a(4)*o(4)+a(5)*o(7),a(3)*o(2)+a(4)*o(5)+a(5)*o(8),a(6)*o(0)+a(7)*o(3)+a(8)*o(6),a(6)*o(1)+a(7)*o(4)+a(8)*o(7),a(6)*o(2)+a(7)*o(5)+a(8)*o(8)];let s=e.tx,c=e.ty,l=Number(n.tx)||0,u=Number(n.ty)||0;e.tx=a(0)*l+a(1)*u+s,e.ty=a(3)*l+a(4)*u+c}function Md(e,n){let r=Yu(e),i=n.m??[1,0,0,0,1,0,0,0,1],a=Number(n.tx)||0,o=Number(n.ty)||0,s=t(i,0),c=t(i,1),l=t(i,3),u=t(i,4);if(Math.abs(s-1)<1e-12&&Math.abs(u-1)<1e-12&&Math.abs(c)<1e-12&&Math.abs(l)<1e-12)return se(r,a,o);let d=w(r),f=[];for(let e=0;e<=20;e++){let[t,n]=S(r,d.first+(d.last-d.first)*e/20);f.push([s*t+c*n+a,l*t+u*n+o])}return oe(f)}function Nd(e,t,n){let r=fe(Yu(e),Yu(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function Pd(e,t,n){let r=Yu(e),i=w(r);if(r.__bk2d===`line`){let e=t-r.ox,a=n-r.oy,o=Math.max(i.first,Math.min(i.last,e*r.dx+a*r.dy)),[s,c]=S(r,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}if(r.__bk2d===`circle`){let e=Math.atan2(n-r.cy,t-r.cx),i=r.sense?e:-e;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;let[a,o]=S(r,i);return{param:i,distance:Math.sqrt((a-t)**2+(o-n)**2)}}if(!isFinite(i.first)||!isFinite(i.last))return null;let a=i.first,o=1/0,s=(i.last-i.first)/200;for(let e=0;e<=200;e++){let c=i.first+e*s,[l,u]=S(r,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}for(let e=0;e<10;e++){let[e,o]=S(r,a),[s,c]=C(r,a),l=(e-t)*s+(o-n)*c,u=s*s+c*c;if(u<1e-20)break;let d=l/u,f=Math.max(i.first,Math.min(i.last,a-d));if(Math.abs(f-a)<1e-14)break;a=f}let[c,l]=S(r,a);return{param:a,distance:Math.sqrt((c-t)**2+(l-n)**2)}}function Fd(e,t,n,r,i,a){let o=Yu(e),s=Yu(t),c=n,l=i,u=1/0;for(let e=0;e<=50;e++){let t=n+(r-n)*e/50,[d,f]=S(o,t);for(let e=0;e<=50;e++){let n=i+(a-i)*e/50,[r,o]=S(s,n),p=(r-d)**2+(o-f)**2;p<u&&(u=p,c=t,l=n)}}let d=c,f=l;for(let c=0;c<20;c++){let[c,l]=S(s,f),u=Pd(e,c,l);if(u){let e=Math.max(n,Math.min(r,u.param)),t=Math.abs(e-d)<1e-12;if(d=e,t)break}let[p,m]=S(o,d),h=Pd(t,p,m);if(h){let e=Math.max(i,Math.min(a,h.param)),t=Math.abs(e-f)<1e-12;if(f=e,t)break}}let[p,m]=S(o,d),[h,g]=S(s,f);return Math.sqrt((h-p)**2+(g-m)**2)}function Id(e,n,r,i){let a=Yu(e),o=w(a),s=Math.max(3,{C0:1,C1:2,C2:3,C3:4}[r]??4),c=Math.max(100,i*10),l=[],u=1/0;for(let e=0;e<3&&u>n;e++){l=[];for(let e=0;e<=c;e++){let t=o.first+(o.last-o.first)*e/c;l.push(S(a,t))}u=0;for(let e=0;e<c;e++){let[n,r]=S(a,o.first+(o.last-o.first)*(e+.5)/c),i=t(l,e),s=t(l,e+1),d=(i[0]+s[0])/2,f=(i[1]+s[1])/2,p=Math.sqrt((n-d)**2+(r-f)**2);p>u&&(u=p)}u>n&&(c=Math.min(c*2,500))}return ld(l,{degMax:s})}function Ld(e){let n=Xu(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return Ld(Id(e,1e-6,`C2`,10));let r=w(Yu(e)),i=r.first,a=r.last,o=[];for(let e of n.knots)e>i+1e-12&&e<a-1e-12&&o.push(e);let s=[i,...o,a],c=[];for(let e=0;e<s.length-1;e++){let r=t(s,e),i=t(s,e+1),a=i-r;if(a<1e-15)continue;let o=S(n,r),l=S(n,i),u=C(n,r),d=C(n,i),f=a/3,p={__bk2d:`bezier`,poles:[o,[o[0]+u[0]*f,o[1]+u[1]*f],[l[0]-d[0]*f,l[1]-d[1]*f],l]};c.push(p)}return c.length>0?c:[e]}function Rd(){return Ce()}function zd(e,t,n){we(Zu(e),Yu(t),n)}function Bd(e){let t=Zu(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function Vd(e,t){let n=Zu(e),r=Zu(t);n.xMin=Math.min(n.xMin,r.xMin),n.yMin=Math.min(n.yMin,r.yMin),n.xMax=Math.max(n.xMax,r.xMax),n.yMax=Math.max(n.yMax,r.yMax)}function Hd(e,t){let n=Zu(e),r=Zu(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function Ud(e,t,n){let r=Zu(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Wd(e){let t=Xu(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function Gd(e){let t=Xu(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function Kd(e){let t=Xu(e);return t.__bk2d===`bezier`?[...t.poles]:null}function qd(e){let t=Xu(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function Jd(e){let t=Xu(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Yd(e){return xe(Yu(e))}function Xd(e){return Se(e)}function Zd(e,t){let n=Yu(e),r=w(n),i=[r.first,...[...t].sort((e,t)=>e-t),r.last],a=[];for(let e=0;e<i.length-1;e++)a.push({__bk2d:`trimmed`,basis:n,tStart:i[e],tEnd:i[e+1]});return a}function Qd(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepBuilderAPI_MakeEdge_3(r,i),o=a.Edge();return a.delete(),r.delete(),i.delete(),o}function $d(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_4(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function ef(e,n){let r=new e.TColgp_Array1OfPnt_2(1,n.length),i=new e.gp_Pnt_1;for(let e=0;e<n.length;e++){let a=t(n,e);i.SetCoord_2(a[0],a[1],a[2]),r.SetValue_1(e+1,i)}i.delete();let a=new e.GeomAPI_PointsToBSpline_2(r,3,8,e.GeomAbs_Shape.GeomAbs_C2,1e-6);if(r.delete(),!a.IsDone())throw a.delete(),Error(`Interpolation failed — GeomAPI_PointsToBSpline did not converge`);let o=a.Curve(),s=new e.Handle_Geom_Curve_2(o.get()),c=new e.BRepBuilderAPI_MakeEdge_24(s),l=c.Edge();return c.delete(),a.delete(),l}function tf(e,n,r,i,a){let o=Yu(n),s=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],c=(e,t)=>[r[0]+e*a[0]+t*s[0],r[1]+e*a[1]+t*s[1],r[2]+e*a[2]+t*s[2]];if(o.__bk2d===`line`)return Qd(e,c(o.ox,o.oy),c(o.ox+o.dx*o.len,o.oy+o.dy*o.len));if(o.__bk2d===`circle`||o.__bk2d===`trimmed`){let t=o;for(;t.__bk2d===`trimmed`;)t=t.basis;if(t.__bk2d===`circle`){let n=t,r=c(n.cx,n.cy),a=n.sense?i:[-i[0],-i[1],-i[2]];if(o.__bk2d===`circle`){let t=new e.gp_Pnt_3(r[0],r[1],r[2]),i=new e.gp_Dir_5(a[0],a[1],a[2]),o=new e.gp_Ax2_4(t,i),s=new e.gp_Circ_2(o,n.radius),c=new e.BRepBuilderAPI_MakeEdge_8(s),l=c.Edge();return c.delete(),s.delete(),o.delete(),i.delete(),t.delete(),l}let s=w(o),[l,u]=S(o,s.first),[d,f]=S(o,(s.first+s.last)/2),[p,m]=S(o,s.last);return $d(e,c(l,u),c(d,f),c(p,m))}}if(o.__bk2d===`bezier`||o.__bk2d===`bspline`){let n=o.poles.map(([e,t])=>c(e,t));return n.length===2?Qd(e,t(n,0),t(n,1)):ef(e,n)}let l=w(o),u=[];for(let e=0;e<=60;e++){let[t,n]=S(o,l.first+(l.last-l.first)*e/60);u.push(c(t,n))}return ef(e,u)}function nf(e,t,n){let r=Yu(t),i=w(r),a=[];for(let e=0;e<=60;e++){let[t,o]=S(r,i.first+(i.last-i.first)*e/60),s=n.get().Value(t,o);a.push([s.X(),s.Y(),s.Z()]),s.delete()}return ef(e,a)}function rf(e,t){return e.BRep_Tool.Surface_2(t)}function af(e,t,n){let r=new e.BRepAdaptor_Curve2d_2(t,n),i=Number(r.FirstParameter()),a=Number(r.LastParameter()),o=[];for(let e=0;e<=30;e++){let t=i+(a-i)*e/30,n=r.Value(t);o.push([n.X(),n.Y()]),n.delete()}return r.delete(),ld(o)}function of(e,t){e.BRepLib.BuildCurves3d_2(t)}function sf(e,t,n,r){let i=new e.ShapeFix_Wire_2(t,n,r);i.FixEdgeCurves();let a=i.Wire();return i.delete(),a}function cf(e,t,n={}){let{order:r=3,nbPtsOnCur:i=15,nbIter:a=2,tol3d:o=1e-5,tol2d:s=1e-4,maxDeg:c=8,maxSeg:l=9}=n,u=new e.BRepOffsetAPI_MakeFilling(r,i,a,!1,o,s,.01,.1,c,l);for(let n=0;n<t.length;n++){let r=Mo(e,t[n],`edge`);for(let t of r)u.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,n===0)}let d=new e.Message_ProgressRange_1;u.Build(d);let f=u.Shape();return u.delete(),d.delete(),f}function lf(e){return{wrapCurve2dHandle:e=>nd(e),createCurve2dAdaptor:e=>rd(e),createPoint2d:(e,t)=>Qu(e,t),createDirection2d:(e,t)=>$u(e,t),createVector2d:(e,t)=>ed(e,t),createAxis2d:(e,t,n,r)=>td(e,t,n,r),makeLine2d:(e,t,n,r)=>id(e,t,n,r),makeCircle2d:(e,t,n,r)=>ad(e,t,n,r),makeArc2dThreePoints:(e,t,n,r,i,a)=>re(e,t,n,r,i,a),makeArc2dTangent:(e,t,n,r,i,a)=>ie(e,t,n,r,i,a),makeEllipse2d:(e,t,n,r,i,a,o)=>od(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>sd(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>cd(e),makeBSpline2d:(e,t)=>ld(e,t),evaluateCurve2d:(e,t)=>ud(e,t),evaluateCurve2dD1:(e,t)=>dd(e,t),getCurve2dBounds:e=>fd(e),getCurve2dType:e=>pd(e),trimCurve2d:(e,t,n)=>md(e,t,n),reverseCurve2d:e=>{},copyCurve2d:e=>hd(e),offsetCurve2d:(e,t)=>gd(e,t),translateCurve2d:(e,t,n)=>_d(e,t,n),rotateCurve2d:(e,t,n,r)=>vd(e,t,n,r),scaleCurve2d:(e,t,n,r)=>yd(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>bd(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>xd(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>Sd(e,t,n,r,i,a),createIdentityGTrsf2d:()=>wd(),createAffinityGTrsf2d:(e,t,n,r,i)=>Td(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>Ed(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>Dd(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>Od(e,t,n),createScaleGTrsf2d:(e,t,n)=>kd(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{Ad(e,t,n)},multiplyGTrsf2d:(e,t)=>{jd(e,t)},transformCurve2dGeneral:(e,t)=>Md(e,t),intersectCurves2d:(e,t,n)=>Nd(e,t,n),projectPointOnCurve2d:(e,t,n)=>Pd(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>Fd(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>Id(e,t,n,r),decomposeBSpline2dToBeziers:e=>Ld(e),createBoundingBox2d:()=>Rd(),addCurveToBBox2d:(e,t,n)=>{zd(e,t,n)},getBBox2dBounds:e=>Bd(e),mergeBBox2d:(e,t)=>{Vd(e,t)},isBBox2dOut:(e,t)=>Hd(e,t),isBBox2dOutPoint:(e,t,n)=>Ud(e,t,n),getCurve2dCircleData:e=>Wd(e),getCurve2dEllipseData:e=>Gd(e),getCurve2dBezierPoles:e=>Kd(e),getCurve2dBezierDegree:e=>qd(e),getCurve2dBSplineData:e=>Jd(e),serializeCurve2d:e=>Yd(e),deserializeCurve2d:e=>Xd(e),splitCurve2d:(e,t)=>Zd(e,t),liftCurve2dToPlane:(t,n,r,i)=>tf(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>nf(e,t,n),extractSurfaceFromFace:t=>rf(e,t),extractCurve2dFromEdge:(t,n)=>af(e,t,n),buildCurves3d:t=>{of(e,t)},fixWireOnFace:(t,n,r)=>sf(e,t,n,r),fillSurface:(t,n)=>cf(e,t,n)}}function uf(){let e=e=>()=>{throw new c(`${e} is only available with the brepkit kernel`)};return{export3MF:e(`export3MF`),exportGLB:e(`exportGLB`),exportOBJ:e(`exportOBJ`),exportPLY:e(`exportPLY`),import3MF:e(`import3MF`),importOBJ:e(`importOBJ`),importGLB:e(`importGLB`),filletVariable:e(`filletVariable`),helicalSweep:e(`helicalSweep`),sweepWithOptions:e(`sweepWithOptions`),defeature:e(`defeature`),detectSmallFeatures:e(`detectSmallFeatures`),recognizeFeatures:e(`recognizeFeatures`),meshBoolean:(()=>{throw new c(`meshBoolean is only available with the brepkit kernel`)}),edgeToFaceMap:e(`edgeToFaceMap`),sharedEdges:e(`sharedEdges`),adjacentFaces:e(`adjacentFaces`),curveDegreeElevate:e(`curveDegreeElevate`),curveKnotInsert:e(`curveKnotInsert`),curveKnotRemove:e(`curveKnotRemove`),curveSplit:e(`curveSplit`),approximateSurfaceLspia:e(`approximateSurfaceLspia`),untrimFace:e(`untrimFace`),mergeCoincidentVertices:e(`mergeCoincidentVertices`),removeDegenerateEdges:e(`removeDegenerateEdges`),fixFaceOrientations:e(`fixFaceOrientations`),classifyPointRobust:e(`classifyPointRobust`),classifyPointWinding:e(`classifyPointWinding`),executeBatch:e(`executeBatch`),checkpoint:e(`checkpoint`),checkpointCount:e(`checkpointCount`),restoreCheckpoint:e(`restoreCheckpoint`),discardCheckpoint:e(`discardCheckpoint`)}}function df(e){return{draft:(t,n,r,i,a)=>du(e,t,n,r,i,a,[],1).shape}}var ff=class{oc;kernelId=`occt`;capabilities=a;constructor(e){this.oc=e,Object.assign(this,is(e),ss(e),Es(e),ys(e),Qs(e),fc(e),Oc(e),Vc(e),Gc(e),el(e),Do(e),Vo(e),Ml(e),Fl(e),Rl(e),Hl(e),fu(e),qu(e),lf(e),df(e),uf())}},pf=()=>{};function mf(e){return typeof e==`object`&&!!e&&e.__brepkit}function hf(e,t){return{__brepkit:!0,type:e,id:t,delete:pf,HashCode(e){return t%e},IsNull(){return!1}}}function O(e){return hf(`solid`,e)}function gf(e){return hf(`face`,e)}function _f(e){return hf(`edge`,e)}function vf(e){return hf(`wire`,e)}function yf(e){return hf(`shell`,e)}function bf(e){let t=hf(`compound`,e);return If.has(e)?{...t,delete:()=>If.delete(e)}:t}function xf(e){return hf(`vertex`,e)}function k(e,t){if(!mf(e))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof e);if(t&&e.type!==t)throw Error(`brepkit: expected ${t} handle, got ${e.type}`);return e.id}function A(e){return Array.from(e)}function Sf(e,t){if(!mf(e))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof e);if(e.type!==`solid`)throw Error(`brepkit: ${t} requires a solid, got ${e.type}. Consider using makeCompound() to combine shapes first.`);return e.id}function Cf(e,t,n){if(!mf(t))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof t);if(t.type===`solid`)return[t.id];if(t.type===`compound`){let r=A(e.getCompoundSolids(t.id));if(r.length>0)return r;throw Error(`brepkit: ${n} received a compound with no solids.`)}throw Error(`brepkit: ${n} requires a solid or compound of solids, got ${t.type}.`)}function wf(e,t,n,r,i,a){let o=e-r,s=t-i,c=n-a;return Math.sqrt(o*o+s*s+c*c)}function Tf(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function Ef(e,t,n){return[1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1]}function Df(e,t){if(!Array.isArray(e)||e.length<3)return t;let[n,r,i]=e;return typeof n==`number`&&typeof r==`number`&&typeof i==`number`&&Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(i)?[n,r,i]:t}function Of(e,t=[0,0,1],n=[0,0,0]){let r=Df(t,[0,0,1]),i=r[0]===0&&r[1]===0&&r[2]===0?[0,0,1]:r,a=Df(n,[0,0,0]),o=e*Math.PI/180,s=Math.cos(o),c=Math.sin(o),l=1-s,u=Math.sqrt(i[0]**2+i[1]**2+i[2]**2),[d,f,p]=[i[0]/u,i[1]/u,i[2]/u],m=l*d*d+s,h=l*d*f-c*p,g=l*d*p+c*f,_=l*f*d+c*p,v=l*f*f+s,y=l*f*p-c*d,b=l*p*d-c*f,x=l*p*f+c*d,S=l*p*p+s,[C,w,ee]=a;return[m,h,g,C-(m*C+h*w+g*ee),_,v,y,w-(_*C+v*w+y*ee),b,x,S,ee-(b*C+x*w+S*ee),0,0,0,1]}function kf(e,t){let[n,r,i]=Df(e,[0,0,0]);return[t,0,0,n*(1-t),0,t,0,r*(1-t),0,0,t,i*(1-t),0,0,0,1]}function Af(e,n){let r=n=>t(e,n);return[r(0),r(1),r(2),n[0],r(3),r(4),r(5),n[1],r(6),r(7),r(8),n[2],0,0,0,1]}function jf(e,t){let[n,r,i]=e,a=Math.sqrt(t[0]**2+t[1]**2+t[2]**2),o=t[0]/a,s=t[1]/a,c=t[2]/a,l=2*(n*o+r*s+i*c);return[1-2*o*o,-2*o*s,-2*o*c,l*o,-2*s*o,1-2*s*s,-2*s*c,l*s,-2*c*o,-2*c*s,1-2*c*c,l*c,0,0,0,1]}function Mf(e,t){let n=Array(16).fill(0);for(let r=0;r<4;r++)for(let i=0;i<4;i++)for(let a=0;a<4;a++)n[r*4+i]=n[r*4+i]+e[r*4+a]*t[a*4+i];return n}var Nf=.01,Pf=9e5;function Ff(){return Pf++}var If=new Map,Lf=new Set;function Rf(e,t){Lf.has(e)||(Lf.add(e),console.warn(`brepkit: ${t}`))}function zf(e){return e.optimisation!==void 0||e.simplify!==void 0||e.strategy!==void 0||e.fuzzyValue!==void 0}function Bf(e){return e}function Vf(e){let t=e;for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Hf(e){return e}function Uf(e,t){if(typeof t!=`function`)return t;let n;for(let r of e){let e;try{e=t(r)}catch{throw Error(`brepkit does not support variable draft with multiple distinct angles. Use the OCCT kernel for per-face angle variation, or use a uniform angle.`)}if(n===void 0)n=e;else if(e!==n)throw Error(`brepkit does not support variable draft with multiple distinct angles. Use the OCCT kernel for per-face angle variation, or use a uniform angle.`)}if(n===void 0)throw Error(`draft: no faces provided`);return n}function Wf(e,t,n){let r=If.get(t);return r?r.flatMap(t=>t.type===n?[t]:Qf(e,t,n)):n===`solid`?A(e.getCompoundSolids(t)).map(O):n===`face`||n===`edge`||n===`vertex`||n===`wire`?A(e.getCompoundSolids(t)).map(O).flatMap(t=>Qf(e,t,n)):[]}function Gf(e,t,n,r){switch(r){case`solid`:return[t];case`shell`:return A(e.getSolidShells(n)).map(yf);case`face`:return A(e.getSolidFaces(n)).map(gf);case`edge`:return A(e.getSolidEdges(n)).map(_f);case`vertex`:return A(e.getSolidVertices(n)).map(xf);case`wire`:return A(e.getSolidFaces(n)).flatMap(t=>A(e.getFaceWires(t)).map(vf));default:return[]}}function Kf(e,t,n){let r=A(e.getShellFaces(t)).map(gf),i=new Set,a=[];for(let t of r)for(let r of Qf(e,t,n)){let e=k(r);i.has(e)||(i.add(e),a.push(r))}return a}function qf(e,t,n,r){return r===`shell`?[t]:r===`face`?A(e.getShellFaces(n)).map(gf):r===`edge`||r===`vertex`?Kf(e,n,r):[]}function Jf(e,t,n,r){return r===`face`?[t]:r===`edge`?A(e.getFaceEdges(n)).map(_f):r===`vertex`?A(e.getFaceVertices(n)).map(xf):r===`wire`?A(e.getFaceWires(n)).map(vf):[]}function Yf(e,n){let r=A(e.getWireEdges(n)),i=new Set,a=[];for(let n of r){let r=e.getEdgeVertices(n),o=[[t(r,0),t(r,1),t(r,2)],[t(r,3),t(r,4),t(r,5)]];for(let[t,n,r]of o){let o=`${t},${n},${r}`;i.has(o)||(i.add(o),a.push(xf(e.makeVertex(t,n,r))))}}return a}function Xf(e,t,n,r){return r===`wire`?[t]:r===`edge`?A(e.getWireEdges(n)).map(_f):r===`vertex`?Yf(e,n):[]}function Zf(e,n,r,i){if(i===`edge`)return[n];if(i===`vertex`){let n=e.getEdgeVertices(r),i=e.makeVertex(t(n,0),t(n,1),t(n,2)),a=e.makeVertex(t(n,3),t(n,4),t(n,5));return[xf(i),xf(a)]}return[]}function Qf(e,t,n){let r=k(t);switch(t.type){case`compound`:return Wf(e,r,n);case`solid`:return Gf(e,t,r,n);case`shell`:return qf(e,t,r,n);case`face`:return Jf(e,t,r,n);case`wire`:return Xf(e,t,r,n);case`edge`:return Zf(e,t,r,n);default:return[]}}function $f(e,t,n){if(Array.isArray(t))for(let e of t)n(e)}function ep(e,t){if(mf(t))return t.type;throw Error(`brepkit: cannot determine shape type of non-brepkit handle`)}function tp(e,t,n){return mf(t)&&mf(n)&&t.id===n.id&&t.type===n.type}function np(e,t,n){return tp(e,t,n)}function rp(e,t,n){return t}function ip(e,t,n){return mf(t)?t.id%n:0}function ap(e,t){return!t||!mf(t)}function op(e,t){let n=k(t);return e.getShapeOrientation(n)}function sp(e,t){let n=Sf(t,`edgeToFaceMap`);return e.edgeToFaceMap(n)}function cp(e,t,n){let r=k(t,`face`),i=k(n,`face`);return Array.from(e.sharedEdges(r,i)).map(e=>_f(e))}function lp(e,t,n){let r=Sf(t,`adjacentFaces`),i=k(n,`face`);return Array.from(e.adjacentFaces(r,i)).map(e=>gf(e))}function up(e,t){let n=t;return n.type===`face`?[n.id]:n.type===`solid`?A(e.getSolidFaces(n.id)):n.type===`shell`?A(e.getShellFaces(n.id)):[]}function dp(e,t,n){let r=t.flatMap(t=>up(e,t)),i=n??1e-7;try{return yf(e.weldShellsAndFaces(r,i))}catch(e){console.warn(`brepkit: weldShellsAndFaces failed, falling back to sewFaces:`,e)}return yf(e.sewFaces(r,i))}function fp(e){return{iterShapes:(t,n)=>Qf(e,t,n),iterShapeList:(t,n)=>{$f(e,t,n)},shapeType:t=>ep(e,t),isSame:(t,n)=>tp(e,t,n),isEqual:(t,n)=>np(e,t,n),downcast:(t,n)=>rp(e,t,n),copyShape:t=>rp(e,t),hashCode:(t,n)=>ip(e,t,n),isNull:t=>ap(e,t),shapeOrientation:t=>op(e,t),edgeToFaceMap:t=>sp(e,t),sharedEdges:(t,n)=>cp(e,t,n),adjacentFaces:(t,n)=>lp(e,t,n),sew:(t,n)=>dp(e,t,n)}}function pp(e,t){return n(e.getVertexPosition(k(t,`vertex`)))}function mp(e,t){return e.getSurfaceType(k(t,`face`))}function hp(e,n){let r=e.getSurfaceDomain(k(n,`face`));return{uMin:t(r,0),uMax:t(r,1),vMin:t(r,2),vMax:t(r,3)}}function gp(e,t){return vf(e.getFaceOuterWire(k(t,`face`)))}function _p(e,t,r,i){return n(e.evaluateSurfaceNormal(k(t,`face`),r,i))}function vp(e,t,r,i){return n(e.evaluateSurface(k(t,`face`),r,i))}function yp(e,n,r){try{let i=e.projectPointOnSurface(k(n,`face`),r[0],r[1],r[2]);return[t(i,0),t(i,1)]}catch(e){return console.warn(`brepkit: uvFromPoint failed:`,e),null}}function bp(e,t,r){return n(e.projectPointOnSurface(k(t,`face`),r[0],r[1],r[2]),2)}function xp(e,r,i){let a=r,o,s=i;if(a.type===`wire`){let n=A(e.getWireEdges(a.id));o=t(n,n.length-1);let r=0;for(let a of n){let n=e.getEdgeCurveParameters(a),c=t(n,1)-t(n,0);if(i<=r+c||a===o){o=a,s=Math.min(t(n,0)+(i-r),t(n,1));break}r+=c}}else o=k(r,`edge`);let c=e.evaluateEdgeCurveD1(o,s);return{point:n(c,0),tangent:n(c,3)}}function Sp(e,n){let r=n;if(r.type===`wire`){let n=A(e.getWireEdges(r.id));if(n.length===0)return[0,0];let i=0;for(let r of n){let n=e.getEdgeCurveParameters(r);i+=t(n,1)-t(n,0)}return[0,i]}let i=e.getEdgeCurveParameters(k(n,`edge`));return[t(i,0),t(i,1)]}function Cp(e,r,i){let a=r;if(a.type===`wire`){let r=A(e.getWireEdges(a.id)),o=0;for(let a of r){let s=e.getEdgeCurveParameters(a),c=t(s,1)-t(s,0);if(i<=o+c||a===r[r.length-1]){let r=t(s,0)+(i-o);return n(e.evaluateEdgeCurve(a,Math.min(r,t(s,1))))}o+=c}return n(e.evaluateEdgeCurve(t(r,0),i))}return n(e.evaluateEdgeCurve(k(r,`edge`),i))}function wp(e,r){let i=r;if(i.type===`wire`){let r=A(e.getWireEdges(i.id));if(r.length===0)return!1;if(r.length===1)return Tp(e.getEdgeVertices(t(r,0)));let a=[];for(let t of r){let r=e.getEdgeVertices(t);a.push(n(r,0)),a.push(n(r,3))}let o=[];for(let e of a){let t=o.findIndex(t=>wf(t[0],t[1],t[2],e[0],e[1],e[2])<1e-7);t>=0?o.splice(t,1):o.push(e)}return o.length===0}return Tp(e.getEdgeVertices(k(r,`edge`)))}function Tp(e){return wf(t(e,0),t(e,1),t(e,2),t(e,3),t(e,4),t(e,5))<1e-7}function Ep(e,t){let n=t;try{if(n.type===`edge`||n.type===`wire`&&A(e.getWireEdges(n.id)).length===1)return wp(e,t)}catch{}return!1}function Dp(e,t){try{if(Ep(e,t)){let n=Sp(e,t);return n[1]-n[0]}}catch{}return 0}function Op(e,t){if(t.type===`wire`){let n=Qf(e,t,`edge`)[0];return n?e.getEdgeCurveType(k(n,`edge`)):`LINE`}return e.getEdgeCurveType(k(t,`edge`))}function kp(e,t,n){let r=k(t,`edge`);return _f(e.curveDegreeElevate(r,n))}function Ap(e,t,n,r){let i=k(t,`edge`);return _f(e.curveKnotInsert(i,n,r))}function jp(e,t,n,r){let i=k(t,`edge`);return _f(e.curveKnotRemove(i,n,r))}function Mp(e,n,r){let i=k(n,`edge`),a=e.curveSplit(i,r);return[_f(t(a,0)),_f(t(a,1))]}function Np(e,t,n,r,i,a,o,s,c,l){return gf(e.approximateSurfaceLspia(t,n,r,i,a,o,s,c,l))}function Pp(e,t,n,r){let i=k(t,`face`);return gf(e.untrimFace(i,n,r))}function Fp(e,t){return t}function Ip(e,t){let r=fm(e,t);return!r||r.controlPoints.length<6?null:n(r.controlPoints,r.controlPoints.length-6)}function Lp(e,t){if(mf(t)&&t.type===`face`){let n=t.id,r=JSON.parse(e.getAnalyticSurfaceParams(n));if(r.type===`cylinder`)return{radius:r.radius,isDirect:!0}}return null}function Rp(e,t){let n=JSON.parse(e.getAnalyticSurfaceParams(k(t,`face`))),r=n.type===`cylinder`?n.origin:n.type===`cone`?n.apex:null;if(!r||!n.axis)return null;let[i,a,o]=r,[s,c,l]=n.axis,u=Math.hypot(s,c,l);return u<1e-12?null:{origin:[i,a,o],direction:[s/u,c/u,l/u]}}function zp(e,t){return t}function Bp(e,n,r,i,a){a!==void 0&&Rf(`classify-tolerance`,`classifyPointOnFace() tolerance parameter is not supported; brepkit uses domain-based classification.`);let o=k(n,`face`),s=e.getSurfaceDomain(o);return r<t(s,0)||r>t(s,1)||i<t(s,2)||i>t(s,3)?`out`:`in`}function Vp(e,t,n,r){let i=Sf(t,`classifyPointRobust`);return e.classifyPointRobust(i,n[0],n[1],n[2],r)}function Hp(e,t,n,r){let i=Sf(t,`classifyPointWinding`);return e.classifyPointWinding(i,n[0],n[1],n[2],r)}function Up(e,t,n,r){let i=Sf(t,`detectSmallFeatures`);return Array.from(e.detectSmallFeatures(i,n,r)).map(e=>gf(e))}function Wp(e,t,n){let r=Sf(t,`recognizeFeatures`);return e.recognizeFeatures(r,n)}function Gp(e,t,r,i,a){let o=k(t),[s,c,l]=r,[u,d,f]=i,[p,m,h]=a??[1,0,0],g=.1;try{let t=e.boundingBox(o),[r,i,a]=n(t,0),[s,c,l]=n(t,3),u=wf(r,i,a,s,c,l);u>0&&(g=Math.max(u*.001,1e-6))}catch{}let _=e.projectEdges(o,s,c,l,u,d,f,p,m,h,!0,g),v;try{v=JSON.parse(_)}catch{v={visible:[],hidden:[]}}let y=t=>{let n=[];for(let r of t)for(let t=0;t+3<r.length;t+=2){let i=r[t],a=r[t+1],o=r[t+2],s=r[t+3];i===void 0||a===void 0||o===void 0||s===void 0||i===o&&a===s||n.push(_f(e.makeLineEdge(i,a,0,o,s,0)))}let r=Ff();return If.set(r,n),bf(r)},b=()=>{let e=Ff();return If.set(e,[]),bf(e)};return{visible:{outline:y(v.visible),smooth:b(),sharp:b()},hidden:{outline:y(v.hidden),smooth:b(),sharp:b()}}}function Kp(e,t){let n=k(t,`edge`),r=e.getNurbsCurveData(n);if(!r)return null;let i=JSON.parse(r);return{degree:i.degree,poles:i.controlPoints,weights:i.weights,knots:i.distinctKnots,multiplicities:i.multiplicities,isPeriodic:i.periodic,isRational:i.rational}}function qp(e,t){return JSON.parse(e.getNurbsSurfaceDataParity(k(t,`face`)))}function Jp(e){return{vertexPosition:t=>pp(e,t),surfaceType:t=>mp(e,t),uvBounds:t=>hp(e,t),outerWire:t=>gp(e,t),surfaceNormal:(t,n,r)=>_p(e,t,n,r),pointOnSurface:(t,n,r)=>vp(e,t,n,r),uvFromPoint:(t,n)=>yp(e,t,n),projectPointOnFace:(t,n)=>bp(e,t,n),curveTangent:(t,n)=>xp(e,t,n),curveParameters:t=>Sp(e,t),curvePointAtParam:(t,n)=>Cp(e,t,n),curveIsClosed:t=>wp(e,t),curveIsPeriodic:t=>Ep(e,t),curvePeriod:t=>Dp(e,t),curveType:t=>Op(e,t),curveDegreeElevate:(t,n)=>kp(e,t,n),curveKnotInsert:(t,n,r)=>Ap(e,t,n,r),curveKnotRemove:(t,n,r)=>jp(e,t,n,r),curveSplit:(t,n)=>Mp(e,t,n),approximateSurfaceLspia:(t,n,r,i,a,o,s,c,l)=>Np(e,t,n,r,i,a,o,s,c,l),untrimFace:(t,n,r)=>Pp(e,t,n,r),createCurveAdaptor:t=>Fp(e,t),getBezierPenultimatePole:t=>Ip(e,t),getSurfaceCylinderData:t=>Lp(e,t),getSurfaceAxis:t=>Rp(e,t),reverseSurfaceU:t=>zp(e,t),classifyPointOnFace:(t,n,r,i)=>Bp(e,t,n,r,i),classifyPointRobust:(t,n,r)=>Vp(e,t,n,r),classifyPointWinding:(t,n,r)=>Hp(e,t,n,r),detectSmallFeatures:(t,n,r)=>Up(e,t,n,r),recognizeFeatures:(t,n)=>Wp(e,t,n),projectEdges:(t,n,r,i)=>Gp(e,t,n,r,i),getNurbsCurveData:t=>Kp(e,t),getNurbsSurfaceData:t=>qp(e,t)}}function Yp(e,t,n){if(Array.isArray(n)&&n.length===16)return cm(e,t,n);throw Error(`brepkit: transform expects a 16-element matrix array`)}function Xp(e,t,n,r,i){return cm(e,t,Ef(n,r,i))}function Zp(e,t,n,r,i){return cm(e,t,Of(n,r,i))}function Qp(e,t,n,r){let i=t;return i.type===`solid`?O(e.mirror(i.id,n[0],n[1],n[2],r[0],r[1],r[2])):cm(e,t,jf(n,r))}function $p(e,t,n,r){return cm(e,t,kf(n,r))}function em(e,t,n,r,i){return cm(e,t,Af(n,r))}function tm(e,t,n,r){return cm(e,t,Af(n,r))}function nm(e,t,n,r){let{point:i,tangent:a}=xp(e,n,r),[o,s,c]=a,l=Math.sqrt(o*o+s*s+c*c);if(l<1e-12)return Xp(e,t,i[0],i[1],i[2]);let u=o/l,d=s/l,f=c/l,p=t;if(Math.abs(f+1)<1e-10)p=Zp(e,p,180,[1,0,0]);else if(Math.abs(f-1)>1e-10){let t=[-d,u,0],n=180/Math.PI*Math.acos(Math.max(-1,Math.min(1,f)));p=Zp(e,p,n,t)}return Xp(e,p,i[0],i[1],i[2])}function rm(e,t,n,r,i){let a=[t];for(let o=1;o<i;o++){let i=r*o;a.push(Xp(e,t,n[0]*i,n[1]*i,n[2]*i))}return a}function im(e,t,n,r,i,a){let o=[t];for(let s=1;s<a;s++)o.push(Zp(e,t,i*s,r,n));return o}function am(e,t,n,r,i,a,o,s){return bf(e.gridPattern(Sf(t,`gridPattern`),n[0],n[1],n[2],r[0],r[1],r[2],i,a,o,s))}function om(e,t){return t.map(t=>{switch(t.type){case`translate`:return Xp(e,t.shape,t.x,t.y,t.z);case`rotate`:return Zp(e,t.shape,t.angle,t.axis,t.center);case`scale`:return $p(e,t.shape,t.center,t.factor);case`mirror`:return Qp(e,t.shape,t.origin,t.normal)}})}function sm(e){return{transform:(t,n)=>Yp(e,t,n),locate:(t,n)=>Yp(e,t,n),translate:(t,n,r,i)=>Xp(e,t,n,r,i),rotate:(t,n,r,i)=>Zp(e,t,n,r,i),mirror:(t,n,r)=>Qp(e,t,n,r),scale:(t,n,r)=>$p(e,t,n,r),generalTransform:(t,n,r,i)=>em(e,t,n,r,i),generalTransformNonOrthogonal:(t,n,r)=>tm(e,t,n,r),positionOnCurve:(t,n,r)=>nm(e,t,n,r),linearPattern:(t,n,r,i)=>rm(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>im(e,t,n,r,i,a),gridPattern:(t,n,r,i,a,o,s)=>am(e,t,n,r,i,a,o,s),transformBatch:t=>om(e,t)}}function cm(e,t,n){let r=t;if(!mf(t))throw Error(`brepkit: applyMatrix requires a BrepkitHandle`);switch(r.type){case`solid`:{let t=e.copySolid(r.id);return e.transformSolid(t,n),O(t)}case`face`:{if(typeof e.copyFace!=`function`)throw Error(`brepkit: applyMatrix for faces requires copyFace/transformFace WASM exports`);let t=e.copyFace(r.id);return e.transformFace(t,n),gf(t)}case`wire`:{if(typeof e.copyWire!=`function`||typeof e.transformWire!=`function`)throw Error(`brepkit: applyMatrix for wires requires copyWire/transformWire WASM exports`);let t=e.copyWire(r.id);return e.transformWire(t,n),vf(t)}case`edge`:{if(typeof e.copyEdge!=`function`||typeof e.transformEdge!=`function`)throw Error(`brepkit: applyMatrix for edges requires copyEdge/transformEdge WASM exports`);let t=e.copyEdge(r.id);return e.transformEdge(t,n),_f(t)}default:throw Error(`brepkit: applyMatrix does not support '${r.type}' shapes`)}}function lm(e,t){return!!(e&&(e[0]!==0||e[1]!==0||e[2]!==0)||t&&(t[0]!==0||t[1]!==0||t[2]!==1))}function um(e,t,n,r){let i=t;if(r&&(r[0]!==0||r[1]!==0||r[2]!==1)){let[t,n,a]=r,o=Math.sqrt(t*t+n*n+a*a),s=t/o,c=n/o,l=a/o;if(Math.abs(l+1)<1e-10)i=Zp(e,i,180,[1,0,0]);else if(Math.abs(l-1)>1e-10){let t=[-c,s,0],n=180/Math.PI*Math.acos(Math.max(-1,Math.min(1,l)));i=Zp(e,i,n,t)}}return n&&(n[0]!==0||n[1]!==0||n[2]!==0)&&(i=Xp(e,i,n[0],n[1],n[2])),i}function dm(e,t){let r,i=t;if(i.type===`solid`||i.type===`compound`){let n=Qf(e,t,`face`);if(n.length===0)throw Error(`brepkit: extractPlaneFromFace: no faces found`);let i=n[0];if(!i)throw Error(`brepkit: extractPlaneFromFace: no faces found`);let a=k(i,`face`),o=0;for(let t of n){let n=k(t,`face`);try{let t=e.faceArea(n,Nf);t>o&&(o=t,a=n)}catch{}}r=a}else r=k(t,`face`);let a=n(e.getFaceNormal(r)),o=e.tessellateFace(r,1).positions;return o.length>=3?{point:n(o),normal:a}:{point:[0,0,0],normal:a}}function fm(e,n){let r=n;if(r.type!==`edge`)return null;let i=e.getEdgeNurbsData(r.id);if(i){let e=JSON.parse(i);return{degree:e.degree,knots:e.knots,controlPoints:e.controlPoints,weights:e.weights}}let a=e.getEdgeVertices(r.id);return{degree:1,knots:[0,0,1,1],controlPoints:[t(a,0),t(a,1),t(a,2),t(a,3),t(a,4),t(a,5)],weights:[1,1]}}function pm(e,t){if(!mf(t))return!1;if(t.type!==`solid`)return!0;try{return e.validateSolidRelaxed(t.id)===0}catch(e){return console.warn(`brepkit: isValid check failed:`,e),!1}}function mm(e,t){if(!mf(t))return!1;if(t.type!==`solid`)return!0;try{return e.validateSolid(t.id)===0}catch(e){return console.warn(`brepkit: isValidStrict check failed:`,e),!1}}function hm(e,t){let n=t;if(n.type!==`solid`)throw Error(`brepkit: healSolid requires a solid, got ${n.type}. Consider using makeCompound() to combine shapes first.`);try{let n=e.repairSolid(k(t));return n>0&&console.warn(`brepkit: repairSolid left ${n} error(s) on solid.`),t}catch(n){try{return e.healSolid(k(t)),t}catch(e){return console.warn(`brepkit: healSolid failed (repairSolid error:`,n,`, healSolid error:`,e,`)`),null}}}function gm(e,t){return t}function _m(e,t,n){return t}function vm(e,t,n){let r=Sf(t,`mergeCoincidentVertices`);return e.mergeCoincidentVertices(r,n)}function ym(e,t,n){let r=Sf(t,`removeDegenerateEdges`);return e.removeDegenerateEdges(r,n)}function bm(e,t){let n=Sf(t,`fixFaceOrientations`);return e.fixFaceOrientations(n)}function xm(e,t){let n=t;return n.type===`solid`&&e.healSolid(n.id),t}function Sm(e,t){return t}function Cm(e,t){if(!mf(t)||t.type!==`solid`)return null;try{return typeof e.validateSolidDetails==`function`?e.validateSolidDetails(t.id):null}catch{return null}}function wm(e){return{isValid:t=>pm(e,t),isValidStrict:t=>mm(e,t),healSolid:t=>hm(e,t),healFace:t=>gm(e,t),healWire:(t,n)=>_m(e,t,n),fixShape:t=>xm(e,t),fixSelfIntersection:t=>Sm(e,t),mergeCoincidentVertices:(t,n)=>vm(e,t,n),removeDegenerateEdges:(t,n)=>ym(e,t,n),fixFaceOrientations:t=>bm(e,t),validationDetails:t=>Cm(e,t)}}function Tm(e){if(!(e instanceof Error))return!1;let t=e.message;return t.startsWith(`empty result:`)||t.includes(`produced empty result`)||t.includes(`produces empty result`)}function Em(e,t){return t.type===`compound`&&A(e.getCompoundSolids(t.id)).length===0}function Dm(e){return bf(e.makeCompound([]))}function Om(e,t,n,r){if(r&&zf(r)&&Rf(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),Em(e,t))return n;if(Em(e,n))return t;let i=Sf(t,`fuse`),a=n;if(a.type===`compound`){let t=A(e.getCompoundSolids(a.id)),n=i;for(let r of t)n=e.fuse(n,r);return O(n)}return O(e.fuse(i,Sf(n,`fuse`)))}function km(e,t,n,r){if(r&&zf(r)&&Rf(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),Em(e,t))return Dm(e);if(Em(e,n))return t;let i=Sf(t,`cut`),a=n;if(a.type===`compound`){let t=A(e.getCompoundSolids(a.id)),n=i;for(let r of t)try{n=e.cut(n,r)}catch(t){if(Tm(t))return Dm(e);throw t}return O(n)}try{return O(e.cut(i,Sf(n,`cut`)))}catch(t){if(Tm(t))return Dm(e);throw t}}function Am(e,t,n,r){if(r&&zf(r)&&Rf(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),Em(e,t)||Em(e,n))return Dm(e);try{return O(e.intersect(Sf(t,`intersect`),Sf(n,`intersect`)))}catch(t){if(Tm(t))return Dm(e);throw t}}function jm(e,n,r,i){let{point:a,normal:o}=dm(e,r),s=mf(n)&&n.type===`solid`?n.id:k(n,`solid`),c=A(e.section(s,a[0],a[1],a[2],o[0],o[1],o[2]));if(c.length===0)return bf(e.makeCompound([]));let l=[];for(let n=0;n<c.length;n++){let r=A(e.getFaceWires(t(c,n)));for(let e=0;e<r.length;e++)l.push(vf(t(r,e)))}let[u]=l;if(l.length===1&&u!==void 0)return u;let d=Ff();return If.set(d,l),bf(d)}function Mm(e,n,r){if(n.length===0)throw Error(`brepkit: fuseAll requires at least one shape`);if(n.length===1)return t(n,0);if(e.compoundFuse){let t=[];for(let r of n){let n=r;n.type===`compound`?t.push(...A(e.getCompoundSolids(n.id))):t.push(Sf(r,`fuseAll`))}if(t.length===0)throw Error(`brepkit: fuseAll resolved to zero solid IDs`);return O(e.compoundFuse(new Uint32Array(t)))}let i=[...n];for(;i.length>1;){let t=[];for(let n=0;n<i.length;n+=2)n+1<i.length?t.push(Om(e,i[n],i[n+1],r)):t.push(i[n]);i=t}return t(i,0)}function Nm(e,t,n,r){if(n.length===0)return t;if(n.length===1)return km(e,t,n[0],r);let i=Sf(t,`cutAll`),a=[];for(let t of n){let n=t;n.type===`compound`?a.push(...A(e.getCompoundSolids(n.id))):a.push(Sf(t,`cutAll`))}return a.length===0?t:O(e.compoundCut(i,new Uint32Array(a)))}function Pm(e,t,n){if(n.length===0)throw Error(`brepkit: split requires at least one tool`);let{point:r,normal:i}=dm(e,n[0]),a=A(e.split(k(t,`solid`),r[0],r[1],r[2],i[0],i[1],i[2]));return bf(e.makeCompound(a))}function Fm(e,t,n,r,i,a,o){let s=e.meshBoolean(t,n,r,i,a,o);return{vertices:new Float32Array(s.positions),normals:new Float32Array(s.normals),triangles:new Uint32Array(s.indices),uvs:new Float32Array,faceGroups:[{start:0,count:s.indices.length,faceHash:0}]}}function Im(e,t,n,r,i){let a=[];return(!mf(t)||t.IsNull())&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),(!mf(n)||n.IsNull())&&a.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),a.length>0?{valid:!1,issues:a}:(i(t)||a.push({operand:`base`,issue:`not-valid`,message:`Base shape fails BRepCheck validation. Try autoHeal() first.`}),i(n)||a.push({operand:`tool`,issue:`not-valid`,message:`Tool shape fails BRepCheck validation. Try autoHeal() first.`}),{valid:a.length===0,issues:a})}function Lm(e,n,r){let i=[];for(let r of n){let n=r;if(n.type===`solid`){let r=A(e.getSolidVertices(n.id));for(let n of r){let r=e.getVertexPosition(n);i.push(t(r,0),t(r,1),t(r,2))}}else if(n.type===`vertex`){let r=e.getVertexPosition(n.id);i.push(t(r,0),t(r,1),t(r,2))}}if(i.length<12)throw Error(`brepkit: hull requires enough points`);return O(e.convexHull(i))}function Rm(e,t,n){if(t.length<4)throw Error(`brepkit: hull needs at least 4 points`);let r=[];for(let e of t)r.push(e.x,e.y,e.z);return O(e.convexHull(r))}function zm(e,n,r,i){let a=new Float64Array(n.length*3);for(let e=0;e<n.length;e++){let r=t(n,e);a[e*3]=r.x,a[e*3+1]=r.y,a[e*3+2]=r.z}let o=new Uint32Array(r.length*3);for(let e=0;e<r.length;e++){let n=t(r,e);o[e*3]=n[0],o[e*3+1]=n[1],o[e*3+2]=n[2]}return O(e.importIndexedMesh(a,o))}function Bm(e){return{fuse:(t,n,r)=>Om(e,t,n,r),cut:(t,n,r)=>km(e,t,n,r),intersect:(t,n,r)=>Am(e,t,n,r),section:(t,n,r)=>jm(e,t,n,r),fuseAll:(t,n)=>Mm(e,t,n),cutAll:(t,n,r)=>Nm(e,t,n,r),split:(t,n)=>Pm(e,t,n),meshBoolean:(t,n,r,i,a,o)=>Fm(e,t,n,r,i,a,o),checkBoolean:(t,n,r)=>Im(e,t,n,r,t=>pm(e,t)),hull:(t,n)=>Lm(e,t,n),hullFromPoints:(t,n)=>Rm(e,t,n),buildSolidFromFaces:(t,n,r)=>zm(e,t,n,r)}}function Vm(e,t,n,r){return xf(e.makeVertex(t,n,r))}function Hm(e,t,n,r){if(t&&typeof t==`object`&&`origin`in t&&`direction`in t){let{origin:i,direction:a}=t,o=n??0,s=r??1;return Qm(e,[i[0]+a[0]*o,i[1]+a[1]*o,i[2]+a[2]*o],[i[0]+a[0]*s,i[1]+a[1]*s,i[2]+a[2]*s])}if(mf(t)&&t.type===`edge`)return t;throw Error(`brepkit: makeEdge requires a curve with origin/direction, or an edge handle`)}function Um(e,t){let n=[];for(let r of t){let t=r;if(t.type===`wire`)for(let r of A(e.getWireEdges(t.id)))n.push(r);else n.push(k(r,`edge`))}return vf(e.makeWire(n,!0))}function Wm(e,t,n){let r=t,i=r.type===`edge`?e.makeWire([r.id],!0):k(t,`wire`);return gf(n?e.makePlanarFaceFromWire(i):e.makeFaceFromWire(i))}function Gm(e,t,n,r){return O(e.makeBox(t,n,r))}function Km(e,t,n){return gf(e.makeRectangle(t,n))}function qm(e,t,n,r,i){let a=O(e.makeCylinder(t,n));return lm(r,i)?um(e,a,r,i):a}function Jm(e,t,n){let r=O(e.makeSphere(t,32));return n&&(n[0]!==0||n[1]!==0||n[2]!==0)?Xp(e,r,n[0],n[1],n[2]):r}function Ym(e,t,n,r,i,a){let o=O(e.makeCone(t,n,r));return lm(i,a)?um(e,o,i,a):o}function Xm(e,t,n,r,i){let a=O(e.makeTorus(t,n,32));return lm(r,i)?um(e,a,r,i):a}function Zm(e,t,n,r){let i=Math.max(t,n,r);return em(e,Jm(e,i),[t/i,0,0,0,n/i,0,0,0,r/i],[0,0,0],!1)}function Qm(e,t,n){return _f(e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function $m(e,t,n,r){let i=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);return _f(e.makeCircleEdge(t[0],t[1],t[2],n[0]/i,n[1]/i,n[2]/i,r))}function eh(e,t,n,r,i,a){let o=a-i,s=1e-9;if(o>s&&o<2*Math.PI-s){let o=Math.hypot(n[0],n[1],n[2]),s=[n[0]/o,n[1]/o,n[2]/o],c=Math.abs(s[0])<.9?[1,0,0]:[0,1,0],l=[s[1]*c[2]-s[2]*c[1],s[2]*c[0]-s[0]*c[2],s[0]*c[1]-s[1]*c[0]],u=Math.hypot(l[0],l[1],l[2]),d=[l[0]/u,l[1]/u,l[2]/u],f=[s[1]*d[2]-s[2]*d[1],s[2]*d[0]-s[0]*d[2],s[0]*d[1]-s[1]*d[0]],p=e=>{let n=Math.cos(e),i=Math.sin(e);return[t[0]+r*(n*d[0]+i*f[0]),t[1]+r*(n*d[1]+i*f[1]),t[2]+r*(n*d[2]+i*f[2])]},m=p(i),h=p(a);return _f(e.makeCircleArc3d(m[0],m[1],m[2],h[0],h[1],h[2],t[0],t[1],t[2],s[0],s[1],s[2]))}return Oh(e,t,n,r,i,a)}function th(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));return Math.abs(o)<1e-12?null:[((e**2+t**2)*(r-a)+(n**2+r**2)*(a-t)+(i**2+a**2)*(t-r))/o,((e**2+t**2)*(i-n)+(n**2+r**2)*(e-i)+(i**2+a**2)*(n-e))/o]}function nh(e,t,n,r){let i=[n[0]-t[0],n[1]-t[1],n[2]-t[2]],a=[r[0]-t[0],r[1]-t[1],r[2]-t[2]],o=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],s=Math.sqrt(o[0]**2+o[1]**2+o[2]**2);if(s<1e-12)return Qm(e,t,r);let c=[o[0]/s,o[1]/s,o[2]/s],l=Math.sqrt(i[0]**2+i[1]**2+i[2]**2),u=[i[0]/l,i[1]/l,i[2]/l],d=[c[1]*u[2]-c[2]*u[1],c[2]*u[0]-c[0]*u[2],c[0]*u[1]-c[1]*u[0]],f=e=>{let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return[n*u[0]+r*u[1]+i*u[2],n*d[0]+r*d[1]+i*d[2]]},[p,m]=f(t),[h,g]=f(n),[_,v]=f(r),y=th(p,m,h,g,_,v);if(!y)return Qm(e,t,r);let[b,x]=y,S=[t[0]+b*u[0]+x*d[0],t[1]+b*u[1]+x*d[1],t[2]+b*u[2]+x*d[2]];return _f(e.makeCircleArc3d(t[0],t[1],t[2],r[0],r[1],r[2],S[0],S[1],S[2],c[0],c[1],c[2]))}function rh(e,t,n,r,i,a){let o=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);if(a!==void 0){let s=Math.sqrt(a[0]**2+a[1]**2+a[2]**2);return _f(e.makeEllipseEdgeWithRef(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i,a[0]/s,a[1]/s,a[2]/s))}return _f(e.makeEllipseEdge(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i))}function ih(e,t,n,r,i,a,o,s){return kh(e,t,n,r,i,a,o,s)}function ah(e,n){if(n.length<2)throw Error(`brepkit: bezier requires at least 2 points`);let r=n.length-1,i=n.length,a=[...Array(r+1).fill(0),...Array(r+1).fill(1)],o=Array(i).fill(1),s=n.flatMap(([e,t,n])=>[e,t,n]),c=t(n,0),l=t(n,i-1);return _f(e.makeNurbsEdge(c[0],c[1],c[2],l[0],l[1],l[2],r,a,s,o))}function oh(e,t,n,r){return _f(e.makeTangentArc3d(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function sh(e,t,n,r,i,a,o){let s=n/t,c=Math.max(4,Math.ceil(s*16)),l=i?.[0]??0,u=i?.[1]??0,d=i?.[2]??0,f=o?-1:1,p=[];for(let e=0;e<=c;e++){let t=e/c,i=f*2*Math.PI*s*t;p.push([l+r*Math.cos(i),u+r*Math.sin(i),d+n*t])}return Um(e,[bh(e,p)])}function ch(e,t){let n=[];for(let r of t){let t=r;if(t.type===`edge`)n.push(t.id);else if(t.type===`wire`)for(let r of A(e.getWireEdges(t.id)))n.push(r)}if(n.length===0)throw Error(`brepkit: makeWireFromMixed requires at least one edge`);return vf(e.makeWire(n,!1))}function lh(e,t){let n=t.filter(mf);if(n.length===0)throw Error(`brepkit: makeCompound requires at least one shape`);if(n.every(e=>e.type===`solid`))return bf(e.makeCompound(n.map(e=>e.id)));let r=Ff();return If.set(r,n),bf(r)}function uh(e,t,n){let r=Gm(e,Math.abs(n[0]-t[0]),Math.abs(n[1]-t[1]),Math.abs(n[2]-t[2])),i=Math.min(t[0],n[0]),a=Math.min(t[1],n[1]),o=Math.min(t[2],n[2]);return i!==0||a!==0||o!==0?Xp(e,r,i,a,o):r}function dh(e,t){let n=t;if(n.type===`solid`)return t;if(n.type===`shell`){try{return e.getSolidFaces(n.id),O(n.id)}catch{}return O(e.solidFromShell(n.id))}return O(e.solidFromShell(k(t,`shell`)))}function fh(e,t){return Wm(e,t,!1)}function ph(e,t,n){let r=n.map(e=>k(e,`wire`));return gf(e.addHolesToFace(k(t,`face`),r))}function mh(e,t){return gf(e.removeHolesFromFace(k(t,`face`)))}function hh(e,t,n){return Wm(e,n,!1)}function gh(e,t,n,r){let i=[];for(let[e,n,r]of t)i.push(e,n,r);let a=Math.min(3,n-1),o=Math.min(3,r-1);try{return gf(e.interpolateSurface(i,n,r,a,o))}catch{return _h(e,t,n,r)}}function _h(e,n,r,i){let a=[];for(let o=0;o<r-1;o++)for(let r=0;r<i-1;r++){let s=o*i+r,c=(o+1)*i+r,l=o*i+(r+1),u=(o+1)*i+(r+1),d=vh(e,t(n,s),t(n,c),t(n,l));d&&a.push(d);let f=vh(e,t(n,c),t(n,u),t(n,l));f&&a.push(f)}if(a.length===0)throw Error(`brepkit: no valid faces in surface grid`);return dp(e,a,1e-6)}function vh(e,t,n,r){let i=n[0]-t[0],a=n[1]-t[1],o=n[2]-t[2],s=r[0]-t[0],c=r[1]-t[1],l=r[2]-t[2],u=a*l-o*c,d=o*s-i*l,f=i*c-a*s;if(Math.sqrt(u*u+d*d+f*f)<1e-12)return null;try{return Wm(e,Um(e,[Qm(e,t,n),Qm(e,n,r),Qm(e,r,t)]))}catch(e){return console.warn(`brepkit: makeNonPlanarFace failed:`,e),null}}function yh(e,t,n){let r=t.map(e=>k(e,`face`));return O(e.sewFaces(r,n))}function bh(e,n,r){if(r?.tolerance!==void 0&&Rf(`interpolate-tolerance`,`interpolatePoints() tolerance parameter is not supported; brepkit uses chord-length parameterisation.`),n.length<2)throw Error(`brepkit: need at least 2 points`);if(n.length===2)return Qm(e,t(n,0),t(n,1));let i=Math.min(3,n.length-1),a=n.flatMap(([e,t,n])=>[e,t,n]);return _f(e.interpolatePoints(a,i))}function xh(e,t,n){let r=n?.degMax??3,i=n?.tolerance??1e-6,a=[];for(let e of t)a.push(e[0],e[1],e[2]);let o=Math.max(r+1,Math.min(t.length,Math.ceil(t.length*.7)));return _f(e.approximateCurveLspia(a,r,o,i,100))}function Sh(e,t,n,r){return{x:t,y:n,z:r}}function Ch(e,t,n,r){let i=Math.sqrt(t*t+n*n+r*r);return{x:t/i,y:n/i,z:r/i}}function wh(e,t,n,r){return{x:t,y:n,z:r}}function Th(e,t,n,r,i,a,o){return{origin:[t,n,r],direction:[i,a,o]}}function Eh(e,t,n,r,i,a,o,s,c,l){return{origin:[t,n,r],z:[i,a,o],x:s===void 0?void 0:[s,c,l]}}function Dh(e,t,n,r,i,a,o,s,c,l){return{origin:[t,n,r],z:[i,a,o],x:s===void 0?void 0:[s,c,l]}}function Oh(e,n,r,i,a,o){let s=Math.sqrt(r[0]**2+r[1]**2+r[2]**2),c=[r[0]/s,r[1]/s,r[2]/s],l=Math.abs(c[0])<.9?[1,0,0]:[0,1,0],u=[c[1]*l[2]-c[2]*l[1],c[2]*l[0]-c[0]*l[2],c[0]*l[1]-c[1]*l[0]],d=Math.sqrt(u[0]**2+u[1]**2+u[2]**2),f=[u[0]/d,u[1]/d,u[2]/d],p=[c[1]*f[2]-c[2]*f[1],c[2]*f[0]-c[0]*f[2],c[0]*f[1]-c[1]*f[0]],m=Math.ceil(Math.abs(o-a)/(Math.PI/2)),h=(o-a)/m,g=[],_=[];for(let e=0;e<=m;e++){let t=a+e*h,r=Math.cos(t),o=Math.sin(t),s=n[0]+i*(r*f[0]+o*p[0]),c=n[1]+i*(r*f[1]+o*p[1]),l=n[2]+i*(r*f[2]+o*p[2]);if(e>0){let t=a+(e-.5)*h,r=Math.cos(t),o=Math.sin(t),s=i/Math.cos(h/2),c=n[0]+s*(r*f[0]+o*p[0]),l=n[1]+s*(r*f[1]+o*p[1]),u=n[2]+s*(r*f[2]+o*p[2]);g.push(c,l,u),_.push(Math.cos(h/2))}g.push(s,c,l),_.push(1)}let v=[,,,].fill(0);for(let e=1;e<m;e++)v.push(e,e);v.push(...[,,,].fill(m));let y=t(v,v.length-1);for(let e=0;e<v.length;e++)v[e]=t(v,e)/y;let b=t(g,0),x=t(g,1),S=t(g,2),C=t(g,g.length-3),w=t(g,g.length-2),ee=t(g,g.length-1);return _f(e.makeNurbsEdge(b,x,S,C,w,ee,2,v,g,_))}function kh(e,n,r,i,a,o,s,c){let l=Math.sqrt(r[0]**2+r[1]**2+r[2]**2),u=[r[0]/l,r[1]/l,r[2]/l],d;if(c){let e=Math.sqrt(c[0]**2+c[1]**2+c[2]**2);d=[c[0]/e,c[1]/e,c[2]/e]}else{let e=Math.abs(u[0])<.9?[1,0,0]:[0,1,0],t=[u[1]*e[2]-u[2]*e[1],u[2]*e[0]-u[0]*e[2],u[0]*e[1]-u[1]*e[0]],n=Math.sqrt(t[0]**2+t[1]**2+t[2]**2);d=[t[0]/n,t[1]/n,t[2]/n]}let f=[u[1]*d[2]-u[2]*d[1],u[2]*d[0]-u[0]*d[2],u[0]*d[1]-u[1]*d[0]],p=Math.ceil(Math.abs(s-o)/(Math.PI/2)),m=(s-o)/p,h=[],g=[];for(let e=0;e<=p;e++){let t=o+e*m,r=Math.cos(t),s=Math.sin(t),c=n[0]+i*r*d[0]+a*s*f[0],l=n[1]+i*r*d[1]+a*s*f[1],u=n[2]+i*r*d[2]+a*s*f[2];if(e>0){let t=o+(e-.5)*m,r=Math.cos(t),s=Math.sin(t),c=1/Math.cos(m/2),l=n[0]+i*c*r*d[0]+a*c*s*f[0],u=n[1]+i*c*r*d[1]+a*c*s*f[1],p=n[2]+i*c*r*d[2]+a*c*s*f[2];h.push(l,u,p),g.push(Math.cos(m/2))}h.push(c,l,u),g.push(1)}let _=[,,,].fill(0);for(let e=1;e<p;e++)_.push(e,e);_.push(...[,,,].fill(p));let v=t(_,_.length-1);for(let e=0;e<_.length;e++)_[e]=t(_,e)/v;let y=t(h,0),b=t(h,1),x=t(h,2),S=t(h,h.length-3),C=t(h,h.length-2),w=t(h,h.length-1);return _f(e.makeNurbsEdge(y,b,x,S,C,w,2,_,h,g))}function Ah(e){return{makeVertex:(t,n,r)=>Vm(e,t,n,r),makeEdge:(t,n,r)=>Hm(e,t,n,r),makeWire:t=>Um(e,t),makeWireFromMixed:t=>ch(e,t),makeFace:(t,n)=>Wm(e,t,n),makeBox:(t,n,r)=>Gm(e,t,n,r),makeRectangle:(t,n)=>Km(e,t,n),makeCylinder:(t,n,r,i)=>qm(e,t,n,r,i),makeSphere:(t,n)=>Jm(e,t,n),makeCone:(t,n,r,i,a)=>Ym(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Xm(e,t,n,r,i),makeEllipsoid:(t,n,r)=>Zm(e,t,n,r),makeLineEdge:(t,n)=>Qm(e,t,n),makeCircleEdge:(t,n,r)=>$m(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>eh(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>nh(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>rh(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>ih(e,t,n,r,i,a,o,s),makeBezierEdge:t=>ah(e,t),makeTangentArc:(t,n,r)=>oh(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>sh(e,t,n,r,i,a,o),makeCompound:t=>lh(e,t),makeBoxFromCorners:(t,n)=>uh(e,t,n),solidFromShell:t=>dh(e,t),makeNonPlanarFace:t=>fh(e,t),addHolesInFace:(t,n)=>ph(e,t,n),removeHolesFromFace:t=>mh(e,t),makeFaceOnSurface:(t,n)=>hh(e,t,n),bsplineSurface:(t,n,r)=>gh(e,t,n,r),triangulatedSurface:(t,n,r)=>_h(e,t,n,r),buildTriFace:(t,n,r)=>vh(e,t,n,r),sewAndSolidify:(t,n)=>yh(e,t,n),interpolatePoints:(t,n)=>bh(e,t,n),approximatePoints:(t,n)=>xh(e,t,n),createPoint3d:(t,n,r)=>Sh(e,t,n,r),createDirection3d:(t,n,r)=>Ch(e,t,n,r),createVector3d:(t,n,r)=>wh(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>Th(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Eh(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>Dh(e,t,n,r,i,a,o,s,c,l)}}function jh(e,t,n,r){let i=Sf(t,`fillet`),a=n.map(e=>k(e,`edge`));if(typeof r==`number`)return O(e.fillet(i,a,r));let o=[];for(let[e,t]of n.entries()){let n=a[e]??0,i;i=typeof r==`function`?r(t):r;let[s,c]=Array.isArray(i)?i:[i,i];o.push({edge:n,startRadius:s,endRadius:c})}return O(e.filletVariable(i,JSON.stringify(o)))}function Mh(e,t,n,r){let i=Sf(t,`chamfer`),a=n.map(e=>k(e,`edge`));if(typeof r==`number`)return O(e.chamfer(i,a,r));if(Array.isArray(r)){let[t,n]=r;return typeof e.chamferAsymmetric==`function`?O(e.chamferAsymmetric(i,a,t,n)):(Rf(`chamfer-asymmetric`,`chamferAsymmetric not available; using averaged distance.`),O(e.chamfer(i,a,(t+n)/2)))}let o=new Map;for(let[e,t]of n.entries()){let n=r(t),i=a[e];if(i===void 0)continue;let[s,c]=Array.isArray(n)?n:[n,n],l=`${s},${c}`,u=o.get(l);u?u.ids.push(i):o.set(l,{ids:[i],d1:s,d2:c})}let s=i;for(let t of o.values())t.d1===t.d2?s=e.chamfer(s,t.ids,t.d1):typeof e.chamferAsymmetric==`function`?s=e.chamferAsymmetric(s,t.ids,t.d1,t.d2):(Rf(`chamfer-callback`,`chamferAsymmetric not available; asymmetric edges use averaged distance.`),s=e.chamfer(s,t.ids,(t.d1+t.d2)/2));return O(s)}function Nh(e,t,n,r,i){let a=r*Math.tan(i*Math.PI/180),o=Sf(t,`chamferDistAngle`),s=n.map(e=>k(e,`edge`));return typeof e.chamferAsymmetric==`function`?O(e.chamferAsymmetric(o,s,r,a)):(Rf(`chamfer-dist-angle`,`chamferAsymmetric not available; using averaged distance.`),O(e.chamfer(o,s,(r+a)/2)))}function Ph(e,n){let r=A(e.getFaceVertices(n));if(r.length<1)return null;let i=0,a=0,o=0;for(let n of r){let r=e.getVertexPosition(n);i+=t(r,0),a+=t(r,1),o+=t(r,2)}let s=r.length;return{x:i/s,y:a/s,z:o/s}}function Fh(e,t,n){try{let r=e.getFaceNormal(t),i=-1,a=-2;for(let t of n)try{let n=e.getFaceNormal(t),o=(r[0]??0)*(n[0]??0)+(r[1]??0)*(n[1]??0)+(r[2]??0)*(n[2]??0);o>a&&(a=o,i=t)}catch{}if(i>=0&&a>.99)return i}catch{}return null}function Ih(e,t,n){try{let r=Ph(e,t);if(r===null)return null;let i=-1,a=1/0;for(let t of n)try{let n=Ph(e,t);if(n===null)continue;let o=Math.sqrt((r.x-n.x)**2+(r.y-n.y)**2+(r.z-n.z)**2);o<a&&(a=o,i=t)}catch{}if(i>=0&&a<.001)return i}catch{}return null}function Lh(e,t,n,r){if(r.has(t))return t;let i=Fh(e,t,n);if(i!==null)return i;let a=Ih(e,t,n);return a===null?t:a}function Rh(e,t,n,r,i){i!==void 0&&Rf(`shell-tolerance`,`shell() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let a=Sf(t,`shell`),o=A(e.getSolidFaces(a)),s=new Set(o),c=n.map(t=>Lh(e,k(t,`face`),o,s));return O(e.shell(a,r,c))}function zh(e,t,n){let r=t;if(r.type===`face`)return O(e.thicken(r.id,n));throw Error(`brepkit: thicken() requires a face`)}function Bh(e,t,n,r){r!==void 0&&Rf(`offset-tolerance`,`offset() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let i=t;if(i.type===`face`)return O(e.thicken(i.id,n));let a=Sf(t,`offset`);return O(e.offsetSolidV2(a,n))}function Vh(e,t,n){let r=Sf(t,`filletVariable`);return O(e.filletVariable(r,n))}function Hh(e,t,n,r,i,a){let o=Sf(t,`draft`),s=n.map(e=>k(e,`face`));return O(e.draft(o,s,r[0],r[1],r[2],i[0],i[1],i[2],a))}function Uh(e,t,n){let r=Sf(t,`defeature`),i=n.map(e=>k(e,`face`));return O(e.defeature(r,i))}function Wh(e){switch(e){case`arc`:case`tangent`:return`arc`;case`intersection`:return`intersection`;default:return`intersection`}}function Gh(e,n,r,i){if(typeof e.offsetWire2DWithJoin==`function`)return vf(e.offsetWire2DWithJoin(k(n,`wire`),r,Wh(i)));let a=Qf(e,n,`edge`);if(a.length===0)return n;let o=[];for(let n of a){let r=e.getEdgeVertices(k(n,`edge`));o.push(t(r,0),t(r,1))}if(o.length<6)return n;let s=e.offsetPolygon2d(o,r,1e-10),c=[];for(let e=0;e<s.length;e+=2)c.push(t(s,e),t(s,e+1),0);return vf(e.makePolygonWire(c))}function Kh(e,t){if(t.type===`solid`)try{e.healSolid(k(t))}catch(e){console.warn(`brepkit: healing failed in simplify:`,e)}return t}function qh(e,t){let n=t,r=e.reverseShape(n.id);return hf(n.type,r)}function Jh(e){return{fillet:(t,n,r)=>jh(e,t,n,r),chamfer:(t,n,r)=>Mh(e,t,n,r),chamferDistAngle:(t,n,r,i)=>Nh(e,t,n,r,i),shell:(t,n,r,i)=>Rh(e,t,n,r,i),thicken:(t,n)=>zh(e,t,n),offset:(t,n,r)=>Bh(e,t,n,r),filletVariable:(t,n)=>Vh(e,t,n),draft:(t,n,r,i,a)=>Hh(e,t,n,r,i,Uf(n,a)),defeature:(t,n)=>Uh(e,t,n),offsetWire2D:(t,n,r)=>Gh(e,t,n,r),simplify:t=>Kh(e,t),reverseShape:t=>qh(e,t)}}function Yh(e,t){let n=JSON.parse(e),r=n.evolution;if(!r||typeof r.modified!=`object`||typeof r.generated!=`object`)throw Error(`brepkit: invalid evolution JSON structure`);let i=O(n.solid),a=e=>{let n=new Map;for(let[r,i]of Object.entries(e)){let e=Number(r)%t,a=i.map(e=>e%t),o=n.get(e);o?o.push(...a):n.set(e,a)}return n},o=a(r.modified),s=a(r.generated),c=new Set;for(let e of r.deleted)c.add(e%t);return{shape:i,evolution:{modified:o,generated:s,deleted:c}}}function Xh(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function Zh(e,n){try{let r=e.tessellateFace(n,1).positions;if(r.length<3)return[0,0,0];let i=0,a=0,o=0,s=r.length/3;for(let e=0;e<r.length;e+=3)i+=t(r,e),a+=t(r,e+1),o+=t(r,e+2);return[i/s,a/s,o/s]}catch{return[0,0,0]}}function Qh(e,t,n){try{return{hash:n,normal:e.getFaceNormal(t),centroid:Zh(e,t)}}catch{return{hash:n,normal:[0,0,0],centroid:Zh(e,t)}}}var $h=.707,eg=100,tg=.05;function ng(e,n){let r=-1/0,i=[];for(let a=0;a<n.length;a++){let o=t(n,a),s=(e.normal[0]??0)*(o.normal[0]??0)+(e.normal[1]??0)*(o.normal[1]??0)+(e.normal[2]??0)*(o.normal[2]??0);if(s<$h)continue;let c=Xh(e.centroid,o.centroid);if(c>eg)continue;let l=s-c/eg;l>r&&(r=l),i.push({idx:a,score:l})}return{matches:i,bestScore:r}}function rg(e,t){let n=1/0,r;for(let i of t){let t=Xh(e.centroid,i.centroid);t<n&&(n=t,r=i)}return r}function ig(e,n,r,i,a,o,s,c){let l=n;if(l.type!==`solid`)return;let u=A(e.getSolidFaces(l.id)),d=Math.min(u.length,r.length),f=[];for(let n=0;n<d;n++){let i=t(u,n);f.push(Qh(e,i,r[n]??i%a))}let p=i.map(t=>Qh(e,t,t%a)),m=new Set;for(let e of p){let{matches:n,bestScore:r}=ng(e,f);if(n.length>0){for(let i of n)if(i.score>=r-tg){let n=t(f,i.idx),r=o.get(n.hash)??[];r.push(e.hash),o.set(n.hash,r),m.add(i.idx)}}else{let t=rg(e,f);if(t){let n=s.get(t.hash)??[];n.push(e.hash),s.set(t.hash,n)}}}for(let e=0;e<f.length;e++)m.has(e)||c.add(t(f,e).hash)}function ag(e,t,n,r,i,a,o,s){let c=new Set(s),l=new Map(a);ig(e,t,n,r,i,a,o,s),s.clear();for(let e of c)s.add(e);for(let e of n){let t=!l.has(e)&&a.has(e)&&(a.get(e)?.length??0)>0,n=o.has(e)&&(o.get(e)?.length??0)>0;!t&&!n&&s.add(e)}}function og(e,n,r,i,a,o){let s=n.filter(e=>!r.has(e));s.length>0&&e.length>0&&a.set(t(e,0),s);for(let t of e)i.has(t)||o.add(t)}function sg(e,n,r,i,a,o,s,c,l){let u=new Set(i);if(r.some(e=>u.has(e))){let t=new Set(r);for(let e of r)u.has(e)&&o.set(e,[e]);let d=i.filter(e=>!t.has(e)),f=n.filter(e=>!u.has(e%a));l&&d.length>0&&f.length>0?ag(e,l,d,f,a,o,s,c):og(i,r,u,t,s,c)}else if(l)ig(e,l,i,n,a,o,s,c);else{for(let e=0;e<i.length&&e<r.length;e++)o.set(t(i,e),[t(r,e)]);r.length>i.length&&i.length>0&&s.set(t(i,0),r.slice(i.length))}}function cg(e,n,r,i,a,o){let s=n,c=new Map,l=new Map,u=new Set;if(s.type===`solid`){let n=A(e.getSolidFaces(s.id)),d=n.map(e=>e%i);if(a)for(let e=0;e<r.length&&e<d.length;e++)c.set(t(r,e),[t(d,e)]);else sg(e,n,d,r,i,c,l,u,o)}return{shape:n,evolution:{modified:c,generated:l,deleted:u}}}function lg(e,t,n,r,i){for(let[a,o]of e){let s=[];for(let e of o){r.add(e);let i=t.get(e);i?s.push(...i):n.has(e)||s.push(e)}s.length>0?e.set(a,s):(e.delete(a),i?.add(a))}}function ug(e,t){let n=new Set;lg(t.combinedModified,e.evolution.modified,e.evolution.deleted,n,t.combinedDeleted),lg(t.combinedGenerated,e.evolution.modified,e.evolution.deleted,n);for(let[r,i]of e.evolution.modified)t.combinedModified.has(r)||n.has(r)||t.combinedModified.set(r,[...i]);for(let[r,i]of e.evolution.generated){if(n.has(r))continue;let e=t.combinedGenerated.get(r)??[];t.combinedGenerated.set(r,[...e,...i])}for(let n of e.evolution.deleted)t.inputFaceHashSet.has(n)&&t.combinedDeleted.add(n)}function dg(e,t,n,r,i,a){let o=A(e.getCompoundSolids(n)),s=t,c={combinedModified:new Map,combinedGenerated:new Map,combinedDeleted:new Set,inputFaceHashSet:new Set(r)};for(let e of o){let t=s;if(t.type!==`solid`)break;let n=Yh(a(t.id,e),i);s=n.shape,ug(n,c)}return{shape:s,accum:c}}function fg(e,t,n,r,i,a,o,s,c){let l={hasErrors:!1,hasWarnings:!1,messages:[]},u=t,d=n;if(r.length>0&&u.type===`solid`){if(d.type===`solid`)try{return{...Yh(o(u.id,d.id),i),diagnostics:l}}catch(e){if(!Tm(e))throw e}if(d.type===`compound`){let{shape:n,accum:a}=dg(e,t,d.id,r,i,o);return{shape:n,evolution:{modified:a.combinedModified,generated:a.combinedGenerated,deleted:a.combinedDeleted},diagnostics:l}}}return{...cg(e,s(t,n,a),r,i,!1,t),diagnostics:l}}function pg(e,t,n,r,i,a,o){return cg(e,Xp(e,t,n,r,i),a,o,!0)}function mg(e,t,n,r,i,a,o){return cg(e,Zp(e,t,n*180/Math.PI,a,o),r,i,!0)}function hg(e,t,n,r,i,a){return cg(e,Qp(e,t,n,r),i,a,!0)}function gg(e,t,n,r,i,a){return cg(e,$p(e,t,n,r),i,a,!0)}function _g(e,t,n,r,i,a,o){return cg(e,em(e,t,n,r,i),a,o,!0)}function vg(e,t,n,r,i,a){return fg(e,t,n,r,i,a,(t,n)=>e.fuseWithEvolution(t,n),(t,n,r)=>Om(e,t,n,r),`fuseWithHistory`)}function yg(e,t,n,r,i,a){return fg(e,t,n,r,i,a,(t,n)=>e.cutWithEvolution(t,n),(t,n,r)=>km(e,t,n,r),`cutWithHistory`)}function bg(e,t,n,r,i,a){return fg(e,t,n,r,i,a,(t,n)=>e.intersectWithEvolution(t,n),(t,n,r)=>Am(e,t,n,r),`intersectWithHistory`)}function xg(e,t,n,r,i,a){return cg(e,jh(e,t,n,r),i,a,!1,t)}function Sg(e,t,n,r,i,a){return cg(e,Mh(e,t,n,r),i,a,!1,t)}function Cg(e,t,n,r,i,a,o){return cg(e,Rh(e,t,n,r,o),i,a,!1,t)}function wg(e,t,n,r,i){return cg(e,zh(e,t,n),r,i,!1,t)}function Tg(e,t,n,r,i,a){return cg(e,Bh(e,t,n,a),r,i,!1,t)}function Eg(e,t,n,r,i,a,o,s){return cg(e,Hh(e,t,n,r,i,a),o,s,!1,t)}function Dg(e,t,n,r,i){return cg(e,cm(e,t,n),r,i,!0)}function Og(e,t){let n=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];for(let e of t)n=Mf(e.type===`translate`?Ef(e.x,e.y,e.z):Of(e.angle,e.axis,e.center),n);return{handle:n,dispose:()=>{}}}function kg(e){return{translateWithHistory:(t,n,r,i,a,o)=>pg(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>mg(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>hg(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>gg(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>_g(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>vg(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>yg(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>bg(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>xg(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>Sg(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>Cg(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>wg(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>Tg(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>Eg(e,t,n,r,i,Uf(n,a),o,s),applyComposedTransformWithHistory:(t,n,r,i)=>Dg(e,t,n,r,i),composeTransform:t=>Og(e,t)}}function Ag(e,t,n){let r=k(t),i=t,a=n.tolerance||.01,o=n.angularTolerance>0?n.angularTolerance:void 0,s;if(i.type===`solid`)s=Ng(e,r,a,!!n.includeUVs,o);else if(i.type===`face`)s=Rg(e,r,a,0,o);else throw Error(`brepkit: cannot mesh shape of type '${i.type}'`);return n.skipNormals&&(s.normals=new Float32Array),n.includeUVs||(s.uvs=new Float32Array),s}function jg(e,r,i,a){let o=r;if(o.type!==`solid`)return{lines:new Float32Array,edgeGroups:[]};let s=a>0?a:void 0,c=e.meshEdgesAll(o.id,i,s),l=c.positions,u=c.offsets,d=c.edgeCount,f=[],p=[];for(let e=0;e<d;e++){let r=t(u,e),i=((e+1<d?t(u,e+1):l.length)-r)/3,a=f.length/3;for(let e=0;e+1<i;e++){let t=r+e*3,[i,a,o]=n(l,t),[s,c,u]=n(l,t+3);i===s&&a===c&&o===u||f.push(i,a,o,s,c,u)}p.push({start:a,count:f.length/3-a,edgeHash:e})}return{lines:new Float32Array(f),edgeGroups:p}}function Mg(e,t){return!1}function Ng(e,t,n,r,i){try{return Pg(e,t,n,r,i)}catch(r){return console.warn(`brepkit: tessellateSolidGrouped failed (solidId=${t}), falling back to per-face:`,r),Lg(e,t,n,i)}}function Pg(e,t,n,r,i){return typeof e.tessellateSolidGroupedBinary==`function`?Fg(e,t,n,r,i,e.tessellateSolidGroupedBinary(t,n,i)):Ig(e,t,n,r,i)}function Fg(e,n,r,i,a,o){let s=o.positions,c=o.normals,l=o.indices,u=o.faceOffsets,d=A(e.getSolidFaces(n)),f=u.length-1;if(f!==d.length)throw Error(`faceOffsets/faceIds length mismatch: ${f} groups vs ${d.length} faces`);let p=[];for(let e=0;e<u.length-1;e++){let n=t(u,e),r=t(u,e+1)-n;r!==0&&p.push({start:n,count:r,faceHash:d[e]??0})}let m=new Float32Array;if(i){let t=s.length/3*2;try{let i=e.tessellateSolidUV(n,r,a),o=JSON.parse(i);m=o.uvs.length===t?new Float32Array(o.uvs):new Float32Array(t)}catch{m=new Float32Array(t)}}return{vertices:s,normals:c,triangles:l,uvs:m,faceGroups:p}}function Ig(e,n,r,i,a){let o=e.tessellateSolidGrouped(n,r,a),s=JSON.parse(o),c=A(e.getSolidFaces(n)),l=s.faceOffsets.length-1;if(l!==c.length)throw Error(`faceOffsets/faceIds length mismatch: ${l} groups vs ${c.length} faces`);let u=[];for(let e=0;e<s.faceOffsets.length-1;e++){let n=t(s.faceOffsets,e),r=t(s.faceOffsets,e+1)-n;r!==0&&u.push({start:n,count:r,faceHash:c[e]??0})}let d=new Float32Array;if(i){let t=s.positions.length/3*2;try{let i=e.tessellateSolidUV(n,r,a),o=JSON.parse(i);d=o.uvs.length===t?new Float32Array(o.uvs):new Float32Array(t)}catch{d=new Float32Array(t)}}return{vertices:new Float32Array(s.positions),normals:new Float32Array(s.normals),triangles:new Uint32Array(s.indices),uvs:d,faceGroups:u}}function Lg(e,t,n,r){let i=A(e.getSolidFaces(t)),a=[],o=[],s=[],c=[],l=[],u=0;for(let t of i)try{let i=e.tessellateFace(t,n,r),d=i.positions,f=i.normals,p=i.indices,m=d.length/3;if(m===0)continue;let h=s.length;for(let e of d)a.push(e);for(let e of f)o.push(e);for(let e of p)s.push(e+u);for(let e=0;e<m;e++)c.push(0,0);l.push({start:h,count:p.length,faceHash:t}),u+=m}catch(e){console.warn(`brepkit: face tessellation failed (faceId=${t}):`,e)}return{vertices:new Float32Array(a),normals:new Float32Array(o),triangles:new Uint32Array(s),uvs:new Float32Array(c),faceGroups:l}}function Rg(e,t,n,r,i){let a=e.tessellateFace(t,n,i),o=a.positions,s=a.normals,c=a.indices,l=o.length/3,u=[];for(let e=0;e<l;e++)u.push(0,0);return{vertices:new Float32Array(o),normals:new Float32Array(s),triangles:new Uint32Array(c),uvs:new Float32Array(u),faceGroups:[{start:0,count:c.length,faceHash:r}]}}function zg(e){return{mesh:(t,n)=>Ag(e,t,n),meshEdges:(t,n,r)=>jg(e,t,n,r),hasTriangulation:t=>Mg(e,t),meshShape:(e,t,n)=>{}}}function Bg(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=Cf(e,r,`exportSTEP`);for(let r of t){let t=e.exportStep(r);n.push(new TextDecoder().decode(t))}}return n.join(`
7
+ `).buffer}function Lr(e,t){return e.toBREP(E(t))}function Rr(e,t){return D(e,e.fromBREP(t))}function zr(e,t,n){let r=e.xcafNewDocument();for(let t of n){let n=e.xcafAddShape(r,E(t.shape));if(t.name&&e.xcafSetName(r,n,t.name),t.color){let[i,a,o]=t.color;e.xcafSetColor(r,n,i/255,a/255,o/255)}}return T(`compound`,r)}function Br(e,t,n){let r=E(t),i=e.xcafGetRootLabels(r),a=(()=>{try{return i.size()>0}finally{i.delete()}})();try{return a?e.xcafExportSTEP(r):``}finally{e.xcafClose(r)}}function Vr(e,t,n,r){if(n.length===0)return``;let i=zr(e,t,n.map(e=>({shape:e.shape,name:e.name??``,color:e.color})));try{return Br(e,i)}finally{i.delete()}}function Hr(e,t,n,r){return T(`vertex`,e.makeVertex(t,n,r))}function Ur(e,t){throw Pe(t)?Error(`occt-wasm: makeEdge from curve handle is not implemented`):Error(`occt-wasm: makeEdge is not implemented`)}function Wr(e,t,n){let r=Ie(t,n.map(E));try{return T(`wire`,e.makeWire(r))}finally{r.delete()}}function Gr(e,t,n){let r=[],i=new Set(n.map(e=>E(e)));for(let t of n){let n=e.getSubShapes(E(t),`edge`);try{let e=n.size();for(let t=0;t<e;t++)r.push(n.get(t))}finally{n.delete()}}let a=Ie(t,r);try{return T(`wire`,e.makeWire(a))}finally{a.delete();for(let t of r)i.has(t)||e.release(t)}}function Kr(e,t,n){return T(`face`,e.makeFace(E(t)))}function qr(e,t,n){return T(`edge`,e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function Jr(e,t,n,r){return T(`edge`,e.makeCircleEdge(t[0],t[1],t[2],n[0],n[1],n[2],r))}function Yr(e,t,n,r,i,a){return T(`edge`,e.makeCircleArc(t[0],t[1],t[2],n[0],n[1],n[2],r,i,a))}function Xr(e,t,n,r){return T(`edge`,e.makeArcEdge(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function Zr(e,t,n,r,i){return T(`edge`,e.makeEllipseEdge(t[0],t[1],t[2],n[0],n[1],n[2],r,i))}function Qr(e,t,n,r,i,a,o){return T(`edge`,e.makeEllipseArc(t[0],t[1],t[2],n[0],n[1],n[2],r,i,a,o))}function $r(e,t,n){let r=[];for(let e of n)r.push(e[0],e[1],e[2]);let i=Re(t,r);try{return T(`edge`,e.makeBezierEdge(i))}finally{i.delete()}}function ei(e,t,n,r){let[i,a,o]=t,[s,c,l]=n,[u,d,f]=r;return T(`edge`,e.makeTangentArc(i,a,o,s,c,l,u,d,f))}function ti(e,t,n,r,i,a){let o=i?i[0]:0,s=i?i[1]:0,c=i?i[2]:0,l=a?a[0]:0,u=a?a[1]:0,d=a?a[2]:1,f=e.makeHelixWire(o,s,c,l,u,d,t,n,r);return e.buildCurves3d(f),T(`wire`,f)}function ni(e,t,n){let r=Ie(t,n.map(E));try{return T(`compound`,e.makeCompound(r))}finally{r.delete()}}function ri(e,t){return T(`solid`,e.solidFromShell(E(t)))}function ii(e,t,n,r,i){let a=[];for(let[t,i,o]of r){let r=n[t],s=n[i],c=n[o];!r||!s||!c||a.push(e.buildTriFace(r.x,r.y,r.z,s.x,s.y,s.z,c.x,c.y,c.z))}let o=Ie(t,a);try{let t=e.sewAndSolidify(o,i),n=e.fixFaceOrientations(t);return n!==t&&e.release(t),D(e,n)}finally{o.delete();for(let t of a)e.release(t)}}function ai(e,t){return T(`face`,e.makeNonPlanarFace(E(t)))}function oi(e,t,n,r){let i=Ie(t,r.map(E));try{return T(`face`,e.addHolesInFace(E(n),i))}finally{i.delete()}}function si(e,t,n){let r=e.getSubShapes(E(n),`wire`),i=(()=>{try{return r.size()-1}finally{r.delete()}})(),a=[];for(let e=0;e<i;e++)a.push(e);let o=Le(t,a);try{return T(`face`,e.removeHolesFromFace(E(n),o))}finally{o.delete()}}function ci(e,t,n){let r=E(t);return T(`face`,e.makeFaceOnSurface(r,E(n)))}function li(e,t,n,r,i){let a=new t.VectorDouble;for(let[e,t,r]of n)a.push_back(e),a.push_back(t),a.push_back(r);try{return T(`face`,e.bsplineSurface(a,r,i))}finally{a.delete()}}function ui(e,t,n,r,i){let a=[];for(let t=0;t<r-1;t++)for(let r=0;r<i-1;r++){let o=t*i+r,s=(t+1)*i+r,c=t*i+(r+1),l=(t+1)*i+(r+1),u=n[o],d=n[s],f=n[c],p=n[l];u&&d&&f&&a.push(e.buildTriFace(u[0],u[1],u[2],d[0],d[1],d[2],f[0],f[1],f[2])),d&&p&&f&&a.push(e.buildTriFace(d[0],d[1],d[2],p[0],p[1],p[2],f[0],f[1],f[2]))}let o=Ie(t,a);try{return D(e,e.sewAndSolidify(o,.001))}finally{o.delete();for(let t of a)e.release(t)}}function di(e,t,n,r){let i=e.buildTriFace(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]);return i===0?null:T(`face`,i)}function fi(e,t,n,r){let i=Ie(t,n.map(E));try{let t=e.sewAndSolidify(i,r),n=e.fixFaceOrientations(t);return n!==t&&e.release(t),T(`solid`,n)}finally{i.delete()}}function pi(e,t,n){return{x:e,y:t,z:n,__type:`point3d`,delete:Ne}}function mi(e,t,n){return{x:e,y:t,z:n,__type:`direction3d`,delete:Ne}}function hi(e,t,n){return{x:e,y:t,z:n,__type:`vector3d`,delete:Ne}}function gi(e,t,n,r,i,a){return{origin:{x:e,y:t,z:n},direction:{x:r,y:i,z:a},__type:`axis1`,delete:Ne}}function _i(e,t,n,r,i,a,o,s,c){return{origin:{x:e,y:t,z:n},zDir:{x:r,y:i,z:a},xDir:o===void 0?void 0:{x:o,y:s,z:c},__type:`axis2`,delete:Ne}}function vi(e,t,n,r,i,a,o,s,c){return{origin:{x:e,y:t,z:n},zDir:{x:r,y:i,z:a},xDir:o===void 0?void 0:{x:o,y:s,z:c},__type:`axis3`,delete:Ne}}function yi(e){return e}function bi(e){return e}function xi(e,t){return{x:e,y:t}}function Si(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`occt-wasm: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function Ci(e,t){return{x:e,y:t}}function wi(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete(){}}}function Ti(e){return e}function Ei(e,t,n,r){return bi(te(e,t,n,r))}function Di(e,t,n,r){return bi(ne(e,t,n,r))}function Oi(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));if(Math.abs(o)<1e-12)return bi(te(e,t,i,a));let s=((e*e+t*t)*(r-a)+(n*n+r*r)*(a-t)+(i*i+a*a)*(t-r))/o,c=((e*e+t*t)*(i-n)+(n*n+r*r)*(e-i)+(i*i+a*a)*(n-e))/o,l=Math.sqrt((e-s)**2+(t-c)**2),u=Math.atan2(t-c,e-s),d=Math.atan2(r-c,n-s),f=Math.atan2(a-c,i-s),p=d-u;p<0&&(p+=2*Math.PI);let m=f-u;m<0&&(m+=2*Math.PI);let h=p<m,g=ne(s,c,l,h);if(!h){let e=-u,t=-f;return t<e-1e-9&&(t+=2*Math.PI),bi({__bk2d:`trimmed`,basis:g,tStart:e,tEnd:t})}let _=f;return _<u-1e-9&&(_+=2*Math.PI),bi({__bk2d:`trimmed`,basis:g,tStart:u,tEnd:_})}function ki(e,t,n,r,i,a){let o=Math.sqrt(n*n+r*r),s=o>0?n/o:0,c=o>0?r/o:0,l=e-i,u=t-a,d=2*(u*s-l*c);if(Math.abs(d)<1e-12)return bi(te(e,t,i,a));let f=-(l*l+u*u)/d,p=e-f*c,m=t+f*s,h=Math.abs(f),g=Math.atan2(t-m,e-p),_=Math.atan2(a-m,i-p),v=-(t-m)/h,y=(e-p)/h,b=v*s+y*c>0,x=ne(p,m,h,b);if(!b){let e=-g,t=-_;return t<e-1e-9&&(t+=2*Math.PI),bi({__bk2d:`trimmed`,basis:x,tStart:e,tEnd:t})}let S=_;return S<g-1e-9&&(S+=2*Math.PI),bi({__bk2d:`trimmed`,basis:x,tStart:g,tEnd:S})}function Ai(e,t,n,r,i,a,o){return bi(ae(e,t,n,r,i??1,a??0,o??!0))}function ji(e,t,n,r,i,a,o,s,c){return bi({...ae(e,t,n,r,o??1,s??0,c??!0),__bk2d:`ellipse`,startAngle:i,endAngle:a})}function Mi(e){return bi(oe(e))}function Ni(e,t){let n=e,r=n.length,i=Math.max(1,Math.min(t?.degMax??3,r-1)),a=[0],o=[i+1],s=r-i-1;for(let e=1;e<=s;e++)a.push(e/(s+1)),o.push(1);return a.push(1),o.push(i+1),bi({__bk2d:`bspline`,poles:n,knots:a,multiplicities:o,degree:i,isPeriodic:!1})}function Pi(e,t){return S(yi(e),t)}function Fi(e,t){return{point:S(yi(e),t),tangent:C(yi(e),t)}}function Ii(e){return w(yi(e))}function Li(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return ee(t)}function Ri(e,t,n){return bi({__bk2d:`trimmed`,basis:yi(e),tStart:t,tEnd:n})}function zi(e){return bi(JSON.parse(JSON.stringify(yi(e))))}function Bi(e,t){let n=yi(e),r=w(n),i=[];for(let e=0;e<=20;e++){let a=r.first+(r.last-r.first)*e/20,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l)||1;i.push([o-l/u*t,s+c/u*t])}return bi(oe(i.length<=25?i:i.filter((e,t)=>t%2==0||t===i.length-1)))}function Vi(e,t,n){return bi(se(yi(e),t,n))}function Hi(e,t,n,r){return bi(ce(yi(e),t,n,r))}function Ui(e,t,n,r){return bi(le(yi(e),t,n,r))}function Wi(e,t,n){return bi(ue(yi(e),t,n))}function Gi(e,t,n,r,i){return bi(de(yi(e),t,n,r,i))}function Ki(e,t,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return e;let s=-i/o,c=r/o,l=a-1,u=1+l*s*s,d=l*s*c,f=l*c*s,p=1+l*c*c,m=t-u*t-d*n,h=n-f*t-p*n,g=yi(e),_=w(g),v=[];for(let e=0;e<=20;e++){let[t,n]=S(g,_.first+(_.last-_.first)*e/20);v.push([u*t+d*n+m,f*t+p*n+h])}return bi(oe(v))}function qi(e,t,n,r,i,a){return Ki(e,t,n,r,i,a)}function Ji(){return{type:`identity2d`,delete(){}}}function Yi(e,t,n,r,i){return{type:`affinity2d`,axOriginX:e,axOriginY:t,axDirX:n,axDirY:r,ratio:i,delete(){}}}function Xi(e,t){return{type:`translate2d`,dx:e,dy:t,delete(){}}}function Zi(e,t,n,r,i,a,o){return{type:`mirror2d`,cx:e,cy:t,mode:n,originX:r,originY:i,dirX:a,dirY:o,delete(){}}}function Qi(e,t,n){return{type:`rotate2d`,angle:e,cx:t,cy:n,delete(){}}}function $i(e,t,n){return{type:`scale2d`,sx:e,sy:e,cx:t,cy:n,delete(){}}}function ea(e,t,n){let r=e;r.dx=(Number(r.dx)||0)+t,r.dy=(Number(r.dy)||0)+n}function ta(e,t){let n=e,r=t;n.dx=(Number(n.dx)||0)+(Number(r.dx)||0),n.dy=(Number(n.dy)||0)+(Number(r.dy)||0),r.type===`scale2d`&&(n.type=`scale2d`,n.sx=r.sx,n.sy=r.sy)}function na(e,t){let n=t;return n.type===`translate2d`?Vi(e,Number(n.dx)||0,Number(n.dy)||0):n.type===`rotate2d`?Hi(e,Number(n.angle)||0,Number(n.cx)||0,Number(n.cy)||0):n.type===`scale2d`?Ui(e,Number(n.sx)||1,Number(n.cx)||0,Number(n.cy)||0):n.type===`mirror2d`?Wi(e,Number(n.ox)||0,Number(n.oy)||0):n.type===`affinity2d`?Ki(e,Number(n.axOriginX)||0,Number(n.axOriginY)||0,Number(n.axDirX)||0,Number(n.axDirY)||0,Number(n.ratio)||1):Number(n.dx)||Number(n.dy)?Vi(e,Number(n.dx)||0,Number(n.dy)||0):e}function ra(e,t,n){let r=fe(yi(e),yi(t),n);return{points:r.points,segments:r.segments.map(e=>bi(e))}}function ia(e,t,n){let r=yi(e),i=w(r),a=(e,r,i)=>{if(e.__bk2d===`line`){let a=(t-e.ox)*e.dx+(n-e.oy)*e.dy,o=Math.max(r,Math.min(i,a)),[s,c]=S(e,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}let a=r,o=1/0;for(let s=0;s<=200;s++){let c=r+(i-r)*s/200,[l,u]=S(e,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}return{param:a,distance:Math.sqrt(o)}};if(r.__bk2d===`trimmed`){let e=r.tStart,t=r.tEnd,n=a(r.basis,e,t);if(!n)return null;let i=t-e,o=i>1e-15?(n.param-e)/i:0;return{param:Math.max(0,Math.min(1,o)),distance:n.distance}}return a(r,i.first,i.last)}function aa(e,t,n,r,i,a){let o=1/0;for(let s=0;s<=20;s++){let c=n+(r-n)*(s/20),[l,u]=S(yi(e),c);for(let e=0;e<=20;e++){let n=i+(a-i)*(e/20),[r,s]=S(yi(t),n),c=Math.sqrt((r-l)**2+(s-u)**2);c<o&&(o=c)}}return o}function oa(e,t){let n=yi(e),r=w(n),i=Math.min(Math.max(t+1,10),100),a=[];for(let e=0;e<i;e++){let t=r.first+(r.last-r.first)*e/(i-1);a.push(S(n,t))}let o=Math.min(3,i-1),s=a.length,c=[],l=[],u=s-o-1;c.push(0),l.push(o+1);for(let e=1;e<=u;e++)c.push(e/(u+1)),l.push(1);return c.push(1),l.push(o+1),bi({__bk2d:`bspline`,poles:a,knots:c,multiplicities:l,degree:o,isPeriodic:!1})}function sa(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;if(t.__bk2d!==`bspline`)return[e];let n=t.poles,r=t.degree,i=[];for(let e=0;e<t.knots.length;e++){let n=t.knots[e]??0,r=t.multiplicities[e]??0;for(let e=0;e<r;e++)i.push(n)}let a=n.length-1+r+1;if(r<1||i.length!==a+1)return[bi(oe(n))];let o=e=>[e[0],e[1]],s=[],c=r,l=r+1,u=[];for(let e=0;e<=r;e++)u[e]=o(n[e]);let d=[];for(;l<a;){let e=l;for(;l<a&&i[l+1]===i[l];)l++;let t=l-e+1;if(t<r){let e=i[l]-i[c],n=[];for(let a=r;a>t;a--)n[a-t-1]=e/(i[c+a]-i[c]);let s=r-t;for(let e=1;e<=s;e++){let i=s-e,c=t+e;for(let e=r;e>=c;e--){let t=n[e-c],r=u[e],i=u[e-1];u[e]=[t*r[0]+(1-t)*i[0],t*r[1]+(1-t)*i[1]]}l<a&&(d[i]=o(u[r]))}}if(s.push(u),l<a){for(let e=r-t;e<=r;e++)d[e]=o(n[l-r+e]);u=d,d=[],c=l,l++}}return s.map(e=>bi(oe(e)))}function ca(){return Ce()}function la(e,t,n){we(e,yi(t),n)}function ua(e){return{xMin:e.xMin,yMin:e.yMin,xMax:e.xMax,yMax:e.yMax}}function da(e,t){e.xMin=Math.min(e.xMin,t.xMin),e.yMin=Math.min(e.yMin,t.yMin),e.xMax=Math.max(e.xMax,t.xMax),e.yMax=Math.max(e.yMax,t.yMax)}function fa(e,t){return e.xMax<t.xMin||e.xMin>t.xMax||e.yMax<t.yMin||e.yMin>t.yMax}function pa(e,t,n){return t<e.xMin||t>e.xMax||n<e.yMin||n>e.yMax}function ma(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function ha(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function ga(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles:null}function _a(e){let t=yi(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t.__bk2d===`bezier`?t.poles.length-1:null}function va(e){return xe(yi(e))}function ya(e){return bi(Se(e))}function ba(e,t){let n=w(yi(e)),r=[n.first,...t.sort((e,t)=>e-t),n.last],i=[];for(let t=0;t<r.length-1;t++){let a=r[t]??n.first,o=r[t+1]??n.last;i.push(Ri(e,a,o))}return i}function xa(e,t,n,r,i,a){let o=yi(n),[s,c,l]=r,[u,d,f]=i,[p,m,h]=a,g=d*h-f*m,_=f*p-u*h,v=u*m-d*p,y=(e,t)=>[s+e*p+t*g,c+e*m+t*_,l+e*h+t*v],b=o.__bk2d;if(b===`line`){let t=w(o),[n,r]=S(o,t.first),[i,a]=S(o,t.last),s=y(n,r),c=y(i,a);return T(`edge`,e.makeLineEdge(s[0],s[1],s[2],c[0],c[1],c[2]))}if(b===`trimmed`){let t=o;if(t.basis&&t.basis.__bk2d===`line`){let[t,n]=S(o,0),[r,i]=S(o,1),a=y(t,n),s=y(r,i);return T(`edge`,e.makeLineEdge(a[0],a[1],a[2],s[0],s[1],s[2]))}if(t.basis&&t.basis.__bk2d===`circle`){let t=w(o),[n,r]=S(o,t.first),[i,a]=S(o,(t.first+t.last)/2),[s,c]=S(o,t.last),l=y(n,r),u=y(i,a),d=y(s,c);return T(`edge`,e.makeArcEdge(l[0],l[1],l[2],u[0],u[1],u[2],d[0],d[1],d[2]))}}if(b===`circle`){let t=o;if(t.cx!==void 0&&t.radius!==void 0){let[n,r,i]=y(t.cx,t.cy);return T(`edge`,e.makeCircleEdge(n,r,i,u,d,f,t.radius))}let n=w(o),[r,i]=S(o,n.first),[a,s]=S(o,(n.first+n.last)/2),[c,l]=S(o,n.last),p=y(r,i),m=y(a,s),h=y(c,l);return T(`edge`,e.makeArcEdge(p[0],p[1],p[2],m[0],m[1],m[2],h[0],h[1],h[2]))}let x=w(o),C=(x.last-x.first)/24,ee=[];for(let e=0;e<=24;e++){let[t,n]=S(o,x.first+e*C),[r,i,a]=y(t,n);ee.push(r,i,a)}let te=new t.VectorDouble;for(let e of ee)te.push_back(e);try{return T(`edge`,e.interpolatePoints(te,!1))}finally{te.delete()}}function Sa(e,t,n,r){let i=yi(n),a=w(i),o=E(r),s=new t.VectorDouble;for(let t=0;t<=30;t++){let[n,r]=S(i,a.first+(a.last-a.first)*t/30),c=e.pointOnSurface(o,n,r);try{s.push_back(c.get(0)),s.push_back(c.get(1)),s.push_back(c.get(2))}finally{c.delete()}}try{return T(`edge`,e.interpolatePoints(s,!1))}finally{s.delete()}}function Ca(e){return e}function wa(e,t,n){let[r,i]=Vt(e,t),a=[];for(let o=0;o<=60;o++){let s=yn(e,n,Ht(e,t,r+(i-r)*o/60));s&&a.push(s)}if(a.length<2)throw Error(`occt-wasm: extractCurve2dFromEdge could not project the edge onto the face surface`);return Ni(a)}function Ta(e,t){e.buildCurves3d(E(t))}function Ea(e,t,n,r){return T(`wire`,e.fixWireOnFace(E(t),E(n),r))}function Da(e){try{let t=ze(e.modified),n=ze(e.generated),r=ze(e.deleted),i=e=>{let t=new Map,n=0;for(;n+1<e.length;){let r=e[n]??0,i=e[n+1]??0;n+=2;let a=[];for(let t=0;t<i&&n<e.length;t++,n++)a.push(e[n]??0);t.set(r,a)}return t};return{id:e.resultId,evolution:{modified:i(t),generated:i(n),deleted:new Set(r)}}}finally{e.delete()}}function Oa(e,t,n,r,i,a,o,s){let c=Le(t,o);try{let{id:t,evolution:o}=Da(e.translateWithHistory(E(n),r,i,a,c,s));return{shape:D(e,t),evolution:o}}finally{c.delete()}}function ka(e,t,n,r,i,a,o,s){let c=o??[0,0,1],l=s??[0,0,0],u=Le(t,i);try{let{id:t,evolution:i}=Da(e.rotateWithHistory(E(n),l[0],l[1],l[2],c[0],c[1],c[2],r,u,a));return{shape:D(e,t),evolution:i}}finally{u.delete()}}function Aa(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=Da(e.mirrorWithHistory(E(n),r[0],r[1],r[2],i[0],i[1],i[2],s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function ja(e,t,n,r,i,a,o){let s=Le(t,a);try{let{id:t,evolution:a}=Da(e.scaleWithHistory(E(n),r[0],r[1],r[2],i,s,o));return{shape:D(e,t),evolution:a}}finally{s.delete()}}function Ma(e,t,n,r,i,a){let o=e(t,n,r,i),s=new Map;for(let e of a)s.set(e,[e]);return{shape:o,evolution:{modified:s,generated:new Map,deleted:new Set}}}function Na(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=Da(e.fuseWithHistory(E(n),E(r),s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete()}}function Pa(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=Da(e.cutWithHistory(E(n),c.id,s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete(),c?.dispose()}}function Fa(e,t,n,r,i,a,o){let s=Le(t,i),c;try{c=Ge(e,r);let{id:t,evolution:i}=Da(e.intersectWithHistory(E(n),c.id,s,a));return{shape:D(e,t),evolution:i,diagnostics:{hasErrors:!1,hasWarnings:!1,messages:[]}}}finally{s.delete(),c?.dispose()}}function Ia(e,t,n,r,i,a,o){let s=Ve(r,i),c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Da(e.filletWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function La(e,t,n,r,i,a,o){let s=Ve(r,i),c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Da(e.chamferWithHistory(E(n),c,s,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function Ra(e,t,n,r,i,a,o,s){let c=Ie(t,r.map(E)),l=Le(t,a);try{let{id:t,evolution:r}=Da(e.shellWithHistory(E(n),c,i,s??.001,l,o));return{shape:D(e,t),evolution:r}}finally{c.delete(),l.delete()}}function za(e,t,n,r,i,a){let o=Le(t,i);try{let{id:t,evolution:i}=Da(e.thickenWithHistory(E(n),r,.001,o,a));return{shape:D(e,t),evolution:i}}finally{o.delete()}}function Ba(e,t,n,r,i,a,o){let s=Le(t,i);try{let{id:t,evolution:i}=Da(e.offsetWithHistory(E(n),r,o??1e-6,s,a));return{shape:D(e,t),evolution:i}}finally{s.delete()}}function Va(e,t,n,r,i){let[a,o,s]=r,c=E(t);for(let t of n){let n=(typeof i==`number`?i:i(t))*Math.PI/180;c=e.draft(c,E(t),n,a,o,s)}return{shape:D(e,c),evolution:{modified:new Map,generated:new Map,deleted:new Set}}}function Ha(e,t,n,r,i,a,o){let s=e(r,i),c=t(s,`face`),l=new Map,u=Math.min(a.length,c.length);for(let e=0;e<u;e++){let t=c[e],r=a[e];t!==void 0&&r!==void 0&&l.set(r,[n(t,o)])}return{shape:s,evolution:{modified:l,generated:new Map,deleted:new Set}}}function Ua(e,t,n,r){if(n.length<4)throw Error(`hullFromPoints: need at least 4 points`);let{points:i,faces:a}=x(n,r);if(a.length<4)throw Error(`hullFromPoints: degenerate hull (fewer than 4 faces)`);return ii(e,t,[...i],[...a],r)}function Wa(e,t,n,r){let i=Math.max(r,1),a=[];for(let r of n){let n=e.tessellate(E(r),i,i*.5);try{let e=n.positionCount,r=n.getPositionsPtr()>>2;for(let n=0;n<e;n+=3)a.push({x:t.HEAPF32[r+n]??0,y:t.HEAPF32[r+n+1]??0,z:t.HEAPF32[r+n+2]??0})}finally{n.delete()}}return a}function Ga(e,t,n,r){if(n.length===0)throw Error(`hull: no shapes provided`);let i=Wa(e,t,n,r);if(i.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);return Ua(e,t,i,r)}function Ka(e){throw new c(`occt-wasm: ${e} is not yet implemented`)}var qa=class e{oc;kernelId=`occt-wasm`;capabilities=a;Module;k;owner;constructor(e,t,n){this.Module=e,this.k=Ue(t,e),this.oc=We(e,this.k),this.owner=n}static fromKernel(t){let n=t.getRawModule(),r=t.getRawKernel();return new e(n,r,t)}get retainedKernelOwner(){return this.owner}dispose(e){Pe(e)?this.k.release(e.id):typeof e.delete==`function`&&e.delete()}executeBatch(e){Ka(`executeBatch`)}openCheckpoints=[];checkpoint(){let e=this.k.checkpoint();return this.openCheckpoints.push(e),e}checkpointCount(){return this.openCheckpoints.length}restoreCheckpoint(e){let t=this.openCheckpoints.lastIndexOf(e);if(t===-1)throw new r(`occtWasmAdapter.restoreCheckpoint`,`checkpoint ${e} is not open — releaseSince would erase unrelated live handles`);this.k.releaseSince(e),this.openCheckpoints.length=t}discardCheckpoint(e){this.closeCheckpoint(e)}closeCheckpoint(e){let t=this.openCheckpoints.lastIndexOf(e);t!==-1&&(this.openCheckpoints.length=t)}makeBox(e,t,n){return nt(this.k,e,t,n)}makeCylinder(e,t,n,r){return rt(this.k,e,t,n,r)}makeSphere(e,t){return it(this.k,e,t)}makeCone(e,t,n,r,i){return at(this.k,e,t,n,r,i)}makeTorus(e,t,n,r){return ot(this.k,e,t,n,r)}makeEllipsoid(e,t,n){return st(this.k,e,t,n)}makeBoxFromCorners(e,t){return ct(this.k,e,t)}makeRectangle(e,t){return lt(this.k,e,t)}fuse(e,t,n){return Ke(this.k,e,t,n)}cut(e,t,n){return qe(this.k,e,t,n)}intersect(e,t,n){return Je(this.k,e,t,n)}section(e,t,n){return Ye(this.k,e,t,n)}fuseAll(e,t){return Xe(this.k,this.Module,e,t)}cutAll(e,t,n){return Ze(this.k,this.Module,e,t,n)}split(e,t){return Qe(this.k,this.Module,e,t)}checkBoolean(e,t,n){return $e(this.k,e,t,n)}meshBoolean(e,t,n,r,i,a){return et(e,t,n,r,i,a)}makeVertex(e,t,n){return Hr(this.k,e,t,n)}makeEdge(e,t,n){return Ur(this.k,e)}makeWire(e){return Wr(this.k,this.Module,e)}makeFace(e,t){return Kr(this.k,e,t)}makeLineEdge(e,t){return qr(this.k,e,t)}makeCircleEdge(e,t,n){return Jr(this.k,e,t,n)}makeCircleArc(e,t,n,r,i){return Yr(this.k,e,t,n,r,i)}makeArcEdge(e,t,n){return Xr(this.k,e,t,n)}makeEllipseEdge(e,t,n,r,i){return Zr(this.k,e,t,n,r)}makeEllipseArc(e,t,n,r,i,a,o){return Qr(this.k,e,t,n,r,i,a)}makeBezierEdge(e){return $r(this.k,this.Module,e)}makeTangentArc(e,t,n){return ei(this.k,e,t,n)}makeHelixWire(e,t,n,r,i,a){return ti(this.k,e,t,n,r,i)}makeWireFromMixed(e){return Gr(this.k,this.Module,e)}makeCompound(e){return ni(this.k,this.Module,e)}solidFromShell(e){return ri(this.k,e)}hull(e,t){return Ga(this.k,this.Module,e,t)}hullFromPoints(e,t){return Ua(this.k,this.Module,e,t)}buildSolidFromFaces(e,t,n){return ii(this.k,this.Module,e,t,n)}makeNonPlanarFace(e){return ai(this.k,e)}addHolesInFace(e,t){return oi(this.k,this.Module,e,t)}removeHolesFromFace(e){return si(this.k,this.Module,e)}makeFaceOnSurface(e,t){return ci(this.k,e,t)}bsplineSurface(e,t,n){return li(this.k,this.Module,e,t,n)}triangulatedSurface(e,t,n){return ui(this.k,this.Module,e,t,n)}buildTriFace(e,t,n){return di(this.k,e,t,n)}sewAndSolidify(e,t){return fi(this.k,this.Module,e,t)}createPoint3d(e,t,n){return pi(e,t,n)}createDirection3d(e,t,n){return mi(e,t,n)}createVector3d(e,t,n){return hi(e,t,n)}createAxis1(e,t,n,r,i,a){return gi(e,t,n,r,i,a)}createAxis2(e,t,n,r,i,a,o,s,c){return _i(e,t,n,r,i,a,o,s,c)}createAxis3(e,t,n,r,i,a,o,s,c){return vi(e,t,n,r,i,a,o,s,c)}extrude(e,t,n){return nr(this.k,e,t,n)}revolve(e,t,n){return rr(this.k,e,t,n)}loft(e,t,n,r){return ir(this.k,this.Module,e,t,n,r)}sweep(e,t,n){return ar(this.k,e,t,n)}simplePipe(e,t){return or(this.k,e,t)}helicalSweep(e,t,n,r,i,a){throw Error(`helicalSweep on occt-wasm requires profile positioning+orientation logic not yet implemented; brepkit has a native implementation`)}sweepWithOptions(e,t,n,r,i){Ka(`sweepWithOptions`)}sweepPipeShell(e,t,n){return sr(this.k,e,t,n)}loftAdvanced(e,t){return cr(this.k,this.Module,e,t)}buildExtrusionLaw(e,t,n){return lr(this.k,e,t,n)}revolveVec(e,t,n,r){return ur(this.k,e,t,n,r)}draftPrism(e,t,n,r,i,a){return dr(this.k,e,t,n,r,i,a)}fillet(e,t,n){return Un(this.k,this.Module,e,t,n)}chamfer(e,t,n){return Wn(this.k,this.Module,e,t,n)}chamferDistAngle(e,t,n,r){return Gn(this.k,this.Module,e,t,n,r)}shell(e,t,n,r){return Kn(this.k,this.Module,e,t,n,r)}thicken(e,t){return qn(this.k,e,t)}offset(e,t,n){return Jn(this.k,e,t,n)}filletVariable(e,t){return Xn(this.k,e,t)}draft(e,t,n,r,i){return Zn(this.k,e,t,n,r,i)}defeature(e,t){return Qn(this.k,this.Module,e,t)}offsetWire2D(e,t,n){return $n(this.k,e,t,n)}simplify(e){return er(this.k,e)}reverseShape(e){return tr(this.k,e)}composeTransform(e){return fr(e)}transform(e,t){return mr(this.k,this.Module,e,t)}locate(e,t){return hr(this.k,this.Module,e,t)}translate(e,t,n,r){return gr(this.k,e,t,n,r)}rotate(e,t,n,r){return _r(this.k,e,t,n,r)}mirror(e,t,n){return vr(this.k,e,t,n)}scale(e,t,n){return yr(this.k,e,t,n)}generalTransform(e,t,n,r){return br(this.k,this.Module,e,t,n,r)}generalTransformNonOrthogonal(e,t,n){return br(this.k,this.Module,e,t,n,!1)}positionOnCurve(e,t,n){return xr(this.k,this.Module,e,t,n)}linearPattern(e,t,n,r){return Sr(this.k,e,t,n,r)}circularPattern(e,t,n,r,i){return Cr(this.k,e,t,n,r,i)}transformBatch(e){return wr(this.k,e)}translateWithHistory(e,t,n,r,i,a){return Oa(this.k,this.Module,e,t,n,r,i,a)}rotateWithHistory(e,t,n,r,i,a){return ka(this.k,this.Module,e,t,n,r,i,a)}mirrorWithHistory(e,t,n,r,i){return Aa(this.k,this.Module,e,t,n,r,i)}scaleWithHistory(e,t,n,r,i){return ja(this.k,this.Module,e,t,n,r,i)}generalTransformWithHistory(e,t,n,r,i,a){return Ma((e,t,n,r)=>this.generalTransform(e,t,n,r),e,t,n,r,i)}fuseWithHistory(e,t,n,r,i){return Na(this.k,this.Module,e,t,n,r,i)}cutWithHistory(e,t,n,r,i){return Pa(this.k,this.Module,e,t,n,r,i)}intersectWithHistory(e,t,n,r,i){return Fa(this.k,this.Module,e,t,n,r,i)}filletWithHistory(e,t,n,r,i){return Ia(this.k,this.Module,e,t,n,r,i)}chamferWithHistory(e,t,n,r,i){return La(this.k,this.Module,e,t,n,r,i)}shellWithHistory(e,t,n,r,i,a){return Ra(this.k,this.Module,e,t,n,r,i,a)}thickenWithHistory(e,t,n,r){return za(this.k,this.Module,e,t,n,r)}offsetWithHistory(e,t,n,r,i){return Ba(this.k,this.Module,e,t,n,r,i)}draftWithHistory(e,t,n,r,i,a,o){return Va(this.k,e,t,n,i)}applyComposedTransformWithHistory(e,t,n,r){return Ha((e,t)=>this.transform(e,t),(e,t)=>this.iterShapes(e,t),(e,t)=>this.hashCode(e,t),e,t,n,r)}mesh(e,t){return Pt(this.k,this.Module,e,t)}meshEdges(e,t,n){return It(this.k,this.Module,e,t,n)}hasTriangulation(e){return Lt(this.k,e)}meshShape(e,t,n){Rt(this.k,e,t,n)}exportSTEP(e){return Dr(this.k,this.makeCompound.bind(this),e)}exportSTL(e,t,n,r){return Or(this.mesh.bind(this),e,t,n,r)}importSTEP(e){return kr(this.k,e)}importSTL(e){return Ar(this.k,this.Module,e)}exportIGES(e){return jr(this.k,this.makeCompound.bind(this),e)}importIGES(e){return Mr(this.k,e)}exportSTEPAssembly(e,t){return Nr(this.k,this.Module,e,t)}export3MF(e,t){throw Error(`export3MF is only available with the brepkit kernel`)}exportGLB(e,t){return Pr(this.mesh.bind(this),e,t)}exportOBJ(e,t){return Fr(this.mesh.bind(this),e,t)}exportPLY(e,t){return Ir(this.mesh.bind(this),e,t)}import3MF(e){throw Error(`import3MF is only available with the brepkit kernel`)}importOBJ(e){throw Error(`importOBJ is only available with the brepkit kernel`)}importGLB(e){throw Error(`importGLB is only available with the brepkit kernel`)}toBREP(e){return Lr(this.k,e)}fromBREP(e){return Rr(this.k,e)}createXCAFDocument(e){return zr(this.k,this.Module,e)}writeXCAFToSTEP(e,t){return Br(this.k,e,t)}exportSTEPConfigured(e,t){return Vr(this.k,this.Module,e,t)}volume(e){return Cn(this.k,e)}area(e){return wn(this.k,e)}length(e){return Tn(this.k,e)}centerOfMass(e){return En(this.k,e)}linearCenterOfMass(e){return Dn(this.k,e)}boundingBox(e){return On(this.k,e)}distance(e,t){return Pn(this.k,this.Module,e,t)}surfaceCurvature(e,t,n){return Vn(this.k,e,t,n)}surfaceCenterOfMass(e){return kn(this.k,e)}measureBulk(e,t){return An(this.k,e,t)}createDistanceQuery(e){return jn(this.k,e)}iterShapes(e,t){return ut(this.k,e,t)}iterShapeList(e,t){throw Error(`iterShapeList is not applicable to occt-wasm: the arena model has no TopTools_ListOfShape handles`)}shapeType(e){return dt(this.k,e)}isSame(e,t){return ft(this.k,e,t)}isEqual(e,t){return pt(this.k,e,t)}downcast(e,t){return mt(this.k,e,t)}copyShape(e){return ht(this.k,e)}hashCode(e,t){return gt(this.k,e,t)}subShapeCount(e,t){return bt(this.k,e,t)}subShapeHashes(e,t,n){return xt(this.k,e,t,n)}isNull(e){return _t(this.k,e)}shapeOrientation(e){return vt(this.k,e)}edgeToFaceMap(e){return yt(this.k,e)}sharedEdges(e,t){return St(this.k,e,t)}adjacentFaces(e,t){return Ct(this.k,e,t)}sew(e,t){return wt(this.k,this.Module,e,t)}curveType(e){return Bt(this.k,e)}curveParameters(e){return Vt(this.k,e)}curvePointAtParam(e,t){return Ht(this.k,e,t)}curveTangent(e,t){return Ut(this.k,e,t)}curveIsClosed(e){return Wt(this.k,e)}curveIsPeriodic(e){return Gt(this.k,e)}curvePeriod(e){return Kt(this.k,e)}interpolatePoints(e,t){return qt(this.k,this.Module,e,t)}approximatePoints(e,t){return Jt(this.k,this.Module,e,t)}curveDegreeElevate(e,t){return Yt(this.k,e,t)}curveKnotInsert(e,t,n){return Xt(this.k,e,t,n)}curveKnotRemove(e,t,n){return Zt(this.k,e,t,n)}curveSplit(e,t){return Qt(this.k,e,t)}getBezierPenultimatePole(e){return $t(this.k,e)}createCurveAdaptor(e){Ka(`createCurveAdaptor`)}vertexPosition(e){return tn(this.k,e)}surfaceType(e){return nn(this.k,e)}uvBounds(e){return rn(this.k,e)}outerWire(e){return an(this.k,e)}surfaceNormal(e,t,n){return sn(this.k,e,t,n)}pointOnSurface(e,t,n){return cn(this.k,e,t,n)}uvFromPoint(e,t){return yn(this.k,e,t)}projectPointOnFace(e,t){return bn(this.k,e,t)}classifyPointOnFace(e,t,n,r){return xn(this.k,e,t,n,r)}classifyPointRobust(e,t,n){Ka(`classifyPointRobust`)}classifyPointWinding(e,t,n){Ka(`classifyPointWinding`)}approximateSurfaceLspia(e,t,n,r,i,a,o,s,c){Ka(`approximateSurfaceLspia`)}untrimFace(e,t,n){Ka(`untrimFace`)}getSurfaceCylinderData(e){return vn(this.k,e)}getSurfaceAxis(e){return _n(this.k,e)}reverseSurfaceU(e){return on(this.k,e)}detectSmallFeatures(e,t,n){Ka(`detectSmallFeatures`)}recognizeFeatures(e,t){Ka(`recognizeFeatures`)}projectEdges(e,t,n,r){return Sn(this.k,this.Module,e,t,n,r)}isValid(e){return Et(this.k,e)}healSolid(e){return Dt(this.k,e)}healFace(e){return Ot(this.k,e)}healWire(e,t){return kt(this.k,e,t)}mergeCoincidentVertices(e,t){return At(this.k,e,t)}removeDegenerateEdges(e,t){return jt(this.k,e,t)}fixFaceOrientations(e){return Mt(this.k,e)}fixShape(e){return Nt(this.k,e)}fixSelfIntersection(e){return kt(this.k,e)}createPoint2d(e,t){return xi(e,t)}createDirection2d(e,t){return Si(e,t)}createVector2d(e,t){return Ci(e,t)}createAxis2d(e,t,n,r){return wi(e,t,n,r)}wrapCurve2dHandle(e){return Ti(e)}createCurve2dAdaptor(e){Ka(`createCurve2dAdaptor`)}makeLine2d(e,t,n,r){return Ei(e,t,n,r)}makeCircle2d(e,t,n,r){return Di(e,t,n,r)}makeArc2dThreePoints(e,t,n,r,i,a){return Oi(e,t,n,r,i,a)}makeArc2dTangent(e,t,n,r,i,a){return ki(e,t,n,r,i,a)}makeEllipse2d(e,t,n,r,i,a,o){return Ai(e,t,n,r,i,a,o)}makeEllipseArc2d(e,t,n,r,i,a,o,s,c){return ji(e,t,n,r,i,a,o,s,c)}makeBezier2d(e){return Mi(e)}makeBSpline2d(e,t){return Ni(e)}evaluateCurve2d(e,t){return Pi(e,t)}evaluateCurve2dD1(e,t){return Fi(e,t)}getCurve2dBounds(e){return Ii(e)}getCurve2dType(e){return Li(e)}trimCurve2d(e,t,n){return Ri(e,t,n)}reverseCurve2d(e){}copyCurve2d(e){return zi(e)}offsetCurve2d(e,t){return Bi(e,t)}translateCurve2d(e,t,n){return Vi(e,t,n)}rotateCurve2d(e,t,n,r){return Hi(e,t,n,r)}scaleCurve2d(e,t,n,r){return Ui(e,t,n,r)}mirrorCurve2dAtPoint(e,t,n){return Wi(e,t,n)}mirrorCurve2dAcrossAxis(e,t,n,r,i){return Gi(e,t,n,r,i)}affinityTransform2d(e,t,n,r,i,a){return qi(e,t,n,r,i,a)}createIdentityGTrsf2d(){return Ji()}createAffinityGTrsf2d(e,t,n,r,i){return Yi(e,t,n,r,i)}createTranslationGTrsf2d(e,t){return Xi(e,t)}createMirrorGTrsf2d(e,t,n,r,i,a,o){return Zi(e,t,n,r,i,a,o)}createRotationGTrsf2d(e,t,n){return Qi(e,t,n)}createScaleGTrsf2d(e,t,n){return $i(e,t,n)}setGTrsf2dTranslationPart(e,t,n){ea(e,t,n)}multiplyGTrsf2d(e,t){ta(e,t)}transformCurve2dGeneral(e,t){return na(e,t)}intersectCurves2d(e,t,n){return ra(e,t,n)}projectPointOnCurve2d(e,t,n){return ia(e,t,n)}distanceBetweenCurves2d(e,t,n,r,i,a){return aa(e,t,n,r,i,a)}approximateCurve2dAsBSpline(e,t,n,r){return oa(e,r)}decomposeBSpline2dToBeziers(e){return sa(e)}createBoundingBox2d(){return ca()}addCurveToBBox2d(e,t,n){la(e,t,n)}getBBox2dBounds(e){return ua(e)}mergeBBox2d(e,t){da(e,t)}isBBox2dOut(e,t){return fa(e,t)}isBBox2dOutPoint(e,t,n){return pa(e,t,n)}getCurve2dCircleData(e){return ma(e)}getCurve2dEllipseData(e){return ha(e)}getCurve2dBezierPoles(e){return ga(e)}getCurve2dBezierDegree(e){return _a(e)}getCurve2dBSplineData(e){Ka(`getCurve2dBSplineData`)}serializeCurve2d(e){return va(e)}deserializeCurve2d(e){return ya(e)}splitCurve2d(e,t){return ba(e,t)}liftCurve2dToPlane(e,t,n,r){return xa(this.k,this.Module,e,t,n,r)}buildEdgeOnSurface(e,t){return Sa(this.k,this.Module,e,t)}extractSurfaceFromFace(e){return Ca(e)}extractCurve2dFromEdge(e,t){return wa(this.k,e,t)}buildCurves3d(e){Ta(this.k,e)}fixWireOnFace(e,t,n){return Ea(this.k,e,t,n)}fillSurface(e,t){Ka(`fillSurface`)}getNurbsCurveData(e){return en(this.k,e)}},Ja={draft:{tolerance:.01,angularTolerance:.5},standard:{tolerance:.001,angularTolerance:.1},fine:{tolerance:1e-4,angularTolerance:.05}},Ya=`standard`;function Xa(){return Ya}function Za(e=Ya){return Ja[e]}function Qa(e){Ya=e}function $a(e){return`makeLine2d`in e}var eo=[`boolean`,`loft`,`extrude`,`shell`,`fillet`,`mesh`,`edgeMesh`,`transform`],to=Object.create(null),no=Object.create(null);function ro(){for(let e of eo)to[e]=0,no[e]=0}ro();function io(e){let t=performance.now();return()=>{to[e]=(to[e]??0)+(performance.now()-t),no[e]=(no[e]??0)+1}}function ao(){let e={};for(let t of eo)e[t]={totalMs:to[t]??0,count:no[t]??0};return e}function oo(){ro()}var so;function co(){so=void 0}function lo(e){return so??=typeof e.BooleanBatch==`function`,so}function uo(e){return e===`commonFace`?1:e===`sameFace`?2:0}function fo(e,t,n={}){if(!lo(e))return null;let r=io(`boolean`),i=new e.BooleanBatch;try{for(let e of t)i.addShape(e);return i.fuseAll(uo(n.optimisation),!!n.simplify,n.fuzzyValue??0)}finally{i.delete(),r()}}function po(e,t,n,r={}){if(!lo(e))return null;if(n.length===0)return t;let i=io(`boolean`),a=new e.BooleanBatch;try{for(let e of n)a.addShape(e);return a.cutAll(t,uo(r.optimisation),!!r.simplify,r.fuzzyValue??0)}finally{a.delete(),i()}}var mo=2147483647,ho;function go(){ho=void 0}function _o(e){return ho??=typeof e.MeasurementExtractor?.extract==`function`,ho}function vo(e,t,n=!1){if(_o(e)){let r=e.MeasurementExtractor.extract(t,n);try{let t=r.getDataPtr()/8,n=r.getDataSize(),i=e.HEAPF64.slice(t,t+n);return{volume:i[0]??0,area:i[1]??0,length:i[2]??0,centerOfMass:[i[3]??0,i[4]??0,i[5]??0],boundingBox:{min:[i[6]??0,i[7]??0,i[8]??0],max:[i[9]??0,i[10]??0,i[11]??0]}}}finally{r.delete()}}return{volume:yo(e,t),area:bo(e,t),length:n?xo(e,t):0,centerOfMass:So(e,t),boundingBox:wo(e,t)}}function yo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(t,n,!0,!1,!1);let r=n.Mass();return n.delete(),r}function bo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.SurfaceProperties_2(t,n,1e-7,!0);let r=n.Mass();return n.delete(),r}function xo(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.LinearProperties(t,n,!0,!1);let r=n.Mass();return n.delete(),r}function So(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(t,n,!0,!1,!1);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function Co(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.LinearProperties(t,n,!0,!1);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function wo(e,t){let n=new e.Bnd_Box;e.BRepBndLib.Add(t,n,!0);let r={min:[n.GetXMin(),n.GetYMin(),n.GetZMin()],max:[n.GetXMax(),n.GetYMax(),n.GetZMax()]};return n.delete(),r}function To(e,t,n){let r=new e.BRepExtrema_DistShapeShape_1;r.LoadS1(t),r.LoadS2(n);let i=new e.Message_ProgressRange_1;if(r.Perform(i),!r.IsDone())throw i.delete(),r.delete(),Error(`BRepExtrema_DistShapeShape failed`);let a=r.Value(),o=r.PointOnShape1(1),s=r.PointOnShape2(1),c={value:a,point1:[o.X(),o.Y(),o.Z()],point2:[s.X(),s.Y(),s.Z()]};return o.delete(),s.delete(),i.delete(),r.delete(),c}function Eo(e,t,n,r,i=1e-6){if(!e.BRepClass_FaceClassifier)throw Error(`BRepClass_FaceClassifier not available in this WASM build`);let a=new e.gp_Pnt2d_3(n,r),o=new e.BRepClass_FaceClassifier_3(t,a,i),s=o.State();a.delete(),o.delete();let c=e.TopAbs_State;return s===c.TopAbs_IN?`in`:s===c.TopAbs_ON?`on`:`out`}function Do(e){return{volume:t=>yo(e,t),area:t=>bo(e,t),length:t=>xo(e,t),centerOfMass:t=>So(e,t),linearCenterOfMass:t=>Co(e,t),boundingBox:t=>wo(e,t),distance:(t,n)=>To(e,t,n),classifyPointOnFace:(t,n,r,i)=>Eo(e,t,n,r,i),measureBulk:(t,n)=>vo(e,t,n)}}var Oo={vertex:7,edge:6,wire:5,face:4,shell:3,solid:2,compsolid:1,compound:0};function ko(e,t,n){let r=e.TopologyExtractor.extract(t,Oo[n]),i=r.getShapesCount(),a=[];for(let e=0;e<i;e++)a.push(r.getShape(e));return r.delete(),a}var Ao=new WeakMap;function jo(e,t,n){let r=Ao.get(e);if(!r){let t=e.TopAbs_ShapeEnum;r={vertex:t.TopAbs_VERTEX,edge:t.TopAbs_EDGE,wire:t.TopAbs_WIRE,face:t.TopAbs_FACE,shell:t.TopAbs_SHELL,solid:t.TopAbs_SOLID,compsolid:t.TopAbs_COMPSOLID,compound:t.TopAbs_COMPOUND},Ao.set(e,r)}let i=new e.TopExp_Explorer_2(t,r[n],e.TopAbs_ShapeEnum.TopAbs_SHAPE),a=[],o=new Map;for(;i.More();){let t=i.Current(),n=e.shapeHashCode(t,mo),r=o.get(n);r?r.some(e=>e.IsSame(t))||(r.push(t),a.push(t)):(o.set(n,[t]),a.push(t)),i.Next()}return i.delete(),a}function Mo(e,t,n){return e.TopologyExtractor?ko(e,t,n):jo(e,t,n)}var No=new WeakMap;function Po(e){let t=No.get(e);if(!t){let n=e.TopAbs_ShapeEnum;t=new Map([[n.TopAbs_VERTEX,`vertex`],[n.TopAbs_EDGE,`edge`],[n.TopAbs_WIRE,`wire`],[n.TopAbs_FACE,`face`],[n.TopAbs_SHELL,`shell`],[n.TopAbs_SOLID,`solid`],[n.TopAbs_COMPSOLID,`compsolid`],[n.TopAbs_COMPOUND,`compound`]]),No.set(e,t)}return t}function Fo(e,t){if(t.IsNull())throw Error(`Cannot determine shape type: shape is null`);let n=Po(e).get(t.ShapeType());if(!n)throw Error(`Unknown shape type enum value`);return n}function Io(e,t){let n=new e.BRepCheck_Analyzer(t,!0,!1,!1),r=n.IsValid_2();return n.delete(),r}function Lo(e,t,n=1e-6){let r=new e.BRepBuilderAPI_Sewing(n,!0,!0,!0,!1);for(let e of t)r.Add(e);let i=new e.Message_ProgressRange_1;r.Perform(i);let a=r.SewedShape();return i.delete(),r.delete(),a}function Ro(e,t,n){if(e.TopTools_ListIteratorOfListOfShape){let r=new e.TopTools_ListIteratorOfListOfShape(t);for(;r.More();)n(r.Value()),r.Next();r.delete()}else{let r=new e.TopTools_ListOfShape_3(t);for(;r.Size()>0;)n(r.First_1()),r.RemoveFirst();r.delete()}}function zo(e,t){return e.IsSame(t)}function Bo(e,t){return e.IsEqual(t)}function Vo(e){return{iterShapes:(t,n)=>Mo(e,t,n),iterShapeList:(t,n)=>{Ro(e,t,n)},shapeType:t=>Fo(e,t),isSame:(e,t)=>zo(e,t),isEqual:(e,t)=>Bo(e,t),isValid:t=>Io(e,t),sew:(t,n)=>Lo(e,t,n)}}var Ho=.001;function Uo(e,t,n){n===`commonFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueShift),n===`sameFace`&&t.SetGlue(e.BOPAlgo_GlueEnum.BOPAlgo_GlueFull)}function Wo(e,t){e.SetRunParallel(!0),e.SetUseOBB?.(!0),t!==void 0&&t>0&&e.SetFuzzyValue?.(t)}function Go(e,t){if(t.length<3)return 0;let n=t[0];if(!n)return 0;let r=new e.Bnd_Box;if(e.BRepBndLib.Add(n,r,!0),r.IsVoid())return r.delete(),0;let i=r.CornerMin(),a=r.CornerMax(),o=a.X()-i.X(),s=a.Y()-i.Y(),c=a.Z()-i.Z();return i.delete(),a.delete(),r.delete(),Math.sqrt(o*o+s*s+c*c)>1?1e-5:0}function Ko(e,t){let n=new e.TopoDS_Builder,r=new e.TopoDS_Compound;n.MakeCompound(r);for(let e of t)n.Add(r,e);return n.delete(),r}function qo(e,t,n,r={}){let i=io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Fuse_3(t,n,s);Uo(e,c,i),Wo(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ho);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Jo(e,t,n,r={}){let i=io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Cut_3(t,n,s);Uo(e,c,i),Wo(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ho);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Yo(e,t,n,r={}){let i=io(`boolean`);try{let{optimisation:i,simplify:a=!1,fuzzyValue:o}=r,s=new e.Message_ProgressRange_1,c=new e.BRepAlgoAPI_Common_3(t,n,s);Uo(e,c,i),Wo(c,o),c.Build(s),a&&c.SimplifyResult(!0,!0,Ho);let l=c.Shape();return c.delete(),s.delete(),l}finally{i()}}function Xo(e,t,n,r=!0){let i=new e.Message_ProgressRange_1,a=new e.BRepAlgoAPI_Section_3(t,n,!1);if(a.Approximation(r),Wo(a),a.Build(i),!a.IsDone())throw a.delete(),i.delete(),Error(`BRepAlgoAPI_Section build failed`);let o=a.Shape();return a.delete(),i.delete(),o}function Zo(e,t,n={}){let r=fo(e,t,n);if(r!==null)return r;let i=io(`boolean`);try{let{optimisation:r,simplify:i=!1}=n,a=n.fuzzyValue??Go(e,t),o=new e.TopTools_ListOfShape_1;for(let e of t)o.Append_1(e);let s=new e.BRepAlgoAPI_BuilderAlgo_1;s.SetArguments(o),Uo(e,s,r),Wo(s,a);let c=new e.Message_ProgressRange_1;s.Build(c);let l=s.Shape();if(i){let t=new e.ShapeUpgrade_UnifySameDomain_2(l,!0,!0,!1);t.Build(),l=t.Shape(),t.delete()}return o.delete(),s.delete(),c.delete(),l}finally{i()}}function Qo(e,n,r,i,a){a.signal?.throwIfAborted();let o=i-r;if(o===1)return t(n,r);if(o===2)return qo(e,n[r],n[r+1],{...a,simplify:!1});let s=r+Math.ceil(o/2);return qo(e,Qo(e,n,r,s,a),Qo(e,n,s,i,a),{...a,simplify:!1})}function $o(e,t,n={}){let r=Qo(e,t,0,t.length,n);if(n.simplify){let t=new e.ShapeUpgrade_UnifySameDomain_2(r,!0,!0,!1);t.Build();let n=t.Shape();return t.delete(),n}return r}function es(e,n,r={}){if(n.length===0)throw Error(`fuseAll requires at least one shape`);if(n.length===1)return t(n,0);let{strategy:i=`native`}=r;return i===`pairwise`?$o(e,n,r):Zo(e,n,r)}function ts(e,t,n){if(!e.BRepAlgoAPI_Splitter)throw Error(`BRepAlgoAPI_Splitter not available in this WASM build`);let r=new e.TopTools_ListOfShape_1;r.Append_1(t);let i=new e.TopTools_ListOfShape_1;for(let e of n)i.Append_1(e);let a=new e.BRepAlgoAPI_Splitter;a.SetArguments(r),a.SetTools(i),Wo(a);let o=new e.Message_ProgressRange_1;a.Build(o);let s=a.Shape();return a.delete(),o.delete(),r.delete(),i.delete(),s}function ns(e,t,n,r={}){if(n.length===0)return t;let i=po(e,t,n,r);if(i!==null)return i;let a=Ko(e,n),o=Jo(e,t,a,r);return a.delete(),o}function rs(e,t,n,r,i){let a=[];return t.IsNull()&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),n.IsNull()&&a.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),a.length>0?{valid:!1,issues:a}:(i(t)||a.push({operand:`base`,issue:`not-valid`,message:`Base shape fails BRepCheck validation. Try autoHeal() first.`}),i(n)||a.push({operand:`tool`,issue:`not-valid`,message:`Tool shape fails BRepCheck validation. Try autoHeal() first.`}),{valid:a.length===0,issues:a})}function is(e){return{fuse:(t,n,r)=>qo(e,t,n,r),cut:(t,n,r)=>Jo(e,t,n,r),intersect:(t,n,r)=>Yo(e,t,n,r),section:(t,n,r)=>Xo(e,t,n,r),fuseAll:(t,n)=>es(e,t,n),cutAll:(t,n,r)=>ns(e,t,n,r),split:(t,n)=>ts(e,t,n),checkBoolean:(t,n,r)=>rs(e,t,n,r,t=>Io(e,t))}}var as={fuse:0,cut:1,intersect:2};function os(e,t,n,r={}){let{glueMode:i=0,fuzzyValue:a=0}=r;if(typeof e.BooleanPipeline==`function`){let r=new e.BooleanPipeline;try{for(let e of n)r.addStep(as[e.op],e.tool);let e=r.execute(t,i,a);return e.IsNull()?null:e}finally{r.delete()}}}function ss(e){return{booleanPipeline:(t,n,r)=>os(e,t,n,r)??null}}function cs(e,t,n,r){let i=new e.gp_Pnt_3(t,n,r),a=new e.BRepBuilderAPI_MakeVertex(i),o=a.Vertex();return a.delete(),i.delete(),o}function ls(e,t,n,r){let i=n!==void 0&&r!==void 0?new e.BRepBuilderAPI_MakeEdge_24(t,n,r):new e.BRepBuilderAPI_MakeEdge_24(t),a=i.Edge();return i.delete(),a}function us(e,t){let n=new e.BRepBuilderAPI_MakeWire_1;for(let e of t)n.Add_1(e);let r=new e.Message_ProgressRange_1;n.Build(r);let i=n.Wire();return n.delete(),r.delete(),i}function ds(e,t,n=!0){if(n){let n=new e.BRepBuilderAPI_MakeFace_15(t,!1),r=n.Face();return n.delete(),r}let r=new e.BRepOffsetAPI_MakeFilling(3,15,2,!1,1e-5,1e-4,.01,.1,8,9),i=Mo(e,t,`edge`);for(let t of i)r.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,!0);let a=new e.Message_ProgressRange_1;r.Build(a);let o=r.Shape();return r.delete(),a.delete(),o}function fs(e,t,n,r){let i=new e.BRepPrimAPI_MakeBox_2(t,n,r),a=i.Solid();return i.delete(),a}function ps(e,t,n,r=[0,0,0],i=[0,0,1]){let a=new e.gp_Pnt_3(...r),o=new e.gp_Dir_5(...i),s=new e.gp_Ax2_4(a,o),c=new e.BRepPrimAPI_MakeCylinder_3(s,t,n),l=c.Shape();return c.delete(),s.delete(),a.delete(),o.delete(),l}function ms(e,t,n=[0,0,0]){if(n[0]===0&&n[1]===0&&n[2]===0){let n=new e.BRepPrimAPI_MakeSphere_1(t),r=n.Shape();return n.delete(),r}let r=new e.gp_Pnt_3(...n),i=new e.BRepPrimAPI_MakeSphere_2(r,t),a=i.Shape();return i.delete(),r.delete(),a}function hs(e,t,n,r,i=[0,0,0],a=[0,0,1]){let o=new e.gp_Pnt_3(...i),s=new e.gp_Dir_5(...a),c=new e.gp_Ax2_4(o,s),l=new e.BRepPrimAPI_MakeCone_3(c,t,n,r),u=l.Shape();return l.delete(),c.delete(),o.delete(),s.delete(),u}function gs(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.BRepBuilderAPI_MakeEdge_3(i,a),c=new e.BRepBuilderAPI_MakeEdge_3(a,o),l=new e.BRepBuilderAPI_MakeEdge_3(o,i),u=new e.BRepBuilderAPI_MakeWire_1;u.Add_1(s.Edge()),u.Add_1(c.Edge()),u.Add_1(l.Edge());let d=null;if(u.IsDone()){let t=new e.BRepBuilderAPI_MakeFace_15(u.Wire(),!1);t.IsDone()&&(d=t.Face()),t.delete()}return u.delete(),s.delete(),c.delete(),l.delete(),i.delete(),a.delete(),o.delete(),d}function _s(e,t){let n=new e.BRepBuilderAPI_MakeWire_1;for(let r of t){let t=r.ShapeType();t===e.TopAbs_ShapeEnum.TopAbs_EDGE?n.Add_1(r):t===e.TopAbs_ShapeEnum.TopAbs_WIRE&&n.Add_2(r)}let r=new e.Message_ProgressRange_1;n.Build(r);let i=n.Wire();return n.delete(),r.delete(),i}function vs(e,t,n,r=[0,0,0],i=[0,0,1]){let a=new e.gp_Pnt_3(...r),o=new e.gp_Dir_5(...i),s=new e.gp_Ax2_4(a,o),c=new e.BRepPrimAPI_MakeTorus_5(s,t,n),l=c.Shape();return c.delete(),s.delete(),a.delete(),o.delete(),l}function ys(e){return{makeVertex:(t,n,r)=>cs(e,t,n,r),makeEdge:(t,n,r)=>ls(e,t,n,r),makeWire:t=>us(e,t),makeWireFromMixed:t=>_s(e,t),makeFace:(t,n)=>ds(e,t,n),makeBox:(t,n,r)=>fs(e,t,n,r),makeCylinder:(t,n,r,i)=>ps(e,t,n,r,i),makeSphere:(t,n)=>ms(e,t,n),makeCone:(t,n,r,i,a)=>hs(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>vs(e,t,n,r,i),buildTriFace:(t,n,r)=>gs(e,t,n,r)}}function bs(e,t){let n=e[t];if(n===void 0)throw Error(`Index ${t} out of bounds`);return n}function xs(e,t,n){let r=[],i=Math.max(n,1);for(let n of t){new e.BRepMesh_IncrementalMeshWrapper(n,i,!1,i*.5,!1).delete();let t=new e.TopExp_Explorer_2(n,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;t.More();){let n=e.TopoDS_Cast.Face(t.Current()),i=new e.TopLoc_Location_1,a=e.BRep_Tool_Triangulation(n,i,0);if(!a.IsNull()){let e=i.Transformation(),t=a.get().NbNodes();for(let n=1;n<=t;n++){let t=a.get().Node(n),i=t.Transformed(e);r.push({x:i.X(),y:i.Y(),z:i.Z()}),i.delete(),t.delete()}e.delete()}i.delete(),t.Next()}t.delete()}return r}function Ss(e,t,n){let{faces:r,points:i}=t,a=[];for(let[t,n,o]of r){let r=bs(i,t),s=bs(i,n),c=bs(i,o),l=gs(e,[r.x,r.y,r.z],[s.x,s.y,s.z],[c.x,c.y,c.z]);l!==null&&a.push(l)}if(a.length<4)throw Error(`hull: only ${a.length} faces built, need at least 4 for a solid`);let o=Math.max(n,1e-4),s=new e.BRepBuilderAPI_Sewing(o,!0,!0,!0,!1);for(let e of a)s.Add(e);let c=new e.Message_ProgressRange_1;s.Perform(c),c.delete();let l=s.SewedShape();s.delete();let u=new e.TopExp_Explorer_2(l,e.TopAbs_ShapeEnum.TopAbs_SHELL,e.TopAbs_ShapeEnum.TopAbs_SHAPE);if(u.More()){let t=e.TopoDS_Cast.Shell(u.Current());u.delete();let n=new e.BRepBuilderAPI_MakeSolid_1;n.Add(t);let r=new e.Message_ProgressRange_1;if(n.Build(r),r.delete(),n.IsDone()){let r=n.Solid();n.delete(),t.delete();let i=new e.GProp_GProps_1;e.BRepGProp.VolumeProperties_1(r,i,!1,!1,!1);let a=i.Mass();return i.delete(),a<0&&r.Complement(),r}return t.delete(),n.delete(),l}return u.delete(),l}function Cs(e,t,n){if(t.length===0)throw Error(`hull: no shapes provided`);let r=xs(e,t,n);if(r.length<4)throw Error(`hull: fewer than 4 vertices extracted from input shapes`);let i=x(r,n);if(i.faces.length<4)throw Error(`hull: degenerate hull (fewer than 4 faces)`);return Ss(e,i,n)}function ws(e,t,n,r){return Ss(e,{points:t,faces:n},r)}function Ts(e,t,n){if(t.length<4)throw Error(`hullFromPoints: fewer than 4 points`);let r=x(t,n);if(r.faces.length<4)throw Error(`hullFromPoints: degenerate hull (fewer than 4 faces)`);return Ss(e,r,n)}function Es(e){return{hull:(t,n)=>Cs(e,t,n),hullFromPoints:(t,n)=>Ts(e,t,n),buildSolidFromFaces:(t,n,r)=>ws(e,t,n,r)}}function Ds(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepBuilderAPI_MakeEdge_3(r,i),o=a.Edge();return a.delete(),r.delete(),i.delete(),o}function Os(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Dir_5(n[0],n[1],n[2]),o=new e.gp_Ax2_4(i,a),s=new e.gp_Circ_2(o,r),c=new e.BRepBuilderAPI_MakeEdge_8(s),l=c.Edge();return c.delete(),s.delete(),o.delete(),a.delete(),i.delete(),l}function ks(e,t,n,r,i,a){let o=new e.gp_Pnt_3(t[0],t[1],t[2]),s=new e.gp_Dir_5(n[0],n[1],n[2]),c=new e.gp_Ax2_4(o,s),l=new e.gp_Circ_2(c,r),u=new e.BRepBuilderAPI_MakeEdge_9(l,i,a),d=u.Edge();return u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),d}function As(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_4(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function js(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Vec_4(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_5(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function Ms(e,t,n,r,i,a){let o=new e.gp_Pnt_3(t[0],t[1],t[2]),s=new e.gp_Dir_5(n[0],n[1],n[2]),c;if(a){let t=new e.gp_Dir_5(a[0],a[1],a[2]);c=new e.gp_Ax2_2(o,s,t),t.delete()}else c=new e.gp_Ax2_4(o,s);let l=new e.gp_Elips_2(c,r,i),u=new e.BRepBuilderAPI_MakeEdge_12(l),d=u.Edge();return u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),d}function Ns(e,t,n,r,i,a,o,s){let c=new e.gp_Pnt_3(t[0],t[1],t[2]),l=new e.gp_Dir_5(n[0],n[1],n[2]),u;if(s){let t=new e.gp_Dir_5(s[0],s[1],s[2]);u=new e.gp_Ax2_2(c,l,t),t.delete()}else u=new e.gp_Ax2_4(c,l);let d=new e.gp_Elips_2(u,r,i),f=new e.BRepBuilderAPI_MakeEdge_13(d,a,o),p=f.Edge();return f.delete(),d.delete(),u.delete(),l.delete(),c.delete(),p}function Ps(e,n){let r=new e.TColgp_Array1OfPnt_2(1,n.length);for(let i=0;i<n.length;i++){let a=t(n,i),o=new e.gp_Pnt_3(a[0],a[1],a[2]);r.SetValue_1(i+1,o),o.delete()}let i=new e.Geom_BezierCurve_1(r),a=new e.Handle_Geom_Curve_2(i),o=new e.BRepBuilderAPI_MakeEdge_24(a),s=o.Edge();return o.delete(),a.delete(),r.delete(),s}function Fs(e,t,n,r,i=[0,0,0],a=[0,0,1],o=!1){let s=e.HelixWireBuilder;if(typeof s?.build==`function`){let e=s.build(r,t,n,i[0],i[1],i[2],a[0],a[1],a[2],o);if(!e.IsNull())return e}let c=n/t,l=o?-2*Math.PI:2*Math.PI,u=new e.gp_Pnt_3(i[0],i[1],i[2]),d=new e.gp_Dir_5(a[0],a[1],a[2]),f=new e.gp_Ax3_5(u,d),p=new e.Geom_CylindricalSurface_1(f,r);f.delete();let m=new e.gp_Pnt2d_3(0,0),h=new e.gp_Dir2d_5(l,t),g=new e.Geom2d_Line_3(m,h),_=g.Value(0),v=g.Value(c*Math.sqrt((2*Math.PI)**2+t**2)),y=new e.GCE2d_MakeSegment_1(_,v),b=new e.Handle_Geom2d_Curve_2(y.Value().get()),x=new e.Handle_Geom_Surface_2(p),S=new e.BRepBuilderAPI_MakeEdge_30(b,x),C=S.Edge();e.BRepLib.BuildCurves3d_2(C);let w=new e.BRepBuilderAPI_MakeWire_2(C),ee=w.Wire();return w.delete(),S.delete(),b.delete(),x.delete(),_.delete(),v.delete(),g.delete(),m.delete(),h.delete(),d.delete(),u.delete(),ee}function Is(e,t,n,r){let i=Math.sqrt(t*n/r),a=t/i,o=n/i,s=new e.gp_Pnt_3(0,0,0),c=new e.gp_Dir_5(0,1,0),l=new e.gp_Ax1_2(s,c),u=new e.gp_Dir_5(0,0,1),d=new e.gp_Ax1_2(s,u),f=new e.gp_Dir_5(1,0,0),p=new e.gp_Ax1_2(s,f),m=new e.gp_GTrsf_1;m.SetAffinity_1(l,a);let h=new e.gp_GTrsf_1;h.SetAffinity_1(d,i);let g=new e.gp_GTrsf_1;return g.SetAffinity_1(p,o),m.Multiply(h),m.Multiply(g),h.delete(),g.delete(),l.delete(),d.delete(),p.delete(),c.delete(),u.delete(),f.delete(),s.delete(),{transform:m,applyToPoint(t){let n=t.XYZ();m.Transforms_1(n);let r=new e.gp_Pnt_2(n);return n.delete(),r}}}function Ls(e,t,n,r){let i=new e.gp_Sphere_1;i.SetRadius(1);let a=new e.Geom_SphericalSurface_2(i),o=e.GeomConvert.SurfaceToBSplineSurface(a.UReversed()).get();i.delete(),a.delete();try{let i=Is(e,t,n,r),a=o.NbUPoles(),s=o.NbVPoles();for(let t=1;t<=a;t++)for(let n=1;n<=s;n++){let r=e.bsplineSurfacePole(o,t,n),a=i.applyToPoint(r);o.SetPole_1(t,n,a),r.delete(),a.delete()}i.transform.delete();let c=new e.BRepBuilderAPI_MakeShell_2(o.UReversed(),!1),l=c.Shell();c.delete();let u=new e.ShapeFix_Solid_1,d=u.SolidFromShell(l);return u.delete(),d}finally{o.delete()}}function Rs(e,t){let n=new e.TopoDS_Builder,r=new e.TopoDS_Compound;n.MakeCompound(r);for(let e of t)n.Add(r,e);return n.delete(),r}function zs(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepPrimAPI_MakeBox_4(r,i),o=a.Solid();return a.delete(),r.delete(),i.delete(),o}function Bs(e,t){let n=new e.ShapeFix_Solid_1,r=n.SolidFromShell(e.TopoDS_Cast.Shell(t));return n.delete(),r}function Vs(e,t){return e.BRepToolsWrapper.Write(t)}function Hs(e,t){return e.BRepToolsWrapper.Read(t)}function Us(e,t,n={}){let r=n.unit??`MM`;e.Interface_Static.SetCVal(`xstep.cascade.unit`,r),e.Interface_Static.SetCVal(`write.step.unit`,r),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,5),new e.STEPCAFControl_Writer_1().delete();let i=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),a=new e.TDocStd_Document(i);i.delete();let o=a.Main(),s=e.XCAFDoc_DocumentTool.ShapeTool(o).get(),c=e.XCAFDoc_DocumentTool.ColorTool(o).get();e.XCAFDoc_ShapeTool.SetAutoNaming(!1);for(let n of t){let t=s.AddShape(n.shape,!1,!0),r=new e.TCollection_ExtendedString_2(n.name,!0);if(e.TDataStd_Name.Set_1(t,r),r.delete(),n.color){let[r,i,a,o]=n.color,s=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,o/255);c.SetColor_6(t,s,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),s.delete()}}let l=new e.XSControl_WorkSession,u=new e.Handle_XSControl_WorkSession_2(l),d=new e.STEPCAFControl_Writer_2(u,!1),f=new e.Handle_TDocStd_Document_2(a),p=new e.Message_ProgressRange_1;d.Transfer_1(f,e.STEPControl_StepModelType.STEPControl_AsIs,null,p),p.delete();let m=`assembly_export_${Date.now()}.step`,h=d.Write_1(m),g=``;if(h===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+m);g=new TextDecoder().decode(t),e.FS.unlink(`/`+m)}return d.delete(),u.delete(),f.delete(),a.delete(),g}function Ws(e,t){try{t.delete()}catch{}}function Gs(e,t,n){let r=Ds(e,[0,0,0],[t,0,0]),i=Ds(e,[t,0,0],[t,n,0]),a=Ds(e,[t,n,0],[0,n,0]),o=Ds(e,[0,n,0],[0,0,0]),s=new e.BRepBuilderAPI_MakeWire_1;s.Add_1(r),s.Add_1(i),s.Add_1(a),s.Add_1(o);let c=s.Wire();s.delete(),r.delete(),i.delete(),a.delete(),o.delete();let l=new e.BRepBuilderAPI_MakeFace_15(c,!1),u=l.Face();return l.delete(),u}function Ks(e,t,n,r){return new e.gp_Pnt_3(t,n,r)}function qs(e,t,n,r){return new e.gp_Dir_5(t,n,r)}function Js(e,t,n,r){return new e.gp_Vec_4(t,n,r)}function Ys(e,t,n,r,i,a,o){let s=new e.gp_Pnt_3(t,n,r),c=new e.gp_Dir_5(i,a,o),l=new e.gp_Ax1_2(s,c);return s.delete(),c.delete(),l}function Xs(e,t,n,r,i,a,o,s,c,l){let u=new e.gp_Pnt_3(t,n,r),d=new e.gp_Dir_5(i,a,o),f;if(s!==void 0&&c!==void 0&&l!==void 0){let t=new e.gp_Dir_5(s,c,l);f=new e.gp_Ax2_2(u,d,t),t.delete()}else f=new e.gp_Ax2_4(u,d);return u.delete(),d.delete(),f}function Zs(e,t,n,r,i,a,o,s,c,l){let u=new e.gp_Pnt_3(t,n,r),d=new e.gp_Dir_5(i,a,o),f;if(s!==void 0&&c!==void 0&&l!==void 0){let t=new e.gp_Dir_5(s,c,l);f=new e.gp_Ax3_3(u,d,t),t.delete()}else f=new e.gp_Ax3_5(u,d);return u.delete(),d.delete(),f}function Qs(e){return{makeLineEdge:(t,n)=>Ds(e,t,n),makeCircleEdge:(t,n,r)=>Os(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>ks(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>As(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>Ms(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>Ns(e,t,n,r,i,a,o,s),makeBezierEdge:t=>Ps(e,t),makeTangentArc:(t,n,r)=>js(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>Fs(e,t,n,r,i,a,o),makeCompound:t=>Rs(e,t),makeBoxFromCorners:(t,n)=>zs(e,t,n),makeRectangle:(t,n)=>Gs(e,t,n),solidFromShell:t=>Bs(e,t),makeEllipsoid:(t,n,r)=>Ls(e,t,n,r),toBREP:t=>Vs(e,t),fromBREP:t=>Hs(e,t),exportSTEPAssembly:(t,n)=>Us(e,t,n??{}),dispose:t=>{Ws(e,t)},createPoint3d:(t,n,r)=>Ks(e,t,n,r),createDirection3d:(t,n,r)=>qs(e,t,n,r),createVector3d:(t,n,r)=>Js(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>Ys(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Xs(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>Zs(e,t,n,r,i,a,o,s,c,l)}}function $s(e,t,n,r){let i=io(`extrude`);try{let i=new e.gp_Vec_4(n[0]*r,n[1]*r,n[2]*r),a=new e.BRepPrimAPI_MakePrism_1(t,i,!1,!0),o=a.Shape();return a.delete(),i.delete(),o}finally{i()}}function ec(e,t,n,r){let i=new e.BRepPrimAPI_MakeRevol_1(t,n,r,!1),a=i.Shape();return i.delete(),a}function tc(e,t,n=!1,r,i){let a=io(`loft`);try{let a=new e.BRepOffsetAPI_ThruSections(!0,n,1e-6);r&&a.AddVertex(r);for(let e of t)a.AddWire(e);i&&a.AddVertex(i);let o=new e.Message_ProgressRange_1;a.Build(o);let s=a.Shape();return a.delete(),o.delete(),s}finally{a()}}function nc(e,t,n,r={}){let{transitionMode:i}=r,a=new e.BRepOffsetAPI_MakePipeShell(n);typeof a.SetIsBuildHistory==`function`&&a.SetIsBuildHistory(!1),i!==void 0&&a.SetTransitionMode(i),a.Add_1(t,!1,!1);let o=new e.Message_ProgressRange_1;if(a.Build(o),o.delete(),!a.IsDone())throw a.delete(),Error(`Sweep build failed (IsDone=false)`);a.MakeSolid();let s=a.Shape();return a.delete(),s}function rc(e,t,n){let r=new e.BRepOffsetAPI_MakePipe_1(n,t),i=new e.Message_ProgressRange_1;r.Build(i),i.delete();let a=r.Shape();if(a.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_SHELL){let t=new e.BRepBuilderAPI_MakeSolid_1,n=e.TopoDS_Cast.Shell(a);t.Add(n);let i=new e.Message_ProgressRange_1;t.Build(i),i.delete();let o=a;if(t.IsDone()){let n=t.Solid(),r=new e.BRepCheck_Analyzer(n,!0,!1,!1);r.IsValid_2()?o=n:n.delete(),r.delete()}return n.delete(),t.delete(),r.delete(),o}return r.delete(),a}var ic,ac;function oc(){ic=void 0}function sc(){ac=void 0}function cc(e){return ic??=typeof e.LoftBatch==`function`,ic}function lc(e){return ac??=typeof e.ExtrudeBatch==`function`,ac}function uc(e,t){if(t.length===0)return[];if(cc(e)){let n=io(`loft`),r=new e.LoftBatch;try{for(let e of t){let t=r.beginLoft(e.solid??!0,e.ruled??!1,e.tolerance??1e-6);e.startVertex&&r.setStartVertex(t,e.startVertex);for(let n of e.wires)r.addWire(t,n);e.endVertex&&r.setEndVertex(t,e.endVertex)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>tc(e,t.wires,t.ruled??!1,t.startVertex,t.endVertex))}function dc(e,t){if(t.length===0)return[];if(lc(e)){let n=io(`extrude`),r=new e.ExtrudeBatch;try{for(let e of t)r.addExtrude(e.face,e.direction[0]*e.length,e.direction[1]*e.length,e.direction[2]*e.length);let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>$s(e,t.face,t.direction,t.length))}function fc(e){return{extrude:(t,n,r)=>$s(e,t,n,r),revolve:(t,n,r)=>ec(e,t,n,r),loft:(t,n,r,i)=>tc(e,t,n,r,i),sweep:(t,n,r)=>nc(e,t,n,r??{}),simplePipe:(t,n)=>rc(e,t,n),loftBatch:t=>uc(e,t),extrudeBatch:t=>dc(e,t)}}function pc(e,t,n,r){let i=io(`fillet`);try{let i=new e.BRepFilletAPI_MakeFillet(t,e.ChFi3d_FilletShape.ChFi3d_Rational);for(let t of n){let n=typeof r==`function`?r(t):r,a=e.TopoDS_Cast.Edge(t);if(typeof n==`number`)n>0&&i.Add_2(n,a);else{let[e,t]=n;e>0&&t>0&&i.Add_3(e,t,a)}}let a=i.Shape();return i.delete(),a}finally{i()}}function mc(e,t,n,r){let i=new e.BRepFilletAPI_MakeChamfer(t),a=null;function o(){if(a)return a;a=new Map;let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let t=e.TopoDS_Cast.Face(n.Current()),r=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;r.More();){let n=e.shapeHashCode(r.Current(),2147483647);a.has(n)||a.set(n,t),r.Next()}r.delete(),n.Next()}return n.delete(),a}function s(t){return o().get(e.shapeHashCode(t,2147483647))??null}for(let t of n){let n=typeof r==`function`?r(t):r,a=e.TopoDS_Cast.Edge(t);if(typeof n==`number`)n>0&&i.Add_2(n,a);else{let[e,r]=n;if(e>0&&r>0){let n=s(t);n&&i.Add_3(e,r,a,n)}}}let c=i.Shape();return i.delete(),c}function hc(e,t,n,r,i=.001){let a=io(`shell`);try{let a=new e.TopTools_ListOfShape_1;for(let e of n)a.Append_1(e);let o=new e.Message_ProgressRange_1,s=new e.BRepOffsetAPI_MakeThickSolid;s.MakeThickSolidByJoin(t,a,-r,i,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,o);let c=s.Shape();return s.delete(),a.delete(),o.delete(),c}finally{a()}}function gc(e,t,n){let r=new e.BRepOffsetAPI_MakeThickSolid;r.MakeThickSolidBySimple(t,n);let i=new e.Message_ProgressRange_1;r.Build(i);let a=r.Shape();return r.delete(),i.delete(),a}function _c(e,t,n,r,i){let a=new e.BRepFilletAPI_MakeChamfer(t),o=i*Math.PI/180,s=new Map,c=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;c.More();){let t=e.TopoDS_Cast.Face(c.Current()),n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let r=e.shapeHashCode(n.Current(),2147483647);s.has(r)||s.set(r,t),n.Next()}n.delete(),c.Next()}c.delete();for(let t of n){let n=s.get(e.shapeHashCode(t,2147483647))??null;n&&r>0&&a.AddDA(r,o,e.TopoDS_Cast.Edge(t),n)}let l=a.Shape();return a.delete(),l}function vc(e,t,n,r){let i;i=typeof r==`string`?{arc:e.GeomAbs_JoinType.GeomAbs_Arc,intersection:e.GeomAbs_JoinType.GeomAbs_Intersection,tangent:e.GeomAbs_JoinType.GeomAbs_Tangent}[r]??e.GeomAbs_JoinType.GeomAbs_Arc:r??e.GeomAbs_JoinType.GeomAbs_Arc;let a=new e.BRepOffsetAPI_MakeOffset_3(t,i,!1);a.Perform(n,0);let o=a.Shape();return a.delete(),o}function yc(e,t,n,r=1e-6){let i=new e.Message_ProgressRange_1,a=new e.BRepOffsetAPI_MakeOffsetShape;a.PerformByJoin(t,n,r,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,i);let o=a.Shape();return a.delete(),i.delete(),o}var bc,xc;function Sc(){bc=void 0}function Cc(){xc=void 0}function wc(e){return bc??=typeof e.ShellBatch==`function`,bc}function Tc(e){return xc??=typeof e.FilletBatch==`function`,xc}function Ec(e,t){if(t.length===0)return[];if(wc(e)){let n=io(`shell`),r=new e.ShellBatch;try{for(let e of t){let t=r.beginShell(e.shape,e.thickness,e.tolerance??.001);for(let n of e.faces)r.addFaceToRemove(t,n)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>hc(e,t.shape,t.faces,t.thickness,t.tolerance??.001))}function Dc(e,t){if(t.length===0)return[];if(Tc(e)){let n=io(`fillet`),r=new e.FilletBatch;try{for(let e of t){let t=r.beginFillet(e.shape);for(let n of e.edges)n.r2===void 0?r.addEdge(t,n.edge,n.radius):r.addEdgeVariable(t,n.edge,n.radius,n.r2)}let e=r.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{r.delete(),n()}}return t.map(t=>{let n=t.edges.map(e=>e.edge);return pc(e,t.shape,n,e=>{let n=t.edges.find(t=>t.edge===e);return n?n.r2===void 0?n.radius:[n.radius,n.r2]:0})})}function Oc(e){return{fillet:(t,n,r)=>pc(e,t,n,r),chamfer:(t,n,r)=>mc(e,t,n,r),chamferDistAngle:(t,n,r,i)=>_c(e,t,n,r,i),shell:(t,n,r,i)=>hc(e,t,n,r,i),thicken:(t,n)=>gc(e,t,n),offset:(t,n,r)=>yc(e,t,n,r),offsetWire2D:(t,n,r)=>vc(e,t,n,r),shellBatch:t=>Ec(e,t),filletBatch:t=>Dc(e,t)}}var kc;function Ac(){kc=void 0}function jc(e){return kc??=typeof e.TransformBatch==`function`,kc}function Mc(e,t){if(t.length===0)return[];let n=io(`transform`);try{if(jc(e)){let n=new e.TransformBatch;try{for(let e of t)switch(e.type){case`translate`:n.addTranslate(e.shape,e.x,e.y,e.z);break;case`rotate`:n.addRotate(e.shape,e.angle*Math.PI/180,...e.axis,...e.center);break;case`scale`:n.addScale(e.shape,...e.center,e.factor);break;case`mirror`:n.addMirror(e.shape,...e.origin,...e.normal);break}let e=n.execute();try{let t=e.getShapesCount();return Array.from({length:t},(t,n)=>e.getShape(n))}finally{e.delete()}}finally{n.delete()}}return t.map(t=>{switch(t.type){case`translate`:return Fc(e,t.shape,t.x,t.y,t.z);case`rotate`:return Ic(e,t.shape,t.angle,[...t.axis],[...t.center]);case`scale`:return Rc(e,t.shape,[...t.center],t.factor);case`mirror`:return Lc(e,t.shape,[...t.origin],[...t.normal])}})}finally{n()}}function Nc(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),i=r.ModifiedShape(t);return r.delete(),i}function Pc(e,t,n){let r=new e.BRepBuilderAPI_Transform_2(t,n,!1,!1);try{return r.ModifiedShape(t)}finally{r.delete()}}function Fc(e,t,n,r,i){let a=new e.gp_Trsf_1,o=new e.gp_Vec_4(n,r,i);a.SetTranslation_1(o);let s=Nc(e,t,a);return a.delete(),o.delete(),s}function Ic(e,t,n,r=[0,0,1],i=[0,0,0]){let a=new e.gp_Trsf_1,o=new e.gp_Pnt_3(...i),s=new e.gp_Dir_5(...r),c=new e.gp_Ax1_2(o,s);a.SetRotation_1(c,n*Math.PI/180);let l=Nc(e,t,a);return a.delete(),c.delete(),o.delete(),s.delete(),l}function Lc(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n),o=new e.gp_Dir_5(...r),s=new e.gp_Ax2_4(a,o);i.SetMirror_3(s);let c=Nc(e,t,i);return i.delete(),s.delete(),a.delete(),o.delete(),c}function Rc(e,t,n,r){let i=new e.gp_Trsf_1,a=new e.gp_Pnt_3(...n);i.SetScale(a,r);let o=Nc(e,t,i);return i.delete(),a.delete(),o}function zc(e,t,n,r,i){if(i){let i=new e.gp_Trsf_1;i.SetValues(n[0],n[1],n[2],r[0],n[3],n[4],n[5],r[1],n[6],n[7],n[8],r[2]);let a=new e.BRepBuilderAPI_Transform_2(t,i,!0,!1),o=a.ModifiedShape(t);return a.delete(),i.delete(),o}let a=new e.gp_GTrsf_1;for(let e=0;e<3;e++)for(let t=0;t<3;t++)a.SetValue(e+1,t+1,n[e*3+t]);let o=new e.gp_XYZ_2(r[0],r[1],r[2]);a.SetTranslationPart(o),o.delete();let s=new e.BRepBuilderAPI_GTransform_2(t,a,!0),c=s.ModifiedShape(t);return s.delete(),a.delete(),c}function Bc(e,t){let n=new e.ShapeUpgrade_UnifySameDomain_2(t,!0,!0,!1);n.Build();let r=n.Shape();return n.delete(),r}function Vc(e){return{transform:(t,n)=>Nc(e,t,n),locate:(t,n)=>Pc(e,t,n),translate:(t,n,r,i)=>Fc(e,t,n,r,i),rotate:(t,n,r,i)=>Ic(e,t,n,r,i),mirror:(t,n,r)=>Lc(e,t,n,r),scale:(t,n,r)=>Rc(e,t,n,r),transformBatch:t=>Mc(e,t),generalTransform:(t,n,r,i)=>zc(e,t,n,r,i),simplify:t=>Bc(e,t)}}function Hc(e,t,n){if(n===0)return new Float32Array;let r=t/4;return e.slice(r,r+n)}function Uc(e,t,n){let r=io(`mesh`);try{let r=e.MeshExtractor.extract(t,n.tolerance,n.angularTolerance,!!n.skipNormals,!!n.includeUVs),i=r.getVerticesSize(),a=r.getNormalsSize(),o=r.getTrianglesSize(),s=r.getFaceGroupsSize(),c=r.getUvsSize(),l=Hc(e.HEAPF32,r.getVerticesPtr(),i),u=n.skipNormals||a===0?new Float32Array:Hc(e.HEAPF32,r.getNormalsPtr(),a),d=r.getTrianglesPtr()/4,f=e.HEAPU32.slice(d,d+o),p=c>0?Hc(e.HEAPF32,r.getUvsPtr(),c):new Float32Array,m=[];if(s>0){let t=r.getFaceGroupsPtr()/4,n=e.HEAP32.slice(t,t+s);for(let e=0;e<n.length;e+=3)m.push({start:n[e],count:n[e+1],faceHash:n[e+2]})}return r.delete(),{vertices:l,normals:u,triangles:f,uvs:p,faceGroups:m}}finally{r()}}function Wc(e,t,n,r){let i=io(`edgeMesh`);try{let i=e.EdgeMeshExtractor.extract(t,n,r),a=i.getLinesSize(),o=i.getEdgeGroupsSize(),s=Hc(e.HEAPF32,i.getLinesPtr(),a),c=[];if(o>0){let t=i.getEdgeGroupsPtr()/4,n=e.HEAP32.slice(t,t+o);for(let e=0;e<n.length;e+=3)c.push({start:n[e],count:n[e+1],edgeHash:n[e+2]})}return i.delete(),{lines:s,edgeGroups:c}}finally{i()}}function Gc(e){return{mesh:(t,n)=>Uc(e,t,n),meshEdges:(t,n,r)=>Wc(e,t,n,r)}}var Kc=0;function qc(e,t){return`${e}_${++Kc}.${t}`}function Jc(e,t){let n=e.StepStreamIO;if(typeof n?.exportSTEP==`function`&&t.length===1)return n.exportSTEP(t[0],5);let r=new e.STEPControl_Writer_1;e.Interface_Static.SetIVal(`write.step.schema`,5),r.Model(!0).delete();let i=new e.Message_ProgressRange_1;for(let n of t)r.Transfer_1(n,e.STEPControl_StepModelType.STEPControl_AsIs,!0,i);let a=qc(`_export`,`step`),o=r.Write(a);if(r.delete(),i.delete(),o===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+a);return e.FS.unlink(`/`+a),new TextDecoder().decode(t)}throw Error(`STEP export failed: writer did not complete successfully`)}function Yc(e,t,n=!1){let r=qc(`_export`,`stl`);if(e.StlAPI.Write(t,r,!n)){let t=e.FS.readFile(`/`+r);return e.FS.unlink(`/`+r),n?t.buffer:new TextDecoder().decode(t)}throw Error(`STL export failed: StlAPI.Write returned false`)}function Xc(e,t){let n=new e.IGESControl_Writer_1;for(let e of t)n.AddShape(e);n.ComputeModel();let r=qc(`_export`,`iges`),i=n.Write_2(r);if(n.delete(),i){let t=e.FS.readFile(`/`+r);return e.FS.unlink(`/`+r),new TextDecoder().decode(t)}throw Error(`IGES export failed: writer did not complete successfully`)}function Zc(e,t){let n=typeof t==`string`?t:new TextDecoder().decode(new Uint8Array(t)),r=e.StepStreamIO;if(typeof r?.importSTEP==`function`){let e=r.importSTEP(n);if(e.IsNull())throw Error(`Failed to import STEP file: stream reader could not parse the input data`);return[e]}let i=qc(`_import`,`step`),a=new TextEncoder().encode(n);e.FS.writeFile(`/`+i,a);let o=new e.STEPControl_Reader_1;if(o.ReadFile(i)){e.FS.unlink(`/`+i);let t=new e.Message_ProgressRange_1;o.TransferRoots(t),t.delete();let n=o.OneShape();return o.delete(),[n]}throw e.FS.unlink(`/`+i),o.delete(),Error(`Failed to import STEP file: reader could not parse the input data`)}function Qc(e,t){let n=qc(`_import`,`stl`),r=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);e.FS.writeFile(`/`+n,r);let i=new e.StlAPI_Reader,a=new e.TopoDS_Shape;if(i.Read_1(a,`/`+n)){e.FS.unlink(`/`+n);let t=new e.ShapeUpgrade_UnifySameDomain_2(a,!0,!0,!1);t.Build();let r=t.Shape(),o=new e.BRepBuilderAPI_MakeSolid_1;o.Add(e.TopoDS_Cast.Shell(r));let s=o.Solid();return a.delete(),t.delete(),o.delete(),i.delete(),s}throw e.FS.unlink(`/`+n),a.delete(),i.delete(),Error(`Failed to import STL file: reader could not parse the input data`)}function $c(e,t){let n=qc(`_import`,`iges`),r=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);e.FS.writeFile(`/`+n,r);let i=new e.IGESControl_Reader_1;if(i.ReadFile(n)===e.IFSelect_ReturnStatus.IFSelect_RetDone){e.FS.unlink(`/`+n);let t=new e.Message_ProgressRange_1;i.TransferRoots(t),t.delete();let r=i.OneShape();return i.delete(),[r]}throw e.FS.unlink(`/`+n),i.delete(),Error(`Failed to import IGES file: reader could not parse the input data`)}function el(e){return{exportSTEP:t=>Jc(e,t),exportSTL:(t,n)=>Yc(e,t,n),importSTEP:t=>Zc(e,t),importSTL:t=>Qc(e,t),exportIGES:t=>Xc(e,t),importIGES:t=>$c(e,t)}}function tl(e,t){let n=e.BRep_Tool.Pnt(t),r=[n.X(),n.Y(),n.Z()];return n.delete(),r}function nl(e){let t=e.GeomAbs_SurfaceType;return new Map([[t.GeomAbs_Plane,`plane`],[t.GeomAbs_Cylinder,`cylinder`],[t.GeomAbs_Cone,`cone`],[t.GeomAbs_Sphere,`sphere`],[t.GeomAbs_Torus,`torus`],[t.GeomAbs_BezierSurface,`bezier`],[t.GeomAbs_BSplineSurface,`bspline`],[t.GeomAbs_SurfaceOfRevolution,`revolution`],[t.GeomAbs_SurfaceOfExtrusion,`extrusion`],[t.GeomAbs_OffsetSurface,`offset`],[t.GeomAbs_OtherSurface,`other`]])}var rl=new WeakMap;function il(e,t){let n=rl.get(e);n||(n=nl(e),rl.set(e,n));let r=new e.BRepAdaptor_Surface_2(t,!1),i=r.GetType();return r.delete(),n.get(i)??`other`}function al(e,t){let n=e.BRepTools.UVBounds_1(t);return{uMin:n.UMin,uMax:n.UMax,vMin:n.VMin,vMax:n.VMax}}function ol(e,t){return e.BRepTools.OuterWire(t)}function sl(e,t,n,r){let i=new e.BRepGProp_Face_2(t,!1),a=new e.gp_Pnt_1,o=new e.gp_Vec_1;i.Normal(n,r,a,o);let s=[o.X(),o.Y(),o.Z()];return i.delete(),a.delete(),o.delete(),s}function cl(e,t,n,r){let i=new e.BRepAdaptor_Surface_2(t,!1),a=new e.gp_Pnt_1;i.D0(n,r,a);let o=[a.X(),a.Y(),a.Z()];return i.delete(),a.delete(),o}function ll(e,t,n){let r=e.BRep_Tool.Surface_2(t),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.GeomAPI_ProjectPointOnSurf_2(i,r,e.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad),o=null;if(a.NbPoints()>0){let e=a.LowerDistanceParameters();o=[e.U,e.V]}return a.delete(),i.delete(),o}function ul(e,t,n){let r=e.BRep_Tool.Surface_2(t),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.GeomAPI_ProjectPointOnSurf_2(i,r,e.Extrema_ExtAlgo.Extrema_ExtAlgo_Grad),o;if(a.NbPoints()>0){let e=a.NearestPoint();o=[e.X(),e.Y(),e.Z()],e.delete()}else o=n;return a.delete(),i.delete(),o}function dl(e,t,n){let r=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),i=new e.gp_Pnt_1,a=new e.gp_Vec_1;r.D1(n,i,a);let o={point:[i.X(),i.Y(),i.Z()],tangent:[a.X(),a.Y(),a.Z()]};return r.delete(),i.delete(),a.delete(),o}function fl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=[n.FirstParameter(),n.LastParameter()];return n.delete(),r}function pl(e,t,n){let r=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),i=r.Value(n),a=[i.X(),i.Y(),i.Z()];return i.delete(),r.delete(),a}function ml(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.IsClosed();return n.delete(),r}function hl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.IsPeriodic();return n.delete(),r}function gl(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.Period();return n.delete(),r}function _l(e,t){let n=t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t),r=n.GetType();return n.delete(),{0:`LINE`,1:`CIRCLE`,2:`ELLIPSE`,3:`HYPERBOLA`,4:`PARABOLA`,5:`BEZIER_CURVE`,6:`BSPLINE_CURVE`,7:`OFFSET_CURVE`,8:`OTHER_CURVE`}[typeof r==`number`?r:Number(r?.value??r)]??`OTHER_CURVE`}function vl(e,t){let n=t.Orientation_1(),r=e.TopAbs_Orientation;return n===r.TopAbs_FORWARD?`forward`:n===r.TopAbs_REVERSED?`reversed`:n===r.TopAbs_INTERNAL?`internal`:`external`}function yl(e,t,n){switch(n??bl(e,t)){case`vertex`:return e.TopoDS_Cast.Vertex(t);case`edge`:return e.TopoDS_Cast.Edge(t);case`wire`:return e.TopoDS_Cast.Wire(t);case`face`:return e.TopoDS_Cast.Face(t);case`shell`:return e.TopoDS_Cast.Shell(t);case`solid`:return e.TopoDS_Cast.Solid(t);case`compsolid`:return e.TopoDS_Cast.CompSolid(t);default:return e.TopoDS_Cast.Compound(t)}}function bl(e,t){let n=t.ShapeType(),r=e.TopAbs_ShapeEnum;return n===r.TopAbs_VERTEX?`vertex`:n===r.TopAbs_EDGE?`edge`:n===r.TopAbs_WIRE?`wire`:n===r.TopAbs_FACE?`face`:n===r.TopAbs_SHELL?`shell`:n===r.TopAbs_SOLID?`solid`:n===r.TopAbs_COMPSOLID?`compsolid`:`compound`}function xl(e,t,n){return e.shapeHashCode(t,n)}function Sl(e,t){return t.IsNull()}function Cl(e,t){return t.Reversed()}function wl(e,t){let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE),r=new e.TopLoc_Location_1,i=!1;for(;n.More();){let t=e.TopoDS_Cast.Face(n.Current());if(!e.BRep_Tool_Triangulation(t,r,0).IsNull()){i=!0;break}n.Next()}return n.delete(),r.delete(),i}function Tl(e,t,n,r){new e.BRepMesh_IncrementalMeshWrapper(t,n,!1,r,!1).delete()}function El(e,t){let n=new e.BRepAdaptor_Curve_2(t);try{let e=n.Bezier().get(),t=e.NbPoles();if(t<2)return null;let r=e.Pole(t-1),i=[r.X(),r.Y(),r.Z()];return r.delete(),i}catch{return null}finally{n.delete()}}function Dl(e,t){return t.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(t,!1):new e.BRepAdaptor_Curve_2(t)}function Ol(e,t){let n=t.get();if(typeof n.Cylinder!=`function`)return null;let r=n.Cylinder(),i={radius:r.Radius(),isDirect:r.Direct()};return r.delete(),i}function kl(e,t){let n=null;try{if(t===7)return e.AxeOfRevolution();if(t===1)n=e.Cylinder();else if(t===2)n=e.Cone();else if(t===4)n=e.Torus();else return null;let r=n.Axis();return n.delete(),r}catch{return n?.delete?.(),null}}function Al(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let e=n.GetType(),t=kl(n,typeof e==`number`?e:Number(e?.value??e));if(!t)return null;let r=null,i=null;try{return r=t.Location(),i=t.Direction(),{origin:[r.X(),r.Y(),r.Z()],direction:[i.X(),i.Y(),i.Z()]}}finally{r?.delete?.(),i?.delete?.(),t.delete()}}finally{n.delete()}}function jl(e,t){return t.get().UReversed()}function Ml(e){return{vertexPosition:t=>tl(e,t),surfaceType:t=>il(e,t),uvBounds:t=>al(e,t),outerWire:t=>ol(e,t),surfaceNormal:(t,n,r)=>sl(e,t,n,r),pointOnSurface:(t,n,r)=>cl(e,t,n,r),uvFromPoint:(t,n)=>ll(e,t,n),projectPointOnFace:(t,n)=>ul(e,t,n),curveTangent:(t,n)=>dl(e,t,n),curveParameters:t=>fl(e,t),shapeOrientation:t=>vl(e,t),downcast:(t,n)=>yl(e,t,n),copyShape:t=>yl(e,t),hashCode:(t,n)=>xl(e,t,n),isNull:t=>Sl(e,t),hasTriangulation:t=>wl(e,t),meshShape:(t,n,r)=>{Tl(e,t,n,r)},getBezierPenultimatePole:t=>El(e,t),createCurveAdaptor:t=>Dl(e,t),reverseShape:t=>Cl(e,t),curvePointAtParam:(t,n)=>pl(e,t,n),curveIsClosed:t=>ml(e,t),curveIsPeriodic:t=>hl(e,t),curvePeriod:t=>gl(e,t),curveType:t=>_l(e,t),getSurfaceCylinderData:t=>Ol(e,t),getSurfaceAxis:t=>Al(e,t),reverseSurfaceU:t=>jl(e,t)}}function Nl(e,t){let n=new e.BRepAdaptor_Curve_2(t);try{let t=n.GetType(),r=typeof t==`number`?t:Number(t?.value??t),i=e.GeomAbs_CurveType,a=typeof i.GeomAbs_BSplineCurve==`number`?i.GeomAbs_BSplineCurve:Number(i.GeomAbs_BSplineCurve?.value??i.GeomAbs_BSplineCurve),o=typeof i.GeomAbs_BezierCurve==`number`?i.GeomAbs_BezierCurve:Number(i.GeomAbs_BezierCurve?.value??i.GeomAbs_BezierCurve);if(r!==a&&r!==o)return null;let s=n.BSpline(),c=s.get(),l=c.Degree(),u=c.NbPoles(),d=c.NbKnots(),f=c.IsPeriodic(),p=c.IsRational(),m=[];for(let e=1;e<=u;e++){let t=c.Pole(e);m.push([t.X(),t.Y(),t.Z()]),t.delete()}let h=[];for(let e=1;e<=u;e++)h.push(c.Weight(e));let g=[],_=[];for(let e=1;e<=d;e++)g.push(c.Knot(e)),_.push(c.Multiplicity(e));let v={degree:l,poles:m,weights:h,knots:g,multiplicities:_,isPeriodic:f,isRational:p};return s.delete(),v}catch{return null}finally{n.delete()}}function Pl(e,t){let n=new e.BRepAdaptor_Surface_2(t,!1);try{let t=n.GetType(),r=typeof t==`number`?t:Number(t?.value??t),i=e.GeomAbs_SurfaceType;if(r!==(typeof i.GeomAbs_BSplineSurface==`number`?i.GeomAbs_BSplineSurface:Number(i.GeomAbs_BSplineSurface?.value??i.GeomAbs_BSplineSurface)))return null;let a=n.BSpline(),o=a.get(),s=o.UDegree(),c=o.VDegree(),l=o.NbUPoles(),u=o.NbVPoles(),d=o.IsUPeriodic(),f=o.IsVPeriodic(),p=o.IsURational()||o.IsVRational(),m=[],h=[];for(let e=1;e<=l;e++){let t=[],n=[];for(let r=1;r<=u;r++){let i=o.Pole(e,r);t.push([i.X(),i.Y(),i.Z()]),i.delete(),n.push(o.Weight(e,r))}m.push(t),h.push(n)}let g=o.NbUKnots(),_=[],v=[];for(let e=1;e<=g;e++)_.push(o.UKnot(e)),v.push(o.UMultiplicity(e));let y=o.NbVKnots(),b=[],x=[];for(let e=1;e<=y;e++)b.push(o.VKnot(e)),x.push(o.VMultiplicity(e));let S={degreeU:s,degreeV:c,nbPolesU:l,nbPolesV:u,poles:m,weights:h,knotsU:_,knotsV:b,multiplicitiesU:v,multiplicitiesV:x,isPeriodicU:d,isPeriodicV:f,isRational:p};return a.delete(),S}catch{return null}finally{n.delete()}}function Fl(e){return{getNurbsCurveData:t=>Nl(e,t),getNurbsSurfaceData:t=>Pl(e,t)}}function Il(e,t,n={}){let{tolerance:r=1e-8}=n,i=new e.TColgp_Array1OfPnt_2(1,t.length),a=new e.gp_Pnt_1,o=1;for(let e of t)a.SetCoord_2(e[0],e[1],e[2]),i.SetValue_1(o++,a);a.delete();let s=new e.GeomAPI_PointsToBSpline_2(i,3,8,e.GeomAbs_Shape.GeomAbs_C2,r);if(i.delete(),!s.IsDone())throw s.delete(),Error(`Interpolation failed — GeomAPI_PointsToBSpline did not converge`);let c=s.Curve(),l=new e.Handle_Geom_Curve_2(c.get()),u=new e.BRepBuilderAPI_MakeEdge_24(l),d=u.Edge();return u.delete(),s.delete(),d}function Ll(e,t,n={}){let{tolerance:r=.001,degMin:i=1,degMax:a=6,smoothing:o=null}=n,s=new e.TColgp_Array1OfPnt_2(1,t.length),c=new e.gp_Pnt_1,l=1;for(let e of t)c.SetCoord_2(e[0],e[1],e[2]),s.SetValue_1(l++,c);c.delete();let u;if(u=o?new e.GeomAPI_PointsToBSpline_5(s,o[0],o[1],o[2],a,e.GeomAbs_Shape.GeomAbs_C2,r):new e.GeomAPI_PointsToBSpline_2(s,i,a,e.GeomAbs_Shape.GeomAbs_C2,r),s.delete(),!u.IsDone())throw u.delete(),Error(`Approximation failed — GeomAPI_PointsToBSpline did not converge`);let d=u.Curve(),f=new e.Handle_Geom_Curve_2(d.get()),p=new e.BRepBuilderAPI_MakeEdge_24(f),m=p.Edge();return p.delete(),u.delete(),m}function Rl(e){return{interpolatePoints:(t,n)=>Il(e,t,n??{}),approximatePoints:(t,n)=>Ll(e,t,n??{})}}function zl(e,t){let n=new e.ShapeFix_Solid_2(t),r=new e.Message_ProgressRange_1;n.Perform(r),r.delete();let i=n.Solid();return n.delete(),i.IsNull()?null:i}function Bl(e,t){let n=new e.ShapeFix_Face_2(t);n.Perform();let r=n.Face();return n.delete(),r}function Vl(e,t,n){let r;n?r=new e.ShapeFix_Wire_2(t,n,1e-6):(r=new e.ShapeFix_Wire_1,r.Load_1(t)),r.Perform();let i=r.Wire();return r.delete(),i}function Hl(e){return{healSolid:t=>zl(e,t),healFace:t=>Bl(e,t),healWire:(t,n)=>Vl(e,t,n)}}var Ul={modified:new Map,generated:new Map,deleted:new Set};function Wl(e,t,n){let r=new Map;if(n===0)return r;let i=e.slice(t/4,t/4+n),a=0;for(;a+1<i.length;){let e=i[a++],t=i[a++];if(t<0||a+t>i.length)break;let n=[];for(let e=0;e<t;e++)n.push(i[a++]);r.set(e,n)}return r}function Gl(e,t){try{let n=Wl(e.HEAP32,t.getModifiedPtr(),t.getModifiedSize()),r=Wl(e.HEAP32,t.getGeneratedPtr(),t.getGeneratedSize()),i=new Set,a=t.getDeletedSize();if(a>0){let n=t.getDeletedPtr()/4,r=e.HEAP32.slice(n,n+a);for(let e=0;e<r.length;e++)i.add(r[e])}return{modified:n,generated:r,deleted:i}}finally{t.delete()}}function Kl(e,t,n){let r=[];if(t.Size()===0)return r;if(e.TopTools_ListIteratorOfListOfShape){let i=new e.TopTools_ListIteratorOfListOfShape(t);for(;i.More();)r.push(e.shapeHashCode(i.Value(),n)),i.Next();i.delete()}else{let i=new e.TopTools_ListOfShape_3(t);for(;i.Size()>0;)r.push(e.shapeHashCode(i.First_1(),n)),i.RemoveFirst();i.delete()}return r}function ql(e,t,n,r,i){if(r.length===0)return Ul;let a=Array.isArray(n)?n:[n];if(e.EvolutionExtractor){let n,r,o;if(a.length===1)n=a[0];else{r=new e.TopoDS_Builder,o=new e.TopoDS_Compound,r.MakeCompound(o);for(let e of a)r.Add(o,e);n=o}let s;try{s=e.EvolutionExtractor.extract(t,n,i)}catch{}finally{r?.delete(),o?.delete()}if(s!==void 0)return Gl(e,s)}let o=new Map,s=new Map,c=new Set,l=new Set(r),u=new Map;for(let t of a){let n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();){let t=n.Current(),r=e.shapeHashCode(t,i);l.has(r)&&u.set(r,t),n.Next()}n.delete()}for(let[n,r]of u){if(t.IsDeleted?.(r)){c.add(n);continue}let a=t.Modified(r);a.Size()>0&&o.set(n,Kl(e,a,i));let l=t.Generated(r);l.Size()>0&&s.set(n,Kl(e,l,i))}return{modified:o,generated:s,deleted:c}}function Jl(e,t,n,r,i){let a=new e.BRepBuilderAPI_Transform_2(t,n,!0,!1),o=a.Shape(),s=r.length===0?Ul:ql(e,a,t,r,i);return a.delete(),{shape:o,evolution:s}}function Yl(e,t,n,r,i,a,o){return a&&t.SimplifyResult(!0,!0,.001),{shape:t.Shape(),evolution:ql(e,t,n,r,i),diagnostics:o??{hasErrors:!1,hasWarnings:!1,messages:[]}}}function Xl(e,t,n,r,i){return{shape:t.Shape(),evolution:ql(e,t,n,r,i)}}function Zl(e,t,n,r,i,a,o){let s=new e.gp_Trsf_1,c=new e.gp_Vec_4(n,r,i);s.SetTranslation_1(c),c.delete();let l=Jl(e,t,s,a,o);return s.delete(),l}function Ql(e,t,n,r,i,a=[0,0,1],o=[0,0,0]){let s=new e.gp_Trsf_1,c=new e.gp_Pnt_3(o[0],o[1],o[2]),l=new e.gp_Dir_5(a[0],a[1],a[2]),u=new e.gp_Ax1_2(c,l);s.SetRotation_1(u,n),c.delete(),l.delete(),u.delete();let d=Jl(e,t,s,r,i);return s.delete(),d}function $l(e,t,n,r,i,a){let o=new e.gp_Trsf_1,s=new e.gp_Pnt_3(n[0],n[1],n[2]),c=new e.gp_Dir_5(r[0],r[1],r[2]),l=new e.gp_Ax2_4(s,c);o.SetMirror_3(l),s.delete(),c.delete(),l.delete();let u=Jl(e,t,o,i,a);return o.delete(),u}function eu(e,t,n,r,i,a){let o=new e.gp_Trsf_1,s=new e.gp_Pnt_3(n[0],n[1],n[2]);o.SetScale(s,r),s.delete();let c=Jl(e,t,o,i,a);return o.delete(),c}function tu(e,t,n,r,i,a,o){let s=new e.gp_Trsf_1;s.SetValues(n[0],n[1],n[2],r[0],n[3],n[4],n[5],r[1],n[6],n[7],n[8],r[2]);let c=Jl(e,t,s,a,o);return s.delete(),c}function nu(e){return{hasErrors:e.HasErrors(),hasWarnings:e.HasWarnings(),messages:[]}}function ru(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Fuse_3(t,n,o);Uo(e,s,a.optimisation),Wo(s,a.fuzzyValue),s.Build(o);let c=nu(s),l=Yl(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function iu(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Cut_3(t,n,o);Uo(e,s,a.optimisation),Wo(s,a.fuzzyValue),s.Build(o);let c=nu(s),l=Yl(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function au(e,t,n,r,i,a={}){let o=new e.Message_ProgressRange_1,s=new e.BRepAlgoAPI_Common_3(t,n,o);Uo(e,s,a.optimisation),Wo(s,a.fuzzyValue),s.Build(o);let c=nu(s),l=Yl(e,s,[t,n],r,i,a.simplify??!1,c);return s.delete(),o.delete(),l}function ou(e,t,n,r,i,a){let o=new e.BRepFilletAPI_MakeFillet(t,e.ChFi3d_FilletShape.ChFi3d_Rational);for(let t of n){let n=typeof r==`function`?r(t):r;Array.isArray(n)?o.Add_3(n[0],n[1],e.TopoDS_Cast.Edge(t)):o.Add_2(n,e.TopoDS_Cast.Edge(t))}let s=new e.Message_ProgressRange_1;o.Build(s),s.delete();let c=Xl(e,o,t,i,a);return o.delete(),c}function su(e,t,n,r,i,a){let o=new e.BRepFilletAPI_MakeChamfer(t),s=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_FACE,e.TopAbs_ShapeEnum.TopAbs_SHAPE),c=new Map;for(;s.More();){let t=e.TopoDS_Cast.Face(s.Current()),n=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;n.More();)c.set(e.shapeHashCode(n.Current(),a),t),n.Next();n.delete(),s.Next()}s.delete();for(let t of n){let n=typeof r==`function`?r(t):r,i=c.get(e.shapeHashCode(t,a));if(Array.isArray(n)&&i)o.Add_3(n[0],n[1],e.TopoDS_Cast.Edge(t),i);else{let r=Array.isArray(n)?n[0]:n;o.Add_2(r,e.TopoDS_Cast.Edge(t))}}let l=new e.Message_ProgressRange_1;o.Build(l),l.delete();let u=Xl(e,o,t,i,a);return o.delete(),u}function cu(e,t,n,r,i,a,o=.001){let s=new e.BRepOffsetAPI_MakeThickSolid,c=new e.TopTools_ListOfShape_1;for(let e of n)c.Append_1(e);let l=new e.Message_ProgressRange_1;s.MakeThickSolidByJoin(t,c,-r,o,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,l),l.delete(),c.delete();let u=Xl(e,s,t,i,a);return s.delete(),u}function lu(e,t,n,r,i){let a=new e.BRepOffsetAPI_MakeThickSolid;a.MakeThickSolidBySimple(t,n);let o=new e.Message_ProgressRange_1;a.Build(o),o.delete();let s=Xl(e,a,t,r,i);return a.delete(),s}function uu(e,t,n,r,i,a=1e-6){let o=new e.BRepOffsetAPI_MakeOffsetShape,s=new e.Message_ProgressRange_1;o.PerformByJoin(t,n,a,e.BRepOffset_Mode.BRepOffset_Skin,!1,!1,e.GeomAbs_JoinType.GeomAbs_Arc,!1,s),s.delete();let c=Xl(e,o,t,r,i);return o.delete(),c}function du(e,t,n,r,i,a,o,s){if(!e.BRepOffsetAPI_DraftAngle)throw Error(`BRepOffsetAPI_DraftAngle not available in this WASM build. Rebuild brepjs-opencascade with the updated build config.`);let[c,l,u]=r,[d,f,p]=i,m=new e.gp_Dir_5(c,l,u),h=new e.gp_Pnt_3(d,f,p),g=new e.gp_Pln_3(h,m),_=new e.BRepOffsetAPI_DraftAngle_2(t);try{for(let t of n){let n=(typeof a==`function`?a(t):a)*Math.PI/180;_.Add(e.TopoDS_Cast.Face(t),m,n,g,!0)}let r=new e.Message_ProgressRange_1;return _.Build(r),r.delete(),Xl(e,_,t,o,s)}finally{_.delete(),g.delete(),h.delete(),m.delete()}}function fu(e){return{translateWithHistory:(t,n,r,i,a,o)=>Zl(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>Ql(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>$l(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>eu(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>tu(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>ru(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>iu(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>au(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>ou(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>su(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>cu(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>lu(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>uu(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>du(e,t,n,r,i,a,o,s)}}function pu(e,t,n,r){let i=new e.gp_GTrsf_1;for(let e=0;e<3;e++)for(let t=0;t<3;t++)i.SetValue(e+1,t+1,n[e*3+t]);let a=new e.gp_XYZ_2(r[0],r[1],r[2]);i.SetTranslationPart(a),a.delete();let o=new e.BRepBuilderAPI_GTransform_2(t,i,!0),s=o.Shape();return o.delete(),i.delete(),s}function mu(e,t){let n=new e.gp_Trsf_1;for(let r of t){let t=new e.gp_Trsf_1;if(r.type===`translate`){let n=new e.gp_Vec_4(r.x,r.y,r.z);t.SetTranslation_1(n),n.delete()}else{let n=r.axis??[0,0,1],i=r.center??[0,0,0],a=new e.gp_Pnt_3(i[0],i[1],i[2]),o=new e.gp_Dir_5(n[0],n[1],n[2]),s=new e.gp_Ax1_2(a,o);t.SetRotation_1(s,r.angle*Math.PI/180),s.delete(),o.delete(),a.delete()}n.PreMultiply(t),t.delete()}return{handle:n,dispose:()=>n.delete()}}function hu(e,t,n,r,i){return Jl(e,t,n,r,i)}function gu(e,t){if(!t)return;let n=e.BRepBuilderAPI_TransitionMode;switch(t){case`transformed`:return n.BRepBuilderAPI_Transformed;case`round`:return n.BRepBuilderAPI_RoundCorner;case`right`:return n.BRepBuilderAPI_RightCorner}}function _u(e,t,n,r={}){let i=new e.BRepOffsetAPI_MakePipeShell(n);typeof i.SetIsBuildHistory==`function`&&i.SetIsBuildHistory(!1),r.tolerance!==void 0&&i.SetTolerance(r.tolerance,r.boundTolerance??r.tolerance,r.angularTolerance??1e-7),r.maxDegree!==void 0&&i.SetMaxDegree(r.maxDegree),r.maxSegments!==void 0&&i.SetMaxSegments(r.maxSegments);let a=gu(e,r.transitionMode);a!==void 0&&i.SetTransitionMode(a),r.support?i.SetMode_4(r.support):r.frenet&&i.SetMode_1(!0),r.auxiliary&&i.SetMode_5(r.auxiliary,!1,e.BRepFill_TypeOfContact.BRepFill_NoContact);let o=!!r.contact,s=!!r.correction;r.law?i.SetLaw_1(t,r.law,o,s):i.Add_1(t,o,s);let c=new e.Message_ProgressRange_1;if(i.Build(c),c.delete(),!i.IsDone())throw i.delete(),Error(`Sweep pipe shell build failed (IsDone=false)`);if(r.shellMode){let e=i.Shape(),t=i.FirstShape(),n=i.LastShape();return i.delete(),{shape:e,firstShape:t,lastShape:n}}i.MakeSolid();let l=i.Shape();return i.delete(),l}function vu(e,t,n={}){let r=n.solid??!0,i=n.ruled??!1,a=new e.BRepOffsetAPI_ThruSections(r,i,n.tolerance??1e-6);n.startVertex&&a.AddVertex(n.startVertex);for(let e of t)a.AddWire(e);n.endVertex&&a.AddVertex(n.endVertex);let o=new e.Message_ProgressRange_1;a.Build(o),o.delete();let s=a.Shape();return a.delete(),s}function yu(e,t,n,r){if(t===`linear`){let t=new e.Law_Linear;return t.Set(0,1,n,r),t}let i=new e.Law_S;return i.Set_1(0,1,n,r),i}function bu(e,t,n,r,i){let a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Dir_5(r[0],r[1],r[2]),s=new e.gp_Ax1_2(a,o),c=new e.BRepPrimAPI_MakeRevol_1(t,s,i,!1),l=c.Shape();return c.delete(),s.delete(),o.delete(),a.delete(),l}function xu(e,t,n,r,i){let a=[],o=new e.gp_Trsf_1;for(let s=0;s<i;s++){let i=n[0]*r*s,c=n[1]*r*s,l=n[2]*r*s,u=new e.gp_Vec_4(i,c,l);o.SetTranslation_1(u),u.delete();let d=new e.BRepBuilderAPI_Transform_2(t,o,!0,!1);a.push(d.Shape()),d.delete()}return o.delete(),a}function Su(e,t,n,r,i,a){let o=[],s=new e.gp_Pnt_3(n[0],n[1],n[2]),c=new e.gp_Dir_5(r[0],r[1],r[2]),l=new e.gp_Ax1_2(s,c),u=new e.gp_Trsf_1;for(let n=0;n<a;n++){let r=i*n*Math.PI/180;u.SetRotation_1(l,r);let a=new e.BRepBuilderAPI_Transform_2(t,u,!0,!1);o.push(a.Shape()),a.delete()}return u.delete(),l.delete(),c.delete(),s.delete(),o}function Cu(e,t,n,r){let i=n.ShapeType()===e.TopAbs_ShapeEnum.TopAbs_WIRE?new e.BRepAdaptor_CompCurve_2(n,!1):new e.BRepAdaptor_Curve_2(n),a=new e.gp_Pnt_1,o=new e.gp_Vec_1;try{i.D1(r,a,o);let n=new e.gp_Dir_2(o),s=new(e.gp_Ax3_5??e.gp_Ax3_4)(a,n),c=new e.gp_Trsf_1;c.SetTransformation_2(s),c.Invert();let l=new e.BRepBuilderAPI_Transform_2(t,c,!0,!1),u=l.Shape();return l.delete(),c.delete(),s.delete(),n.delete(),u}finally{o.delete(),a.delete(),i.delete()}}function wu(e,t){let n=new e.BRepOffsetAPI_MakeFilling(3,15,2,!1,1e-5,1e-4,.01,.1,8,9),r=new e.TopExp_Explorer_2(t,e.TopAbs_ShapeEnum.TopAbs_EDGE,e.TopAbs_ShapeEnum.TopAbs_SHAPE);for(;r.More();){let t=e.TopoDS_Cast.Edge(r.Current());n.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,!0),r.Next()}r.delete();let i=new e.Message_ProgressRange_1;n.Build(i),i.delete();let a=n.Shape();return n.delete(),a}function Tu(e,t,n){let r=new e.BRepBuilderAPI_MakeFace_2(t);for(let e of n)r.Add(e);let i=r.Face();r.delete();let a=new e.ShapeFix_Face_2(i);a.FixOrientation_1(),a.Perform();let o=a.Face();return a.delete(),o}function Eu(e,t){let n=e.BRepTools.OuterWire(t),r=e.BRep_Tool.Surface_2(t);try{let t=new e.BRepBuilderAPI_MakeFace_21(r,n,!0),i=t.Face();t.delete();let a=new e.ShapeFix_Face_2(i);a.FixOrientation_1(),a.Perform();let o=a.Face();return a.delete(),o}finally{r.delete(),n.delete()}}function Du(e,t,n){let r=t,i=!1;try{t.ShapeType!==void 0&&(r=e.BRep_Tool.Surface_2(t),i=!0)}catch{}let a=new e.BRepBuilderAPI_MakeFace_21(r,n,!0),o=a.Face();return a.delete(),i&&r.delete(),o}function Ou(e,n,r,i){let a=new e.TColgp_Array2OfPnt_2(1,r,1,i);for(let o=0;o<r;o++)for(let r=0;r<i;r++){let s=t(n,o*i+r),c=new e.gp_Pnt_3(s[0],s[1],s[2]);a.SetValue_1(o+1,r+1,c),c.delete()}let o=new e.GeomAPI_PointsToBSplineSurface_2(a,3,8,e.GeomAbs_Shape.GeomAbs_C2,.001),s=o.Surface();a.delete();let c=new e.BRepBuilderAPI_MakeFace_8(s,1e-6),l=c.Face();return c.delete(),o.delete(),l}function ku(e,n,r,i){let a=new e.BRepBuilderAPI_Sewing(1e-6,!0,!0,!0,!1);for(let o=0;o<r-1;o++)for(let r=0;r<i-1;r++){let s=o*i+r,c=(o+1)*i+r,l=o*i+(r+1),u=(o+1)*i+(r+1),d=t(n,s),f=t(n,c),p=t(n,l),m=t(n,u),h=Au(e,d,f,p);a.Add(h);let g=Au(e,f,m,p);a.Add(g)}let o=new e.Message_ProgressRange_1;a.Perform(o),o.delete();let s=a.SewedShape();return a.delete(),s}function Au(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.BRepBuilderAPI_MakeEdge_3(i,a),c=new e.BRepBuilderAPI_MakeEdge_3(a,o),l=new e.BRepBuilderAPI_MakeEdge_3(o,i),u=new e.BRepBuilderAPI_MakeWire_4(s.Edge(),c.Edge(),l.Edge()),d=u.Wire(),f=new e.BRepBuilderAPI_MakeFace_15(d,!0),p=f.Face();return f.delete(),u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),a.delete(),i.delete(),p}function ju(e,t,n){let r=new e.BRepBuilderAPI_Sewing(n,!0,!0,!0,!1);for(let e of t)r.Add(e);let i=new e.Message_ProgressRange_1;r.Perform(i),i.delete();let a=r.SewedShape();r.delete();let o=new e.ShapeFix_Solid_1;try{let t=e.TopoDS_Cast.Shell(a);return o.SolidFromShell(t)}catch{return a}finally{o.delete()}}function Mu(e,t){let n=new e.ShapeFix_Shape_1(t),r=new e.Message_ProgressRange_1;n.Perform(r);let i=n.Shape();return r.delete(),n.delete(),i}function Nu(e,t){let n=new e.ShapeFix_Wire_1;n.Load_1(t),n.FixSelfIntersection();let r=n.Wire();return n.delete(),r}function Pu(){return{gaussian:0,mean:0,max:0,min:0,maxDirection:[1,0,0],minDirection:[0,1,0]}}function Fu(e,t,n,r,i,a){let o=e*n-t*t;if(Math.abs(o)<1e-15)return null;let s=(e*a-2*t*i+n*r)/(2*o),c=(r*a-i*i)/o,l=Math.sqrt(Math.max(0,s*s-c)),u=s+l,d=s-l,f=(n*i-t*a)/o,p=(e*i-t*r)/o,m=(n*r-t*i)/o,h,g;return Math.abs(f)>1e-15?(h=f,g=u-m):Math.abs(p)>1e-15?(h=u-(e*a-t*i)/o,g=p):(h=1,g=0),{mean:s,gaussian:c,k1:u,k2:d,du1:h,dv1:g}}function Iu(e,t,n,r){let i=new e.BRepAdaptor_Surface_2(t,!1),a=new e.gp_Pnt_1,o=new e.gp_Vec_1,s=new e.gp_Vec_1,c=new e.gp_Vec_1,l=new e.gp_Vec_1,u=new e.gp_Vec_1;i.D2(n,r,a,o,s,c,l,u);let d=o.Dot(o),f=o.Dot(s),p=s.Dot(s),m=o.Crossed(s),h=m.Magnitude(),g=Pu();if(h>=1e-15){m.Divide(h);let e=Fu(d,f,p,c.Dot(m),u.Dot(m),l.Dot(m));e&&(g={gaussian:e.gaussian,mean:e.mean,max:e.k1,min:e.k2,maxDirection:Lu(o,s,e.du1,e.dv1),minDirection:Lu(o,s,-e.dv1,e.du1)})}return a.delete(),o.delete(),s.delete(),c.delete(),l.delete(),u.delete(),m.delete(),i.delete(),g}function Lu(e,t,n,r){let i=n*e.X()+r*t.X(),a=n*e.Y()+r*t.Y(),o=n*e.Z()+r*t.Z(),s=Math.sqrt(i*i+a*a+o*o);return s<1e-15?[1,0,0]:[i/s,a/s,o/s]}function Ru(e,t){let n=new e.GProp_GProps_1;e.BRepGProp.SurfaceProperties_2(t,n,1e-7,!0);let r=n.CentreOfMass(),i=[r.X(),r.Y(),r.Z()];return r.delete(),n.delete(),i}function zu(e,t){let n=new e.BRepExtrema_DistShapeShape_1;return n.LoadS1(t),{distanceTo(t){n.LoadS2(t);let r=new e.Message_ProgressRange_1;if(n.Perform(r),r.delete(),!n.IsDone())throw Error(`BRepExtrema_DistShapeShape failed`);let i=n.Value(),a=n.PointOnShape1(1),o=n.PointOnShape2(1),s={value:i,point1:[a.X(),a.Y(),a.Z()],point2:[o.X(),o.Y(),o.Z()]};return a.delete(),o.delete(),s},dispose(){n.delete()}}}function Bu(e,t,n,r,i){let a=new e.HLRBRep_Algo_1;a.Add_2(t,0);let o=new e.gp_Pnt_3(n[0],n[1],n[2]),s=new e.gp_Dir_5(r[0],r[1],r[2]),c;if(i){let t=new e.gp_Dir_5(i[0],i[1],i[2]);c=new e.gp_Ax2_2(o,s,t),t.delete()}else c=new e.gp_Ax2_4(o,s);let l=new e.HLRAlgo_Projector_2(c);a.Projector_1(l),a.Update(),a.Hide_1();let u=new e.Handle_HLRBRep_Algo_2(a),d=new e.HLRBRep_HLRToShape(u),f={visible:{outline:d.OutLineVCompound_1(),smooth:d.Rg1LineVCompound_1(),sharp:d.VCompound_1()},hidden:{outline:d.OutLineHCompound_1(),smooth:d.Rg1LineHCompound_1(),sharp:d.HCompound_1()}};for(let t of[f.visible,f.hidden])for(let n of[t.outline,t.smooth,t.sharp])n.IsNull()||e.BRepLib.BuildCurves3d_2(n);return d.delete(),u.delete(),l.delete(),c.delete(),s.delete(),o.delete(),f}function Vu(e,t,n,r,i,a,o){let s=a*Math.PI/180,c=+!!o,l=new e.BRepFeat_MakeDPrism(t,n,r,s,c,!0);if(i!==null){let t=new e.Message_ProgressRange_1;l.Perform_1(i,t),t.delete()}else l.PerformThruAll();let u=l.Shape();return l.delete(),u}function Hu(e,t){let n=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),r=new e.TDocStd_Document(n);n.delete(),e.XCAFDoc_ShapeTool.SetAutoNaming(!1);let i=r.Main(),a=e.XCAFDoc_DocumentTool.ShapeTool(i).get(),o=e.XCAFDoc_DocumentTool.ColorTool(i).get();for(let n of t){let t=a.NewShape();a.SetShape(t,n.shape);let r=new e.TCollection_ExtendedString_2(n.name,!0);if(e.TDataStd_Name.Set_1(t,r),r.delete(),n.color){let[r,i,a,s]=n.color,c=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,s/255);o.SetColor_3(t,c,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),c.delete()}}return a.UpdateAssemblies(),r}function Uu(e,t,n={}){if(n.unit||n.modelUnit){new e.STEPCAFControl_Writer_1().delete();let t=(n.modelUnit??n.unit??`MM`).toUpperCase(),r=(n.unit??n.modelUnit??`MM`).toUpperCase();e.Interface_Static.SetCVal(`xstep.cascade.unit`,t),e.Interface_Static.SetCVal(`write.step.unit`,r)}let r=new e.XSControl_WorkSession,i=new e.Handle_XSControl_WorkSession_2(r),a=new e.STEPCAFControl_Writer_2(i,!1);a.SetColorMode(!0),a.SetLayerMode(!0),a.SetNameMode(!0),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,!0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,5);let o=new e.Handle_TDocStd_Document_2(t),s=new e.Message_ProgressRange_1;a.Transfer_1(o,e.STEPControl_StepModelType.STEPControl_AsIs,null,s),s.delete();let c=qc(`_xcaf_export`,`step`),l=a.Write(c),u=``;if(l===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+c);u=new TextDecoder().decode(t),e.FS.unlink(`/`+c)}return a.delete(),i.delete(),u}function Wu(e,t){new e.STEPCAFControl_Writer_1().delete();let n=new e.TCollection_ExtendedString_2(`XmlOcaf`,!0),r=new e.TDocStd_Document(n);n.delete();let i=r.Main(),a=e.XCAFDoc_DocumentTool.ShapeTool(i).get(),o=e.XCAFDoc_DocumentTool.ColorTool(i).get();e.XCAFDoc_ShapeTool.SetAutoNaming(!1);for(let n of t){let t=a.AddShape(n.shape,!1,!0);if(n.name){let r=new e.TCollection_ExtendedString_2(n.name,!0);e.TDataStd_Name.Set_1(t,r),r.delete()}if(n.color){let[r,i,a,s]=n.color,c=new e.Quantity_ColorRGBA_5(r/255,i/255,a/255,s/255);o.SetColor_3(t,c,e.XCAFDoc_ColorType.XCAFDoc_ColorSurf),c.delete()}}let s=new e.XSControl_WorkSession,c=new e.Handle_XSControl_WorkSession_2(s),l=new e.STEPCAFControl_Writer_2(c,!1),u=new e.Handle_TDocStd_Document_2(r),d=new e.Message_ProgressRange_1;l.Transfer_1(u,e.STEPControl_StepModelType.STEPControl_AsIs,null,d),d.delete();let f=qc(`_step_cfg_export`,`step`),p=l.Write(f),m=``;if(p===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+f);m=new TextDecoder().decode(t),e.FS.unlink(`/`+f)}return l.delete(),c.delete(),u.delete(),r.delete(),m}function Gu(e,t){let n=new e.STEPControl_Writer_1;n.Model(!0).delete();let r=new e.Message_ProgressRange_1;for(let i of t)n.Transfer(i.shape,e.STEPControl_StepModelType.STEPControl_AsIs,!0,r);let i=qc(`_step_cfg_export`,`step`),a=n.Write(i);if(n.delete(),r.delete(),a===e.IFSelect_ReturnStatus.IFSelect_RetDone){let t=e.FS.readFile(`/`+i);return e.FS.unlink(`/`+i),new TextDecoder().decode(t)}throw Error(`STEP configured export failed: writer did not complete successfully`)}function Ku(e,t,n={}){let r=n.unit??`MM`,i=n.modelUnit??r,a=n.schema??5;return e.Interface_Static.SetCVal(`xstep.cascade.unit`,i),e.Interface_Static.SetCVal(`write.step.unit`,r),e.Interface_Static.SetIVal(`write.surfacecurve.mode`,!0),e.Interface_Static.SetIVal(`write.precision.mode`,0),e.Interface_Static.SetIVal(`write.step.assembly`,2),e.Interface_Static.SetIVal(`write.step.schema`,a),t.some(e=>e.name||e.color)?Wu(e,t):Gu(e,t)}function qu(e){return{composeTransform:t=>mu(e,t),applyComposedTransformWithHistory:(t,n,r,i)=>hu(e,t,n,r,i),sweepPipeShell:(t,n,r)=>_u(e,t,n,r??{}),loftAdvanced:(t,n)=>vu(e,t,n??{}),buildExtrusionLaw:(t,n,r)=>yu(e,t,n,r),revolveVec:(t,n,r,i)=>bu(e,t,n,r,i),positionOnCurve:(t,n,r)=>Cu(e,t,n,r),linearPattern:(t,n,r,i)=>xu(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>Su(e,t,n,r,i,a),makeNonPlanarFace:t=>wu(e,t),addHolesInFace:(t,n)=>Tu(e,t,n),removeHolesFromFace:t=>Eu(e,t),makeFaceOnSurface:(t,n)=>Du(e,t,n),bsplineSurface:(t,n,r)=>Ou(e,t,n,r),triangulatedSurface:(t,n,r)=>ku(e,t,n,r),sewAndSolidify:(t,n)=>ju(e,t,n),fixShape:t=>Mu(e,t),fixSelfIntersection:t=>Nu(e,t),surfaceCurvature:(t,n,r)=>Iu(e,t,n,r),surfaceCenterOfMass:t=>Ru(e,t),createDistanceQuery:t=>zu(e,t),projectEdges:(t,n,r,i)=>Bu(e,t,n,r,i),draftPrism:(t,n,r,i,a,o)=>Vu(e,t,n,r,i,a,o),generalTransformNonOrthogonal:(t,n,r)=>pu(e,t,n,r),createXCAFDocument:t=>Hu(e,t),writeXCAFToSTEP:(t,n)=>Uu(e,t,n??{}),exportSTEPConfigured:(t,n)=>Ku(e,t,n??{})}}var Ju=()=>{};function Yu(e){return e}function Xu(e){let t=Yu(e);for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Zu(e){return e}function Qu(e,t){return{x:e,y:t}}function $u(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`occt: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function ed(e,t){return{x:e,y:t}}function td(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:Ju}}function nd(e){return e}function rd(e){return e}function id(e,t,n,r){return te(e,t,n,r)}function ad(e,t,n,r){return ne(e,t,n,r)}function od(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function sd(e,t,n,r,i,a,o,s,c){return{__bk2d:`trimmed`,basis:ae(e,t,n,r,o,s,c),tStart:i,tEnd:a}}function cd(e){return oe(e)}function ld(e,t){let n=e.length,r=Math.min(3,n-1),i=[],a=[];i.push(0),a.push(r+1);let o=n-r-1;for(let e=1;e<=o;e++)i.push(e/(o+1)),a.push(1);return i.push(1),a.push(r+1),{__bk2d:`bspline`,poles:[...e],knots:i,multiplicities:a,degree:r,isPeriodic:!1}}function ud(e,t){return S(Yu(e),t)}function dd(e,t){return{point:S(Yu(e),t),tangent:C(Yu(e),t)}}function fd(e){return w(Yu(e))}function pd(e){return ee(Xu(e))}function md(e,t,n){return{__bk2d:`trimmed`,basis:Yu(e),tStart:t,tEnd:n}}function hd(e){return JSON.parse(JSON.stringify(e))}function gd(e,t){let n=Yu(e),r=w(n),i=[];for(let e=0;e<=30;e++){let a=r.first+(r.last-r.first)*e/30,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l);u>1e-12?i.push([o-l/u*t,s+c/u*t]):i.push([o,s])}return ld(i)}function _d(e,t,n){return se(Yu(e),t,n)}function vd(e,t,n,r){return ce(Yu(e),t,n,r)}function yd(e,t,n,r){return le(Yu(e),t,n,r)}function bd(e,t,n){return ue(Yu(e),t,n)}function xd(e,t,n,r,i){return de(Yu(e),t,n,r,i)}function Sd(e,t,n,r,i,a){return Md(e,Td(t,n,r,i,a))}function Cd(e,t,n){return{m:e,tx:t,ty:n,delete:Ju}}function wd(){return Cd([1,0,0,0,1,0,0,0,1],0,0)}function Td(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return wd();let s=-i/o,c=r/o,l=a-1,u=[1+l*s*s,l*s*c,0,l*c*s,1+l*c*c,0,0,0,1];return Cd(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function Ed(e,t){return Cd([1,0,0,0,1,0,0,0,1],e,t)}function Dd(e,n,r,i,a,o,s){if(r===`axis`&&o!==void 0&&s!==void 0){let r=Math.sqrt(o*o+s*s),c=o/r,l=s/r,u=[2*c*c-1,2*c*l,0,2*c*l,2*l*l-1,0,0,0,1],d=i??e,f=a??n;return Cd(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return Cd([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function Od(e,t,n){let r=Math.cos(e),i=Math.sin(e);return Cd([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function kd(e,t,n){return Cd([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function Ad(e,t,n){e.tx=t,e.ty=n}function jd(e,n){let r=e.m,i=n.m,a=e=>t(r,e),o=e=>t(i,e);e.m=[a(0)*o(0)+a(1)*o(3)+a(2)*o(6),a(0)*o(1)+a(1)*o(4)+a(2)*o(7),a(0)*o(2)+a(1)*o(5)+a(2)*o(8),a(3)*o(0)+a(4)*o(3)+a(5)*o(6),a(3)*o(1)+a(4)*o(4)+a(5)*o(7),a(3)*o(2)+a(4)*o(5)+a(5)*o(8),a(6)*o(0)+a(7)*o(3)+a(8)*o(6),a(6)*o(1)+a(7)*o(4)+a(8)*o(7),a(6)*o(2)+a(7)*o(5)+a(8)*o(8)];let s=e.tx,c=e.ty,l=Number(n.tx)||0,u=Number(n.ty)||0;e.tx=a(0)*l+a(1)*u+s,e.ty=a(3)*l+a(4)*u+c}function Md(e,n){let r=Yu(e),i=n.m??[1,0,0,0,1,0,0,0,1],a=Number(n.tx)||0,o=Number(n.ty)||0,s=t(i,0),c=t(i,1),l=t(i,3),u=t(i,4);if(Math.abs(s-1)<1e-12&&Math.abs(u-1)<1e-12&&Math.abs(c)<1e-12&&Math.abs(l)<1e-12)return se(r,a,o);let d=w(r),f=[];for(let e=0;e<=20;e++){let[t,n]=S(r,d.first+(d.last-d.first)*e/20);f.push([s*t+c*n+a,l*t+u*n+o])}return oe(f)}function Nd(e,t,n){let r=fe(Yu(e),Yu(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function Pd(e,t,n){let r=Yu(e),i=w(r);if(r.__bk2d===`line`){let e=t-r.ox,a=n-r.oy,o=Math.max(i.first,Math.min(i.last,e*r.dx+a*r.dy)),[s,c]=S(r,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}if(r.__bk2d===`circle`){let e=Math.atan2(n-r.cy,t-r.cx),i=r.sense?e:-e;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;let[a,o]=S(r,i);return{param:i,distance:Math.sqrt((a-t)**2+(o-n)**2)}}if(!isFinite(i.first)||!isFinite(i.last))return null;let a=i.first,o=1/0,s=(i.last-i.first)/200;for(let e=0;e<=200;e++){let c=i.first+e*s,[l,u]=S(r,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}for(let e=0;e<10;e++){let[e,o]=S(r,a),[s,c]=C(r,a),l=(e-t)*s+(o-n)*c,u=s*s+c*c;if(u<1e-20)break;let d=l/u,f=Math.max(i.first,Math.min(i.last,a-d));if(Math.abs(f-a)<1e-14)break;a=f}let[c,l]=S(r,a);return{param:a,distance:Math.sqrt((c-t)**2+(l-n)**2)}}function Fd(e,t,n,r,i,a){let o=Yu(e),s=Yu(t),c=n,l=i,u=1/0;for(let e=0;e<=50;e++){let t=n+(r-n)*e/50,[d,f]=S(o,t);for(let e=0;e<=50;e++){let n=i+(a-i)*e/50,[r,o]=S(s,n),p=(r-d)**2+(o-f)**2;p<u&&(u=p,c=t,l=n)}}let d=c,f=l;for(let c=0;c<20;c++){let[c,l]=S(s,f),u=Pd(e,c,l);if(u){let e=Math.max(n,Math.min(r,u.param)),t=Math.abs(e-d)<1e-12;if(d=e,t)break}let[p,m]=S(o,d),h=Pd(t,p,m);if(h){let e=Math.max(i,Math.min(a,h.param)),t=Math.abs(e-f)<1e-12;if(f=e,t)break}}let[p,m]=S(o,d),[h,g]=S(s,f);return Math.sqrt((h-p)**2+(g-m)**2)}function Id(e,n,r,i){let a=Yu(e),o=w(a),s=Math.max(3,{C0:1,C1:2,C2:3,C3:4}[r]??4),c=Math.max(100,i*10),l=[],u=1/0;for(let e=0;e<3&&u>n;e++){l=[];for(let e=0;e<=c;e++){let t=o.first+(o.last-o.first)*e/c;l.push(S(a,t))}u=0;for(let e=0;e<c;e++){let[n,r]=S(a,o.first+(o.last-o.first)*(e+.5)/c),i=t(l,e),s=t(l,e+1),d=(i[0]+s[0])/2,f=(i[1]+s[1])/2,p=Math.sqrt((n-d)**2+(r-f)**2);p>u&&(u=p)}u>n&&(c=Math.min(c*2,500))}return ld(l,{degMax:s})}function Ld(e){let n=Xu(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return Ld(Id(e,1e-6,`C2`,10));let r=w(Yu(e)),i=r.first,a=r.last,o=[];for(let e of n.knots)e>i+1e-12&&e<a-1e-12&&o.push(e);let s=[i,...o,a],c=[];for(let e=0;e<s.length-1;e++){let r=t(s,e),i=t(s,e+1),a=i-r;if(a<1e-15)continue;let o=S(n,r),l=S(n,i),u=C(n,r),d=C(n,i),f=a/3,p={__bk2d:`bezier`,poles:[o,[o[0]+u[0]*f,o[1]+u[1]*f],[l[0]-d[0]*f,l[1]-d[1]*f],l]};c.push(p)}return c.length>0?c:[e]}function Rd(){return Ce()}function zd(e,t,n){we(Zu(e),Yu(t),n)}function Bd(e){let t=Zu(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function Vd(e,t){let n=Zu(e),r=Zu(t);n.xMin=Math.min(n.xMin,r.xMin),n.yMin=Math.min(n.yMin,r.yMin),n.xMax=Math.max(n.xMax,r.xMax),n.yMax=Math.max(n.yMax,r.yMax)}function Hd(e,t){let n=Zu(e),r=Zu(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function Ud(e,t,n){let r=Zu(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function Wd(e){let t=Xu(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function Gd(e){let t=Xu(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function Kd(e){let t=Xu(e);return t.__bk2d===`bezier`?[...t.poles]:null}function qd(e){let t=Xu(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function Jd(e){let t=Xu(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function Yd(e){return xe(Yu(e))}function Xd(e){return Se(e)}function Zd(e,t){let n=Yu(e),r=w(n),i=[r.first,...[...t].sort((e,t)=>e-t),r.last],a=[];for(let e=0;e<i.length-1;e++)a.push({__bk2d:`trimmed`,basis:n,tStart:i[e],tEnd:i[e+1]});return a}function Qd(e,t,n){let r=new e.gp_Pnt_3(t[0],t[1],t[2]),i=new e.gp_Pnt_3(n[0],n[1],n[2]),a=new e.BRepBuilderAPI_MakeEdge_3(r,i),o=a.Edge();return a.delete(),r.delete(),i.delete(),o}function $d(e,t,n,r){let i=new e.gp_Pnt_3(t[0],t[1],t[2]),a=new e.gp_Pnt_3(n[0],n[1],n[2]),o=new e.gp_Pnt_3(r[0],r[1],r[2]),s=new e.GC_MakeArcOfCircle_4(i,a,o).Value().get(),c=new e.Handle_Geom_Curve_2(s),l=new e.BRepBuilderAPI_MakeEdge_24(c),u=l.Edge();return l.delete(),c.delete(),i.delete(),a.delete(),o.delete(),u}function ef(e,n){let r=new e.TColgp_Array1OfPnt_2(1,n.length),i=new e.gp_Pnt_1;for(let e=0;e<n.length;e++){let a=t(n,e);i.SetCoord_2(a[0],a[1],a[2]),r.SetValue_1(e+1,i)}i.delete();let a=new e.GeomAPI_PointsToBSpline_2(r,3,8,e.GeomAbs_Shape.GeomAbs_C2,1e-6);if(r.delete(),!a.IsDone())throw a.delete(),Error(`Interpolation failed — GeomAPI_PointsToBSpline did not converge`);let o=a.Curve(),s=new e.Handle_Geom_Curve_2(o.get()),c=new e.BRepBuilderAPI_MakeEdge_24(s),l=c.Edge();return c.delete(),a.delete(),l}function tf(e,n,r,i,a){let o=Yu(n),s=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],c=(e,t)=>[r[0]+e*a[0]+t*s[0],r[1]+e*a[1]+t*s[1],r[2]+e*a[2]+t*s[2]];if(o.__bk2d===`line`)return Qd(e,c(o.ox,o.oy),c(o.ox+o.dx*o.len,o.oy+o.dy*o.len));if(o.__bk2d===`circle`||o.__bk2d===`trimmed`){let t=o;for(;t.__bk2d===`trimmed`;)t=t.basis;if(t.__bk2d===`circle`){let n=t,r=c(n.cx,n.cy),a=n.sense?i:[-i[0],-i[1],-i[2]];if(o.__bk2d===`circle`){let t=new e.gp_Pnt_3(r[0],r[1],r[2]),i=new e.gp_Dir_5(a[0],a[1],a[2]),o=new e.gp_Ax2_4(t,i),s=new e.gp_Circ_2(o,n.radius),c=new e.BRepBuilderAPI_MakeEdge_8(s),l=c.Edge();return c.delete(),s.delete(),o.delete(),i.delete(),t.delete(),l}let s=w(o),[l,u]=S(o,s.first),[d,f]=S(o,(s.first+s.last)/2),[p,m]=S(o,s.last);return $d(e,c(l,u),c(d,f),c(p,m))}}if(o.__bk2d===`bezier`||o.__bk2d===`bspline`){let n=o.poles.map(([e,t])=>c(e,t));return n.length===2?Qd(e,t(n,0),t(n,1)):ef(e,n)}let l=w(o),u=[];for(let e=0;e<=60;e++){let[t,n]=S(o,l.first+(l.last-l.first)*e/60);u.push(c(t,n))}return ef(e,u)}function nf(e,t,n){let r=Yu(t),i=w(r),a=[];for(let e=0;e<=60;e++){let[t,o]=S(r,i.first+(i.last-i.first)*e/60),s=n.get().Value(t,o);a.push([s.X(),s.Y(),s.Z()]),s.delete()}return ef(e,a)}function rf(e,t){return e.BRep_Tool.Surface_2(t)}function af(e,t,n){let r=new e.BRepAdaptor_Curve2d_2(t,n),i=Number(r.FirstParameter()),a=Number(r.LastParameter()),o=[];for(let e=0;e<=30;e++){let t=i+(a-i)*e/30,n=r.Value(t);o.push([n.X(),n.Y()]),n.delete()}return r.delete(),ld(o)}function of(e,t){e.BRepLib.BuildCurves3d_2(t)}function sf(e,t,n,r){let i=new e.ShapeFix_Wire_2(t,n,r);i.FixEdgeCurves();let a=i.Wire();return i.delete(),a}function cf(e,t,n={}){let{order:r=3,nbPtsOnCur:i=15,nbIter:a=2,tol3d:o=1e-5,tol2d:s=1e-4,maxDeg:c=8,maxSeg:l=9}=n,u=new e.BRepOffsetAPI_MakeFilling(r,i,a,!1,o,s,.01,.1,c,l);for(let n=0;n<t.length;n++){let r=Mo(e,t[n],`edge`);for(let t of r)u.Add_1(t,e.GeomAbs_Shape.GeomAbs_C0,n===0)}let d=new e.Message_ProgressRange_1;u.Build(d);let f=u.Shape();return u.delete(),d.delete(),f}function lf(e){return{wrapCurve2dHandle:e=>nd(e),createCurve2dAdaptor:e=>rd(e),createPoint2d:(e,t)=>Qu(e,t),createDirection2d:(e,t)=>$u(e,t),createVector2d:(e,t)=>ed(e,t),createAxis2d:(e,t,n,r)=>td(e,t,n,r),makeLine2d:(e,t,n,r)=>id(e,t,n,r),makeCircle2d:(e,t,n,r)=>ad(e,t,n,r),makeArc2dThreePoints:(e,t,n,r,i,a)=>re(e,t,n,r,i,a),makeArc2dTangent:(e,t,n,r,i,a)=>ie(e,t,n,r,i,a),makeEllipse2d:(e,t,n,r,i,a,o)=>od(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>sd(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>cd(e),makeBSpline2d:(e,t)=>ld(e,t),evaluateCurve2d:(e,t)=>ud(e,t),evaluateCurve2dD1:(e,t)=>dd(e,t),getCurve2dBounds:e=>fd(e),getCurve2dType:e=>pd(e),trimCurve2d:(e,t,n)=>md(e,t,n),reverseCurve2d:e=>{},copyCurve2d:e=>hd(e),offsetCurve2d:(e,t)=>gd(e,t),translateCurve2d:(e,t,n)=>_d(e,t,n),rotateCurve2d:(e,t,n,r)=>vd(e,t,n,r),scaleCurve2d:(e,t,n,r)=>yd(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>bd(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>xd(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>Sd(e,t,n,r,i,a),createIdentityGTrsf2d:()=>wd(),createAffinityGTrsf2d:(e,t,n,r,i)=>Td(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>Ed(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>Dd(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>Od(e,t,n),createScaleGTrsf2d:(e,t,n)=>kd(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{Ad(e,t,n)},multiplyGTrsf2d:(e,t)=>{jd(e,t)},transformCurve2dGeneral:(e,t)=>Md(e,t),intersectCurves2d:(e,t,n)=>Nd(e,t,n),projectPointOnCurve2d:(e,t,n)=>Pd(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>Fd(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>Id(e,t,n,r),decomposeBSpline2dToBeziers:e=>Ld(e),createBoundingBox2d:()=>Rd(),addCurveToBBox2d:(e,t,n)=>{zd(e,t,n)},getBBox2dBounds:e=>Bd(e),mergeBBox2d:(e,t)=>{Vd(e,t)},isBBox2dOut:(e,t)=>Hd(e,t),isBBox2dOutPoint:(e,t,n)=>Ud(e,t,n),getCurve2dCircleData:e=>Wd(e),getCurve2dEllipseData:e=>Gd(e),getCurve2dBezierPoles:e=>Kd(e),getCurve2dBezierDegree:e=>qd(e),getCurve2dBSplineData:e=>Jd(e),serializeCurve2d:e=>Yd(e),deserializeCurve2d:e=>Xd(e),splitCurve2d:(e,t)=>Zd(e,t),liftCurve2dToPlane:(t,n,r,i)=>tf(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>nf(e,t,n),extractSurfaceFromFace:t=>rf(e,t),extractCurve2dFromEdge:(t,n)=>af(e,t,n),buildCurves3d:t=>{of(e,t)},fixWireOnFace:(t,n,r)=>sf(e,t,n,r),fillSurface:(t,n)=>cf(e,t,n)}}function uf(){let e=e=>()=>{throw new c(`${e} is only available with the brepkit kernel`)};return{export3MF:e(`export3MF`),exportGLB:e(`exportGLB`),exportOBJ:e(`exportOBJ`),exportPLY:e(`exportPLY`),import3MF:e(`import3MF`),importOBJ:e(`importOBJ`),importGLB:e(`importGLB`),filletVariable:e(`filletVariable`),helicalSweep:e(`helicalSweep`),sweepWithOptions:e(`sweepWithOptions`),defeature:e(`defeature`),detectSmallFeatures:e(`detectSmallFeatures`),recognizeFeatures:e(`recognizeFeatures`),meshBoolean:(()=>{throw new c(`meshBoolean is only available with the brepkit kernel`)}),edgeToFaceMap:e(`edgeToFaceMap`),sharedEdges:e(`sharedEdges`),adjacentFaces:e(`adjacentFaces`),curveDegreeElevate:e(`curveDegreeElevate`),curveKnotInsert:e(`curveKnotInsert`),curveKnotRemove:e(`curveKnotRemove`),curveSplit:e(`curveSplit`),approximateSurfaceLspia:e(`approximateSurfaceLspia`),untrimFace:e(`untrimFace`),mergeCoincidentVertices:e(`mergeCoincidentVertices`),removeDegenerateEdges:e(`removeDegenerateEdges`),fixFaceOrientations:e(`fixFaceOrientations`),classifyPointRobust:e(`classifyPointRobust`),classifyPointWinding:e(`classifyPointWinding`),executeBatch:e(`executeBatch`),checkpoint:e(`checkpoint`),checkpointCount:e(`checkpointCount`),restoreCheckpoint:e(`restoreCheckpoint`),discardCheckpoint:e(`discardCheckpoint`)}}function df(e){return{draft:(t,n,r,i,a)=>du(e,t,n,r,i,a,[],1).shape}}var ff=class{oc;kernelId=`occt`;capabilities=a;constructor(e){this.oc=e,Object.assign(this,is(e),ss(e),Es(e),ys(e),Qs(e),fc(e),Oc(e),Vc(e),Gc(e),el(e),Do(e),Vo(e),Ml(e),Fl(e),Rl(e),Hl(e),fu(e),qu(e),lf(e),df(e),uf())}},pf=()=>{};function mf(e){return typeof e==`object`&&!!e&&e.__brepkit}function hf(e,t){return{__brepkit:!0,type:e,id:t,delete:pf,HashCode(e){return t%e},IsNull(){return!1}}}function O(e){return hf(`solid`,e)}function gf(e){return hf(`face`,e)}function _f(e){return hf(`edge`,e)}function vf(e){return hf(`wire`,e)}function yf(e){return hf(`shell`,e)}function bf(e){let t=hf(`compound`,e);return If.has(e)?{...t,delete:()=>If.delete(e)}:t}function xf(e){return hf(`vertex`,e)}function k(e,t){if(!mf(e))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof e);if(t&&e.type!==t)throw Error(`brepkit: expected ${t} handle, got ${e.type}`);return e.id}function A(e){return Array.from(e)}function Sf(e,t){if(!mf(e))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof e);if(e.type!==`solid`)throw Error(`brepkit: ${t} requires a solid, got ${e.type}. Consider using makeCompound() to combine shapes first.`);return e.id}function Cf(e,t,n){if(!mf(t))throw Error(`brepkit: expected a BrepkitHandle, got `+typeof t);if(t.type===`solid`)return[t.id];if(t.type===`compound`){let r=A(e.getCompoundSolids(t.id));if(r.length>0)return r;throw Error(`brepkit: ${n} received a compound with no solids.`)}throw Error(`brepkit: ${n} requires a solid or compound of solids, got ${t.type}.`)}function wf(e,t,n,r,i,a){let o=e-r,s=t-i,c=n-a;return Math.sqrt(o*o+s*s+c*c)}function Tf(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function Ef(e,t,n){return[1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1]}function Df(e,t){if(!Array.isArray(e)||e.length<3)return t;let[n,r,i]=e;return typeof n==`number`&&typeof r==`number`&&typeof i==`number`&&Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(i)?[n,r,i]:t}function Of(e,t=[0,0,1],n=[0,0,0]){let r=Df(t,[0,0,1]),i=r[0]===0&&r[1]===0&&r[2]===0?[0,0,1]:r,a=Df(n,[0,0,0]),o=e*Math.PI/180,s=Math.cos(o),c=Math.sin(o),l=1-s,u=Math.sqrt(i[0]**2+i[1]**2+i[2]**2),[d,f,p]=[i[0]/u,i[1]/u,i[2]/u],m=l*d*d+s,h=l*d*f-c*p,g=l*d*p+c*f,_=l*f*d+c*p,v=l*f*f+s,y=l*f*p-c*d,b=l*p*d-c*f,x=l*p*f+c*d,S=l*p*p+s,[C,w,ee]=a;return[m,h,g,C-(m*C+h*w+g*ee),_,v,y,w-(_*C+v*w+y*ee),b,x,S,ee-(b*C+x*w+S*ee),0,0,0,1]}function kf(e,t){let[n,r,i]=Df(e,[0,0,0]);return[t,0,0,n*(1-t),0,t,0,r*(1-t),0,0,t,i*(1-t),0,0,0,1]}function Af(e,n){let r=n=>t(e,n);return[r(0),r(1),r(2),n[0],r(3),r(4),r(5),n[1],r(6),r(7),r(8),n[2],0,0,0,1]}function jf(e,t){let[n,r,i]=e,a=Math.sqrt(t[0]**2+t[1]**2+t[2]**2),o=t[0]/a,s=t[1]/a,c=t[2]/a,l=2*(n*o+r*s+i*c);return[1-2*o*o,-2*o*s,-2*o*c,l*o,-2*s*o,1-2*s*s,-2*s*c,l*s,-2*c*o,-2*c*s,1-2*c*c,l*c,0,0,0,1]}function Mf(e,t){let n=Array(16).fill(0);for(let r=0;r<4;r++)for(let i=0;i<4;i++)for(let a=0;a<4;a++)n[r*4+i]=n[r*4+i]+e[r*4+a]*t[a*4+i];return n}var Nf=.01,Pf=9e5;function Ff(){return Pf++}var If=new Map,Lf=new Set;function Rf(e,t){Lf.has(e)||(Lf.add(e),console.warn(`brepkit: ${t}`))}function zf(e){return e.optimisation!==void 0||e.simplify!==void 0||e.strategy!==void 0||e.fuzzyValue!==void 0}function Bf(e){return e}function Vf(e){let t=e;for(;t.__bk2d===`trimmed`;)t=t.basis;return t}function Hf(e){return e}function Uf(e,t){if(typeof t!=`function`)return t;let n;for(let r of e){let e;try{e=t(r)}catch{throw Error(`brepkit does not support variable draft with multiple distinct angles. Use the OCCT kernel for per-face angle variation, or use a uniform angle.`)}if(n===void 0)n=e;else if(e!==n)throw Error(`brepkit does not support variable draft with multiple distinct angles. Use the OCCT kernel for per-face angle variation, or use a uniform angle.`)}if(n===void 0)throw Error(`draft: no faces provided`);return n}function Wf(e,t,n){let r=If.get(t);return r?r.flatMap(t=>t.type===n?[t]:Qf(e,t,n)):n===`solid`?A(e.getCompoundSolids(t)).map(O):n===`face`||n===`edge`||n===`vertex`||n===`wire`?A(e.getCompoundSolids(t)).map(O).flatMap(t=>Qf(e,t,n)):[]}function Gf(e,t,n,r){switch(r){case`solid`:return[t];case`shell`:return A(e.getSolidShells(n)).map(yf);case`face`:return A(e.getSolidFaces(n)).map(gf);case`edge`:return A(e.getSolidEdges(n)).map(_f);case`vertex`:return A(e.getSolidVertices(n)).map(xf);case`wire`:return A(e.getSolidFaces(n)).flatMap(t=>A(e.getFaceWires(t)).map(vf));default:return[]}}function Kf(e,t,n){let r=A(e.getShellFaces(t)).map(gf),i=new Set,a=[];for(let t of r)for(let r of Qf(e,t,n)){let e=k(r);i.has(e)||(i.add(e),a.push(r))}return a}function qf(e,t,n,r){return r===`shell`?[t]:r===`face`?A(e.getShellFaces(n)).map(gf):r===`edge`||r===`vertex`?Kf(e,n,r):[]}function Jf(e,t,n,r){return r===`face`?[t]:r===`edge`?A(e.getFaceEdges(n)).map(_f):r===`vertex`?A(e.getFaceVertices(n)).map(xf):r===`wire`?A(e.getFaceWires(n)).map(vf):[]}function Yf(e,n){let r=A(e.getWireEdges(n)),i=new Set,a=[];for(let n of r){let r=e.getEdgeVertices(n),o=[[t(r,0),t(r,1),t(r,2)],[t(r,3),t(r,4),t(r,5)]];for(let[t,n,r]of o){let o=`${t},${n},${r}`;i.has(o)||(i.add(o),a.push(xf(e.makeVertex(t,n,r))))}}return a}function Xf(e,t,n,r){return r===`wire`?[t]:r===`edge`?A(e.getWireEdges(n)).map(_f):r===`vertex`?Yf(e,n):[]}function Zf(e,n,r,i){if(i===`edge`)return[n];if(i===`vertex`){let n=e.getEdgeVertices(r),i=e.makeVertex(t(n,0),t(n,1),t(n,2)),a=e.makeVertex(t(n,3),t(n,4),t(n,5));return[xf(i),xf(a)]}return[]}function Qf(e,t,n){let r=k(t);switch(t.type){case`compound`:return Wf(e,r,n);case`solid`:return Gf(e,t,r,n);case`shell`:return qf(e,t,r,n);case`face`:return Jf(e,t,r,n);case`wire`:return Xf(e,t,r,n);case`edge`:return Zf(e,t,r,n);default:return[]}}function $f(e,t,n){if(Array.isArray(t))for(let e of t)n(e)}function ep(e,t){if(mf(t))return t.type;throw Error(`brepkit: cannot determine shape type of non-brepkit handle`)}function tp(e,t,n){return mf(t)&&mf(n)&&t.id===n.id&&t.type===n.type}function np(e,t,n){return tp(e,t,n)}function rp(e,t,n){return t}function ip(e,t,n){return mf(t)?t.id%n:0}function ap(e,t){return!t||!mf(t)}function op(e,t){let n=k(t);return e.getShapeOrientation(n)}function sp(e,t){let n=Sf(t,`edgeToFaceMap`);return e.edgeToFaceMap(n)}function cp(e,t,n){let r=k(t,`face`),i=k(n,`face`);return Array.from(e.sharedEdges(r,i)).map(e=>_f(e))}function lp(e,t,n){let r=Sf(t,`adjacentFaces`),i=k(n,`face`);return Array.from(e.adjacentFaces(r,i)).map(e=>gf(e))}function up(e,t){let n=t;return n.type===`face`?[n.id]:n.type===`solid`?A(e.getSolidFaces(n.id)):n.type===`shell`?A(e.getShellFaces(n.id)):[]}function dp(e,t,n){let r=t.flatMap(t=>up(e,t)),i=n??1e-7;try{return yf(e.weldShellsAndFaces(r,i))}catch(e){console.warn(`brepkit: weldShellsAndFaces failed, falling back to sewFaces:`,e)}return yf(e.sewFaces(r,i))}function fp(e){return{iterShapes:(t,n)=>Qf(e,t,n),iterShapeList:(t,n)=>{$f(e,t,n)},shapeType:t=>ep(e,t),isSame:(t,n)=>tp(e,t,n),isEqual:(t,n)=>np(e,t,n),downcast:(t,n)=>rp(e,t,n),copyShape:t=>rp(e,t),hashCode:(t,n)=>ip(e,t,n),isNull:t=>ap(e,t),shapeOrientation:t=>op(e,t),edgeToFaceMap:t=>sp(e,t),sharedEdges:(t,n)=>cp(e,t,n),adjacentFaces:(t,n)=>lp(e,t,n),sew:(t,n)=>dp(e,t,n)}}function pp(e,t){return n(e.getVertexPosition(k(t,`vertex`)))}function mp(e,t){return e.getSurfaceType(k(t,`face`))}function hp(e,n){let r=e.getSurfaceDomain(k(n,`face`));return{uMin:t(r,0),uMax:t(r,1),vMin:t(r,2),vMax:t(r,3)}}function gp(e,t){return vf(e.getFaceOuterWire(k(t,`face`)))}function _p(e,t,r,i){return n(e.evaluateSurfaceNormal(k(t,`face`),r,i))}function vp(e,t,r,i){return n(e.evaluateSurface(k(t,`face`),r,i))}function yp(e,n,r){try{let i=e.projectPointOnSurface(k(n,`face`),r[0],r[1],r[2]);return[t(i,0),t(i,1)]}catch(e){return console.warn(`brepkit: uvFromPoint failed:`,e),null}}function bp(e,t,r){return n(e.projectPointOnSurface(k(t,`face`),r[0],r[1],r[2]),2)}function xp(e,r,i){let a=r,o,s=i;if(a.type===`wire`){let n=A(e.getWireEdges(a.id));o=t(n,n.length-1);let r=0;for(let a of n){let n=e.getEdgeCurveParameters(a),c=t(n,1)-t(n,0);if(i<=r+c||a===o){o=a,s=Math.min(t(n,0)+(i-r),t(n,1));break}r+=c}}else o=k(r,`edge`);let c=e.evaluateEdgeCurveD1(o,s);return{point:n(c,0),tangent:n(c,3)}}function Sp(e,n){let r=n;if(r.type===`wire`){let n=A(e.getWireEdges(r.id));if(n.length===0)return[0,0];let i=0;for(let r of n){let n=e.getEdgeCurveParameters(r);i+=t(n,1)-t(n,0)}return[0,i]}let i=e.getEdgeCurveParameters(k(n,`edge`));return[t(i,0),t(i,1)]}function Cp(e,r,i){let a=r;if(a.type===`wire`){let r=A(e.getWireEdges(a.id)),o=0;for(let a of r){let s=e.getEdgeCurveParameters(a),c=t(s,1)-t(s,0);if(i<=o+c||a===r[r.length-1]){let r=t(s,0)+(i-o);return n(e.evaluateEdgeCurve(a,Math.min(r,t(s,1))))}o+=c}return n(e.evaluateEdgeCurve(t(r,0),i))}return n(e.evaluateEdgeCurve(k(r,`edge`),i))}function wp(e,r){let i=r;if(i.type===`wire`){let r=A(e.getWireEdges(i.id));if(r.length===0)return!1;if(r.length===1)return Tp(e.getEdgeVertices(t(r,0)));let a=[];for(let t of r){let r=e.getEdgeVertices(t);a.push(n(r,0)),a.push(n(r,3))}let o=[];for(let e of a){let t=o.findIndex(t=>wf(t[0],t[1],t[2],e[0],e[1],e[2])<1e-7);t>=0?o.splice(t,1):o.push(e)}return o.length===0}return Tp(e.getEdgeVertices(k(r,`edge`)))}function Tp(e){return wf(t(e,0),t(e,1),t(e,2),t(e,3),t(e,4),t(e,5))<1e-7}function Ep(e,t){let n=t;try{if(n.type===`edge`||n.type===`wire`&&A(e.getWireEdges(n.id)).length===1)return wp(e,t)}catch{}return!1}function Dp(e,t){try{if(Ep(e,t)){let n=Sp(e,t);return n[1]-n[0]}}catch{}return 0}function Op(e,t){if(t.type===`wire`){let n=Qf(e,t,`edge`)[0];return n?e.getEdgeCurveType(k(n,`edge`)):`LINE`}return e.getEdgeCurveType(k(t,`edge`))}function kp(e,t,n){let r=k(t,`edge`);return _f(e.curveDegreeElevate(r,n))}function Ap(e,t,n,r){let i=k(t,`edge`);return _f(e.curveKnotInsert(i,n,r))}function jp(e,t,n,r){let i=k(t,`edge`);return _f(e.curveKnotRemove(i,n,r))}function Mp(e,n,r){let i=k(n,`edge`),a=e.curveSplit(i,r);return[_f(t(a,0)),_f(t(a,1))]}function Np(e,t,n,r,i,a,o,s,c,l){return gf(e.approximateSurfaceLspia(t,n,r,i,a,o,s,c,l))}function Pp(e,t,n,r){let i=k(t,`face`);return gf(e.untrimFace(i,n,r))}function Fp(e,t){return t}function Ip(e,t){let r=fm(e,t);return!r||r.controlPoints.length<6?null:n(r.controlPoints,r.controlPoints.length-6)}function Lp(e,t){if(mf(t)&&t.type===`face`){let n=t.id,r=JSON.parse(e.getAnalyticSurfaceParams(n));if(r.type===`cylinder`)return{radius:r.radius,isDirect:!0}}return null}function Rp(e,t){let n=JSON.parse(e.getAnalyticSurfaceParams(k(t,`face`))),r=n.type===`cylinder`?n.origin:n.type===`cone`?n.apex:null;if(!r||!n.axis)return null;let[i,a,o]=r,[s,c,l]=n.axis,u=Math.hypot(s,c,l);return u<1e-12?null:{origin:[i,a,o],direction:[s/u,c/u,l/u]}}function zp(e,t){return t}function Bp(e,n,r,i,a){a!==void 0&&Rf(`classify-tolerance`,`classifyPointOnFace() tolerance parameter is not supported; brepkit uses domain-based classification.`);let o=k(n,`face`),s=e.getSurfaceDomain(o);return r<t(s,0)||r>t(s,1)||i<t(s,2)||i>t(s,3)?`out`:`in`}function Vp(e,t,n,r){let i=Sf(t,`classifyPointRobust`);return e.classifyPointRobust(i,n[0],n[1],n[2],r)}function Hp(e,t,n,r){let i=Sf(t,`classifyPointWinding`);return e.classifyPointWinding(i,n[0],n[1],n[2],r)}function Up(e,t,n,r){let i=Sf(t,`detectSmallFeatures`);return Array.from(e.detectSmallFeatures(i,n,r)).map(e=>gf(e))}function Wp(e,t,n){let r=Sf(t,`recognizeFeatures`);return e.recognizeFeatures(r,n)}function Gp(e,t,r,i,a){let o=k(t),[s,c,l]=r,[u,d,f]=i,[p,m,h]=a??[1,0,0],g=.1;try{let t=e.boundingBox(o),[r,i,a]=n(t,0),[s,c,l]=n(t,3),u=wf(r,i,a,s,c,l);u>0&&(g=Math.max(u*.001,1e-6))}catch{}let _=e.projectEdges(o,s,c,l,u,d,f,p,m,h,!0,g),v;try{v=JSON.parse(_)}catch{v={visible:[],hidden:[]}}let y=t=>{let n=[];for(let r of t)for(let t=0;t+3<r.length;t+=2){let i=r[t],a=r[t+1],o=r[t+2],s=r[t+3];i===void 0||a===void 0||o===void 0||s===void 0||i===o&&a===s||n.push(_f(e.makeLineEdge(i,a,0,o,s,0)))}let r=Ff();return If.set(r,n),bf(r)},b=()=>{let e=Ff();return If.set(e,[]),bf(e)};return{visible:{outline:y(v.visible),smooth:b(),sharp:b()},hidden:{outline:y(v.hidden),smooth:b(),sharp:b()}}}function Kp(e,t){let n=k(t,`edge`),r=e.getNurbsCurveData(n);if(!r)return null;let i=JSON.parse(r);return{degree:i.degree,poles:i.controlPoints,weights:i.weights,knots:i.distinctKnots,multiplicities:i.multiplicities,isPeriodic:i.periodic,isRational:i.rational}}function qp(e,t){return JSON.parse(e.getNurbsSurfaceDataParity(k(t,`face`)))}function Jp(e){return{vertexPosition:t=>pp(e,t),surfaceType:t=>mp(e,t),uvBounds:t=>hp(e,t),outerWire:t=>gp(e,t),surfaceNormal:(t,n,r)=>_p(e,t,n,r),pointOnSurface:(t,n,r)=>vp(e,t,n,r),uvFromPoint:(t,n)=>yp(e,t,n),projectPointOnFace:(t,n)=>bp(e,t,n),curveTangent:(t,n)=>xp(e,t,n),curveParameters:t=>Sp(e,t),curvePointAtParam:(t,n)=>Cp(e,t,n),curveIsClosed:t=>wp(e,t),curveIsPeriodic:t=>Ep(e,t),curvePeriod:t=>Dp(e,t),curveType:t=>Op(e,t),curveDegreeElevate:(t,n)=>kp(e,t,n),curveKnotInsert:(t,n,r)=>Ap(e,t,n,r),curveKnotRemove:(t,n,r)=>jp(e,t,n,r),curveSplit:(t,n)=>Mp(e,t,n),approximateSurfaceLspia:(t,n,r,i,a,o,s,c,l)=>Np(e,t,n,r,i,a,o,s,c,l),untrimFace:(t,n,r)=>Pp(e,t,n,r),createCurveAdaptor:t=>Fp(e,t),getBezierPenultimatePole:t=>Ip(e,t),getSurfaceCylinderData:t=>Lp(e,t),getSurfaceAxis:t=>Rp(e,t),reverseSurfaceU:t=>zp(e,t),classifyPointOnFace:(t,n,r,i)=>Bp(e,t,n,r,i),classifyPointRobust:(t,n,r)=>Vp(e,t,n,r),classifyPointWinding:(t,n,r)=>Hp(e,t,n,r),detectSmallFeatures:(t,n,r)=>Up(e,t,n,r),recognizeFeatures:(t,n)=>Wp(e,t,n),projectEdges:(t,n,r,i)=>Gp(e,t,n,r,i),getNurbsCurveData:t=>Kp(e,t),getNurbsSurfaceData:t=>qp(e,t)}}function Yp(e,t,n){if(Array.isArray(n)&&n.length===16)return cm(e,t,n);throw Error(`brepkit: transform expects a 16-element matrix array`)}function Xp(e,t,n,r,i){return cm(e,t,Ef(n,r,i))}function Zp(e,t,n,r,i){return cm(e,t,Of(n,r,i))}function Qp(e,t,n,r){let i=t;return i.type===`solid`?O(e.mirror(i.id,n[0],n[1],n[2],r[0],r[1],r[2])):cm(e,t,jf(n,r))}function $p(e,t,n,r){return cm(e,t,kf(n,r))}function em(e,t,n,r,i){return cm(e,t,Af(n,r))}function tm(e,t,n,r){return cm(e,t,Af(n,r))}function nm(e,t,n,r){let{point:i,tangent:a}=xp(e,n,r),[o,s,c]=a,l=Math.sqrt(o*o+s*s+c*c);if(l<1e-12)return Xp(e,t,i[0],i[1],i[2]);let u=o/l,d=s/l,f=c/l,p=t;if(Math.abs(f+1)<1e-10)p=Zp(e,p,180,[1,0,0]);else if(Math.abs(f-1)>1e-10){let t=[-d,u,0],n=180/Math.PI*Math.acos(Math.max(-1,Math.min(1,f)));p=Zp(e,p,n,t)}return Xp(e,p,i[0],i[1],i[2])}function rm(e,t,n,r,i){let a=[t];for(let o=1;o<i;o++){let i=r*o;a.push(Xp(e,t,n[0]*i,n[1]*i,n[2]*i))}return a}function im(e,t,n,r,i,a){let o=[t];for(let s=1;s<a;s++)o.push(Zp(e,t,i*s,r,n));return o}function am(e,t,n,r,i,a,o,s){return bf(e.gridPattern(Sf(t,`gridPattern`),n[0],n[1],n[2],r[0],r[1],r[2],i,a,o,s))}function om(e,t){return t.map(t=>{switch(t.type){case`translate`:return Xp(e,t.shape,t.x,t.y,t.z);case`rotate`:return Zp(e,t.shape,t.angle,t.axis,t.center);case`scale`:return $p(e,t.shape,t.center,t.factor);case`mirror`:return Qp(e,t.shape,t.origin,t.normal)}})}function sm(e){return{transform:(t,n)=>Yp(e,t,n),locate:(t,n)=>Yp(e,t,n),translate:(t,n,r,i)=>Xp(e,t,n,r,i),rotate:(t,n,r,i)=>Zp(e,t,n,r,i),mirror:(t,n,r)=>Qp(e,t,n,r),scale:(t,n,r)=>$p(e,t,n,r),generalTransform:(t,n,r,i)=>em(e,t,n,r,i),generalTransformNonOrthogonal:(t,n,r)=>tm(e,t,n,r),positionOnCurve:(t,n,r)=>nm(e,t,n,r),linearPattern:(t,n,r,i)=>rm(e,t,n,r,i),circularPattern:(t,n,r,i,a)=>im(e,t,n,r,i,a),gridPattern:(t,n,r,i,a,o,s)=>am(e,t,n,r,i,a,o,s),transformBatch:t=>om(e,t)}}function cm(e,t,n){let r=t;if(!mf(t))throw Error(`brepkit: applyMatrix requires a BrepkitHandle`);switch(r.type){case`solid`:{let t=e.copySolid(r.id);return e.transformSolid(t,n),O(t)}case`face`:{if(typeof e.copyFace!=`function`)throw Error(`brepkit: applyMatrix for faces requires copyFace/transformFace WASM exports`);let t=e.copyFace(r.id);return e.transformFace(t,n),gf(t)}case`wire`:{if(typeof e.copyWire!=`function`||typeof e.transformWire!=`function`)throw Error(`brepkit: applyMatrix for wires requires copyWire/transformWire WASM exports`);let t=e.copyWire(r.id);return e.transformWire(t,n),vf(t)}case`edge`:{if(typeof e.copyEdge!=`function`||typeof e.transformEdge!=`function`)throw Error(`brepkit: applyMatrix for edges requires copyEdge/transformEdge WASM exports`);let t=e.copyEdge(r.id);return e.transformEdge(t,n),_f(t)}case`vertex`:{let t=e.getVertexPosition(r.id),i=n,[a,o,s]=[t[0]??0,t[1]??0,t[2]??0];return xf(e.makeVertex((i[0]??0)*a+(i[1]??0)*o+(i[2]??0)*s+(i[3]??0),(i[4]??0)*a+(i[5]??0)*o+(i[6]??0)*s+(i[7]??0),(i[8]??0)*a+(i[9]??0)*o+(i[10]??0)*s+(i[11]??0)))}case`compound`:{let t=If.get(r.id);if(t){let r=t.map(t=>cm(e,t,n)),i=Ff();return If.set(i,r),bf(i)}let i=A(e.getCompoundSolids(r.id)).map(t=>{let r=e.copySolid(t);return e.transformSolid(r,n),r});return bf(e.makeCompound(i))}default:throw Error(`brepkit: applyMatrix does not support '${r.type}' shapes`)}}function lm(e,t){return!!(e&&(e[0]!==0||e[1]!==0||e[2]!==0)||t&&(t[0]!==0||t[1]!==0||t[2]!==1))}function um(e,t,n,r){let i=t;if(r&&(r[0]!==0||r[1]!==0||r[2]!==1)){let[t,n,a]=r,o=Math.sqrt(t*t+n*n+a*a),s=t/o,c=n/o,l=a/o;if(Math.abs(l+1)<1e-10)i=Zp(e,i,180,[1,0,0]);else if(Math.abs(l-1)>1e-10){let t=[-c,s,0],n=180/Math.PI*Math.acos(Math.max(-1,Math.min(1,l)));i=Zp(e,i,n,t)}}return n&&(n[0]!==0||n[1]!==0||n[2]!==0)&&(i=Xp(e,i,n[0],n[1],n[2])),i}function dm(e,t){let r,i=t;if(i.type===`solid`||i.type===`compound`){let n=Qf(e,t,`face`);if(n.length===0)throw Error(`brepkit: extractPlaneFromFace: no faces found`);let i=n[0];if(!i)throw Error(`brepkit: extractPlaneFromFace: no faces found`);let a=k(i,`face`),o=0;for(let t of n){let n=k(t,`face`);try{let t=e.faceArea(n,Nf);t>o&&(o=t,a=n)}catch{}}r=a}else r=k(t,`face`);let a=n(e.getFaceNormal(r)),o=e.tessellateFace(r,1).positions;return o.length>=3?{point:n(o),normal:a}:{point:[0,0,0],normal:a}}function fm(e,n){let r=n;if(r.type!==`edge`)return null;let i=e.getEdgeNurbsData(r.id);if(i){let e=JSON.parse(i);return{degree:e.degree,knots:e.knots,controlPoints:e.controlPoints,weights:e.weights}}let a=e.getEdgeVertices(r.id);return{degree:1,knots:[0,0,1,1],controlPoints:[t(a,0),t(a,1),t(a,2),t(a,3),t(a,4),t(a,5)],weights:[1,1]}}function pm(e,t){if(!mf(t))return!1;if(t.type!==`solid`)return!0;try{return e.validateSolidRelaxed(t.id)===0}catch(e){return console.warn(`brepkit: isValid check failed:`,e),!1}}function mm(e,t){if(!mf(t))return!1;if(t.type!==`solid`)return!0;try{return e.validateSolid(t.id)===0}catch(e){return console.warn(`brepkit: isValidStrict check failed:`,e),!1}}function hm(e,t){let n=t;if(n.type!==`solid`)throw Error(`brepkit: healSolid requires a solid, got ${n.type}. Consider using makeCompound() to combine shapes first.`);try{let n=e.repairSolid(k(t));return n>0&&console.warn(`brepkit: repairSolid left ${n} error(s) on solid.`),t}catch(n){try{return e.healSolid(k(t)),t}catch(e){return console.warn(`brepkit: healSolid failed (repairSolid error:`,n,`, healSolid error:`,e,`)`),null}}}function gm(e,t){return t}function _m(e,t,n){return t}function vm(e,t,n){let r=Sf(t,`mergeCoincidentVertices`);return e.mergeCoincidentVertices(r,n)}function ym(e,t,n){let r=Sf(t,`removeDegenerateEdges`);return e.removeDegenerateEdges(r,n)}function bm(e,t){let n=Sf(t,`fixFaceOrientations`);return e.fixFaceOrientations(n)}function xm(e,t){let n=t;return n.type===`solid`&&e.healSolid(n.id),t}function Sm(e,t){return t}function Cm(e,t){if(!mf(t)||t.type!==`solid`)return null;try{return typeof e.validateSolidDetails==`function`?e.validateSolidDetails(t.id):null}catch{return null}}function wm(e){return{isValid:t=>pm(e,t),isValidStrict:t=>mm(e,t),healSolid:t=>hm(e,t),healFace:t=>gm(e,t),healWire:(t,n)=>_m(e,t,n),fixShape:t=>xm(e,t),fixSelfIntersection:t=>Sm(e,t),mergeCoincidentVertices:(t,n)=>vm(e,t,n),removeDegenerateEdges:(t,n)=>ym(e,t,n),fixFaceOrientations:t=>bm(e,t),validationDetails:t=>Cm(e,t)}}function Tm(e){if(!(e instanceof Error))return!1;let t=e.message;return t.startsWith(`empty result:`)||t.includes(`produced empty result`)||t.includes(`produces empty result`)}function Em(e,t){return t.type===`compound`&&A(e.getCompoundSolids(t.id)).length===0}function Dm(e){return bf(e.makeCompound([]))}function Om(e,t,n,r){if(r&&zf(r)&&Rf(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),Em(e,t))return n;if(Em(e,n))return t;let i=Sf(t,`fuse`),a=n;if(a.type===`compound`){let t=A(e.getCompoundSolids(a.id)),n=i;for(let r of t)n=e.fuse(n,r);return O(n)}return O(e.fuse(i,Sf(n,`fuse`)))}function km(e,t,n,r){if(r&&zf(r)&&Rf(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),Em(e,t))return Dm(e);if(Em(e,n))return t;let i=Sf(t,`cut`),a=n;if(a.type===`compound`){let t=A(e.getCompoundSolids(a.id)),n=i;for(let r of t)try{n=e.cut(n,r)}catch(t){if(Tm(t))return Dm(e);throw t}return O(n)}try{return O(e.cut(i,Sf(n,`cut`)))}catch(t){if(Tm(t))return Dm(e);throw t}}function Am(e,t,n,r){if(r&&zf(r)&&Rf(`boolean-options`,`BooleanOptions (optimisation, simplify, strategy, fuzzyValue) not supported; ignored.`),Em(e,t)||Em(e,n))return Dm(e);try{return O(e.intersect(Sf(t,`intersect`),Sf(n,`intersect`)))}catch(t){if(Tm(t))return Dm(e);throw t}}function jm(e,n,r,i){let{point:a,normal:o}=dm(e,r),s=mf(n)&&n.type===`solid`?n.id:k(n,`solid`),c=A(e.section(s,a[0],a[1],a[2],o[0],o[1],o[2]));if(c.length===0)return bf(e.makeCompound([]));let l=[];for(let n=0;n<c.length;n++){let r=A(e.getFaceWires(t(c,n)));for(let e=0;e<r.length;e++)l.push(vf(t(r,e)))}let[u]=l;if(l.length===1&&u!==void 0)return u;let d=Ff();return If.set(d,l),bf(d)}function Mm(e,n,r){if(n.length===0)throw Error(`brepkit: fuseAll requires at least one shape`);if(n.length===1)return t(n,0);if(e.compoundFuse){let t=[];for(let r of n){let n=r;n.type===`compound`?t.push(...A(e.getCompoundSolids(n.id))):t.push(Sf(r,`fuseAll`))}if(t.length===0)throw Error(`brepkit: fuseAll resolved to zero solid IDs`);return O(e.compoundFuse(new Uint32Array(t)))}let i=[...n];for(;i.length>1;){let t=[];for(let n=0;n<i.length;n+=2)n+1<i.length?t.push(Om(e,i[n],i[n+1],r)):t.push(i[n]);i=t}return t(i,0)}function Nm(e,t,n,r){if(n.length===0)return t;if(n.length===1)return km(e,t,n[0],r);let i=Sf(t,`cutAll`),a=[];for(let t of n){let n=t;n.type===`compound`?a.push(...A(e.getCompoundSolids(n.id))):a.push(Sf(t,`cutAll`))}return a.length===0?t:O(e.compoundCut(i,new Uint32Array(a)))}function Pm(e,t,n){if(n.length===0)throw Error(`brepkit: split requires at least one tool`);let{point:r,normal:i}=dm(e,n[0]),a=A(e.split(k(t,`solid`),r[0],r[1],r[2],i[0],i[1],i[2]));return bf(e.makeCompound(a))}function Fm(e,t,n,r,i,a,o){let s=e.meshBoolean(t,n,r,i,a,o);return{vertices:new Float32Array(s.positions),normals:new Float32Array(s.normals),triangles:new Uint32Array(s.indices),uvs:new Float32Array,faceGroups:[{start:0,count:s.indices.length,faceHash:0}]}}function Im(e,t,n,r,i){let a=[];return(!mf(t)||t.IsNull())&&a.push({operand:`base`,issue:`null-shape`,message:`Base shape is null`}),(!mf(n)||n.IsNull())&&a.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is null`}),a.length>0?{valid:!1,issues:a}:(i(t)||a.push({operand:`base`,issue:`not-valid`,message:`Base shape fails BRepCheck validation. Try autoHeal() first.`}),i(n)||a.push({operand:`tool`,issue:`not-valid`,message:`Tool shape fails BRepCheck validation. Try autoHeal() first.`}),{valid:a.length===0,issues:a})}function Lm(e,n,r){let i=[];for(let r of n){let n=r;if(n.type===`solid`){let r=A(e.getSolidVertices(n.id));for(let n of r){let r=e.getVertexPosition(n);i.push(t(r,0),t(r,1),t(r,2))}}else if(n.type===`vertex`){let r=e.getVertexPosition(n.id);i.push(t(r,0),t(r,1),t(r,2))}}if(i.length<12)throw Error(`brepkit: hull requires enough points`);return O(e.convexHull(i))}function Rm(e,t,n){if(t.length<4)throw Error(`brepkit: hull needs at least 4 points`);let r=[];for(let e of t)r.push(e.x,e.y,e.z);return O(e.convexHull(r))}function zm(e,n,r,i){let a=new Float64Array(n.length*3);for(let e=0;e<n.length;e++){let r=t(n,e);a[e*3]=r.x,a[e*3+1]=r.y,a[e*3+2]=r.z}let o=new Uint32Array(r.length*3);for(let e=0;e<r.length;e++){let n=t(r,e);o[e*3]=n[0],o[e*3+1]=n[1],o[e*3+2]=n[2]}return O(e.importIndexedMesh(a,o))}function Bm(e){return{fuse:(t,n,r)=>Om(e,t,n,r),cut:(t,n,r)=>km(e,t,n,r),intersect:(t,n,r)=>Am(e,t,n,r),section:(t,n,r)=>jm(e,t,n,r),fuseAll:(t,n)=>Mm(e,t,n),cutAll:(t,n,r)=>Nm(e,t,n,r),split:(t,n)=>Pm(e,t,n),meshBoolean:(t,n,r,i,a,o)=>Fm(e,t,n,r,i,a,o),checkBoolean:(t,n,r)=>Im(e,t,n,r,t=>pm(e,t)),hull:(t,n)=>Lm(e,t,n),hullFromPoints:(t,n)=>Rm(e,t,n),buildSolidFromFaces:(t,n,r)=>zm(e,t,n,r)}}function Vm(e,t,n,r){return xf(e.makeVertex(t,n,r))}function Hm(e,t,n,r){if(t&&typeof t==`object`&&`origin`in t&&`direction`in t){let{origin:i,direction:a}=t,o=n??0,s=r??1;return Qm(e,[i[0]+a[0]*o,i[1]+a[1]*o,i[2]+a[2]*o],[i[0]+a[0]*s,i[1]+a[1]*s,i[2]+a[2]*s])}if(mf(t)&&t.type===`edge`)return t;throw Error(`brepkit: makeEdge requires a curve with origin/direction, or an edge handle`)}function Um(e,t){let n=[];for(let r of t){let t=r;if(t.type===`wire`)for(let r of A(e.getWireEdges(t.id)))n.push(r);else n.push(k(r,`edge`))}return vf(e.makeWire(n,!0))}function Wm(e,t,n){let r=t,i=r.type===`edge`?e.makeWire([r.id],!0):k(t,`wire`);return gf(n?e.makePlanarFaceFromWire(i):e.makeFaceFromWire(i))}function Gm(e,t,n,r){return O(e.makeBox(t,n,r))}function Km(e,t,n){return gf(e.makeRectangle(t,n))}function qm(e,t,n,r,i){let a=O(e.makeCylinder(t,n));return lm(r,i)?um(e,a,r,i):a}function Jm(e,t,n){let r=O(e.makeSphere(t,32));return n&&(n[0]!==0||n[1]!==0||n[2]!==0)?Xp(e,r,n[0],n[1],n[2]):r}function Ym(e,t,n,r,i,a){let o=O(e.makeCone(t,n,r));return lm(i,a)?um(e,o,i,a):o}function Xm(e,t,n,r,i){let a=O(e.makeTorus(t,n,32));return lm(r,i)?um(e,a,r,i):a}function Zm(e,t,n,r){let i=Math.max(t,n,r);return em(e,Jm(e,i),[t/i,0,0,0,n/i,0,0,0,r/i],[0,0,0],!1)}function Qm(e,t,n){return _f(e.makeLineEdge(t[0],t[1],t[2],n[0],n[1],n[2]))}function $m(e,t,n,r){let i=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);return _f(e.makeCircleEdge(t[0],t[1],t[2],n[0]/i,n[1]/i,n[2]/i,r))}function eh(e,t,n,r,i,a){let o=a-i,s=1e-9;if(o>s&&o<2*Math.PI-s){let o=Math.hypot(n[0],n[1],n[2]),s=[n[0]/o,n[1]/o,n[2]/o],c=Math.abs(s[0])<.9?[1,0,0]:[0,1,0],l=[s[1]*c[2]-s[2]*c[1],s[2]*c[0]-s[0]*c[2],s[0]*c[1]-s[1]*c[0]],u=Math.hypot(l[0],l[1],l[2]),d=[l[0]/u,l[1]/u,l[2]/u],f=[s[1]*d[2]-s[2]*d[1],s[2]*d[0]-s[0]*d[2],s[0]*d[1]-s[1]*d[0]],p=e=>{let n=Math.cos(e),i=Math.sin(e);return[t[0]+r*(n*d[0]+i*f[0]),t[1]+r*(n*d[1]+i*f[1]),t[2]+r*(n*d[2]+i*f[2])]},m=p(i),h=p(a);return _f(e.makeCircleArc3d(m[0],m[1],m[2],h[0],h[1],h[2],t[0],t[1],t[2],s[0],s[1],s[2]))}return Oh(e,t,n,r,i,a)}function th(e,t,n,r,i,a){let o=2*(e*(r-a)+n*(a-t)+i*(t-r));return Math.abs(o)<1e-12?null:[((e**2+t**2)*(r-a)+(n**2+r**2)*(a-t)+(i**2+a**2)*(t-r))/o,((e**2+t**2)*(i-n)+(n**2+r**2)*(e-i)+(i**2+a**2)*(n-e))/o]}function nh(e,t,n,r){let i=[n[0]-t[0],n[1]-t[1],n[2]-t[2]],a=[r[0]-t[0],r[1]-t[1],r[2]-t[2]],o=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],s=Math.sqrt(o[0]**2+o[1]**2+o[2]**2);if(s<1e-12)return Qm(e,t,r);let c=[o[0]/s,o[1]/s,o[2]/s],l=Math.sqrt(i[0]**2+i[1]**2+i[2]**2),u=[i[0]/l,i[1]/l,i[2]/l],d=[c[1]*u[2]-c[2]*u[1],c[2]*u[0]-c[0]*u[2],c[0]*u[1]-c[1]*u[0]],f=e=>{let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return[n*u[0]+r*u[1]+i*u[2],n*d[0]+r*d[1]+i*d[2]]},[p,m]=f(t),[h,g]=f(n),[_,v]=f(r),y=th(p,m,h,g,_,v);if(!y)return Qm(e,t,r);let[b,x]=y,S=[t[0]+b*u[0]+x*d[0],t[1]+b*u[1]+x*d[1],t[2]+b*u[2]+x*d[2]];return _f(e.makeCircleArc3d(t[0],t[1],t[2],r[0],r[1],r[2],S[0],S[1],S[2],c[0],c[1],c[2]))}function rh(e,t,n,r,i,a){let o=Math.sqrt(n[0]**2+n[1]**2+n[2]**2);if(a!==void 0){let s=Math.sqrt(a[0]**2+a[1]**2+a[2]**2);return _f(e.makeEllipseEdgeWithRef(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i,a[0]/s,a[1]/s,a[2]/s))}return _f(e.makeEllipseEdge(t[0],t[1],t[2],n[0]/o,n[1]/o,n[2]/o,r,i))}function ih(e,t,n,r,i,a,o,s){return kh(e,t,n,r,i,a,o,s)}function ah(e,n){if(n.length<2)throw Error(`brepkit: bezier requires at least 2 points`);let r=n.length-1,i=n.length,a=[...Array(r+1).fill(0),...Array(r+1).fill(1)],o=Array(i).fill(1),s=n.flatMap(([e,t,n])=>[e,t,n]),c=t(n,0),l=t(n,i-1);return _f(e.makeNurbsEdge(c[0],c[1],c[2],l[0],l[1],l[2],r,a,s,o))}function oh(e,t,n,r){return _f(e.makeTangentArc3d(t[0],t[1],t[2],n[0],n[1],n[2],r[0],r[1],r[2]))}function sh(e,t,n,r,i,a,o){let s=n/t,c=Math.max(4,Math.ceil(s*16)),l=i?.[0]??0,u=i?.[1]??0,d=i?.[2]??0,f=o?-1:1,p=[];for(let e=0;e<=c;e++){let t=e/c,i=f*2*Math.PI*s*t;p.push([l+r*Math.cos(i),u+r*Math.sin(i),d+n*t])}return Um(e,[bh(e,p)])}function ch(e,t){let n=[];for(let r of t){let t=r;if(t.type===`edge`)n.push(t.id);else if(t.type===`wire`)for(let r of A(e.getWireEdges(t.id)))n.push(r)}if(n.length===0)throw Error(`brepkit: makeWireFromMixed requires at least one edge`);return vf(e.makeWire(n,!1))}function lh(e,t){let n=t.filter(mf);if(n.length===0)throw Error(`brepkit: makeCompound requires at least one shape`);if(n.every(e=>e.type===`solid`))return bf(e.makeCompound(n.map(e=>e.id)));let r=Ff();return If.set(r,n),bf(r)}function uh(e,t,n){let r=Gm(e,Math.abs(n[0]-t[0]),Math.abs(n[1]-t[1]),Math.abs(n[2]-t[2])),i=Math.min(t[0],n[0]),a=Math.min(t[1],n[1]),o=Math.min(t[2],n[2]);return i!==0||a!==0||o!==0?Xp(e,r,i,a,o):r}function dh(e,t){let n=t;if(n.type===`solid`)return t;if(n.type===`shell`){try{return e.getSolidFaces(n.id),O(n.id)}catch{}return O(e.solidFromShell(n.id))}return O(e.solidFromShell(k(t,`shell`)))}function fh(e,t){return Wm(e,t,!1)}function ph(e,t,n){let r=n.map(e=>k(e,`wire`));return gf(e.addHolesToFace(k(t,`face`),r))}function mh(e,t){return gf(e.removeHolesFromFace(k(t,`face`)))}function hh(e,t,n){return Wm(e,n,!1)}function gh(e,t,n,r){let i=[];for(let[e,n,r]of t)i.push(e,n,r);let a=Math.min(3,n-1),o=Math.min(3,r-1);try{return gf(e.interpolateSurface(i,n,r,a,o))}catch{return _h(e,t,n,r)}}function _h(e,n,r,i){let a=[];for(let o=0;o<r-1;o++)for(let r=0;r<i-1;r++){let s=o*i+r,c=(o+1)*i+r,l=o*i+(r+1),u=(o+1)*i+(r+1),d=vh(e,t(n,s),t(n,c),t(n,l));d&&a.push(d);let f=vh(e,t(n,c),t(n,u),t(n,l));f&&a.push(f)}if(a.length===0)throw Error(`brepkit: no valid faces in surface grid`);return dp(e,a,1e-6)}function vh(e,t,n,r){let i=n[0]-t[0],a=n[1]-t[1],o=n[2]-t[2],s=r[0]-t[0],c=r[1]-t[1],l=r[2]-t[2],u=a*l-o*c,d=o*s-i*l,f=i*c-a*s;if(Math.sqrt(u*u+d*d+f*f)<1e-12)return null;try{return Wm(e,Um(e,[Qm(e,t,n),Qm(e,n,r),Qm(e,r,t)]))}catch(e){return console.warn(`brepkit: makeNonPlanarFace failed:`,e),null}}function yh(e,t,n){let r=t.map(e=>k(e,`face`));return O(e.sewFaces(r,n))}function bh(e,n,r){if(r?.tolerance!==void 0&&Rf(`interpolate-tolerance`,`interpolatePoints() tolerance parameter is not supported; brepkit uses chord-length parameterisation.`),n.length<2)throw Error(`brepkit: need at least 2 points`);if(n.length===2)return Qm(e,t(n,0),t(n,1));let i=Math.min(3,n.length-1),a=n.flatMap(([e,t,n])=>[e,t,n]);return _f(e.interpolatePoints(a,i))}function xh(e,t,n){let r=n?.degMax??3,i=n?.tolerance??1e-6,a=[];for(let e of t)a.push(e[0],e[1],e[2]);let o=Math.max(r+1,Math.min(t.length,Math.ceil(t.length*.7)));return _f(e.approximateCurveLspia(a,r,o,i,100))}function Sh(e,t,n,r){return{x:t,y:n,z:r}}function Ch(e,t,n,r){let i=Math.sqrt(t*t+n*n+r*r);return{x:t/i,y:n/i,z:r/i}}function wh(e,t,n,r){return{x:t,y:n,z:r}}function Th(e,t,n,r,i,a,o){return{origin:[t,n,r],direction:[i,a,o]}}function Eh(e,t,n,r,i,a,o,s,c,l){return{origin:[t,n,r],z:[i,a,o],x:s===void 0?void 0:[s,c,l]}}function Dh(e,t,n,r,i,a,o,s,c,l){return{origin:[t,n,r],z:[i,a,o],x:s===void 0?void 0:[s,c,l]}}function Oh(e,n,r,i,a,o){let s=Math.sqrt(r[0]**2+r[1]**2+r[2]**2),c=[r[0]/s,r[1]/s,r[2]/s],l=Math.abs(c[0])<.9?[1,0,0]:[0,1,0],u=[c[1]*l[2]-c[2]*l[1],c[2]*l[0]-c[0]*l[2],c[0]*l[1]-c[1]*l[0]],d=Math.sqrt(u[0]**2+u[1]**2+u[2]**2),f=[u[0]/d,u[1]/d,u[2]/d],p=[c[1]*f[2]-c[2]*f[1],c[2]*f[0]-c[0]*f[2],c[0]*f[1]-c[1]*f[0]],m=Math.ceil(Math.abs(o-a)/(Math.PI/2)),h=(o-a)/m,g=[],_=[];for(let e=0;e<=m;e++){let t=a+e*h,r=Math.cos(t),o=Math.sin(t),s=n[0]+i*(r*f[0]+o*p[0]),c=n[1]+i*(r*f[1]+o*p[1]),l=n[2]+i*(r*f[2]+o*p[2]);if(e>0){let t=a+(e-.5)*h,r=Math.cos(t),o=Math.sin(t),s=i/Math.cos(h/2),c=n[0]+s*(r*f[0]+o*p[0]),l=n[1]+s*(r*f[1]+o*p[1]),u=n[2]+s*(r*f[2]+o*p[2]);g.push(c,l,u),_.push(Math.cos(h/2))}g.push(s,c,l),_.push(1)}let v=[,,,].fill(0);for(let e=1;e<m;e++)v.push(e,e);v.push(...[,,,].fill(m));let y=t(v,v.length-1);for(let e=0;e<v.length;e++)v[e]=t(v,e)/y;let b=t(g,0),x=t(g,1),S=t(g,2),C=t(g,g.length-3),w=t(g,g.length-2),ee=t(g,g.length-1);return _f(e.makeNurbsEdge(b,x,S,C,w,ee,2,v,g,_))}function kh(e,n,r,i,a,o,s,c){let l=Math.sqrt(r[0]**2+r[1]**2+r[2]**2),u=[r[0]/l,r[1]/l,r[2]/l],d;if(c){let e=Math.sqrt(c[0]**2+c[1]**2+c[2]**2);d=[c[0]/e,c[1]/e,c[2]/e]}else{let e=Math.abs(u[0])<.9?[1,0,0]:[0,1,0],t=[u[1]*e[2]-u[2]*e[1],u[2]*e[0]-u[0]*e[2],u[0]*e[1]-u[1]*e[0]],n=Math.sqrt(t[0]**2+t[1]**2+t[2]**2);d=[t[0]/n,t[1]/n,t[2]/n]}let f=[u[1]*d[2]-u[2]*d[1],u[2]*d[0]-u[0]*d[2],u[0]*d[1]-u[1]*d[0]],p=Math.ceil(Math.abs(s-o)/(Math.PI/2)),m=(s-o)/p,h=[],g=[];for(let e=0;e<=p;e++){let t=o+e*m,r=Math.cos(t),s=Math.sin(t),c=n[0]+i*r*d[0]+a*s*f[0],l=n[1]+i*r*d[1]+a*s*f[1],u=n[2]+i*r*d[2]+a*s*f[2];if(e>0){let t=o+(e-.5)*m,r=Math.cos(t),s=Math.sin(t),c=1/Math.cos(m/2),l=n[0]+i*c*r*d[0]+a*c*s*f[0],u=n[1]+i*c*r*d[1]+a*c*s*f[1],p=n[2]+i*c*r*d[2]+a*c*s*f[2];h.push(l,u,p),g.push(Math.cos(m/2))}h.push(c,l,u),g.push(1)}let _=[,,,].fill(0);for(let e=1;e<p;e++)_.push(e,e);_.push(...[,,,].fill(p));let v=t(_,_.length-1);for(let e=0;e<_.length;e++)_[e]=t(_,e)/v;let y=t(h,0),b=t(h,1),x=t(h,2),S=t(h,h.length-3),C=t(h,h.length-2),w=t(h,h.length-1);return _f(e.makeNurbsEdge(y,b,x,S,C,w,2,_,h,g))}function Ah(e){return{makeVertex:(t,n,r)=>Vm(e,t,n,r),makeEdge:(t,n,r)=>Hm(e,t,n,r),makeWire:t=>Um(e,t),makeWireFromMixed:t=>ch(e,t),makeFace:(t,n)=>Wm(e,t,n),makeBox:(t,n,r)=>Gm(e,t,n,r),makeRectangle:(t,n)=>Km(e,t,n),makeCylinder:(t,n,r,i)=>qm(e,t,n,r,i),makeSphere:(t,n)=>Jm(e,t,n),makeCone:(t,n,r,i,a)=>Ym(e,t,n,r,i,a),makeTorus:(t,n,r,i)=>Xm(e,t,n,r,i),makeEllipsoid:(t,n,r)=>Zm(e,t,n,r),makeLineEdge:(t,n)=>Qm(e,t,n),makeCircleEdge:(t,n,r)=>$m(e,t,n,r),makeCircleArc:(t,n,r,i,a)=>eh(e,t,n,r,i,a),makeArcEdge:(t,n,r)=>nh(e,t,n,r),makeEllipseEdge:(t,n,r,i,a)=>rh(e,t,n,r,i,a),makeEllipseArc:(t,n,r,i,a,o,s)=>ih(e,t,n,r,i,a,o,s),makeBezierEdge:t=>ah(e,t),makeTangentArc:(t,n,r)=>oh(e,t,n,r),makeHelixWire:(t,n,r,i,a,o)=>sh(e,t,n,r,i,a,o),makeCompound:t=>lh(e,t),makeBoxFromCorners:(t,n)=>uh(e,t,n),solidFromShell:t=>dh(e,t),makeNonPlanarFace:t=>fh(e,t),addHolesInFace:(t,n)=>ph(e,t,n),removeHolesFromFace:t=>mh(e,t),makeFaceOnSurface:(t,n)=>hh(e,t,n),bsplineSurface:(t,n,r)=>gh(e,t,n,r),triangulatedSurface:(t,n,r)=>_h(e,t,n,r),buildTriFace:(t,n,r)=>vh(e,t,n,r),sewAndSolidify:(t,n)=>yh(e,t,n),interpolatePoints:(t,n)=>bh(e,t,n),approximatePoints:(t,n)=>xh(e,t,n),createPoint3d:(t,n,r)=>Sh(e,t,n,r),createDirection3d:(t,n,r)=>Ch(e,t,n,r),createVector3d:(t,n,r)=>wh(e,t,n,r),createAxis1:(t,n,r,i,a,o)=>Th(e,t,n,r,i,a,o),createAxis2:(t,n,r,i,a,o,s,c,l)=>Eh(e,t,n,r,i,a,o,s,c,l),createAxis3:(t,n,r,i,a,o,s,c,l)=>Dh(e,t,n,r,i,a,o,s,c,l)}}function jh(e,t,n,r){let i=Sf(t,`fillet`),a=n.map(e=>k(e,`edge`));if(typeof r==`number`)return O(e.fillet(i,a,r));let o=[];for(let[e,t]of n.entries()){let n=a[e]??0,i;i=typeof r==`function`?r(t):r;let[s,c]=Array.isArray(i)?i:[i,i];o.push({edge:n,startRadius:s,endRadius:c})}return O(e.filletVariable(i,JSON.stringify(o)))}function Mh(e,t,n,r){let i=Sf(t,`chamfer`),a=n.map(e=>k(e,`edge`));if(typeof r==`number`)return O(e.chamfer(i,a,r));if(Array.isArray(r)){let[t,n]=r;return typeof e.chamferAsymmetric==`function`?O(e.chamferAsymmetric(i,a,t,n)):(Rf(`chamfer-asymmetric`,`chamferAsymmetric not available; using averaged distance.`),O(e.chamfer(i,a,(t+n)/2)))}let o=new Map;for(let[e,t]of n.entries()){let n=r(t),i=a[e];if(i===void 0)continue;let[s,c]=Array.isArray(n)?n:[n,n],l=`${s},${c}`,u=o.get(l);u?u.ids.push(i):o.set(l,{ids:[i],d1:s,d2:c})}let s=i;for(let t of o.values())t.d1===t.d2?s=e.chamfer(s,t.ids,t.d1):typeof e.chamferAsymmetric==`function`?s=e.chamferAsymmetric(s,t.ids,t.d1,t.d2):(Rf(`chamfer-callback`,`chamferAsymmetric not available; asymmetric edges use averaged distance.`),s=e.chamfer(s,t.ids,(t.d1+t.d2)/2));return O(s)}function Nh(e,t,n,r,i){let a=r*Math.tan(i*Math.PI/180),o=Sf(t,`chamferDistAngle`),s=n.map(e=>k(e,`edge`));return typeof e.chamferAsymmetric==`function`?O(e.chamferAsymmetric(o,s,r,a)):(Rf(`chamfer-dist-angle`,`chamferAsymmetric not available; using averaged distance.`),O(e.chamfer(o,s,(r+a)/2)))}function Ph(e,n){let r=A(e.getFaceVertices(n));if(r.length<1)return null;let i=0,a=0,o=0;for(let n of r){let r=e.getVertexPosition(n);i+=t(r,0),a+=t(r,1),o+=t(r,2)}let s=r.length;return{x:i/s,y:a/s,z:o/s}}function Fh(e,t,n){try{let r=e.getFaceNormal(t),i=-1,a=-2;for(let t of n)try{let n=e.getFaceNormal(t),o=(r[0]??0)*(n[0]??0)+(r[1]??0)*(n[1]??0)+(r[2]??0)*(n[2]??0);o>a&&(a=o,i=t)}catch{}if(i>=0&&a>.99)return i}catch{}return null}function Ih(e,t,n){try{let r=Ph(e,t);if(r===null)return null;let i=-1,a=1/0;for(let t of n)try{let n=Ph(e,t);if(n===null)continue;let o=Math.sqrt((r.x-n.x)**2+(r.y-n.y)**2+(r.z-n.z)**2);o<a&&(a=o,i=t)}catch{}if(i>=0&&a<.001)return i}catch{}return null}function Lh(e,t,n,r){if(r.has(t))return t;let i=Fh(e,t,n);if(i!==null)return i;let a=Ih(e,t,n);return a===null?t:a}function Rh(e,t,n,r,i){i!==void 0&&Rf(`shell-tolerance`,`shell() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let a=Sf(t,`shell`),o=A(e.getSolidFaces(a)),s=new Set(o),c=n.map(t=>Lh(e,k(t,`face`),o,s));return O(e.shell(a,r,c))}function zh(e,t,n){let r=t;if(r.type===`face`)return O(e.thicken(r.id,n));throw Error(`brepkit: thicken() requires a face`)}function Bh(e,t,n,r){r!==void 0&&Rf(`offset-tolerance`,`offset() tolerance parameter is not supported; brepkit uses its own internal tolerance.`);let i=t;if(i.type===`face`)return O(e.thicken(i.id,n));let a=Sf(t,`offset`);return O(e.offsetSolidV2(a,n))}function Vh(e,t,n){let r=Sf(t,`filletVariable`);return O(e.filletVariable(r,n))}function Hh(e,t,n,r,i,a){let o=Sf(t,`draft`),s=n.map(e=>k(e,`face`));return O(e.draft(o,s,r[0],r[1],r[2],i[0],i[1],i[2],a))}function Uh(e,t,n){let r=Sf(t,`defeature`),i=n.map(e=>k(e,`face`));return O(e.defeature(r,i))}function Wh(e){switch(e){case`arc`:case`tangent`:return`arc`;case`intersection`:return`intersection`;default:return`intersection`}}function Gh(e,n,r,i){if(typeof e.offsetWire2DWithJoin==`function`)return vf(e.offsetWire2DWithJoin(k(n,`wire`),r,Wh(i)));let a=Qf(e,n,`edge`);if(a.length===0)return n;let o=[];for(let n of a){let r=e.getEdgeVertices(k(n,`edge`));o.push(t(r,0),t(r,1))}if(o.length<6)return n;let s=e.offsetPolygon2d(o,r,1e-10),c=[];for(let e=0;e<s.length;e+=2)c.push(t(s,e),t(s,e+1),0);return vf(e.makePolygonWire(c))}function Kh(e,t){if(t.type===`solid`)try{e.healSolid(k(t))}catch(e){console.warn(`brepkit: healing failed in simplify:`,e)}return t}function qh(e,t){let n=t,r=e.reverseShape(n.id);return hf(n.type,r)}function Jh(e){return{fillet:(t,n,r)=>jh(e,t,n,r),chamfer:(t,n,r)=>Mh(e,t,n,r),chamferDistAngle:(t,n,r,i)=>Nh(e,t,n,r,i),shell:(t,n,r,i)=>Rh(e,t,n,r,i),thicken:(t,n)=>zh(e,t,n),offset:(t,n,r)=>Bh(e,t,n,r),filletVariable:(t,n)=>Vh(e,t,n),draft:(t,n,r,i,a)=>Hh(e,t,n,r,i,Uf(n,a)),defeature:(t,n)=>Uh(e,t,n),offsetWire2D:(t,n,r)=>Gh(e,t,n,r),simplify:t=>Kh(e,t),reverseShape:t=>qh(e,t)}}function Yh(e,t){let n=JSON.parse(e),r=n.evolution;if(!r||typeof r.modified!=`object`||typeof r.generated!=`object`)throw Error(`brepkit: invalid evolution JSON structure`);let i=O(n.solid),a=e=>{let n=new Map;for(let[r,i]of Object.entries(e)){let e=Number(r)%t,a=i.map(e=>e%t),o=n.get(e);o?o.push(...a):n.set(e,a)}return n},o=a(r.modified),s=a(r.generated),c=new Set;for(let e of r.deleted)c.add(e%t);return{shape:i,evolution:{modified:o,generated:s,deleted:c}}}function Xh(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function Zh(e,n){try{let r=e.tessellateFace(n,1).positions;if(r.length<3)return[0,0,0];let i=0,a=0,o=0,s=r.length/3;for(let e=0;e<r.length;e+=3)i+=t(r,e),a+=t(r,e+1),o+=t(r,e+2);return[i/s,a/s,o/s]}catch{return[0,0,0]}}function Qh(e,t,n){try{return{hash:n,normal:e.getFaceNormal(t),centroid:Zh(e,t)}}catch{return{hash:n,normal:[0,0,0],centroid:Zh(e,t)}}}var $h=.707,eg=100,tg=.05;function ng(e,n){let r=-1/0,i=[];for(let a=0;a<n.length;a++){let o=t(n,a),s=(e.normal[0]??0)*(o.normal[0]??0)+(e.normal[1]??0)*(o.normal[1]??0)+(e.normal[2]??0)*(o.normal[2]??0);if(s<$h)continue;let c=Xh(e.centroid,o.centroid);if(c>eg)continue;let l=s-c/eg;l>r&&(r=l),i.push({idx:a,score:l})}return{matches:i,bestScore:r}}function rg(e,t){let n=1/0,r;for(let i of t){let t=Xh(e.centroid,i.centroid);t<n&&(n=t,r=i)}return r}function ig(e,n,r,i,a,o,s,c){let l=n;if(l.type!==`solid`)return;let u=A(e.getSolidFaces(l.id)),d=Math.min(u.length,r.length),f=[];for(let n=0;n<d;n++){let i=t(u,n);f.push(Qh(e,i,r[n]??i%a))}let p=i.map(t=>Qh(e,t,t%a)),m=new Set;for(let e of p){let{matches:n,bestScore:r}=ng(e,f);if(n.length>0){for(let i of n)if(i.score>=r-tg){let n=t(f,i.idx),r=o.get(n.hash)??[];r.push(e.hash),o.set(n.hash,r),m.add(i.idx)}}else{let t=rg(e,f);if(t){let n=s.get(t.hash)??[];n.push(e.hash),s.set(t.hash,n)}}}for(let e=0;e<f.length;e++)m.has(e)||c.add(t(f,e).hash)}function ag(e,t,n,r,i,a,o,s){let c=new Set(s),l=new Map(a);ig(e,t,n,r,i,a,o,s),s.clear();for(let e of c)s.add(e);for(let e of n){let t=!l.has(e)&&a.has(e)&&(a.get(e)?.length??0)>0,n=o.has(e)&&(o.get(e)?.length??0)>0;!t&&!n&&s.add(e)}}function og(e,n,r,i,a,o){let s=n.filter(e=>!r.has(e));s.length>0&&e.length>0&&a.set(t(e,0),s);for(let t of e)i.has(t)||o.add(t)}function sg(e,n,r,i,a,o,s,c,l){let u=new Set(i);if(r.some(e=>u.has(e))){let t=new Set(r);for(let e of r)u.has(e)&&o.set(e,[e]);let d=i.filter(e=>!t.has(e)),f=n.filter(e=>!u.has(e%a));l&&d.length>0&&f.length>0?ag(e,l,d,f,a,o,s,c):og(i,r,u,t,s,c)}else if(l)ig(e,l,i,n,a,o,s,c);else{for(let e=0;e<i.length&&e<r.length;e++)o.set(t(i,e),[t(r,e)]);r.length>i.length&&i.length>0&&s.set(t(i,0),r.slice(i.length))}}function cg(e,n,r,i,a,o){let s=n,c=new Map,l=new Map,u=new Set;if(s.type===`solid`){let n=A(e.getSolidFaces(s.id)),d=n.map(e=>e%i);if(a)for(let e=0;e<r.length&&e<d.length;e++)c.set(t(r,e),[t(d,e)]);else sg(e,n,d,r,i,c,l,u,o)}return{shape:n,evolution:{modified:c,generated:l,deleted:u}}}function lg(e,t,n,r,i){for(let[a,o]of e){let s=[];for(let e of o){r.add(e);let i=t.get(e);i?s.push(...i):n.has(e)||s.push(e)}s.length>0?e.set(a,s):(e.delete(a),i?.add(a))}}function ug(e,t){let n=new Set;lg(t.combinedModified,e.evolution.modified,e.evolution.deleted,n,t.combinedDeleted),lg(t.combinedGenerated,e.evolution.modified,e.evolution.deleted,n);for(let[r,i]of e.evolution.modified)t.combinedModified.has(r)||n.has(r)||t.combinedModified.set(r,[...i]);for(let[r,i]of e.evolution.generated){if(n.has(r))continue;let e=t.combinedGenerated.get(r)??[];t.combinedGenerated.set(r,[...e,...i])}for(let n of e.evolution.deleted)t.inputFaceHashSet.has(n)&&t.combinedDeleted.add(n)}function dg(e,t,n,r,i,a){let o=A(e.getCompoundSolids(n)),s=t,c={combinedModified:new Map,combinedGenerated:new Map,combinedDeleted:new Set,inputFaceHashSet:new Set(r)};for(let e of o){let t=s;if(t.type!==`solid`)break;let n=Yh(a(t.id,e),i);s=n.shape,ug(n,c)}return{shape:s,accum:c}}function fg(e,t,n,r,i,a,o,s,c){let l={hasErrors:!1,hasWarnings:!1,messages:[]},u=t,d=n;if(r.length>0&&u.type===`solid`){if(d.type===`solid`)try{return{...Yh(o(u.id,d.id),i),diagnostics:l}}catch(e){if(!Tm(e))throw e}if(d.type===`compound`){let{shape:n,accum:a}=dg(e,t,d.id,r,i,o);return{shape:n,evolution:{modified:a.combinedModified,generated:a.combinedGenerated,deleted:a.combinedDeleted},diagnostics:l}}}return{...cg(e,s(t,n,a),r,i,!1,t),diagnostics:l}}function pg(e,t,n,r,i,a,o){return cg(e,Xp(e,t,n,r,i),a,o,!0)}function mg(e,t,n,r,i,a,o){return cg(e,Zp(e,t,n*180/Math.PI,a,o),r,i,!0)}function hg(e,t,n,r,i,a){return cg(e,Qp(e,t,n,r),i,a,!0)}function gg(e,t,n,r,i,a){return cg(e,$p(e,t,n,r),i,a,!0)}function _g(e,t,n,r,i,a,o){return cg(e,em(e,t,n,r,i),a,o,!0)}function vg(e,t,n,r,i,a){return fg(e,t,n,r,i,a,(t,n)=>e.fuseWithEvolution(t,n),(t,n,r)=>Om(e,t,n,r),`fuseWithHistory`)}function yg(e,t,n,r,i,a){return fg(e,t,n,r,i,a,(t,n)=>e.cutWithEvolution(t,n),(t,n,r)=>km(e,t,n,r),`cutWithHistory`)}function bg(e,t,n,r,i,a){return fg(e,t,n,r,i,a,(t,n)=>e.intersectWithEvolution(t,n),(t,n,r)=>Am(e,t,n,r),`intersectWithHistory`)}function xg(e,t,n,r,i,a){return cg(e,jh(e,t,n,r),i,a,!1,t)}function Sg(e,t,n,r,i,a){return cg(e,Mh(e,t,n,r),i,a,!1,t)}function Cg(e,t,n,r,i,a,o){return cg(e,Rh(e,t,n,r,o),i,a,!1,t)}function wg(e,t,n,r,i){return cg(e,zh(e,t,n),r,i,!1,t)}function Tg(e,t,n,r,i,a){return cg(e,Bh(e,t,n,a),r,i,!1,t)}function Eg(e,t,n,r,i,a,o,s){return cg(e,Hh(e,t,n,r,i,a),o,s,!1,t)}function Dg(e,t,n,r,i){return cg(e,cm(e,t,n),r,i,!0)}function Og(e,t){let n=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];for(let e of t)n=Mf(e.type===`translate`?Ef(e.x,e.y,e.z):Of(e.angle,e.axis,e.center),n);return{handle:n,dispose:()=>{}}}function kg(e){return{translateWithHistory:(t,n,r,i,a,o)=>pg(e,t,n,r,i,a,o),rotateWithHistory:(t,n,r,i,a,o)=>mg(e,t,n,r,i,a,o),mirrorWithHistory:(t,n,r,i,a)=>hg(e,t,n,r,i,a),scaleWithHistory:(t,n,r,i,a)=>gg(e,t,n,r,i,a),generalTransformWithHistory:(t,n,r,i,a,o)=>_g(e,t,n,r,i,a,o),fuseWithHistory:(t,n,r,i,a)=>vg(e,t,n,r,i,a),cutWithHistory:(t,n,r,i,a)=>yg(e,t,n,r,i,a),intersectWithHistory:(t,n,r,i,a)=>bg(e,t,n,r,i,a),filletWithHistory:(t,n,r,i,a)=>xg(e,t,n,r,i,a),chamferWithHistory:(t,n,r,i,a)=>Sg(e,t,n,r,i,a),shellWithHistory:(t,n,r,i,a,o)=>Cg(e,t,n,r,i,a,o),thickenWithHistory:(t,n,r,i)=>wg(e,t,n,r,i),offsetWithHistory:(t,n,r,i,a)=>Tg(e,t,n,r,i,a),draftWithHistory:(t,n,r,i,a,o,s)=>Eg(e,t,n,r,i,Uf(n,a),o,s),applyComposedTransformWithHistory:(t,n,r,i)=>Dg(e,t,n,r,i),composeTransform:t=>Og(e,t)}}function Ag(e,t,n){let r=k(t),i=t,a=n.tolerance||.01,o=n.angularTolerance>0?n.angularTolerance:void 0,s;if(i.type===`solid`)s=Ng(e,r,a,!!n.includeUVs,o);else if(i.type===`face`)s=Rg(e,r,a,0,o);else throw Error(`brepkit: cannot mesh shape of type '${i.type}'`);return n.skipNormals&&(s.normals=new Float32Array),n.includeUVs||(s.uvs=new Float32Array),s}function jg(e,r,i,a){let o=r;if(o.type!==`solid`)return{lines:new Float32Array,edgeGroups:[]};let s=a>0?a:void 0,c=e.meshEdgesAll(o.id,i,s),l=c.positions,u=c.offsets,d=c.edgeCount,f=[],p=[];for(let e=0;e<d;e++){let r=t(u,e),i=((e+1<d?t(u,e+1):l.length)-r)/3,a=f.length/3;for(let e=0;e+1<i;e++){let t=r+e*3,[i,a,o]=n(l,t),[s,c,u]=n(l,t+3);i===s&&a===c&&o===u||f.push(i,a,o,s,c,u)}p.push({start:a,count:f.length/3-a,edgeHash:e})}return{lines:new Float32Array(f),edgeGroups:p}}function Mg(e,t){return!1}function Ng(e,t,n,r,i){try{return Pg(e,t,n,r,i)}catch(r){return console.warn(`brepkit: tessellateSolidGrouped failed (solidId=${t}), falling back to per-face:`,r),Lg(e,t,n,i)}}function Pg(e,t,n,r,i){return typeof e.tessellateSolidGroupedBinary==`function`?Fg(e,t,n,r,i,e.tessellateSolidGroupedBinary(t,n,i)):Ig(e,t,n,r,i)}function Fg(e,n,r,i,a,o){let s=o.positions,c=o.normals,l=o.indices,u=o.faceOffsets,d=A(e.getSolidFaces(n)),f=u.length-1;if(f!==d.length)throw Error(`faceOffsets/faceIds length mismatch: ${f} groups vs ${d.length} faces`);let p=[];for(let e=0;e<u.length-1;e++){let n=t(u,e),r=t(u,e+1)-n;r!==0&&p.push({start:n,count:r,faceHash:d[e]??0})}let m=new Float32Array;if(i){let t=s.length/3*2;try{let i=e.tessellateSolidUV(n,r,a),o=JSON.parse(i);m=o.uvs.length===t?new Float32Array(o.uvs):new Float32Array(t)}catch{m=new Float32Array(t)}}return{vertices:s,normals:c,triangles:l,uvs:m,faceGroups:p}}function Ig(e,n,r,i,a){let o=e.tessellateSolidGrouped(n,r,a),s=JSON.parse(o),c=A(e.getSolidFaces(n)),l=s.faceOffsets.length-1;if(l!==c.length)throw Error(`faceOffsets/faceIds length mismatch: ${l} groups vs ${c.length} faces`);let u=[];for(let e=0;e<s.faceOffsets.length-1;e++){let n=t(s.faceOffsets,e),r=t(s.faceOffsets,e+1)-n;r!==0&&u.push({start:n,count:r,faceHash:c[e]??0})}let d=new Float32Array;if(i){let t=s.positions.length/3*2;try{let i=e.tessellateSolidUV(n,r,a),o=JSON.parse(i);d=o.uvs.length===t?new Float32Array(o.uvs):new Float32Array(t)}catch{d=new Float32Array(t)}}return{vertices:new Float32Array(s.positions),normals:new Float32Array(s.normals),triangles:new Uint32Array(s.indices),uvs:d,faceGroups:u}}function Lg(e,t,n,r){let i=A(e.getSolidFaces(t)),a=[],o=[],s=[],c=[],l=[],u=0;for(let t of i)try{let i=e.tessellateFace(t,n,r),d=i.positions,f=i.normals,p=i.indices,m=d.length/3;if(m===0)continue;let h=s.length;for(let e of d)a.push(e);for(let e of f)o.push(e);for(let e of p)s.push(e+u);for(let e=0;e<m;e++)c.push(0,0);l.push({start:h,count:p.length,faceHash:t}),u+=m}catch(e){console.warn(`brepkit: face tessellation failed (faceId=${t}):`,e)}return{vertices:new Float32Array(a),normals:new Float32Array(o),triangles:new Uint32Array(s),uvs:new Float32Array(c),faceGroups:l}}function Rg(e,t,n,r,i){let a=e.tessellateFace(t,n,i),o=a.positions,s=a.normals,c=a.indices,l=o.length/3,u=[];for(let e=0;e<l;e++)u.push(0,0);return{vertices:new Float32Array(o),normals:new Float32Array(s),triangles:new Uint32Array(c),uvs:new Float32Array(u),faceGroups:[{start:0,count:c.length,faceHash:r}]}}function zg(e){return{mesh:(t,n)=>Ag(e,t,n),meshEdges:(t,n,r)=>jg(e,t,n,r),hasTriangulation:t=>Mg(e,t),meshShape:(e,t,n)=>{}}}function Bg(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=Cf(e,r,`exportSTEP`);for(let r of t){let t=e.exportStep(r);n.push(new TextDecoder().decode(t))}}return n.join(`
8
8
  `)}function Vg(e,n,r,i=De,a=Oe){let{vertices:o,triangles:s}=Ag(e,O(t(Cf(e,n,`exportSTL`),0)),{tolerance:i,angularTolerance:a,skipNormals:!0});return r?je(o,s):Me(o,s)}function Hg(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return A(e.importStep(n)).map(O)}function Ug(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return O(e.importStl(n))}function Wg(e,t){if(t.length===0)return``;let n=[];for(let r of t){let t=Cf(e,r,`exportIGES`);for(let r of t){let t=e.exportIges(r);n.push(new TextDecoder().decode(t))}}return n.join(`
9
9
  `)}function Gg(e,t){let n=typeof t==`string`?new TextEncoder().encode(t):new Uint8Array(t);return A(e.importIges(n)).map(O)}function Kg(e,t,n){return t.length===0?``:Bg(e,t.map(e=>e.shape))}function qg(e,t,n){let r=Sf(t,`export3MF`);return Tf(e.export3mf(r,n))}function Jg(e,t,n){let r=Sf(t,`exportGLB`);return Tf(e.exportGlb(r,n))}function Yg(e,t,n){let r=Sf(t,`exportOBJ`);return Tf(e.exportObj(r,n))}function Xg(e,t,n){let r=Sf(t,`exportPLY`);return Tf(e.exportPly(r,n))}function Zg(e,t){return A(e.import3mf(new Uint8Array(t))).map(e=>O(e))}function Qg(e,t){return O(e.importObj(new Uint8Array(t)))}function $g(e,t){return O(e.importGlb(new Uint8Array(t)))}function e_(e,t){let n=t;return n.type===`solid`?e.toBREP(n.id):(Rf(`brep-non-solid`,`toBREP for non-solid shapes uses STEP format.`),Bg(e,[t]))}function t_(e,t){if(typeof e.fromBREP==`function`&&t.trimStart().startsWith(`{`))return O(e.fromBREP(t));let n=Hg(e,t)[0];if(!n)throw Error(`brepkit: fromBREP produced no shapes`);return n}function n_(e,t){return{__brepkit_xcaf:!0,shapes:t,delete:pf}}function r_(e,t,n){return t&&t.__brepkit_xcaf&&Array.isArray(t.shapes)?Bg(e,t.shapes.map(e=>e.shape)):``}function i_(e,t,n){return Bg(e,t.map(e=>e.shape))}function a_(e){return{exportSTEP:t=>Bg(e,t),exportSTL:(t,n,r,i)=>Vg(e,t,n,r,i),importSTEP:t=>Hg(e,t),importSTL:t=>Ug(e,t),exportIGES:t=>Wg(e,t),importIGES:t=>Gg(e,t),exportSTEPAssembly:(t,n)=>Kg(e,t,n),export3MF:(t,n)=>qg(e,t,n),exportGLB:(t,n)=>Jg(e,t,n),exportOBJ:(t,n)=>Yg(e,t,n),exportPLY:(t,n)=>Xg(e,t,n),import3MF:t=>Zg(e,t),importOBJ:t=>Qg(e,t),importGLB:t=>$g(e,t),toBREP:t=>e_(e,t),fromBREP:t=>t_(e,t),createXCAFDocument:t=>n_(e,t),writeXCAFToSTEP:(t,n)=>r_(e,t,n),exportSTEPConfigured:(t,n)=>i_(e,t,n)}}function o_(e,t){return{x:e,y:t}}function s_(e,t){let n=Math.sqrt(e*e+t*t);if(n<1e-15)throw Error(`brepkit: createDirection2d called with zero-length vector`);return{x:e/n,y:t/n}}function c_(e,t){return{x:e,y:t}}function l_(e,t,n,r){return{px:e,py:t,dx:n,dy:r,delete:pf}}function u_(e){return e}function d_(e){return e}function f_(e,t,n,r){return te(e,t,n,r)}function p_(e,t,n,r){return ne(e,t,n,r)}function m_(e,t,n,r,i,a,o){return ae(e,t,n,r,i,a,o)}function h_(e,t,n,r,i,a,o,s,c){let l=ae(e,t,n,r,o,s,c),u=c!==!1,d=u?i:-i,f=u?a:-a;return f<d-1e-9&&(f+=2*Math.PI),{__bk2d:`trimmed`,basis:l,tStart:d,tEnd:f}}function g_(e){return oe(e)}function __(e,t){let n=e.length,r=Math.min(3,n-1),i=[],a=[];i.push(0),a.push(r+1);let o=n-r-1;for(let e=1;e<=o;e++)i.push(e/(o+1)),a.push(1);return i.push(1),a.push(r+1),{__bk2d:`bspline`,poles:[...e],knots:i,multiplicities:a,degree:r,isPeriodic:!1}}function v_(e,t){return S(Bf(e),t)}function y_(e,t){return{point:S(Bf(e),t),tangent:C(Bf(e),t)}}function b_(e){return w(Bf(e))}function x_(e){return ee(Vf(e))}function S_(e,t,n){return{__bk2d:`trimmed`,basis:Bf(e),tStart:t,tEnd:n}}function C_(e){let t=e;switch(t.__bk2d){case`line`:{let e=t;e.ox+=e.dx*e.len,e.oy+=e.dy*e.len,e.dx=-e.dx,e.dy=-e.dy;break}case`circle`:case`ellipse`:{let e=t;e.sense=!e.sense;break}case`trimmed`:{let e=t;[e.tStart,e.tEnd]=[e.tEnd,e.tStart];break}case`bezier`:{let e=t;e.poles=[...e.poles].reverse();break}case`bspline`:{let e=t;e.poles=[...e.poles].reverse();let n=e.knots[0],r=e.knots[e.knots.length-1];n!==void 0&&r!==void 0&&(e.knots=e.knots.map(e=>n+r-e).reverse()),Array.isArray(e.weights)&&(e.weights=[...e.weights].reverse());break}default:break}}function w_(e){return JSON.parse(JSON.stringify(e))}function T_(e,t){let n=Bf(e),r=w(n),i=[];for(let e=0;e<=30;e++){let a=r.first+(r.last-r.first)*e/30,[o,s]=S(n,a),[c,l]=C(n,a),u=Math.sqrt(c*c+l*l);u>1e-12?i.push([o-l/u*t,s+c/u*t]):i.push([o,s])}return __(i)}function E_(e,t,n){return se(Bf(e),t,n)}function D_(e,t,n,r){return ce(Bf(e),t,n,r)}function O_(e,t,n,r){return le(Bf(e),t,n,r)}function k_(e,t,n){return ue(Bf(e),t,n)}function A_(e,t,n,r,i){return de(Bf(e),t,n,r,i)}function j_(e,t,n,r,i,a){return V_(e,P_(t,n,r,i,a))}function M_(e,t,n){return{m:e,tx:t,ty:n,delete:pf}}function N_(){return M_([1,0,0,0,1,0,0,0,1],0,0)}function P_(e,n,r,i,a){let o=Math.sqrt(r*r+i*i);if(o<1e-15)return N_();let s=-i/o,c=r/o,l=a-1,u=[1+l*s*s,l*s*c,0,l*c*s,1+l*c*c,0,0,0,1];return M_(u,e-t(u,0)*e-t(u,1)*n,n-t(u,3)*e-t(u,4)*n)}function F_(e,t){return M_([1,0,0,0,1,0,0,0,1],e,t)}function I_(e,n,r,i,a,o,s){if(r===`axis`&&o!==void 0&&s!==void 0){let r=Math.sqrt(o*o+s*s),c=o/r,l=s/r,u=[2*c*c-1,2*c*l,0,2*c*l,2*l*l-1,0,0,0,1],d=i??e,f=a??n;return M_(u,d-t(u,0)*d-t(u,1)*f,f-t(u,3)*d-t(u,4)*f)}return M_([-1,0,0,0,-1,0,0,0,1],2*e,2*n)}function L_(e,t,n){let r=Math.cos(e),i=Math.sin(e);return M_([r,-i,0,i,r,0,0,0,1],t-r*t+i*n,n-i*t-r*n)}function R_(e,t,n){return M_([e,0,0,0,e,0,0,0,1],t*(1-e),n*(1-e))}function z_(e,t,n){e.tx=t,e.ty=n}function B_(e,n){let r=e.m,i=n.m,a=e=>t(r,e),o=e=>t(i,e);e.m=[a(0)*o(0)+a(1)*o(3)+a(2)*o(6),a(0)*o(1)+a(1)*o(4)+a(2)*o(7),a(0)*o(2)+a(1)*o(5)+a(2)*o(8),a(3)*o(0)+a(4)*o(3)+a(5)*o(6),a(3)*o(1)+a(4)*o(4)+a(5)*o(7),a(3)*o(2)+a(4)*o(5)+a(5)*o(8),a(6)*o(0)+a(7)*o(3)+a(8)*o(6),a(6)*o(1)+a(7)*o(4)+a(8)*o(7),a(6)*o(2)+a(7)*o(5)+a(8)*o(8)];let s=e.tx,c=e.ty,l=Number(n.tx)||0,u=Number(n.ty)||0;e.tx=a(0)*l+a(1)*u+s,e.ty=a(3)*l+a(4)*u+c}function V_(e,n){let r=Bf(e),i=n.m??[1,0,0,0,1,0,0,0,1],a=Number(n.tx)||0,o=Number(n.ty)||0,s=t(i,0),c=t(i,1),l=t(i,3),u=t(i,4);if(Math.abs(s-1)<1e-12&&Math.abs(u-1)<1e-12&&Math.abs(c)<1e-12&&Math.abs(l)<1e-12)return se(r,a,o);let d=w(r),f=[];for(let e=0;e<=20;e++){let[t,n]=S(r,d.first+(d.last-d.first)*e/20);f.push([s*t+c*n+a,l*t+u*n+o])}return oe(f)}function H_(e,t,n){let r=fe(Bf(e),Bf(t),n),i=r.segments.map(e=>Object.assign(e,{delete(){}}));return{points:r.points,segments:i}}function U_(e,t,n){let r=Bf(e),i=w(r);if(r.__bk2d===`line`){let e=t-r.ox,a=n-r.oy,o=Math.max(i.first,Math.min(i.last,e*r.dx+a*r.dy)),[s,c]=S(r,o);return{param:o,distance:Math.sqrt((s-t)**2+(c-n)**2)}}if(r.__bk2d===`circle`){let e=Math.atan2(n-r.cy,t-r.cx),i=r.sense?e:-e;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;let[a,o]=S(r,i);return{param:i,distance:Math.sqrt((a-t)**2+(o-n)**2)}}if(!isFinite(i.first)||!isFinite(i.last))return null;let a=i.first,o=1/0,s=(i.last-i.first)/200;for(let e=0;e<=200;e++){let c=i.first+e*s,[l,u]=S(r,c),d=(l-t)**2+(u-n)**2;d<o&&(o=d,a=c)}for(let e=0;e<10;e++){let[e,o]=S(r,a),[s,c]=C(r,a),l=(e-t)*s+(o-n)*c,u=s*s+c*c;if(u<1e-20)break;let d=l/u,f=Math.max(i.first,Math.min(i.last,a-d));if(Math.abs(f-a)<1e-14)break;a=f}let[c,l]=S(r,a);return{param:a,distance:Math.sqrt((c-t)**2+(l-n)**2)}}function W_(e,t,n,r,i,a){let o=Bf(e),s=Bf(t),c=n,l=i,u=1/0;for(let e=0;e<=50;e++){let t=n+(r-n)*e/50,[d,f]=S(o,t);for(let e=0;e<=50;e++){let n=i+(a-i)*e/50,[r,o]=S(s,n),p=(r-d)**2+(o-f)**2;p<u&&(u=p,c=t,l=n)}}let d=c,f=l;for(let c=0;c<20;c++){let[c,l]=S(s,f),u=U_(e,c,l);if(u){let e=Math.max(n,Math.min(r,u.param)),t=Math.abs(e-d)<1e-12;if(d=e,t)break}let[p,m]=S(o,d),h=U_(t,p,m);if(h){let e=Math.max(i,Math.min(a,h.param)),t=Math.abs(e-f)<1e-12;if(f=e,t)break}}let[p,m]=S(o,d),[h,g]=S(s,f);return Math.sqrt((h-p)**2+(g-m)**2)}function G_(e,n,r,i){let a=Bf(e),o=w(a),s=Math.max(3,{C0:1,C1:2,C2:3,C3:4}[r]??4),c=Math.max(100,i*10),l=[],u=1/0;for(let e=0;e<3&&u>n;e++){l=[];for(let e=0;e<=c;e++){let t=o.first+(o.last-o.first)*e/c;l.push(S(a,t))}u=0;for(let e=0;e<c;e++){let[n,r]=S(a,o.first+(o.last-o.first)*(e+.5)/c),i=t(l,e),s=t(l,e+1),d=(i[0]+s[0])/2,f=(i[1]+s[1])/2,p=Math.sqrt((n-d)**2+(r-f)**2);p>u&&(u=p)}u>n&&(c=Math.min(c*2,500))}return __(l,{degMax:s})}function K_(e){let n=Vf(e);if(n.__bk2d===`bezier`)return[e];if(n.__bk2d!==`bspline`)return K_(G_(e,1e-6,`C2`,10));let r=w(Bf(e)),i=r.first,a=r.last,o=[];for(let e of n.knots)e>i+1e-12&&e<a-1e-12&&o.push(e);let s=[i,...o,a],c=[];for(let e=0;e<s.length-1;e++){let r=t(s,e),i=t(s,e+1),a=i-r;if(a<1e-15)continue;let o=S(n,r),l=S(n,i),u=C(n,r),d=C(n,i),f=a/3,p={__bk2d:`bezier`,poles:[o,[o[0]+u[0]*f,o[1]+u[1]*f],[l[0]-d[0]*f,l[1]-d[1]*f],l]};c.push(p)}return c.length>0?c:[e]}function q_(){return Ce()}function J_(e,t,n){we(Hf(e),Bf(t),n)}function Y_(e){let t=Hf(e);return{xMin:t.xMin,yMin:t.yMin,xMax:t.xMax,yMax:t.yMax}}function X_(e,t){let n=Hf(e),r=Hf(t);n.xMin=Math.min(n.xMin,r.xMin),n.yMin=Math.min(n.yMin,r.yMin),n.xMax=Math.max(n.xMax,r.xMax),n.yMax=Math.max(n.yMax,r.yMax)}function Z_(e,t){let n=Hf(e),r=Hf(t);return n.xMax<r.xMin||r.xMax<n.xMin||n.yMax<r.yMin||r.yMax<n.yMin}function Q_(e,t,n){let r=Hf(e);return t<r.xMin||t>r.xMax||n<r.yMin||n>r.yMax}function $_(e){let t=Vf(e);return t.__bk2d===`circle`?{cx:t.cx,cy:t.cy,radius:t.radius,isDirect:t.sense}:null}function ev(e){let t=Vf(e);return t.__bk2d===`ellipse`?{majorRadius:t.majorRadius,minorRadius:t.minorRadius,xAxisAngle:t.xDirAngle,isDirect:t.sense}:null}function tv(e){let t=Vf(e);return t.__bk2d===`bezier`?[...t.poles]:null}function nv(e){let t=Vf(e);return t.__bk2d===`bezier`?t.poles.length-1:null}function rv(e){let t=Vf(e);return t.__bk2d===`bspline`?{poles:[...t.poles],knots:[...t.knots],multiplicities:[...t.multiplicities],degree:t.degree,isPeriodic:t.isPeriodic}:null}function iv(e){return xe(Bf(e))}function av(e){return Se(e)}function ov(e,t){let n=Bf(e),r=w(n),i=[r.first,...[...t].sort((e,t)=>e-t),r.last],a=[];for(let e=0;e<i.length-1;e++)a.push({__bk2d:`trimmed`,basis:n,tStart:i[e],tEnd:i[e+1]});return a}function sv(e,n,r,i,a){let o=Bf(n),s=[i[1]*a[2]-i[2]*a[1],i[2]*a[0]-i[0]*a[2],i[0]*a[1]-i[1]*a[0]],c=(e,t)=>[r[0]+e*a[0]+t*s[0],r[1]+e*a[1]+t*s[1],r[2]+e*a[2]+t*s[2]];if(o.__bk2d===`line`)return Qm(e,c(o.ox,o.oy),c(o.ox+o.dx*o.len,o.oy+o.dy*o.len));if(o.__bk2d===`circle`||o.__bk2d===`trimmed`){let n=o;for(;n.__bk2d===`trimmed`;)n=n.basis;if(n.__bk2d===`circle`){let r=n,a=c(r.cx,r.cy),s=r.sense?i:[-i[0],-i[1],-i[2]],l=w(o),u;u=o.__bk2d===`trimmed`?Math.abs(o.tEnd-o.tStart):2*Math.PI;let d=u>Math.PI?4:u>Math.PI/2?2:1,f=(l.last-l.first)/d,p=[];for(let t=0;t<d;t++){let[n,r]=S(o,l.first+t*f),[i,u]=S(o,l.first+(t+1)*f);p.push(e.makeCircleArc3d(...c(n,r),...c(i,u),...a,...s))}return p.length===1?_f(t(p,0)):vf(e.makeWire(p,!1))}if(n.__bk2d===`ellipse`){let r=n,l=c(r.cx,r.cy),u=Math.cos(r.xDirAngle),d=Math.sin(r.xDirAngle),f=[u*a[0]+d*s[0],u*a[1]+d*s[1],u*a[2]+d*s[2]],p=w(o),m=p.last-p.first,h=m*1e-4,[g,_]=S(o,p.first),[v,y]=S(o,p.first+h),b=(g-r.cx)*(y-r.cy)-(_-r.cy)*(v-r.cx)>=0?i:[-i[0],-i[1],-i[2]],x=o.__bk2d===`trimmed`?Math.abs(o.tEnd-o.tStart):2*Math.PI,C=x>Math.PI?4:x>Math.PI/2?2:1,ee=m/C,te=[];for(let t=0;t<C;t++){let[n,i]=S(o,p.first+t*ee),[a,s]=S(o,p.first+(t+1)*ee);te.push(e.makeEllipseArc3d(...c(n,i),...c(a,s),...l,...b,...f,r.majorRadius,r.minorRadius))}return te.length===1?_f(t(te,0)):vf(e.makeWire(te,!1))}}if(o.__bk2d===`bezier`||o.__bk2d===`bspline`){let n=o.poles.map(([e,t])=>c(e,t));if(n.length===2)return Qm(e,t(n,0),t(n,1));let r=Math.min(3,n.length-1),i=n.flatMap(([e,t,n])=>[e,t,n]);return _f(e.interpolatePoints(i,r))}let l=w(o),u=[];for(let e=0;e<=100;e++){let[t,n]=S(o,l.first+(l.last-l.first)*e/100);u.push(c(t,n))}return bh(e,u)}function cv(e,t,r){if(!mf(r))throw Error(`brepkit: buildEdgeOnSurface requires a face handle as surface`);let i=k(r,`face`),a=Bf(t),o=w(a),s=e.getSurfaceType(i)===`plane`?50:100,c=[];for(let t=0;t<=s;t++){let[r,l]=S(a,o.first+(o.last-o.first)*t/s);c.push(n(e.evaluateSurface(i,r,l)))}return bh(e,c)}function lv(e){return e}function uv(e,n,r,i){let a=0;for(;e.length<r;){let o=[];for(let r=0;r<e.length-1;r++){let a=t(e,r),s=t(e,r+1),c=(a.t+s.t)/2,l=n(c),u=(a.uv[0]+s.uv[0])/2,d=(a.uv[1]+s.uv[1])/2;Math.sqrt((l[0]-u)**2+(l[1]-d)**2)>i&&o.push({index:r+1,t:c,uv:l})}if(o.length===0)break;let s=r-e.length;for(let n=o.length-1;n>=0&&s>0;n--){let r=t(o,n);e.splice(r.index,0,{t:r.t,uv:r.uv}),s--}if(a++,a>3)break}}function dv(e,n,r){let i=k(n,`edge`),a=k(r,`face`),o=e.getEdgeCurveParameters(i),s=o[0]??0,c=o[1]??1,l=[];for(let e=0;e<=20;e++)l.push(s+(c-s)*e/20);let u=n=>{let r=e.evaluateEdgeCurve(i,n),o=e.projectPointOnSurface(a,t(r,0),t(r,1),t(r,2));return[t(o,0),t(o,1)]},d=l.map(e=>({t:e,uv:u(e)}));uv(d,u,80,.05);let f=d.map(e=>e.uv);if(f.length>=2)return __(f);let p=e.getEdgeVertices(i);if(p.length>=6){let n=e.projectPointOnSurface(a,t(p,0),t(p,1),t(p,2)),r=e.projectPointOnSurface(a,t(p,3),t(p,4),t(p,5));return te(t(n,0),t(n,1),t(r,0),t(r,1))}throw Error(`brepkit: extractCurve2dFromEdge: degenerate edge (${p.length} coords)`)}function fv(e,t,n){return e}function pv(e,n,r){if(n.length>=1){let r=Qf(e,n[0],`edge`);if(r.length===4){let n=[],i=[];for(let a of r){let r=k(a,`edge`),o=e.getEdgeCurveParameters(r),s=t(o,0),c=t(o,1),l=[];for(let n=0;n<=10;n++){let i=s+(c-s)*n/10,a=e.evaluateEdgeCurve(r,i);l.push(t(a,0),t(a,1),t(a,2))}n.push(...l),i.push(11)}try{return gf(e.fillCoonsPatch(n,i))}catch(e){console.warn(`brepkit: Coons patch failed, falling back:`,e)}}}let i=n[0];if(!i)throw Error(`fillSurface: no wires provided`);return fh(e,i)}function mv(e){return{createPoint2d:(e,t)=>o_(e,t),createDirection2d:(e,t)=>s_(e,t),createVector2d:(e,t)=>c_(e,t),createAxis2d:(e,t,n,r)=>l_(e,t,n,r),wrapCurve2dHandle:e=>u_(e),createCurve2dAdaptor:e=>d_(e),makeLine2d:(e,t,n,r)=>f_(e,t,n,r),makeCircle2d:(e,t,n,r)=>p_(e,t,n,r),makeArc2dThreePoints:(e,t,n,r,i,a)=>re(e,t,n,r,i,a),makeArc2dTangent:(e,t,n,r,i,a)=>ie(e,t,n,r,i,a),makeEllipse2d:(e,t,n,r,i,a,o)=>m_(e,t,n,r,i,a,o),makeEllipseArc2d:(e,t,n,r,i,a,o,s,c)=>h_(e,t,n,r,i,a,o,s,c),makeBezier2d:e=>g_(e),makeBSpline2d:(e,t)=>__(e,t),evaluateCurve2d:(e,t)=>v_(e,t),evaluateCurve2dD1:(e,t)=>y_(e,t),getCurve2dBounds:e=>b_(e),getCurve2dType:e=>x_(e),trimCurve2d:(e,t,n)=>S_(e,t,n),reverseCurve2d:e=>{C_(e)},copyCurve2d:e=>w_(e),offsetCurve2d:(e,t)=>T_(e,t),translateCurve2d:(e,t,n)=>E_(e,t,n),rotateCurve2d:(e,t,n,r)=>D_(e,t,n,r),scaleCurve2d:(e,t,n,r)=>O_(e,t,n,r),mirrorCurve2dAtPoint:(e,t,n)=>k_(e,t,n),mirrorCurve2dAcrossAxis:(e,t,n,r,i)=>A_(e,t,n,r,i),affinityTransform2d:(e,t,n,r,i,a)=>j_(e,t,n,r,i,a),createIdentityGTrsf2d:()=>N_(),createAffinityGTrsf2d:(e,t,n,r,i)=>P_(e,t,n,r,i),createTranslationGTrsf2d:(e,t)=>F_(e,t),createMirrorGTrsf2d:(e,t,n,r,i,a,o)=>I_(e,t,n,r,i,a,o),createRotationGTrsf2d:(e,t,n)=>L_(e,t,n),createScaleGTrsf2d:(e,t,n)=>R_(e,t,n),setGTrsf2dTranslationPart:(e,t,n)=>{z_(e,t,n)},multiplyGTrsf2d:(e,t)=>{B_(e,t)},transformCurve2dGeneral:(e,t)=>V_(e,t),intersectCurves2d:(e,t,n)=>H_(e,t,n),projectPointOnCurve2d:(e,t,n)=>U_(e,t,n),distanceBetweenCurves2d:(e,t,n,r,i,a)=>W_(e,t,n,r,i,a),approximateCurve2dAsBSpline:(e,t,n,r)=>G_(e,t,n,r),decomposeBSpline2dToBeziers:e=>K_(e),createBoundingBox2d:()=>q_(),addCurveToBBox2d:(e,t,n)=>{J_(e,t,n)},getBBox2dBounds:e=>Y_(e),mergeBBox2d:(e,t)=>{X_(e,t)},isBBox2dOut:(e,t)=>Z_(e,t),isBBox2dOutPoint:(e,t,n)=>Q_(e,t,n),getCurve2dCircleData:e=>$_(e),getCurve2dEllipseData:e=>ev(e),getCurve2dBezierPoles:e=>tv(e),getCurve2dBezierDegree:e=>nv(e),getCurve2dBSplineData:e=>rv(e),serializeCurve2d:e=>iv(e),deserializeCurve2d:e=>av(e),splitCurve2d:(e,t)=>ov(e,t),liftCurve2dToPlane:(t,n,r,i)=>sv(e,t,n,r,i),buildEdgeOnSurface:(t,n)=>cv(e,t,n),extractSurfaceFromFace:e=>lv(e),extractCurve2dFromEdge:(t,n)=>dv(e,t,n),buildCurves3d:e=>{},fixWireOnFace:(e,t,n)=>fv(e,t,n),fillSurface:(t,n)=>pv(e,t,n)}}function hv(e,t){let n=t;if(n.type===`solid`)return e.volume(k(t),Nf);if(n.type===`compound`){let n=Qf(e,t,`solid`),r=0;for(let t of n)r+=e.volume(k(t),Nf);return r}return 0}function gv(e,t){let n=t;if(n.type===`face`)return e.faceArea(k(t),Nf);if(n.type===`solid`)return e.surfaceArea(k(t),Nf);if(n.type===`compound`){let n=Qf(e,t,`face`),r=0;for(let t of n)r+=e.faceArea(k(t),Nf);return r}return 0}function _v(e,t){let n=t;if(n.type===`edge`)return e.edgeLength(k(t));if(n.type===`face`)return e.facePerimeter(k(t));if(n.type===`wire`)return e.wireLength(n.id);throw Error(`brepkit: length() requires an edge, wire, or face`)}function vv(e,n){let r=e.getEdgeVertices(n);return[(t(r,0)+t(r,3))/2,(t(r,1)+t(r,4))/2,(t(r,2)+t(r,5))/2]}function yv(e,t){let r=t;if(r.type===`solid`)return n(e.centerOfMass(k(t),Nf));if(r.type===`face`){let n=hp(e,t);return vp(e,t,(n.uMin+n.uMax)/2,(n.vMin+n.vMax)/2)}if(r.type===`edge`)return vv(e,r.id);if(r.type===`vertex`)return pp(e,t);let i=Qf(e,t,`vertex`);if(i.length>0){let t=0,n=0,r=0;for(let a of i){let i=pp(e,a);t+=i[0],n+=i[1],r+=i[2]}return[t/i.length,n/i.length,r/i.length]}return[0,0,0]}function bv(e,t){let n=t;return n.type===`edge`?vv(e,n.id):yv(e,t)}function xv(e,t){let r=t;if(r.type===`solid`){let r=e.boundingBox(k(t));return{min:n(r,0),max:n(r,3)}}if(r.type===`vertex`){let n=pp(e,t);return{min:[...n],max:[...n]}}let i=Qf(e,t,`vertex`);if(i.length===0)return{min:[0,0,0],max:[0,0,0]};let a=pp(e,i[0]),o=a[0],s=a[1],c=a[2],l=a[0],u=a[1],d=a[2];for(let t=1;t<i.length;t++){let n=pp(e,i[t]);n[0]<o&&(o=n[0]),n[0]>l&&(l=n[0]),n[1]<s&&(s=n[1]),n[1]>u&&(u=n[1]),n[2]<c&&(c=n[2]),n[2]>d&&(d=n[2])}return{min:[o,s,c],max:[l,u,d]}}function Sv(e,r,i){let a=r,o=i;if(a.type===`solid`&&o.type===`solid`){let r=e.solidToSolidDistance(a.id,o.id);return{value:t(r,0),point1:n(r,1),point2:n(r,4)}}if(a.type===`vertex`&&(o.type===`solid`||o.type===`face`||o.type===`edge`)){let r=n(e.getVertexPosition(a.id)),i=o.type===`solid`?e.pointToSolidDistance(r[0],r[1],r[2],o.id):o.type===`face`?e.pointToFaceDistance(r[0],r[1],r[2],o.id):e.pointToEdgeDistance(r[0],r[1],r[2],o.id);return{value:t(i,0),point1:r,point2:n(i,1)}}let s=r=>{if(r.type===`vertex`)return n(e.getVertexPosition(r.id));if(r.type===`solid`){let n=e.boundingBox(r.id);return[(t(n,0)+t(n,3))/2,(t(n,1)+t(n,4))/2,(t(n,2)+t(n,5))/2]}return[0,0,0]},c=s(a),l=s(o),u=l[0]-c[0],d=l[1]-c[1],f=l[2]-c[2];return{value:Math.sqrt(u*u+d*d+f*f),point1:c,point2:l}}function Cv(e,r,i,a){let o=k(r,`face`),s=e.measureCurvatureAtSurface(o,i,a);if(s.length<8)throw Error(`brepkit: measureCurvatureAtSurface returned ${s.length} values, expected 8`);let c=t(s,0),l=t(s,1);return{gaussian:c*l,mean:(c+l)/2,max:Math.max(c,l),min:Math.min(c,l),maxDirection:n(s,2),minDirection:n(s,5)}}function wv(e,n){let r=e.tessellateFace(k(n,`face`),.1),i=r.positions,a=r.indices,o=0,s=0,c=0,l=0;for(let e=0;e<a.length;e+=3){let n=t(a,e)*3,r=t(a,e+1)*3,u=t(a,e+2)*3,d=t(i,n),f=t(i,n+1),p=t(i,n+2),m=t(i,r),h=t(i,r+1),g=t(i,r+2),_=t(i,u),v=t(i,u+1),y=t(i,u+2),b=(d+m+_)/3,x=(f+h+v)/3,S=(p+g+y)/3,C=m-d,w=h-f,ee=g-p,te=_-d,ne=v-f,re=y-p,ie=.5*Math.sqrt((w*re-ee*ne)**2+(ee*te-C*re)**2+(C*ne-w*te)**2);o+=b*ie,s+=x*ie,c+=S*ie,l+=ie}return l<1e-30?[0,0,0]:[o/l,s/l,c/l]}function Tv(e,t){let n=n=>Sv(e,t,n);return{distanceTo(e){return n(e)},dispose(){}}}function Ev(e,t,n=!1){let r=t,i=r.type===`edge`||r.type===`wire`||r.type===`face`;return{volume:hv(e,t),area:gv(e,t),length:n&&i?_v(e,t):0,centerOfMass:yv(e,t),boundingBox:xv(e,t)}}function Dv(e){return{volume:t=>hv(e,t),area:t=>gv(e,t),length:t=>_v(e,t),centerOfMass:t=>yv(e,t),linearCenterOfMass:t=>bv(e,t),boundingBox:t=>xv(e,t),distance:(t,n)=>Sv(e,t,n),surfaceCurvature:(t,n,r)=>Cv(e,t,n,r),surfaceCenterOfMass:t=>wv(e,t),createDistanceQuery:t=>Tv(e,t),measureBulk:(t,n)=>Ev(e,t,n)}}function Ov(e){return e.sketchNew()}function kv(e,t,n,r,i){return e.sketchAddPoint(t,n,r,i)}function Av(e,t,n){e.sketchAddConstraint(t,n)}function jv(e,t,n,r){return e.sketchSolve(t,n,r)}function Mv(e,t,n,r,i){return e.sketchAddArc(t,n,r,i)}function Nv(e,t){let n=e.sketchDof(t);return typeof n==`string`?n:String(n)}function Pv(e){return{sketchNew:()=>Ov(e),sketchAddPoint:(t,n,r,i)=>kv(e,t,n,r,i),sketchAddArc:(t,n,r,i)=>Mv(e,t,n,r,i),sketchAddConstraint:(t,n)=>{Av(e,t,n)},sketchSolve:(t,n,r)=>jv(e,t,n,r),sketchDof:t=>Nv(e,t)}}function Fv(e,t,n,r){return O(e.extrude(k(t,`face`),n[0],n[1],n[2],r))}function Iv(e,t,n,r){if(n&&typeof n==`object`&&`origin`in n&&`direction`in n){let{origin:i,direction:a}=n,o=180/Math.PI*r;return o>360&&(o=360),O(e.revolve(k(t,`face`),i[0],i[1],i[2],a[0],a[1],a[2],o))}throw Error(`brepkit: revolve requires axis with origin and direction`)}function Lv(e,t,n,r,i){let a=180/Math.PI*i;return a>360&&(a=360),O(e.revolve(k(t,`face`),n[0],n[1],n[2],r[0],r[1],r[2],a))}function Rv(e,t,n,r,i){(n!==void 0||r!==void 0||i!==void 0)&&Rf(`loft-options`,`Loft options (ruled, startShape, endShape) not supported; ignored.`);let a=t.map(t=>{let n=t;return n.type===`wire`?e.makeFaceFromWire(n.id):k(t,`face`)});return O(e.loft(a))}function zv(e){switch(e){case 0:return`rmf`;case 1:return`rightCorner`;case 2:return`roundCorner`;default:return}}function Bv(e,t,n,r){let i=r?.transitionMode===void 0?void 0:zv(r.transitionMode),a=t,o=a.type===`wire`?e.makeFaceFromWire(a.id):k(t,`face`);if(n.type===`wire`){let t=Qf(e,n,`edge`).map(e=>k(e,`edge`));if(i&&t.length===1){let n=t[0];if(n!==void 0)return O(e.sweepWithOptions(o,n,i,[],0,`transformed`))}return i&&t.length>1&&Rf(`sweep-transition-multi-edge`,`Sweep transition mode not supported for multi-edge wires; ignored.`),O(e.sweepAlongEdges(o,t))}if(i){let t=k(n,`edge`);return O(e.sweepWithOptions(o,t,i,[],0,`transformed`))}let s=fm(e,n);if(!s)throw Error(`brepkit: sweep spine must be an edge or wire`);return O(e.sweep(o,s.degree,s.knots,s.controlPoints,s.weights))}function Vv(e,t,n){let r=t,i=r.type===`wire`?e.makeFaceFromWire(r.id):k(t,`face`);if(n.type===`wire`){let t=Qf(e,n,`edge`).map(e=>k(e,`edge`));return O(e.sweepAlongEdges(i,t))}let a=fm(e,n);if(!a)throw Error(`brepkit: pipe spine must be an edge or wire`);return O(e.pipe(i,a.degree,a.knots,a.controlPoints,a.weights))}function Hv(e,t,n,r,i,a,o){let s=k(t,`face`);return O(e.helicalSweep(s,n[0],n[1],n[2],r[0],r[1],r[2],i,a,o))}function Uv(e,t,n,r,i,a){let o=k(t,`face`),s=k(n,`edge`);return O(e.sweepWithOptions(o,s,r,i,a,`transformed`))}function Wv(e){switch(e){case`right`:return`rightCorner`;case`round`:return`roundCorner`;case`transformed`:return`rmf`;default:return}}function Gv(e,t,n){return n?{shape:e,firstShape:t,lastShape:t}:e}function Kv(e,t,n,r){try{return O(e.sweepWithOptions(t,n,r,[],0,`transformed`))}catch(e){console.warn(`brepkit: sweepWithOptions failed, falling back to sweepSmooth/simplePipe:`,e);return}}function qv(e,t){try{if(t.type!==`wire`)return{edgeId:k(t,`edge`)};let n=Qf(e,t,`edge`);if(n.length===1){let e=n[0];return e?{edgeId:k(e,`edge`)}:void 0}Rf(`sweepPipeShell-transition-multi-edge`,`sweepPipeShell transition mode not supported for multi-edge wires; ignored.`);return}catch(e){console.warn(`brepkit: resolveContactModeEdge failed for unexpected spine type, falling through:`,e);return}}function Jv(e,t,n,r){let i=qv(e,n);if(i)return Kv(e,t,i.edgeId,r)}function Yv(e,t,n){let r=fm(e,n);if(!(!r||r.degree<=1))try{return O(e.sweepSmooth(t,r.degree,r.knots,r.controlPoints,r.weights))}catch(e){console.warn(`brepkit: sweepSmooth failed, falling back to simplePipe:`,e);return}}function Xv(e,t,n,r){let i=t,a=i.type===`wire`?e.makeFaceFromWire(i.id):k(t,`face`),o=!!(r&&r.shellMode),s=r?.transitionMode,c=s?Wv(s):void 0;if(c){let r=Jv(e,a,n,c);if(r)return Gv(r,t,o)}return Gv(Yv(e,a,n)||Vv(e,t,n),t,o)}function Zv(e,t,n){let r=t.map(t=>{let n=t;return n.type===`wire`?e.makeFaceFromWire(n.id):k(t,`face`)});try{let t={};if(n?.ruled!==void 0&&(t.ruled=n.ruled),n?.solid!==void 0&&(t.solid=n.solid),n?.tolerance!==void 0&&(t.tolerance=n.tolerance),n?.startVertex){let r=e.getVertexPosition(k(n.startVertex,`vertex`));t.startPoint=[r[0],r[1],r[2]]}if(n?.endVertex){let r=e.getVertexPosition(k(n.endVertex,`vertex`));t.endPoint=[r[0],r[1],r[2]]}return O(e.loftWithOptions(r,JSON.stringify(t)))}catch(e){console.warn(`brepkit: loftWithOptions failed, falling back to smooth/basic loft:`,e)}if(!n?.ruled)try{return O(e.loftSmooth(r))}catch(e){console.warn(`brepkit: loftSmooth failed, falling back to basic loft:`,e)}return Rv(e,t)}function Qv(e,t,n,r){let i={type:`extrusionLaw`,profile:t,length:n,endFactor:r,Trim(e,t,n){return i},delete:pf};return i}function $v(e,t,n,r,i,a,o){if(i!==null){let r=Fv(e,n,_p(e,n,0,0),i);return o?Om(e,t,r):r}return t}function ey(e){return{extrude:(t,n,r)=>Fv(e,t,n,r),revolve:(t,n,r)=>Iv(e,t,n,r),revolveVec:(t,n,r,i)=>Lv(e,t,n,r,i),loft:(t,n,r,i)=>Rv(e,t,n,r,i),sweep:(t,n,r)=>Bv(e,t,n,r),simplePipe:(t,n)=>Vv(e,t,n),helicalSweep:(t,n,r,i,a,o)=>Hv(e,t,n,r,i,a,o),sweepWithOptions:(t,n,r,i,a)=>Uv(e,t,n,r,i,a),sweepPipeShell:(t,n,r)=>Xv(e,t,n,r),loftAdvanced:(t,n)=>Zv(e,t,n),buildExtrusionLaw:(t,n,r)=>Qv(e,t,n,r),draftPrism:(t,n,r,i,a,o)=>$v(e,t,n,r,i,a,o)}}function ty(e){return{dispose:()=>{},executeBatch:t=>e.executeBatch(t),checkpoint:()=>e.checkpoint(),checkpointCount:()=>e.checkpointCount(),restoreCheckpoint:t=>{e.restore(t)},discardCheckpoint:t=>{e.discardCheckpoint(t)}}}var ny=class{oc;kernelId=`brepkit`;capabilities=a;bk;constructor(e){this.bk=e,this.oc=e;let t=this.bk;Object.assign(this,Bm(t),Ah(t),ey(t),Jh(t),sm(t),zg(t),a_(t),Dv(t),fp(t),Jp(t),wm(t),kg(t),Pv(t),mv(t),ty(t))}};function ry(e){throw Error(`manifold: ${e} is not implemented`)}var iy=new Set(`makeBox.makeBoxWithCorners.makeCylinder.makeSphere.makeCone.makeTorus.makeEllipsoid.makeFuse.makeCut.makeCommon.translateShape.rotateShape.scaleShape.mirrorShape.transformShape.generalTransform.generalTransformNonOrthogonal.gridPattern.extrude.revolve.revolveVec.loft.loftAdvanced.sweep.simplePipe.sweepWithOptions.sweepPipeShell.helicalSweep.draftPrism.fillet.chamfer.chamferDistAngle.shell.thicken.offset.filletVariable.draft.defeature.simplify.reverseShape.hull.hullFromPoints.sewAndSolidify.profileEdge.profileWire.profileFace`.split(`.`));function ay(e){return iy.has(e)}function j(e,t,n){return{op:e,params:t,inputs:n,replayable:ay(e)&&n.every(e=>e.replayable)}}function M(e,t){return{manifold:e,node:t}}function N(e){return e.manifold}function oy(e){return typeof e?.translate==`function`?e.translate([0,0,0]):e}function P(e){return e.node}function sy(e){if(e&&typeof e==`object`&&`manifold`in e&&`node`in e)return e}var cy=[`occt`,`occt-wasm`];function ly(){for(let e of cy)try{return F(e)}catch{}}function uy(e){let t=ly();if(!t)throw new c(`manifold: ${e} requires a registered occt kernel; none is available`);return t}var dy=new WeakMap,fy=[0,0,0],py=[0,0,1];function my(e){return Math.hypot(e[0],e[1],e[2])}function hy(e){let t=my(e);return t===0?[...py]:[e[0]/t,e[1]/t,e[2]/t]}function gy(e){let[t,n,r]=hy(e);return[0,180/Math.PI*Math.atan2(Math.hypot(t,n),r),180/Math.PI*Math.atan2(n,t)]}function _y(e){let t=e.Manifold;function n(e,t,n){let r=e;return n[0]===0&&n[1]===0&&n[2]>0||(r=r.rotate(gy(n))),(t[0]!==0||t[1]!==0||t[2]!==0)&&(r=r.translate(t)),r}return{makeBox:(e,n,r)=>M(t.cube([e,n,r],!1),j(`makeBox`,{width:e,height:n,depth:r},[])),makeBoxFromCorners:(e,n)=>{let r=[Math.abs(n[0]-e[0]),Math.abs(n[1]-e[1]),Math.abs(n[2]-e[2])],i=[Math.min(e[0],n[0]),Math.min(e[1],n[1]),Math.min(e[2],n[2])];return M(t.cube(r,!1).translate(i),j(`makeBoxWithCorners`,{p1:e,p2:n},[]))},makeCylinder:(e,r,i=fy,a=py)=>M(n(t.cylinder(r,e,e,0,!1),i,a),j(`makeCylinder`,{radius:e,height:r,center:i,direction:a},[])),makeSphere:(e,n=fy)=>{let r=t.sphere(e,0);return(n[0]!==0||n[1]!==0||n[2]!==0)&&(r=r.translate(n)),M(r,j(`makeSphere`,{radius:e,center:n},[]))},makeCone:(e,r,i,a=fy,o=py)=>M(n(t.cylinder(i,e,r,0,!1),a,o),j(`makeCone`,{radius1:e,radius2:r,height:i,center:a,direction:o},[])),makeTorus:(r,i,a=fy,o=py)=>{let s=Math.max(3,e.getCircularSegments(i)),c=[];for(let e=0;e<s;e++){let t=e/s*Math.PI*2;c.push([r+i*Math.cos(t),i*Math.sin(t)])}return M(n(t.revolve([c],0),a,o),j(`makeTorus`,{majorRadius:r,minorRadius:i,center:a,direction:o},[]))},makeEllipsoid:(e,n,r)=>M(t.sphere(1,0).scale([e,n,r]),j(`makeEllipsoid`,{aLength:e,bLength:n,cLength:r},[])),makeRectangle:()=>ry(`makeRectangle`)}}function vy(e){return e}function yy(e,t,n){switch(n){case`cut`:case`subtract`:case`difference`:return e.subtract(t);case`intersect`:case`common`:case`intersection`:return e.intersect(t);default:return e.add(t)}}function by(e){let t=P(vy(e)).params,n=t.normal,r=t.origin;if(!n||!r)throw Error(`manifold: section/split plane must carry normal+origin params`);return{normal:n,offset:n[0]*r[0]+n[1]*r[1]+n[2]*r[2]}}function xy(e){let t=new Uint32Array(e.triVerts),n=e.vertProperties.length/3,r=new Float32Array(n*3);for(let t=0;t<n;t++)r[t*3]=e.vertProperties[t*3]??0,r[t*3+1]=e.vertProperties[t*3+1]??0,r[t*3+2]=e.vertProperties[t*3+2]??0;return{vertices:r,normals:new Float32Array,triangles:t,uvs:new Float32Array,faceGroups:[{start:0,count:t.length,faceHash:0}]}}function Sy(e){let t=e.Manifold;function n(e,t,n){let r=vy(e),i=vy(t);return M(N(r).add(N(i)),j(`makeFuse`,{},[P(r),P(i)]))}function r(e,t,n){let r=vy(e),i=vy(t);return M(N(r).subtract(N(i)),j(`makeCut`,{},[P(r),P(i)]))}function i(e,t,n){let r=vy(e),i=vy(t);return M(N(r).intersect(N(i)),j(`makeCommon`,{},[P(r),P(i)]))}function a(e,n){if(e.length===0)throw Error(`manifold: fuseAll requires at least one shape`);let r=e.map(vy),[i]=r;if(i===void 0)throw Error(`manifold: fuseAll requires at least one shape`);return r.length===1?i:M(t.union(r.map(N)),j(`makeFuse`,{},r.map(P)))}function o(e,n,r){let i=vy(e);if(n.length===0)return i;let a=n.map(vy);return M(t.difference([N(i),...a.map(N)]),j(`makeCut`,{},[P(i),...a.map(P)]))}function s(e,t,n){let r=vy(e),{normal:i,offset:a}=by(t),[o]=N(r).splitByPlane(i,a);return M(o,j(`section`,{normal:i,offset:a},[P(r),P(vy(t))]))}function c(e,n){let r=vy(e),[i]=n;if(i===void 0)throw Error(`manifold: split requires at least one tool`);let a=vy(i),{normal:o,offset:s}=by(i),[c,l]=N(r).splitByPlane(o,s);return M(t.union([c,l]),j(`split`,{normal:o,offset:s},[P(r),P(a)]))}function l(e,t,n){let r=[],i=vy(e),a=vy(t);return(N(i)===void 0||N(i).isEmpty())&&r.push({operand:`base`,issue:`null-shape`,message:`Base shape is empty`}),(N(a)===void 0||N(a).isEmpty())&&r.push({operand:`tool`,issue:`null-shape`,message:`Tool shape is empty`}),{valid:r.length===0,issues:r}}function u(n,r,i,a,o,s){let c=new e.Mesh({numProp:3,vertProperties:new Float32Array(n),triVerts:new Uint32Array(r)}),l=new e.Mesh({numProp:3,vertProperties:new Float32Array(i),triVerts:new Uint32Array(a)});return xy(yy(t.ofMesh(c),t.ofMesh(l),o).getMesh())}return{fuse:n,cut:r,intersect:i,section:s,fuseAll:a,cutAll:o,split:c,checkBoolean:l,meshBoolean:u}}function Cy(e){return e}function wy(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Ty(e){let t=Math.hypot(e[0],e[1],e[2]);return t<1e-12?[0,0,1]:[e[0]/t,e[1]/t,e[2]/t]}function Ey(e,t,n){let r=wy();return r[12]=e,r[13]=t,r[14]=n,r}function Dy(e,t,n){let r=e,[i,a,o]=Ty(t),s=Math.cos(r),c=Math.sin(r),l=1-s,u=l*i*i+s,d=l*i*a+c*o,f=l*i*o-c*a,p=l*i*a-c*o,m=l*a*a+s,h=l*a*o+c*i,g=l*i*o+c*a,_=l*a*o-c*i,v=l*o*o+s,y=wy();return y[0]=u,y[1]=d,y[2]=f,y[4]=p,y[5]=m,y[6]=h,y[8]=g,y[9]=_,y[10]=v,y[12]=n[0]-(u*n[0]+p*n[1]+g*n[2]),y[13]=n[1]-(d*n[0]+m*n[1]+_*n[2]),y[14]=n[2]-(f*n[0]+h*n[1]+v*n[2]),y}function Oy(e,t){let n=wy();return n[0]=t,n[5]=t,n[10]=t,n[12]=e[0]*(1-t),n[13]=e[1]*(1-t),n[14]=e[2]*(1-t),n}function ky(e,t){let[n,r,i]=Ty(t),a=1-2*n*n,o=1-2*r*r,s=1-2*i*i,c=-2*n*r,l=-2*n*i,u=-2*r*i,d=wy();d[0]=a,d[1]=c,d[2]=l,d[4]=c,d[5]=o,d[6]=u,d[8]=l,d[9]=u,d[10]=s;let f=e[0]*n+e[1]*r+e[2]*i;return d[12]=2*f*n,d[13]=2*f*r,d[14]=2*f*i,d}function Ay(e,t){let n=wy();return n[0]=e[0],n[1]=e[3],n[2]=e[6],n[4]=e[1],n[5]=e[4],n[6]=e[7],n[8]=e[2],n[9]=e[5],n[10]=e[8],n[12]=t[0],n[13]=t[1],n[14]=t[2],n}function jy(e,t,n,r,i){return M(e.transform(t),j(n,r,[i]))}function My(e,t,n,r){let i=Cy(e);return jy(N(i),Ey(t,n,r),`translateShape`,{x:t,y:n,z:r},P(i))}function Ny(e,t,n=[0,0,1],r=[0,0,0]){let i=Cy(e);return jy(N(i),Dy(t,n,r),`rotateShape`,{angle:t,axis:n,center:r},P(i))}function Py(e,t,n){let r=Cy(e);return jy(N(r),ky(t,n),`mirrorShape`,{origin:t,normal:n},P(r))}function Fy(e,t,n){let r=Cy(e);return jy(N(r),Oy(t,n),`scaleShape`,{center:t,factor:n},P(r))}function Iy(e,t){if(!Array.isArray(t)||t.length!==16)throw Error(`manifold: transform expects a 16-element column-major matrix`);let n=Cy(e);return jy(N(n),t,`transformShape`,{matrix:[...t]},P(n))}function Ly(e,t,n,r){let i=Cy(e);return jy(N(i),Ay(t,n),`generalTransform`,{linear:t,translation:n,isOrthogonal:r},P(i))}function Ry(e,t,n){let r=Cy(e);return jy(N(r),Ay(t,n),`generalTransformNonOrthogonal`,{linear:t,translation:n},P(r))}function zy(e){let t=wy();for(let n of e)t=Gy(n.type===`translate`?Ey(n.x,n.y,n.z):Dy(n.angle*Math.PI/180,n.axis??[0,0,1],n.center??[0,0,0]),t);return{handle:t,dispose:()=>{}}}function By(e,t,n,r){let i=[e];for(let a=1;a<r;a++){let r=n*a;i.push(My(e,t[0]*r,t[1]*r,t[2]*r))}return i}function Vy(e,t,n,r,i){let a=[e];for(let o=1;o<i;o++)a.push(Ny(e,r*o*Math.PI/180,n,t));return a}function Hy(e,t,n,r,i,a,o,s){let c=Cy(t),l=[],u=[];for(let e=0;e<o;e++)for(let t=0;t<s;t++){let o=n[0]*i*e+r[0]*a*t,s=n[1]*i*e+r[1]*a*t,d=n[2]*i*e+r[2]*a*t;l.push(N(c).transform(Ey(o,s,d))),u.push(P(c))}return M(l.length===1?l[0]:e.Manifold.union(l),j(`gridPattern`,{directionX:n,directionY:r,spacingX:i,spacingY:a,countX:o,countY:s},u))}function Uy(e){return e.map(e=>{switch(e.type){case`translate`:return My(e.shape,e.x,e.y,e.z);case`rotate`:return Ny(e.shape,e.angle*Math.PI/180,e.axis,e.center);case`scale`:return Fy(e.shape,e.center,e.factor);case`mirror`:return Py(e.shape,e.origin,e.normal)}})}function Wy(e){return{composeTransform:zy,transform:Iy,locate:Iy,translate:My,rotate:Ny,mirror:Py,scale:Fy,generalTransform:Ly,generalTransformNonOrthogonal:Ry,positionOnCurve:()=>ry(`positionOnCurve`),linearPattern:By,circularPattern:Vy,gridPattern:(t,n,r,i,a,o,s)=>Hy(e,t,n,r,i,a,o,s),transformBatch:Uy}}function Gy(e,t){let n=wy();for(let r=0;r<4;r++)for(let i=0;i<4;i++){let a=0;for(let n=0;n<4;n++){let o=e[n*4+i]??0,s=t[r*4+n]??0;a+=o*s}n[r*4+i]=a}return n}var Ky=2*Math.PI,qy=e=>Math.hypot(e[0],e[1],e[2]),Jy=(e,t)=>[e[0]-t[0],e[1]-t[1],e[2]-t[2]];function Yy(e){return qy(Jy(e.p2,e.p1))}function Xy(e,t){let n=e.map(e=>[e[0],e[1],e[2]]);for(let e=1;e<n.length;e++)for(let r=0;r<n.length-e;r++){let e=n[r]??[0,0,0],i=n[r+1]??[0,0,0];n[r]=[e[0]*(1-t)+i[0]*t,e[1]*(1-t)+i[1]*t,e[2]*(1-t)+i[2]*t]}return n[0]??[0,0,0]}function Zy(e){return e.k===`line`?`LINE`:e.k===`bezier`?`BEZIER`:e.k===`helix`?`BSPLINE`:Math.abs(e.rx-e.ry)<1e-9*Math.max(1,e.rx)?`CIRCLE`:`ELLIPSE`}function Qy(e){return e.k===`line`?{first:0,last:Yy(e)}:e.k===`conic`?{first:e.a0,last:e.a1}:e.k===`helix`?{first:0,last:Ky*e.turns}:{first:0,last:1}}function $y(e,t){if(e.k===`line`){let n=t/(Yy(e)||1);return[e.p1[0]+(e.p2[0]-e.p1[0])*n,e.p1[1]+(e.p2[1]-e.p1[1])*n,e.p1[2]+(e.p2[2]-e.p1[2])*n]}if(e.k===`bezier`)return Xy(e.points,t);if(e.k===`helix`){let n=Math.cos(t),r=Math.sin(t),i=e.pitch*t/Ky;return[e.center[0]+e.radius*(n*e.x[0]+r*e.y[0])+i*e.axis[0],e.center[1]+e.radius*(n*e.x[1]+r*e.y[1])+i*e.axis[1],e.center[2]+e.radius*(n*e.x[2]+r*e.y[2])+i*e.axis[2]]}let n=Math.cos(t),r=Math.sin(t);return[e.center[0]+e.rx*n*e.x[0]+e.ry*r*e.y[0],e.center[1]+e.rx*n*e.x[1]+e.ry*r*e.y[1],e.center[2]+e.rx*n*e.x[2]+e.ry*r*e.y[2]]}function eb(e,t){let n;if(e.k===`line`)n=Jy(e.p2,e.p1);else if(e.k===`bezier`){let r=Xy(e.points,Math.max(0,t-1e-4));n=Jy(Xy(e.points,Math.min(1,t+1e-4)),r)}else if(e.k===`helix`){let r=Math.cos(t),i=Math.sin(t),a=e.pitch/Ky;n=[e.radius*(-i*e.x[0]+r*e.y[0])+a*e.axis[0],e.radius*(-i*e.x[1]+r*e.y[1])+a*e.axis[1],e.radius*(-i*e.x[2]+r*e.y[2])+a*e.axis[2]]}else{let r=Math.cos(t),i=Math.sin(t);n=[-e.rx*i*e.x[0]+e.ry*r*e.y[0],-e.rx*i*e.x[1]+e.ry*r*e.y[1],-e.rx*i*e.x[2]+e.ry*r*e.y[2]]}let r=qy(n)||1;return[n[0]/r,n[1]/r,n[2]/r]}function tb(e){if(e.k===`line`)return Yy(e);if(e.k===`helix`){let t=Ky*e.radius;return e.turns*Math.sqrt(t*t+e.pitch*e.pitch)}if(e.k===`conic`){let t=Math.abs(e.a1-e.a0);if(Math.abs(e.rx-e.ry)<1e-9*Math.max(1,e.rx))return e.rx*t;if(Math.abs(t-Ky)<1e-9){let t=e.rx,n=e.ry,r=(t-n)*(t-n)/((t+n)*(t+n));return Math.PI*(t+n)*(1+3*r/(10+Math.sqrt(4-3*r)))}return ab(t=>$y(e,t),e.a0,e.a1,256)}return ab(t=>$y(e,t),0,1,128)}function nb(e){return e.k===`conic`&&Math.abs(Math.abs(e.a1-e.a0)-Ky)<1e-9}function rb(e){return nb(e)}function ib(e){return e.k===`conic`?Ky:0}function ab(e,t,n,r){let i=0,a=e(t);for(let o=1;o<=r;o++){let s=e(t+(n-t)*o/r);i+=qy(Jy(s,a)),a=s}return i}function ob(e){return e}function sb(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function cb(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function lb(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function ub(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function db(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function fb(e){return Math.hypot(e[0],e[1],e[2])}function pb(e){let t=fb(e);return t<1e-12?[0,0,1]:[e[0]/t,e[1]/t,e[2]/t]}function mb(e){return pb(cb(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function hb(e){let t=pb(e),n=mb(t);return{xAxis:n,yAxis:pb(cb(t,n))}}function gb(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n]??[0,0],i=e[(n+1)%e.length]??[0,0];t+=r[0]*i[1]-i[0]*r[1]}return t/2}function _b(e){return gb(e)<0?[...e].reverse():e}function vb(e){return gb(e)>0?[...e].reverse():e}function yb(e){return e.node?.params}function bb(e){let t=ob(e),n=yb(t),r=n?.outline??n?.polygon??n?.points;if(r&&r.length>=3){let e=n?.origin??[0,0,0],t=_b(r.map(e=>[e[0],e[1]])),i=(n?.holes)?.filter(e=>e.length>=3).map(e=>vb(e.map(e=>[e[0],e[1]])));if(n?.xAxis&&n.yAxis)return{outline:t,holes:i,origin:e,xAxis:n.xAxis,yAxis:n.yAxis};let{xAxis:a,yAxis:o}=hb(n?.normal??[0,0,1]);return{outline:t,holes:i,origin:e,xAxis:a,yAxis:o}}return xb(t)}function xb(e){let t=N(e)?.getMesh?.();if(!t)throw Error(`manifold: profile carries no recorded outline and no mesh to derive one`);let n=t.numProp,r=Math.floor(t.vertProperties.length/n),i=[],a=0;for(let e=0;e<r;e++)i.push([t.vertProperties[e*n]??0,t.vertProperties[e*n+1]??0]),a+=t.vertProperties[e*n+2]??0;a/=Math.max(1,r);let o=Sb(i);return{outline:_b(o.length>=3?o:[[-.5,-.5],[.5,-.5],[0,.5]]),origin:[0,0,a],xAxis:[1,0,0],yAxis:[0,1,0]}}function Sb(e){let t=[...e].sort((e,t)=>e[0]===t[0]?e[1]-t[1]:e[0]-t[0]);if(t.length<3)return[...t];let n=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),r=[];for(let e of t){for(;r.length>=2&&n(r[r.length-2]??e,r[r.length-1]??e,e)<=0;)r.pop();r.push(e)}let i=[];for(let e=t.length-1;e>=0;e--){let r=t[e]??[0,0];for(;i.length>=2&&n(i[i.length-2]??r,i[i.length-1]??r,r)<=0;)i.pop();i.push(r)}return r.pop(),i.pop(),[...r,...i]}function Cb(e){let t=[];for(let n=1;n+1<e;n++)t.push(0,n,n+1);return t}function wb(e,t){let n=e.length;if(n<2||t<=n)return e.map(e=>[e[0],e[1]]);let r=[],i=0;for(let t=0;t<n;t++){let a=e[t]??[0,0],o=e[(t+1)%n]??[0,0],s=Math.hypot(o[0]-a[0],o[1]-a[1]);r.push(s),i+=s}if(i===0)return e.map(e=>[e[0],e[1]]);let a=t-n,o=r.map(e=>a*e/i),s=o.map(e=>Math.floor(e)),c=s.reduce((e,t)=>e+t,0),l=o.map((e,t)=>({i:t,f:e-Math.floor(e)})).sort((e,t)=>t.f-e.f);for(let e=0;c<a;e++,c++){let t=l[e%l.length]?.i??0;s[t]=(s[t]??0)+1}let u=[];for(let t=0;t<n;t++){let r=e[t]??[0,0],i=e[(t+1)%n]??[0,0];u.push([r[0],r[1]]);let a=s[t]??0;for(let e=1;e<=a;e++){let t=e/(a+1);u.push([r[0]+(i[0]-r[0])*t,r[1]+(i[1]-r[1])*t])}}return u}function Tb(e,t,n=1){return e.outline.map(e=>{let r=e[0]*n,i=e[1]*n;return[t.origin[0]+t.xAxis[0]*r+t.yAxis[0]*i,t.origin[1]+t.xAxis[1]*r+t.yAxis[1]*i,t.origin[2]+t.xAxis[2]*r+t.yAxis[2]*i]})}function Eb(e,t){if(t.length<2)throw Error(`manifold: skinning requires at least two rings`);let n=t[0]?.length??0;if(n<3)throw Error(`manifold: skinning requires rings of at least three points`);let r=[];for(let e of t){if(e.length!==n)throw Error(`manifold: skinning requires all rings to share a vertex count`);for(let t of e)r.push(t[0],t[1],t[2])}let i=Ob(t.length,n),a=new e.Mesh({numProp:3,vertProperties:Float32Array.from(r),triVerts:Uint32Array.from(i)});return Db(e,new e.Manifold(a))}function Db(e,t){if(typeof t.volume!=`function`||t.volume()>=0)return t;let n=t.getMesh(),r=n.triVerts;for(let e=0;e+2<r.length;e+=3){let t=r[e+1]??0;r[e+1]=r[e+2]??0,r[e+2]=t}let i=new e.Mesh({numProp:n.numProp,vertProperties:n.vertProperties,triVerts:r}),a=new e.Manifold(i);return typeof t.delete==`function`&&t.delete(),a}function Ob(e,t){let n=[];for(let r=0;r+1<e;r++){let e=r*t,i=(r+1)*t;for(let r=0;r<t;r++){let a=(r+1)%t;n.push(e+r,e+a,i+a),n.push(e+r,i+a,i+r)}}let r=Cb(t);for(let e=0;e<r.length;e+=3)n.push(r[e]??0,r[e+2]??0,r[e+1]??0);let i=(e-1)*t,a=Cb(t);for(let e=0;e<a.length;e+=3)n.push(i+(a[e]??0),i+(a[e+1]??0),i+(a[e+2]??0));return n}function kb(e,t){let n=[];if(e.length===0)return n;let r=t=>{let n=e[Math.max(0,t-1)]??e[t]??[0,0,0];return pb(lb(e[Math.min(e.length-1,t+1)]??e[t]??[0,0,0],n))},i=r(0),a=pb(lb(t,db(i,sb(t,i))));fb(a)<1e-9&&(a=mb(i)),n.push({origin:e[0]??[0,0,0],xAxis:a,yAxis:pb(cb(i,a)),tangent:i});for(let t=1;t<e.length;t++){let o=e[t-1]??[0,0,0],s=e[t]??[0,0,0],c=lb(s,o),l=sb(c,c),u=a;if(l>1e-18){let e=lb(a,db(c,2/l*sb(c,a))),n=lb(i,db(c,2/l*sb(c,i))),o=lb(r(t),n),s=sb(o,o);u=s>1e-18?lb(e,db(o,2/s*sb(o,e))):e}let d=r(t),f=pb(lb(u,db(d,sb(u,d)))),p=pb(cb(d,f));n.push({origin:s,xAxis:f,yAxis:p,tangent:d}),i=d,a=f}return n}var Ab=24,jb=24,Mb=null;function Nb(e){let t=Mb?Mb(Math.max(Math.abs(e),1e-6)):Ab;return Math.max(Ab,t)}var Pb=[0,0,0],Fb=1e-6,Ib={delete:()=>{},isEmpty:()=>!1};function Lb(e,t){return e[t]??Pb}function Rb(e,t=1){return Math.max(2,Math.ceil(Math.abs(e)/(2*Math.PI)*Nb(t)))}function zb(e){return pb(cb(e,Math.abs(e[0])<.9?[1,0,0]:[0,1,0]))}function Bb(e,t,n,r,i,a){let o=pb(t),s=a?pb(a):zb(o),c=pb(cb(o,s)),l=i-r,u=Rb(l,n),d=[];for(let t=0;t<=u;t++){let i=r+l*t/u;d.push(ub(e,ub(db(s,n*Math.cos(i)),db(c,n*Math.sin(i)))))}return d}function Vb(e,t,n){let r=lb(t,e),i=lb(n,e),a=cb(r,i);if(fb(a)<1e-12)return[e,t,n];let o=pb(a),s=sb(r,r),c=sb(i,i),l=sb(r,i),u=2*(s*c-l*l);if(Math.abs(u)<1e-18)return[e,t,n];let d=c*(s-l)/u,f=s*(c-l)/u,p=ub(e,ub(db(r,d),db(i,f))),m=fb(lb(e,p)),h=pb(lb(e,p)),g=pb(cb(o,h)),_=(e=>Math.atan2(sb(lb(e,p),g),sb(lb(e,p),h)))(n);return _<0&&(_+=2*Math.PI),Bb(p,o,m,0,_,h)}function Hb(e){let t=[];for(let n=0;n<=jb;n++){let r=n/jb,i=e.map(e=>[...e]);for(let e=1;e<i.length;e++)for(let t=0;t<i.length-e;t++){let e=Lb(i,t),n=Lb(i,t+1);i[t]=[e[0]*(1-r)+n[0]*r,e[1]*(1-r)+n[1]*r,e[2]*(1-r)+n[2]*r]}t.push(Lb(i,0))}return t}function Ub(e){let t=0,n=0,r=0;for(let i=0;i<e.length;i++){let a=Lb(e,i),o=Lb(e,(i+1)%e.length);t+=(a[1]-o[1])*(a[2]+o[2]),n+=(a[2]-o[2])*(a[0]+o[0]),r+=(a[0]-o[0])*(a[1]+o[1])}let i=[t,n,r];return fb(i)<1e-12?[0,0,1]:pb(i)}function Wb(e,t){return fb(lb(e,t))<Fb}function Gb(e){let t=e[0];if(!t)return[];let n=[...t];for(let t=1;t<e.length;t++){let r=e[t]??[];if(r.length===0)continue;let i=Lb(n,n.length-1),a=Wb(Lb(r,0),i),o=Wb(Lb(r,r.length-1),i);!a&&o&&(r=[...r].reverse());let s=Wb(Lb(r,0),i);for(let e=+!!s;e<r.length;e++)n.push(Lb(r,e))}return n.length>1&&Wb(Lb(n,0),Lb(n,n.length-1))&&n.pop(),n}function Kb(e){let t=Ub(e),n=Lb(e,0),r=e.length>1?pb(lb(Lb(e,1),n)):zb(t);r=pb(lb(r,db(t,sb(r,t)))),fb(r)<1e-9&&(r=zb(t));let i=pb(cb(t,r));return{outline:_b(e.map(e=>{let t=lb(e,n);return[sb(t,r),sb(t,i)]})),origin:n,xAxis:r,yAxis:i}}var qb=12;function Jb(e,t){let[n,r]=e.curveParameters(t),i=qb;try{e.curveType(t)===`line`&&(i=1)}catch{}let a=[];for(let o=0;o<=i;o++)a.push(e.curvePointAtParam(t,n+(r-n)*o/i));return a}function Yb(e,t){return Gb(e.iterShapes(t,`edge`).map(t=>Jb(e,t)))}function Xb(e){let t=e.getCircularSegments;typeof t==`function`&&(Mb=e=>t(e));function n(e,t){return M(Ib,j(`profileEdge`,t?{pts:e,curve:t}:{pts:e},[]))}function r(e,t){let n=pb(e),r=t?pb(t):zb(n);return{x:r,y:pb(cb(n,r))}}function i(e,t,n){let r=lb(t,e),i=lb(n,e),a=cb(r,i);if(fb(a)<1e-12)return;let o=pb(a),s=sb(r,r),c=sb(i,i),l=sb(r,i),u=2*(s*c-l*l);if(Math.abs(u)<1e-18)return;let d=c*(s-l)/u,f=s*(c-l)/u,p=ub(e,ub(db(r,d),db(i,f))),m=fb(lb(e,p)),h=pb(lb(e,p)),g=pb(cb(o,h)),_=Math.atan2(sb(lb(n,p),g),sb(lb(n,p),h));return _<0&&(_+=2*Math.PI),{k:`conic`,center:p,x:h,y:g,rx:m,ry:m,a0:0,a1:_}}function a(e){let t=sy(e);if(t){let e=t.node.params;return e?.ring??e?.pts??[]}let n=ly();return n?Jb(n,e):[]}function o(e){let t=[];for(let n of e){let e=sy(n);e&&t.push(P(e))}return t}function s(e){let t=Gb(e.map(e=>a(e)));return M(Ib,j(`profileWire`,{ring:t,...t.length>=3?Kb(t):void 0},o(e)))}function c(e,t){let{outline:n,origin:r,xAxis:i,yAxis:a}=Kb(e);return M(Ib,j(`profileFace`,{outline:n,origin:r,xAxis:i,yAxis:a},t?[t]:[]))}function l(e){let t=sy(e);if(t){let e=t.node.params?.ring??[];if(e.length>=3)return c(e,P(t))}let n=ly();return c(n?Yb(n,e):[],t?P(t):void 0)}function u(e,t){let n=sy(e),r=n?.node?.params??{},i=r.origin??Pb,a=r.xAxis??[1,0,0],s=r.yAxis??[0,1,0],c=e=>{let t=lb(e,i);return[sb(t,a),sb(t,s)]},l=[];for(let e of t){let t=sy(e),n;if(t)n=t.node.params?.ring??[];else{let t=ly();n=t?Yb(t,e):[]}n.length>=3&&l.push(n.map(c))}let u=[...r.holes??[],...l],d=n?[P(n),...o(t)]:o(t);return M(Ib,j(`profileFace`,{outline:r.outline??[],holes:u,origin:i,xAxis:a,yAxis:s},d))}function d(e,t,n,r,i){let a=pb(t),o=i?pb(i):zb(a),s=pb(cb(a,o)),c=[],l=Nb(Math.max(n,r));for(let t=0;t<=l;t++){let i=2*Math.PI*t/l;c.push(ub(e,ub(db(o,n*Math.cos(i)),db(s,r*Math.sin(i)))))}return c}return{makeVertex:(e,t,r)=>n([[e,t,r]]),makeLineEdge:(e,t)=>n([e,t],{k:`line`,p1:e,p2:t}),makeCircleEdge:(e,t,i)=>{let{x:a,y:o}=r(t);return n(Bb(e,t,i,0,2*Math.PI),{k:`conic`,center:e,x:a,y:o,rx:i,ry:i,a0:0,a1:2*Math.PI})},makeCircleArc:(e,t,i,a,o)=>{let{x:s,y:c}=r(t);return n(Bb(e,t,i,a,o),{k:`conic`,center:e,x:s,y:c,rx:i,ry:i,a0:a,a1:o})},makeArcEdge:(e,t,r)=>n(Vb(e,t,r),i(e,t,r)),makeEllipseEdge:(e,t,i,a,o)=>{let{x:s,y:c}=r(t,o);return n(d(e,t,i,a,o),{k:`conic`,center:e,x:s,y:c,rx:i,ry:a,a0:0,a1:2*Math.PI})},makeBezierEdge:e=>n(Hb(e),{k:`bezier`,points:e.map(e=>[...e])}),makeTangentArc:(e,t,r)=>n([e,r],{k:`line`,p1:e,p2:r}),makeHelixWire:(e,t,r,i=[0,0,0],a=[0,0,1],o=!1)=>{let s=pb(a),c=zb(s),l=pb(cb(s,c)),u=o?db(l,-1):l,d=e===0?0:t/e,f={k:`helix`,center:i,axis:s,x:c,y:u,radius:r,pitch:e,turns:d},p=Math.max(8,Math.ceil(d*Ab)),m=[];for(let e=0;e<=p;e++)m.push($y(f,2*Math.PI*d*e/p));return n(m,f)},makeWire:e=>s(e),makeWireFromMixed:e=>s(e),makeFace:l,addHolesInFace:u,makePolygonFace:e=>c(e)}}function Zb(e){let t=e.Manifold,n=Xb(e);function r(e,n){let r=e.map(e=>[e.x,e.y,e.z]);return M(t.hull(r),j(`hullFromPoints`,{points:r,tolerance:n},[]))}function i(e,n){let r=e.map(e=>N(e));return M(t.hull(r),j(`hull`,{tolerance:n},e.map(e=>P(e))))}function a(e){let n=e.map(e=>N(e)),r=n[0];if(!r)throw Error(`manifold: makeCompound requires at least one input shape`);return M(n.length===1?r:t.union(n),j(`makeCompound`,{},e.map(e=>P(e))))}function o(e,t){let n=e[0];return n||ry(`sewAndSolidify (no input faces on manifold kernel)`),M(N(n),j(`sewAndSolidify`,{tolerance:t},e.map(e=>P(e))))}return{makeVertex:(e,t,r)=>n.makeVertex(e,t,r),makeEdge:()=>ry(`makeEdge`),makeWire:e=>n.makeWire(e),makeFace:(e,t)=>n.makeFace(e,t),makeLineEdge:(e,t)=>n.makeLineEdge(e,t),makeCircleEdge:(e,t,r)=>n.makeCircleEdge(e,t,r),makeCircleArc:(e,t,r,i,a)=>n.makeCircleArc(e,t,r,i,a),makeArcEdge:(e,t,r)=>n.makeArcEdge(e,t,r),makeEllipseEdge:(e,t,r,i,a)=>n.makeEllipseEdge(e,t,r,i,a),makeEllipseArc:()=>ry(`makeEllipseArc`),makeBezierEdge:e=>n.makeBezierEdge(e),makeTangentArc:(e,t,r)=>n.makeTangentArc(e,t,r),makeHelixWire:(e,t,r,i,a,o)=>n.makeHelixWire(e,t,r,i,a,o),makeWireFromMixed:e=>n.makeWireFromMixed(e),makeCompound:a,solidFromShell:()=>ry(`solidFromShell`),hull:i,hullFromPoints:r,buildSolidFromFaces:()=>ry(`buildSolidFromFaces`),makeNonPlanarFace:()=>ry(`makeNonPlanarFace`),addHolesInFace:(e,t)=>n.addHolesInFace(e,t),removeHolesFromFace:()=>ry(`removeHolesFromFace`),makeFaceOnSurface:()=>ry(`makeFaceOnSurface`),bsplineSurface:(e,t,n)=>uy(`bsplineSurface`).bsplineSurface(e,t,n),triangulatedSurface:(e,t,n)=>uy(`triangulatedSurface`).triangulatedSurface(e,t,n),buildTriFace:()=>ry(`buildTriFace`),sewAndSolidify:o,createPoint3d:()=>ry(`createPoint3d`),createDirection3d:()=>ry(`createDirection3d`),createVector3d:()=>ry(`createVector3d`),createAxis1:()=>ry(`createAxis1`),createAxis2:()=>ry(`createAxis2`),createAxis3:()=>ry(`createAxis3`)}}var Qb=Math.PI/180;function $b(e){return e}function ex(e){let t=180/Math.PI*e;return t>360?360:t}function tx(e){let t=e;if(t&&typeof t.X==`function`&&typeof t.Y==`function`&&typeof t.Z==`function`)return[t.X(),t.Y(),t.Z()]}function nx(e){if(e&&typeof e==`object`){let t=e;if(`origin`in t&&`direction`in t)return{origin:t.origin,direction:t.direction};let n=e;if(typeof n.Location==`function`&&typeof n.Direction==`function`){let e=tx(n.Location()),t=tx(n.Direction());if(e&&t)return{origin:e,direction:t}}}}function rx(e){return e.outline.map(e=>[e[0],e[1]])}function ix(e){return{outline:e.outline,origin:e.origin,xAxis:e.xAxis,yAxis:e.yAxis}}function ax(e){return{origin:e.origin,xAxis:e.xAxis,yAxis:e.yAxis,tangent:pb(cb(e.xAxis,e.yAxis))}}function ox(e){let t=0;for(let n of e.outline)t=Math.max(t,Math.hypot(n[0],n[1]));return t||1}function sx(e){let t=N(e)?.getMesh?.();if(!t)return[];let n=t.numProp,r=Math.floor(t.vertProperties.length/n),i=[];for(let e=0;e<r;e++)i.push([t.vertProperties[e*n]??0,t.vertProperties[e*n+1]??0,t.vertProperties[e*n+2]??0]);return i}function cx(e,t){let n=$b(e),r=n.node?.params,i=r?.path??r?.points;if(i&&i.length>=2)return i.map(e=>[e[0],e[1],e[2]]);let a=sx(n);if(a.length>=2)return a;let o=[],s=Math.max(2,t);for(let e=0;e<s;e++)o.push([0,0,e/(s-1)]);return o}function lx(e){return e?.node??j(`spine`,{},[])}function ux(e,t,n){let r=t.xAxis,i=t.yAxis,a=t.origin,o=[r[0],r[1],r[2],0,i[0],i[1],i[2],0,n[0],n[1],n[2],0,a[0],a[1],a[2],1];return e.transform(o)}function dx(e,t,n){let r=pb(n);return e.outline.map(n=>{let i=lb(ub(e.origin,ub(db(e.xAxis,n[0]),db(e.yAxis,n[1]))),t),a=i[0]*r[0]+i[1]*r[1]+i[2]*r[2];return[fb(lb(i,db(r,a))),a]})}function fx(e,t,n){let r=e,i=pb(n);if(!(Math.abs(i[0])<1e-9&&Math.abs(i[2])<1e-9&&i[1]>0)){let e=Math.acos(Math.max(-1,Math.min(1,i[1])))*(180/Math.PI),t=cb([0,1,0],i);fb(t)<1e-9&&(t=[1,0,0]),t=pb(t),r=r.rotate([t[0]*e,t[1]*e,t[2]*e])}return(t[0]!==0||t[1]!==0||t[2]!==0)&&(r=r.translate([t[0],t[1],t[2]])),r}function px(e,t,n,r,i){let a=pb(t),{xAxis:o,yAxis:s}=hb(a),c=i*2*Math.PI,l=Math.max(8,Math.ceil(Math.abs(i)*24)),u=r*i,d=[];for(let t=0;t<=l;t++){let r=t/l,i=c*r,f=ub(db(o,n*Math.cos(i)),db(s,n*Math.sin(i)));d.push(ub(e,ub(f,db(a,u*r))))}return d}function mx(e){if(e.length!==0)return t=>{let n=t*(e.length-1),r=Math.floor(n),i=Math.min(e.length-1,r+1),a=n-r;return(e[r]??1)*(1-a)+(e[i]??1)*a}}function hx(e,t,n,r){let i=bb(t),a=pb([n[0],n[1],n[2]]),o=fb([n[0]*r,n[1]*r,n[2]*r]),s=[rx(i),...(i.holes??[]).map(e=>e.map(e=>[e[0],e[1]]))];return M(ux(Db(e,e.Manifold.extrude(s,o)),i,a),j(`extrude`,{outline:i.outline,holes:i.holes,origin:i.origin,xAxis:i.xAxis,yAxis:i.yAxis,direction:[n[0],n[1],n[2]],length:r},[P($b(t))]))}function gx(e,t,n,r,i,a,o){let s=bb(t),c=ex(i),l=dx(s,n,r);return M(fx(e.Manifold.revolve([l],0,c),n,r),j(a,o,[P($b(t))]))}function _x(e,t){let n=e.length;if(n===0||t.length!==n)return e;let r=0,i=1/0;for(let a=0;a<n;a++){let o=0;for(let r=0;r<n&&o<i;r++){let i=e[(r+a)%n]??[0,0,0],s=t[r]??[0,0,0],c=i[0]-s[0],l=i[1]-s[1],u=i[2]-s[2];o+=c*c+l*l+u*u}o<i&&(i=o,r=a)}if(r===0)return e;let a=[];for(let t=0;t<n;t++)a.push(e[(t+r)%n]??[0,0,0]);return a}function vx(e,t,n,r){if(t.length<2)throw Error(`manifold: loft requires at least two profiles`);let i=t.map(bb),a=i.reduce((e,t)=>Math.max(e,t.outline.length),0),o=i.map(e=>Tb({...e,outline:wb(e.outline,a)},ax(e)));for(let e=1;e<o.length;e++)o[e]=_x(o[e]??[],o[e-1]??[]);return M(Eb(e,o),j(n,{sections:i.map(ix),...r},t.map(e=>P($b(e)))))}function yx(e,t,n,r,i,a,o){let s=bb(t),c=kb(n,s.xAxis),l=c.length;return M(Eb(e,c.map((e,t)=>{let n=o?o(l>1?t/(l-1):0):1;return Tb(s,e,n)})),j(i,{section:ix(s),path:n.map(e=>[e[0],e[1],e[2]]),...a},[P($b(t)),r]))}function bx(e,t,n,r,i,a){if(r===null)return t;let o=bb(n),s=pb(cb(o.xAxis,o.yAxis)),c=Math.tan(i*Qb),l={origin:ub(o.origin,db(s,r)),xAxis:o.xAxis,yAxis:o.yAxis,tangent:s},u=1+c*r/ox(o),d=Eb(e,[Tb(o,ax(o),1),Tb(o,l,u)]),f=j(`draftPrism`,{outline:o.outline,origin:o.origin,xAxis:o.xAxis,yAxis:o.yAxis,height:r,angleDeg:i,fuse:a},[P($b(n))]);if(a){let e=$b(t);return M(N(e).add(d),j(`makeFuse`,{},[P(e),f]))}return M(d,f)}function xx(e){return{revolve:(t,n,r)=>{let i=nx(n);if(!i)throw Error(`manifold: revolve could not read the axis; pass {origin,direction}, a gp_Ax1, or use revolveVec`);let{origin:a,direction:o}=i;return gx(e,t,a,o,r,`revolve`,{...ix(bb(t)),axisOrigin:[a[0],a[1],a[2]],axisDirection:[o[0],o[1],o[2]],angleDeg:ex(r)})},revolveVec:(t,n,r,i)=>gx(e,t,n,r,i,`revolveVec`,{...ix(bb(t)),center:[n[0],n[1],n[2]],direction:[r[0],r[1],r[2]],angleDeg:ex(i)})}}function Sx(e){return{sweep:(t,n,r)=>{let i={};return r?.transitionMode!==void 0&&(i.transitionMode=r.transitionMode),yx(e,t,cx(n,16),lx(n),`sweep`,i)},simplePipe:(t,n)=>yx(e,t,cx(n,16),lx(n),`simplePipe`,{}),sweepWithOptions:(t,n,r,i,a)=>yx(e,t,cx(n,Math.max(2,a||16)),lx(n),`sweepWithOptions`,{contactMode:r,scaleValues:[...i],segments:a},mx(i)),sweepPipeShell:(t,n,r)=>{let i={};r?.transitionMode!==void 0&&(i.transitionMode=r.transitionMode);let a=yx(e,t,cx(n,16),lx(n),`sweepPipeShell`,i);return r?.shellMode?{shape:a,firstShape:t,lastShape:t}:a},helicalSweep:(t,n,r,i,a,o)=>yx(e,t,px(n,r,i,a,o),lx(t),`helicalSweep`,{axisOrigin:[n[0],n[1],n[2]],axisDirection:[r[0],r[1],r[2]],radius:i,pitch:a,turns:o})}}function Cx(e){return{extrude:(t,n,r)=>hx(e,t,n,r),...xx(e),loft:(t,n)=>vx(e,t,`loft`,{ruled:n??!1}),loftAdvanced:(t,n)=>vx(e,t,`loftAdvanced`,{solid:n?.solid??!0,ruled:n?.ruled??!1,tolerance:n?.tolerance}),...Sx(e),draftPrism:(t,n,r,i,a,o)=>bx(e,t,n,i,a,o),buildExtrusionLaw:(e,t,n)=>({type:`extrusionLaw`,profile:e,length:t,endFactor:n}),loftBatch:()=>ry(`loftBatch`),extrudeBatch:t=>t.map(t=>hx(e,t.face,t.direction,t.length))}}var wx=16;function Tx(e,t,n){if(!(n>0))return oy(t);let r=Ox(e,n);return r===void 0||typeof t?.minkowskiDifference!=`function`||typeof t?.minkowskiSum!=`function`?oy(t):t.minkowskiDifference(r).minkowskiSum(r)}function Ex(e,t,n){if(n===0)return oy(t);let r=Ox(e,Math.abs(n));return r===void 0?oy(t):n>0?typeof t?.minkowskiSum==`function`?t.minkowskiSum(r):oy(t):typeof t?.minkowskiDifference==`function`?t.minkowskiDifference(r):oy(t)}function Dx(e,t,n,r){if(n===0)return oy(t);if(r)return Ex(e,t,Math.abs(n));let i=Ex(e,t,-Math.abs(n));return typeof t?.subtract==`function`?t.subtract(i):oy(t)}function Ox(e,t){let n=e?.Manifold;if(typeof n?.sphere==`function`)return n.sphere(t,wx)}function kx(e){return e}function Ax(e){let t=e;if(t!=null){if(typeof t.index==`number`)return t.index;if(typeof t.id==`number`)return t.id}}function jx(e){let{min:t,max:n}=e;if(!(t===void 0||n===void 0||t.length<3||n.length<3))return[((t[0]??0)+(n[0]??0))/2,((t[1]??0)+(n[1]??0))/2,((t[2]??0)+(n[2]??0))/2]}function Mx(e){let t=e;if(t?.box!==void 0)return jx(t.box);let n=(e?.manifold)?.boundingBox?.();return n===void 0?void 0:jx(n)}function Nx(e){let t=e.length;if(t===0)return{kind:`all`,count:t};let n=[];for(let t of e){let e=Mx(t);if(e===void 0){n.length=0;break}n.push(e)}if(n.length===t)return{kind:`witness`,count:t,points:n};let r=[];for(let t of e){let e=Ax(t);if(e===void 0){r.length=0;break}r.push(e)}return r.length===t?{kind:`index`,count:t,indices:r}:{kind:`all`,count:t}}function Px(e){return typeof e==`function`&&ry(`fillet (per-edge radius callback)`),e}function Fx(e){return typeof e==`number`?e:e[0]}function Ix(e){let t=e.match(/[-+]?\d*\.?\d+/);return t?Number(t[0]):0}function Lx(e,t,n,r,i){let a=kx(n),o=Px(i),s=Nx(r);return M(Tx(e,N(a),Fx(o)),j(t,{radius:o,selection:s},[P(a)]))}function Rx(e,t,n,r,i){let a=kx(t),o=Nx(n);return M(Tx(e,N(a),r),j(`chamferDistAngle`,{distance:r,angleDeg:i,selection:o},[P(a)]))}function zx(e,t,n){let r=t.node;if(r?.op!==`extrude`)return;let i=r.params??{},a=i.outline,o=i.origin,s=i.direction,c=i.length;if(!a||a.length<3||!o||!s||typeof c!=`number`)return;let l=Math.abs(n);try{let n=new e.CrossSection([a.map(e=>[e[0],e[1]])]).offset(-l);if(typeof n.isEmpty==`function`&&n.isEmpty())return;let r=e.Manifold.extrude(n,c),i=Math.hypot(s[0],s[1],s[2])||1,u=Math.abs(s[0])<1e-9&&Math.abs(s[1])<1e-9&&s[2]>0,d=r;if(!u){let e=Math.atan2(Math.hypot(s[0],s[1]),s[2])*(180/Math.PI),t=Math.atan2(s[1],s[0])*(180/Math.PI);d=d.rotate([0,e,t])}return d=d.translate([o[0]+s[0]/i*l,o[1]+s[1]/i*l,o[2]+s[2]/i*l]),Db(e,N(t).subtract(d))}catch{return}}function Bx(e,t,n,r,i){let a=kx(t),o=Nx(n);return M(zx(e,a,r)??Dx(e,N(a),r,!1),j(`shell`,i===void 0?{thickness:r,selection:o}:{thickness:r,selection:o,tolerance:i},[P(a)]))}function Vx(e,t,n){let r=kx(t);return M(Dx(e,N(r),n,!0),j(`thicken`,{thickness:n},[P(r)]))}function Hx(e,t,n,r){let i=kx(t);return M(Ex(e,N(i),n),j(`offset`,r===void 0?{distance:n}:{distance:n,tolerance:r},[P(i)]))}function Ux(e,t,n){let r=kx(t);return M(Tx(e,N(r),Ix(n)),j(`filletVariable`,{spec:n},[P(r)]))}function Wx(e,t,n,r,i){typeof i==`function`&&ry(`draft (per-face angle callback)`);let a=kx(e),o=Nx(t);return M(oy(N(a)),j(`draft`,{pullDirection:n,neutralPlane:r,angleDeg:i,selection:o},[P(a)]))}function Gx(e,t){let n=kx(e),r=Nx(t);return M(oy(N(n)),j(`defeature`,{selection:r},[P(n)]))}function Kx(e){let t=kx(e),n=N(t);return M(typeof n?.simplify==`function`?n.simplify():oy(n),j(`simplify`,{},[P(t)]))}function qx(e){let t=kx(e),n=N(t);return M(typeof n?.mirror==`function`?n.mirror([1,0,0]):oy(n),j(`reverseShape`,{},[P(t)]))}function Jx(e,t){let n=kx(t.shape),r=Nx(t.edges.map(e=>e.edge)),i=t.edges.map(e=>e.r2===void 0?e.radius:[e.radius,e.r2]),a=t.edges[0]?.radius??0;return M(Tx(e,N(n),a),j(`fillet`,{radii:i,selection:r},[P(n)]))}function Yx(e){return{fillet:(t,n,r)=>Lx(e,`fillet`,t,n,r),chamfer:(t,n,r)=>Lx(e,`chamfer`,t,n,r),chamferDistAngle:(t,n,r,i)=>Rx(e,t,n,r,i),shell:(t,n,r,i)=>Bx(e,t,n,r,i),thicken:(t,n)=>Vx(e,t,n),offset:(t,n,r)=>Hx(e,t,n,r),filletVariable:(t,n)=>Ux(e,t,n),draft:(e,t,n,r,i)=>Wx(e,t,n,r,i),defeature:(e,t)=>Gx(e,t),offsetWire2D:()=>ry(`offsetWire2D`),simplify:e=>Kx(e),reverseShape:e=>qx(e),shellBatch:t=>t.map(t=>Bx(e,t.shape,t.faces,t.thickness,t.tolerance)),filletBatch:t=>t.map(t=>Jx(e,t))}}function Xx(e){return N(e).getMesh()}function Zx(e){let t=e.numProp,n=e.vertProperties.length/t;if(t===3)return new Float32Array(e.vertProperties);let r=new Float32Array(n*3);for(let i=0;i<n;i++)r[i*3]=e.vertProperties[i*t]??0,r[i*3+1]=e.vertProperties[i*t+1]??0,r[i*3+2]=e.vertProperties[i*t+2]??0;return r}function Qx(e,t){let n=new Float32Array(e.length);for(let r=0;r<t.length;r+=3){let i=(t[r]??0)*3,a=(t[r+1]??0)*3,o=(t[r+2]??0)*3,s=e[i]??0,c=e[i+1]??0,l=e[i+2]??0,u=(e[a]??0)-s,d=(e[a+1]??0)-c,f=(e[a+2]??0)-l,p=(e[o]??0)-s,m=(e[o+1]??0)-c,h=(e[o+2]??0)-l,g=d*h-f*m,_=f*p-u*h,v=u*m-d*p;for(let e of[i,a,o])n[e]=(n[e]??0)+g,n[e+1]=(n[e+1]??0)+_,n[e+2]=(n[e+2]??0)+v}for(let e=0;e<n.length;e+=3){let t=n[e]??0,r=n[e+1]??0,i=n[e+2]??0,a=Math.sqrt(t*t+r*r+i*i);a>1e-12&&(n[e]=t/a,n[e+1]=r/a,n[e+2]=i/a)}return n}function $x(e){let t=e.triVerts.length/3,{runIndex:n,runOriginalID:r}=e;if(!n||!r||n.length<2)return[{start:0,count:e.triVerts.length,faceHash:0}];let i=[];for(let e=0;e+1<n.length;e++){let a=n[e]??0,o=(n[e+1]??t*3)-a;o!==0&&i.push({start:a,count:o,faceHash:r[e]??0})}return i}function eS(e,t){let n=Xx(e),r=Zx(n),i=new Uint32Array(n.triVerts);return{vertices:r,normals:t.skipNormals?new Float32Array:Qx(r,i),triangles:i,uvs:t.includeUVs?new Float32Array(r.length/3*2):new Float32Array,faceGroups:$x(n)}}function tS(e,t,n){let r=Xx(e),i=Zx(r),a=r.triVerts,o=[],s=[],c=new Set,l=i.length/3,u=e=>{o.push(i[e*3]??0,i[e*3+1]??0,i[e*3+2]??0)};for(let e=0;e<a.length;e+=3){let t=a[e]??0,n=a[e+1]??0,r=a[e+2]??0;for(let[e,i]of[[t,n],[n,r],[r,t]]){let t=Math.min(e,i),n=Math.max(e,i),r=t*l+n;if(c.has(r))continue;c.add(r);let a=o.length/3;u(t),u(n),s.push({start:a,count:2,edgeHash:r})}}return{lines:new Float32Array(o),edgeGroups:s}}function nS(e){return!0}function rS(e){return{mesh:(e,t)=>eS(e,t),meshEdges:(e,t,n)=>tS(e,t,n),hasTriangulation:e=>nS(e),meshShape:(e,t,n)=>{}}}function iS(e,t=[0,0,0]){return Array.isArray(e)&&e.length>=3?[Number(e[0]),Number(e[1]),Number(e[2])]:[...t]}function aS(e,t=0){return typeof e==`number`?e:t}function oS(e,t=``){return typeof e==`string`?e:t}function sS(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function cS(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function lS(e,t,n,r){return sS(t,sS(cS(n,e[0]),cS(r,e[1])))}function uS(e,t){let n=t.outline??[];if(n.length<3)throw Error(`manifold replay: profile outline needs at least three points`);let r=iS(t.origin),i=iS(t.xAxis,[1,0,0]),a=iS(t.yAxis,[0,1,0]),o=n.map(e=>lS(e,r,i,a)),s=[];for(let t=0;t<o.length;t++){let n=o[t]??r,i=o[(t+1)%o.length]??r;s.push(e.makeLineEdge([n[0],n[1],n[2]],[i[0],i[1],i[2]]))}let c=e.makeWire(s),l=e.makeFace(c,!0);for(let t of s)e.dispose(t);return l}function dS(e,t){return uS(e,t)}function fS(e,t){let n=e.boundingBox(t);return[(n.min[0]+n.max[0])/2,(n.min[1]+n.max[1])/2,(n.min[2]+n.max[2])/2]}function pS(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function mS(e,t,n,r){let i=e.iterShapes(t,r);if(!n||n.kind===`all`)return i;if(n.kind===`witness`){let t=n.points??[],r=i.map(t=>fS(e,t)),a=[],o=new Set;for(let e of t){let t=-1,n=1/0;for(let a=0;a<i.length;a++){if(o.has(a))continue;let i=pS(e,r[a]??[0,0,0]);i<n&&(n=i,t=a)}let s=i[t];t>=0&&s!==void 0&&(o.add(t),a.push(s))}return a}if(n.kind===`index`){let e=n.indices??[],t=[];for(let n of e){let e=i[n];e!==void 0&&t.push(e)}return t}let a=n.regions??[],o=e=>a.some(t=>e[0]>=t.min[0]&&e[0]<=t.max[0]&&e[1]>=t.min[1]&&e[1]<=t.max[1]&&e[2]>=t.min[2]&&e[2]<=t.max[2]);return i.filter(t=>o(fS(e,t)))}function hS(e){let t=e.selection;return t===void 0?void 0:t}function gS(e){let t=e[0];if(t===void 0)throw Error(`manifold replay: op requires an input shape`);return t}function _S(e,t,n){return e.createAxis1(t[0],t[1],t[2],n[0],n[1],n[2])}function vS(e,t){return(n,r)=>{let i=uS(n,r),a=iS(r[e]),o=iS(r[t],[0,0,1]),s=aS(r.angleDeg,360);return n.revolve(i,_S(n,a,o),Math.PI/180*s)}}var yS={makeBox:(e,t)=>e.makeBox(aS(t.width),aS(t.height),aS(t.depth)),makeBoxWithCorners:(e,t)=>e.makeBoxFromCorners(iS(t.p1),iS(t.p2)),makeCylinder:(e,t)=>e.makeCylinder(aS(t.radius),aS(t.height),iS(t.center),iS(t.direction,[0,0,1])),makeSphere:(e,t)=>e.makeSphere(aS(t.radius),iS(t.center)),makeCone:(e,t)=>e.makeCone(aS(t.radius1),aS(t.radius2),aS(t.height),iS(t.center),iS(t.direction,[0,0,1])),makeTorus:(e,t)=>e.makeTorus(aS(t.majorRadius),aS(t.minorRadius),iS(t.center),iS(t.direction,[0,0,1])),makeEllipsoid:(e,t)=>e.makeEllipsoid(aS(t.aLength),aS(t.bLength),aS(t.cLength)),makeFuse:(e,t,n)=>{if(n.length<2)return gS(n);let r=gS(n);for(let t of n.slice(1))r=e.fuse(r,t);return r},makeCut:(e,t,n)=>{let r=gS(n);return e.cutAll(r,n.slice(1))},makeCommon:(e,t,n)=>{let r=gS(n);for(let t of n.slice(1))r=e.intersect(r,t);return r},translateShape:(e,t,n)=>e.translate(gS(n),aS(t.x),aS(t.y),aS(t.z)),rotateShape:(e,t,n)=>e.rotate(gS(n),aS(t.angle),iS(t.axis,[0,0,1]),iS(t.center)),scaleShape:(e,t,n)=>e.scale(gS(n),iS(t.center),aS(t.factor,1)),mirrorShape:(e,t,n)=>e.mirror(gS(n),iS(t.origin),iS(t.normal,[1,0,0])),transformShape:(e,t,n)=>e.transform(gS(n),t.matrix),generalTransform:(e,t,n)=>e.generalTransform(gS(n),t.linear,iS(t.translation),!!t.isOrthogonal),generalTransformNonOrthogonal:(e,t,n)=>e.generalTransformNonOrthogonal(gS(n),t.linear,iS(t.translation)),gridPattern:(e,t,n)=>{if(typeof e.gridPattern!=`function`)throw Error(`manifold replay: target kernel lacks gridPattern`);return e.gridPattern(gS(n),iS(t.directionX),iS(t.directionY),aS(t.spacingX),aS(t.spacingY),aS(t.countX,1),aS(t.countY,1))},profileEdge:(e,t)=>{let n=t.pts??[],r=n[0]??[0,0,0],i=n.length>1?n[n.length-1]??r:[r[0]+.001,r[1],r[2]];return e.makeLineEdge([r[0],r[1],r[2]],[i[0],i[1],i[2]])},profileWire:(e,t)=>{let n=t.ring??[],r=[];for(let t=0;t<n.length;t++){let i=n[t]??[0,0,0],a=n[(t+1)%n.length]??i;r.push(e.makeLineEdge([i[0],i[1],i[2]],[a[0],a[1],a[2]]))}let i=e.makeWire(r);for(let t of r)e.dispose(t);return i},profileFace:(e,t)=>uS(e,t),extrude:(e,t)=>{let n=uS(e,t);return e.extrude(n,iS(t.direction,[0,0,1]),aS(t.length,1))},revolve:vS(`axisOrigin`,`axisDirection`),revolveVec:vS(`center`,`direction`),loft:(e,t)=>{let n=(t.sections??[]).map(t=>bS(e,t));return e.loft(n,!!t.ruled)},loftAdvanced:(e,t)=>{let n=(t.sections??[]).map(t=>bS(e,t)),r={solid:t.solid!==!1,ruled:!!t.ruled};return typeof t.tolerance==`number`&&(r.tolerance=t.tolerance),e.loftAdvanced(n,r)},sweep:(e,t)=>e.sweep(xS(e,t),SS(e,t)),simplePipe:(e,t)=>e.simplePipe(xS(e,t),SS(e,t)),sweepWithOptions:(e,t)=>e.sweepWithOptions(xS(e,t),SS(e,t),oS(t.contactMode),t.scaleValues??[],aS(t.segments,0)),sweepPipeShell:(e,t)=>{let n=e.sweepPipeShell(xS(e,t),SS(e,t));return CS(n)?n.shape:n},helicalSweep:(e,t)=>e.helicalSweep(xS(e,t),iS(t.axisOrigin),iS(t.axisDirection,[0,0,1]),aS(t.radius),aS(t.pitch),aS(t.turns,1)),draftPrism:(e,t)=>{let n=uS(e,t);return e.draftPrism(n,n,n,aS(t.height),aS(t.angleDeg),!!t.fuse)},fillet:(e,t,n)=>{let r=gS(n),i=mS(e,r,hS(t),`edge`),a=t.radii,o=t.radius;if(a&&a.length>1){let t=new Map;for(let e=0;e<i.length;e++){let n=i[e],r=a[e]??a[a.length-1];n!==void 0&&r!==void 0&&t.set(n,r)}return e.fillet(r,i,e=>t.get(e)??0)}let s=a?.[0]??o;return e.fillet(r,i,s??0)},chamfer:(e,t,n)=>{let r=gS(n),i=mS(e,r,hS(t),`edge`);return e.chamfer(r,i,t.radius)},chamferDistAngle:(e,t,n)=>{let r=gS(n),i=mS(e,r,hS(t),`edge`);return e.chamferDistAngle(r,i,aS(t.distance),aS(t.angleDeg))},shell:(e,t,n)=>{let r=gS(n),i=mS(e,r,hS(t),`face`);return typeof t.tolerance==`number`?e.shell(r,i,aS(t.thickness),t.tolerance):e.shell(r,i,aS(t.thickness))},thicken:(e,t,n)=>e.thicken(gS(n),aS(t.thickness)),offset:(e,t,n)=>typeof t.tolerance==`number`?e.offset(gS(n),aS(t.distance),t.tolerance):e.offset(gS(n),aS(t.distance)),filletVariable:(e,t,n)=>e.filletVariable(gS(n),oS(t.spec)),draft:(e,t,n)=>{let r=gS(n),i=mS(e,r,hS(t),`face`);return e.draft(r,i,iS(t.pullDirection,[0,0,1]),iS(t.neutralPlane),aS(t.angleDeg))},defeature:(e,t,n)=>{let r=gS(n),i=mS(e,r,hS(t),`face`);return e.defeature(r,i)},simplify:(e,t,n)=>e.simplify(gS(n)),reverseShape:(e,t,n)=>e.reverseShape(gS(n)),hull:(e,t,n)=>e.hull([...n],aS(t.tolerance)),hullFromPoints:(e,t)=>{let n=t.points??[];return e.hullFromPoints(n.map(e=>({x:e[0],y:e[1],z:e[2]})),aS(t.tolerance))},sewAndSolidify:(e,t,n)=>e.sewAndSolidify([...n],aS(t.tolerance))};function bS(e,t){let n=dS(e,t);return e.iterShapes(n,`wire`)[0]??n}function xS(e,t){let n=t.section;return n?dS(e,n):uS(e,t)}function SS(e,t){let n=t.path??[];if(n.length<2)throw Error(`manifold replay: sweep spine needs at least two path points`);let r=[];for(let t=0;t+1<n.length;t++){let i=n[t]??[0,0,0],a=n[t+1]??[0,0,0];r.push(e.makeLineEdge([i[0],i[1],i[2]],[a[0],a[1],a[2]]))}let i=e.makeWire(r);for(let t of r)e.dispose(t);return i}function CS(e){return typeof e==`object`&&!!e&&`shape`in e&&`firstShape`in e&&`lastShape`in e}function wS(e,t,n,r){let i=n.get(e);if(i!==void 0)return i;if(!e.replayable)throw Error(`manifold replay: op '${e.op}' is not replayable (raw-mesh origin or unsupported)`);let a=yS[e.op];if(!a)throw Error(`manifold replay: no replay handler for op '${e.op}'`);let o=e.inputs.map(e=>wS(e,t,n,r)),s=a(t,e.params,o);return n.set(e,s),r.add(s),s}function TS(e,t,n=new Map){let r=new Set,i=wS(e,t,n,r);for(let e of r)e!==i&&t.dispose(e);return i}function ES(e){return N(e)}function DS(e){let t=e?.node?.params;if(!t)return;let n=t.pts??t.ring;if(n&&n.length)return n;let r=t.outline;if(r&&r.length){let e=t.origin??[0,0,0],n=t.xAxis??[1,0,0],i=t.yAxis??[0,1,0];return r.map(t=>[e[0]+n[0]*t[0]+i[0]*t[1],e[1]+n[1]*t[0]+i[1]*t[1],e[2]+n[2]*t[0]+i[2]*t[1]])}}function OS(e){let t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let r of e)for(let e=0;e<3;e++){let i=r[e]??0;i<(t[e]??1/0)&&(t[e]=i),i>(n[e]??-1/0)&&(n[e]=i)}return{min:t,max:n}}function kS(e){let t=e;if(t&&t.__manifoldSub&&t.box)return t.box;let n=DS(e);return n?OS(n):ES(e).boundingBox()}function AS(e){return ES(e)?.getMesh?.()}function jS(e,t){let n=t*e.numProp;return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function MS(e,t){let n=t*3;return[e.triVerts[n]??0,e.triVerts[n+1]??0,e.triVerts[n+2]??0]}function NS(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function PS(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function FS(e){let t=kS(e);return[(t.min[0]+t.max[0])/2,(t.min[1]+t.max[1])/2,(t.min[2]+t.max[2])/2]}function IS(e){let t=Math.floor(e.vertProperties.length/e.numProp);if(t===0)return[0,0,0];let n=[0,0,0];for(let r=0;r<t;r++){let t=jS(e,r);n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}return[n[0]/t,n[1]/t,n[2]/t]}function LS(e){let t=AS(e);if(!t)return FS(e);let n=Math.floor(t.triVerts.length/3),r=0,i=[0,0,0];for(let e=0;e<n;e++){let[n,a,o]=MS(t,e),s=jS(t,n),c=jS(t,a),l=jS(t,o),u=PS(s,NS(c,l))/6;r+=u,i[0]+=(s[0]+c[0]+l[0])/4*u,i[1]+=(s[1]+c[1]+l[1])/4*u,i[2]+=(s[2]+c[2]+l[2])/4*u}return Math.abs(r)<1e-12?IS(t):[i[0]/r,i[1]/r,i[2]/r]}function RS(e){let t=AS(e);if(!t)return FS(e);let n=Math.floor(t.triVerts.length/3),r=0,i=[0,0,0];for(let e=0;e<n;e++){let[n,a,o]=MS(t,e),s=jS(t,n),c=jS(t,a),l=jS(t,o),u=NS([c[0]-s[0],c[1]-s[1],c[2]-s[2]],[l[0]-s[0],l[1]-s[1],l[2]-s[2]]),d=Math.hypot(u[0],u[1],u[2])/2;r+=d,i[0]+=(s[0]+c[0]+l[0])/3*d,i[1]+=(s[1]+c[1]+l[1])/3*d,i[2]+=(s[2]+c[2]+l[2])/3*d}return r<1e-12?IS(t):[i[0]/r,i[1]/r,i[2]/r]}function zS(e){return ES(e).volume()}function BS(e){let t=e;return t&&t.__nativeFace&&typeof t.area==`number`?t.area:ES(e).surfaceArea()}function VS(e){let t=e;if(t&&t.__manifoldSub&&t.box)return{min:[...t.box.min],max:[...t.box.max]};let n=kS(e);return{min:[...n.min],max:[...n.max]}}function HS(e){return LS(e)}function US(e,t){let n=(e,t,n,r)=>{if(t<n)return[t,n];if(r<e)return[e,r];let i=(Math.max(e,n)+Math.min(t,r))/2;return[i,i]},[r,i]=n(e.min[0],e.max[0],t.min[0],t.max[0]),[a,o]=n(e.min[1],e.max[1],t.min[1],t.max[1]),[s,c]=n(e.min[2],e.max[2],t.min[2],t.max[2]),l=i-r,u=o-a,d=c-s;return{value:Math.sqrt(l*l+u*u+d*d),point1:[r,a,s],point2:[i,o,c]}}function WS(e,t){return US(kS(e),kS(t))}function GS(e,t=!1){return{volume:zS(e),area:BS(e),length:0,centerOfMass:HS(e),boundingBox:VS(e)}}function KS(e,t,n){let r=ly();if(!r)throw new c(`manifold: surfaceCurvature requires a registered occt kernel; none is available`);let i=sy(e);if(!i)return r.surfaceCurvature(e,t,n);if(!i.node.replayable)throw Error(`manifold: surfaceCurvature unsupported; shape originates from a non-replayable op (raw mesh import or mesh boolean)`);let a=dy.get(i.node)??(()=>{let e=TS(i.node,r);return dy.set(i.node,e),e})();return r.surfaceCurvature(a,t,n)}function qS(e){return{volume:e=>zS(e),area:e=>BS(e),length:e=>{let t=e;if(t&&t.__nativeEdge&&typeof t.length==`number`)return t.length;let n=sy(e)?.node;return n?.op===`profileEdge`&&n.params?.curve?tb(n.params.curve):ry(`length`)},centerOfMass:e=>HS(e),linearCenterOfMass:e=>HS(e),boundingBox:e=>VS(e),distance:(e,t)=>WS(e,t),surfaceCurvature:(e,t,n)=>KS(e,t,n),surfaceCenterOfMass:e=>RS(e),measureBulk:(e,t)=>GS(e,t),createDistanceQuery:e=>({distanceTo:t=>WS(e,t),dispose:()=>{}})}}function JS(e,t){let{runIndex:n,runOriginalID:r}=e;if(!n||!r)return 0;let i=t*3;for(let e=0;e<r.length;e++){let t=n[e]??0,a=n[e+1]??2**53-1;if(i>=t&&i<a)return r[e]??0}return 0}function YS(e){let t=e,n=t.triVerts,r=t.vertProperties,i=t.numProp||3,a=t.faceID,o=n.length/3,s=e=>{let t=e*i;return[r[t]??0,r[t+1]??0,r[t+2]??0]},c=new Map;for(let e=0;e<o;e++){let t=a?a[e]??e:e,n=c.get(t);n||(n=[],c.set(t,n)),n.push(e)}let l=[];for(let[e,r]of c){let i=0,a=0,o=0,c=0,u=0,d=0,f=0,p=1/0,m=1/0,h=1/0,g=-1/0,_=-1/0,v=-1/0,y=new Float32Array(r.length*9),b=0;for(let e of r){let t=s(n[e*3]??0),r=s(n[e*3+1]??0),l=s(n[e*3+2]??0),x=r[0]-t[0],S=r[1]-t[1],C=r[2]-t[2],w=l[0]-t[0],ee=l[1]-t[1],te=l[2]-t[2],ne=S*te-C*ee,re=C*w-x*te,ie=x*ee-S*w;i+=ne,a+=re,o+=ie;let ae=.5*Math.hypot(ne,re,ie);f+=ae;let oe=(t[0]+r[0]+l[0])/3,se=(t[1]+r[1]+l[1])/3,ce=(t[2]+r[2]+l[2])/3;c+=ae*oe,u+=ae*se,d+=ae*ce;for(let e of[t,r,l])e[0]<p&&(p=e[0]),e[1]<m&&(m=e[1]),e[2]<h&&(h=e[2]),e[0]>g&&(g=e[0]),e[1]>_&&(_=e[1]),e[2]>v&&(v=e[2]),y[b++]=e[0],y[b++]=e[1],y[b++]=e[2]}let x=Math.hypot(i,a,o)||1,S=[i/x,a/x,o/x],C=f>0?[c/f,u/f,d/f]:[0,0,0];l.push({__nativeFace:!0,faceId:e,originId:JS(t,r[0]??0),normal:S,center:C,area:f,min:[p,m,h],max:[g,_,v],tris:y})}return l}function XS(e){return!!e&&typeof e==`object`&&e.__nativeFace===!0}var ZS=Math.cos(45*Math.PI/180),QS=(e,t)=>e<t?e*1e9+t:t*1e9+e,$S=(e,t)=>e<t?`${e},${t}`:`${t},${e}`;function eC(e){let t=e,n=t.triVerts,r=t.vertProperties,i=t.numProp||3,a=t.faceID,o=n.length/3;if(!a)return[];let s=e=>{let t=e*i;return[r[t]??0,r[t+1]??0,r[t+2]??0]},c=e=>{let t=s(n[e*3]??0),r=s(n[e*3+1]??0),i=s(n[e*3+2]??0),a=r[0]-t[0],o=r[1]-t[1],c=r[2]-t[2],l=i[0]-t[0],u=i[1]-t[1],d=i[2]-t[2],f=o*d-c*u,p=c*l-a*d,m=a*u-o*l,h=Math.hypot(f,p,m)||1;return[f/h,p/h,m/h]},l=new Map;for(let e=0;e<o;e++){let t=n[e*3]??0,r=n[e*3+1]??0,i=n[e*3+2]??0,o=a[e]??e,s=c(e);for(let[e,n]of[[t,r],[r,i],[i,t]]){let t=QS(e,n),r=l.get(t);r||(r={v:[e,n],faces:[],nrm:[]},l.set(t,r)),r.faces.push(o),r.nrm.push(s)}}let u=new Map;for(let{v:e,faces:t,nrm:n}of l.values()){if(t.length!==2)continue;let[r,i]=t;if(r===i)continue;let[a,o]=n;if(a[0]*o[0]+a[1]*o[1]+a[2]*o[2]>ZS)continue;let s=$S(r,i),c=u.get(s);c||(c={faces:r<i?[r,i]:[i,r],segs:[]},u.set(s,c)),c.segs.push(e)}let d=[];for(let{faces:e,segs:t}of u.values())for(let n of tC(t))d.push(nC(e,n,s));return d}function tC(e){let t=new Map,n=new Set,r=(e,n)=>{let r=t.get(e);r||(r=[],t.set(e,r)),r.push(n)};e.forEach(([e,t],n)=>{r(e,n),r(t,n)});let i=(t,n)=>{let r=e[t]??[n,n];return r[0]===n?r[1]:r[0]},a=[];for(let r=0;r<e.length;r++){if(n.has(r))continue;n.add(r);let o=e[r]??[0,0],s=[o[0],o[1]];for(let r=0;r<e.length;r++){let e=s[s.length-1]??0,r=(t.get(e)??[]).find(e=>!n.has(e));if(r===void 0)break;n.add(r),s.push(i(r,e))}for(let r=0;r<e.length;r++){let e=s[0]??0,r=(t.get(e)??[]).find(e=>!n.has(e));if(r===void 0)break;n.add(r),s.unshift(i(r,e))}a.push(s)}return a}function nC(e,t,n){let r=t.length,i=new Float32Array(r*3),a=new Float32Array(r),o=1/0,s=1/0,c=1/0,l=-1/0,u=-1/0,d=-1/0,f=0,p=null;for(let e=0;e<r;e++){let r=n(t[e]??0);i[e*3]=r[0],i[e*3+1]=r[1],i[e*3+2]=r[2],p&&(f+=Math.hypot(r[0]-p[0],r[1]-p[1],r[2]-p[2])),a[e]=f,p=r,r[0]<o&&(o=r[0]),r[1]<s&&(s=r[1]),r[2]<c&&(c=r[2]),r[0]>l&&(l=r[0]),r[1]>u&&(u=r[1]),r[2]>d&&(d=r[2])}return{__nativeEdge:!0,faces:e,pts:i,arc:a,length:f,min:[o,s,c],max:[l,u,d],curveType:rC(i)?`LINE`:`CIRCLE`}}function rC(e){let t=e.length/3;if(t<=2)return!0;let n=e[0]??0,r=e[1]??0,i=e[2]??0,a=e[(t-1)*3]??0,o=e[(t-1)*3+1]??0,s=e[(t-1)*3+2]??0,c=a-n,l=o-r,u=s-i,d=Math.hypot(c,l,u)||1;c/=d,l/=d,u/=d;for(let a=1;a<t-1;a++){let t=(e[a*3]??0)-n,o=(e[a*3+1]??0)-r,s=(e[a*3+2]??0)-i,f=t*c+o*l+s*u,p=t-f*c,m=o-f*l,h=s-f*u;if(Math.hypot(p,m,h)>1e-6*Math.max(1,d))return!1}return!0}function iC(e){let t=e,n=t.triVerts,r=t.vertProperties,i=t.numProp||3,a=t.faceID;if(!a)return[];let o=n.length/3,s=new Map;for(let e=0;e<o;e++){let t=a[e]??e;for(let r=0;r<3;r++){let i=n[e*3+r]??0,a=s.get(i);a||(a=new Set,s.set(i,a)),a.add(t)}}let c=[];for(let[e,t]of s){if(t.size<3)continue;let n=e*i;c.push({__nativeVertex:!0,point:[r[n]??0,r[n+1]??0,r[n+2]??0]})}return c}function aC(e){return!!e&&typeof e==`object`&&e.__nativeVertex===!0}function oC(e){return!!e&&typeof e==`object`&&e.__nativeEdge===!0}function sC(e,t){let{pts:n,arc:r}=e,i=r.length;if(i===0)return[0,0,0];if(t<=0)return[n[0]??0,n[1]??0,n[2]??0];if(t>=e.length)return[n[(i-1)*3]??0,n[(i-1)*3+1]??0,n[(i-1)*3+2]??0];let a=1;for(;a<i&&(r[a]??0)<t;)a++;let o=r[a-1]??0,s=r[a]??o,c=s>o?(t-o)/(s-o):0,l=(a-1)*3,u=a*3;return[(n[l]??0)+((n[u]??0)-(n[l]??0))*c,(n[l+1]??0)+((n[u+1]??0)-(n[l+1]??0))*c,(n[l+2]??0)+((n[u+2]??0)-(n[l+2]??0))*c]}function cC(e,t){let{pts:n,arc:r}=e,i=r.length;if(i<2)return[1,0,0];let a=1;for(;a<i-1&&(r[a]??0)<t;)a++;let o=(a-1)*3,s=a*3,c=(n[s]??0)-(n[o]??0),l=(n[s+1]??0)-(n[o+1]??0),u=(n[s+2]??0)-(n[o+2]??0),d=Math.hypot(c,l,u)||1;return[c/d,l/d,u/d]}function lC(e,t){let n=sy(e);if(!n)throw Error(`manifold: ${t} requires a manifold shape handle`);if(!n.node.replayable)throw Error(`manifold: ${t} unsupported; shape originates from a non-replayable op (raw mesh import or mesh boolean)`);let r=uy(t),i=dy.get(n.node);if(i!==void 0)return{occt:r,brep:i};let a=TS(n.node,r);return dy.set(n.node,a),{occt:r,brep:a}}function uC(e){if(sy(e))return`solid`;let{occt:t,brep:n}=lC(e,`shapeType`);return t.shapeType(n)}function dC(e,t){let n=sy(e),r=sy(t);return!n||!r?!1:n.manifold===r.manifold}function fC(e,t){if(!sy(e))return 0;let{occt:n,brep:r}=lC(e,`hashCode`);return n.hashCode(r,t)}function pC(e){let t=sy(e);return!t||!N(t)}function mC(e,t){let n=sy(e);if(!n)return[];if(t===`solid`)return[e];if(t===`vertex`){let e=N(n);return e&&typeof e.getMesh==`function`?iC(e.getMesh()).map((e,t)=>({...e,__manifoldSub:!0,index:t,box:{min:e.point,max:e.point},parent:n.node,subType:`vertex`})):[]}if(t!==`edge`&&t!==`face`)return[];if(t===`face`){let e=N(n);if(e&&typeof e.getMesh==`function`)return YS(e.getMesh()).map((e,t)=>({...e,__manifoldSub:!0,index:t,box:{min:e.min,max:e.max},parent:n.node,subType:`face`}))}if(t===`edge`){let e=N(n);if(e&&typeof e.getMesh==`function`)return eC(e.getMesh()).map((e,t)=>({...e,__manifoldSub:!0,index:t,box:{min:e.min,max:e.max},parent:n.node,subType:`edge`}))}if(!n.node.replayable)return[];let r=ly();if(!r)return[];let i=dy.get(n.node)??(()=>{let e=TS(n.node,r);return dy.set(n.node,e),e})();return r.iterShapes(i,t).map((e,i)=>({__manifoldSub:!0,index:i,box:r.boundingBox(e),occt:e,parent:n.node,subType:t}))}function hC(e){let{occt:t,brep:n}=lC(e,`edgeToFaceMap`);return t.edgeToFaceMap(n)}function gC(e,t){let{occt:n,brep:r}=lC(e,`adjacentFaces`);return n.adjacentFaces(r,t)}function _C(e){return{iterShapes:mC,iterShapeList:(e,t)=>{uy(`iterShapeList`).iterShapeList(e,t)},shapeType:uC,isSame:dC,isEqual:dC,downcast:e=>e,copyShape:e=>{let t=sy(e);return t?M(oy(N(t)),j(`translateShape`,{x:0,y:0,z:0},[t.node])):e},hashCode:fC,isNull:pC,shapeOrientation:e=>`forward`,edgeToFaceMap:hC,sharedEdges:(e,t)=>uy(`sharedEdges`).sharedEdges(e,t),adjacentFaces:gC,sew:()=>{throw Error(`manifold: sew is unsupported on the mesh kernel; use a B-rep kernel`)}}}function vC(e){return N(e).getMesh()}function yC(e){return e.numProp&&e.numProp>=3?e.numProp:3}function bC(e){return Math.floor(e.vertProperties.length/yC(e))}function xC(e,t){let n=t*yC(e);return[e.vertProperties[n]??0,e.vertProperties[n+1]??0,e.vertProperties[n+2]??0]}function SC(e,t){let n=t*3;return[e.triVerts[n]??0,e.triVerts[n+1]??0,e.triVerts[n+2]??0]}function CC(e,t,n){let r=t[0]-e[0],i=t[1]-e[1],a=t[2]-e[2],o=n[0]-e[0],s=n[1]-e[1],c=n[2]-e[2],l=i*c-a*s,u=a*o-r*c,d=r*s-i*o,f=Math.hypot(l,u,d)||1;return[l/f,u/f,d/f]}function wC(e,t){let n=vC(e),r=Math.floor(n.triVerts.length/3);if(t){let e=new ArrayBuffer(84+r*50),t=new DataView(e);t.setUint32(80,r,!0);let i=84;for(let e=0;e<r;e++){let[r,a,o]=SC(n,e),s=xC(n,r),c=xC(n,a),l=xC(n,o),u=CC(s,c,l);t.setFloat32(i,u[0],!0),t.setFloat32(i+4,u[1],!0),t.setFloat32(i+8,u[2],!0),i+=12;for(let e of[s,c,l])t.setFloat32(i,e[0],!0),t.setFloat32(i+4,e[1],!0),t.setFloat32(i+8,e[2],!0),i+=12;t.setUint16(i,0,!0),i+=2}return e}let i=[`solid manifold`];for(let e=0;e<r;e++){let[t,r,a]=SC(n,e),o=xC(n,t),s=xC(n,r),c=xC(n,a),l=CC(o,s,c);i.push(` facet normal ${l[0]} ${l[1]} ${l[2]}`),i.push(` outer loop`);for(let e of[o,s,c])i.push(` vertex ${e[0]} ${e[1]} ${e[2]}`);i.push(` endloop`),i.push(` endfacet`)}return i.push(`endsolid manifold`),i.join(`
10
10
  `)}function TC(e){let t=vC(e),n=bC(t),r=Math.floor(t.triVerts.length/3),i=[`# exported by brepjs manifold kernel`];for(let e=0;e<n;e++){let n=xC(t,e);i.push(`v ${n[0]} ${n[1]} ${n[2]}`)}for(let e=0;e<r;e++){let[n,r,a]=SC(t,e);i.push(`f ${n+1} ${r+1} ${a+1}`)}return new TextEncoder().encode(i.join(`
@@ -4205,4 +4205,4 @@ No matching component was found for:
4205
4205
 
4206
4206
  gl_FragColor = vec4(lineColor, alpha);
4207
4207
  }
4208
- `;function ib({cellSize:e=10,lineColor:t=`#888898`,lineOpacity:n=.1,fadeStart:r=50,fadeEnd:i=200}){let a=(0,v.useRef)(null),o=i*2.5;return(0,v.useEffect)(()=>()=>{a.current?.dispose()},[]),(0,$.jsxs)(`mesh`,{rotation:[-Math.PI/2,0,0],position:[0,-.01,0],children:[(0,$.jsx)(`planeGeometry`,{args:[o,o]}),(0,$.jsx)(`shaderMaterial`,{ref:a,vertexShader:nb,fragmentShader:rb,uniforms:{cellSize:{value:e},lineColor:{value:new q(t)},lineOpacity:{value:n},fadeStart:{value:r},fadeEnd:{value:i}},transparent:!0,depthWrite:!1,side:2,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1})]})}function ab(){return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`hemisphereLight`,{args:[`#ffffff`,`#1a1a2e`,.65]}),(0,$.jsx)(`directionalLight`,{position:[-50,60,80],intensity:.85,color:`#fff8f0`}),(0,$.jsx)(`directionalLight`,{position:[40,-40,30],intensity:.15,color:`#e0e8ff`})]})}function ob({autoRotate:e=!1,target:t,gridVisible:n=!0,gridProps:r,controlsProps:i,controlsRef:a,onControlsStart:o}){let s={...a?{ref:a}:{},...t?{target:t}:{},...o?{onStart:o}:{}};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ab,{}),(0,$.jsx)(tb,{}),(0,$.jsx)(Ay,{makeDefault:!0,autoRotate:e,autoRotateSpeed:1.5,...s,...i}),n&&(0,$.jsx)(ib,{...r})]})}var sb={iso:new G(.6,.5,.6),front:new G(0,.3,1),top:new G(0,1,-.01),right:new G(1,.3,0)};function cb({data:e,view:t,fitSignal:n,projection:r,onFirstFrame:i}){let a=k_(e=>e.camera),o=k_(e=>e.invalidate),s=(0,v.useRef)(!1),c=(0,v.useRef)(i);c.current=i;let{center:l,radius:u}=(0,v.useMemo)(()=>{let t=jy(e);t.computeBoundingSphere();let n=t.boundingSphere??new zi(new G,1),r={center:n.center.clone(),radius:n.radius||1};return t.dispose(),r},[e]);return(0,v.useEffect)(()=>{let e=sb[t].clone().normalize();a.position.copy(l).addScaledVector(e,u*3),a.near=u/100,a.far=u*100;let n=a;if(n.isOrthographicCamera){let e=Math.min(n.right-n.left,n.top-n.bottom);e>0&&u>0&&(n.zoom=e/(u*2.4))}a.lookAt(l),a.updateProjectionMatrix(),o(),s.current||(s.current=!0,c.current?.())},[a,o,l,u,t,n,r]),null}function lb(){let e=k_(e=>e.camera);return(0,$.jsx)(ky,{makeDefault:!0,position:(0,v.useRef)([e.position.x,e.position.y,e.position.z]).current,zoom:20,near:.1,far:2e3})}function ub(){let e=k_(e=>e.gl);return(0,v.useEffect)(()=>(e.localClippingEnabled=!0,()=>{e.localClippingEnabled=!1}),[e]),null}function db({data:e,view:t=`iso`,fitSignal:n,autoRotate:r=!1,gridVisible:i=!0,projection:a=`perspective`,onFirstFrame:o,onError:s,errorFallback:c,children:l}){return(0,$.jsx)(By,{onError:s,fallback:c,children:(0,$.jsxs)(Qv,{frameloop:r?`always`:`demand`,gl:{preserveDrawingBuffer:!0},children:[(0,$.jsx)(ub,{}),a===`orthographic`&&(0,$.jsx)(lb,{}),(0,$.jsx)(ob,{autoRotate:r,gridVisible:i}),(0,$.jsx)(cb,{data:e,view:t,fitSignal:n,projection:a,onFirstFrame:o}),l]})})}var fb=[`iso`,`front`,`top`,`right`],pb={solid:`Solid`,wireframe:`Wire`,xray:`X-ray`},mb={iso:`Iso`,front:`Front`,top:`Top`,right:`Right`};function hb({viewMode:e,onViewModeChange:t,showEdges:n,onToggleEdges:r,showGrid:i,onToggleGrid:a,autoRotate:o,onToggleAutoRotate:s,projection:c,onToggleProjection:l,activeView:u,onView:d,onFit:f,onScreenshot:p,touch:m=!1,className:h}){return(0,$.jsxs)(`div`,{className:h,style:h?void 0:{...vb,gap:m?8:6},children:[(f||p)&&(0,$.jsxs)(gb,{touch:m,children:[f&&(0,$.jsx)(_b,{label:`Fit`,onClick:f,touch:m}),p&&(0,$.jsx)(_b,{label:`Snap`,onClick:p,touch:m})]}),e&&t&&(0,$.jsx)(gb,{touch:m,children:Object.keys(pb).map(n=>(0,$.jsx)(_b,{label:pb[n],active:e===n,touch:m,onClick:()=>{t(n)}},n))}),(r||a||s||l)&&(0,$.jsxs)(gb,{touch:m,children:[r&&(0,$.jsx)(_b,{label:`Edges`,active:n,onClick:r,touch:m}),a&&(0,$.jsx)(_b,{label:`Grid`,active:i,onClick:a,touch:m}),s&&(0,$.jsx)(_b,{label:`Spin`,active:o,onClick:s,touch:m}),l&&(0,$.jsx)(_b,{label:c===`orthographic`?`Ortho`:`Persp`,active:c===`orthographic`,touch:m,onClick:l})]}),d&&(0,$.jsx)(gb,{touch:m,children:fb.map(e=>(0,$.jsx)(_b,{label:mb[e],active:u===e,touch:m,onClick:()=>{d(e)}},e))})]})}function gb({children:e,touch:t}){return(0,$.jsx)(`div`,{style:t?Sb:yb,children:e})}function _b({label:e,active:t,onClick:n,touch:r}){return(0,$.jsx)(`button`,{type:`button`,onClick:n,"aria-pressed":t,style:{...r?Cb:bb,...t?xb:null},children:e})}var vb={position:`absolute`,top:12,right:12,zIndex:10,display:`flex`,flexDirection:`column`,gap:6,pointerEvents:`none`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},yb={display:`flex`,flexDirection:`column`,gap:4,padding:4,borderRadius:8,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(255, 255, 255, 0.08)`},bb={cursor:`pointer`,pointerEvents:`auto`,padding:`4px 10px`,borderRadius:5,fontSize:12,fontWeight:500,lineHeight:1.2,color:`#9aa3ad`,background:`rgba(255, 255, 255, 0.04)`,border:`1px solid transparent`,transition:`color 120ms, background 120ms`},xb={color:`#6ee7d7`,background:`rgba(45, 212, 191, 0.16)`,borderColor:`rgba(45, 212, 191, 0.3)`},Sb={...yb,gap:6,padding:6},Cb={...bb,padding:`9px 14px`,fontSize:13,borderRadius:6};function wb({dims:e,volume:t,area:n,triangles:r,valid:i,unit:a,className:o}){let s=a?` ${a}`:``,c=[];return e&&c.push((0,$.jsx)(Tb,{label:`Size`,value:`${Eb(e[0])} × ${Eb(e[1])} × ${Eb(e[2])}${s}`},`size`)),t!==void 0&&c.push((0,$.jsx)(Tb,{label:`Volume`,value:`${Eb(t)}${a?` ${a}³`:``}`},`vol`)),n!==void 0&&c.push((0,$.jsx)(Tb,{label:`Area`,value:`${Eb(n)}${a?` ${a}²`:``}`},`area`)),r!==void 0&&c.push((0,$.jsx)(Tb,{label:`Triangles`,value:r.toLocaleString()},`tris`)),i!==void 0&&c.push((0,$.jsx)(Tb,{label:`Validity`,value:i?`valid`:`invalid`,valueColor:i?`#6ee7d7`:`#f0a0a0`},`valid`)),c.length===0?null:(0,$.jsx)(`div`,{className:o,style:o?void 0:Db,children:c})}function Tb({label:e,value:t,valueColor:n}){return(0,$.jsxs)(`div`,{style:Ob,children:[(0,$.jsx)(`span`,{style:kb,children:e}),(0,$.jsx)(`span`,{style:{...Ab,...n?{color:n}:null},children:t})]})}function Eb(e){return Number.isFinite(e)?Number.isInteger(e)?e.toLocaleString():Number(e.toFixed(2)).toLocaleString():`—`}var Db={position:`absolute`,left:12,bottom:12,zIndex:10,display:`flex`,flexDirection:`column`,gap:2,padding:`8px 10px`,borderRadius:8,minWidth:150,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(255, 255, 255, 0.08)`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},Ob={display:`flex`,justifyContent:`space-between`,gap:16,fontSize:12,lineHeight:1.5},kb={color:`#7b8591`},Ab={color:`#c8cdd3`,fontVariantNumeric:`tabular-nums`},jb={PLANE:`Planar`,CYLINDER:`Cylindrical`,CONE:`Conical`,SPHERE:`Spherical`,TORUS:`Toroidal`,BEZIER_SURFACE:`Bézier`,BSPLINE_SURFACE:`B-spline`,REVOLUTION_SURFACE:`Revolved`,EXTRUSION_SURFACE:`Extruded`,OFFSET_SURFACE:`Offset`,OTHER_SURFACE:`Surface`};function Mb(e){return jb[e]??`Surface`}function Nb(e){return Number.isFinite(e)?Number.isInteger(e)?e.toLocaleString():Number(e.toFixed(2)).toLocaleString():`—`}function Pb({face:e,onClear:t,unit:n,className:r}){if(!e)return null;let[i,a,o]=e.normal;return(0,$.jsxs)(`div`,{className:r,style:r?void 0:Ib,children:[(0,$.jsxs)(`div`,{style:Lb,children:[(0,$.jsxs)(`span`,{style:Rb,children:[Mb(e.surfaceType),` face`]}),t&&(0,$.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Clear selection`,style:zb,children:`✕`})]}),(0,$.jsx)(Fb,{label:`Area`,value:`${Nb(e.area)}${n?` ${n}²`:``}`}),(0,$.jsx)(Fb,{label:`Normal`,value:`${Nb(i)}, ${Nb(a)}, ${Nb(o)}`})]})}function Fb({label:e,value:t}){return(0,$.jsxs)(`div`,{style:Bb,children:[(0,$.jsx)(`span`,{style:Vb,children:e}),(0,$.jsx)(`span`,{style:Hb,children:t})]})}var Ib={position:`absolute`,left:12,top:12,zIndex:10,display:`flex`,flexDirection:`column`,gap:2,padding:`8px 10px`,borderRadius:8,minWidth:170,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(74, 206, 204, 0.3)`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},Lb={display:`flex`,justifyContent:`space-between`,alignItems:`center`,gap:12,marginBottom:2},Rb={color:`#6ee7d7`,fontSize:12,fontWeight:600},zb={cursor:`pointer`,border:`none`,background:`transparent`,color:`#7b8591`,fontSize:12,lineHeight:1,padding:0},Bb={display:`flex`,justifyContent:`space-between`,gap:16,fontSize:12,lineHeight:1.5},Vb={color:`#7b8591`},Hb={color:`#c8cdd3`,fontVariantNumeric:`tabular-nums`},Ub=[`x`,`y`,`z`];function Wb({enabled:e,onToggle:t,axis:n,onAxisChange:r,position:i,min:a,max:o,onPositionChange:s,flip:c,onToggleFlip:l,className:u}){return(0,$.jsxs)(`div`,{className:u,style:u?void 0:Kb,children:[(0,$.jsx)(Gb,{label:`Section`,active:e,onClick:t}),e&&(0,$.jsxs)($.Fragment,{children:[Ub.map(e=>(0,$.jsx)(Gb,{label:e.toUpperCase(),active:n===e,onClick:()=>{r(e)}},e)),(0,$.jsx)(`input`,{type:`range`,min:a,max:o,step:(o-a)/200||.01,value:i,disabled:a===o,onChange:e=>{s(Number(e.target.value))},"aria-label":`Section position`,style:{...Yb,...a===o?{opacity:.4}:null}}),(0,$.jsx)(Gb,{label:`Flip`,active:c,onClick:l})]})]})}function Gb({label:e,active:t,onClick:n}){return(0,$.jsx)(`button`,{type:`button`,onClick:n,"aria-pressed":t,style:{...qb,...t?Jb:null},children:e})}var Kb={position:`absolute`,bottom:12,left:`50%`,transform:`translateX(-50%)`,zIndex:10,display:`flex`,alignItems:`center`,gap:4,padding:4,borderRadius:8,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(255, 255, 255, 0.08)`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},qb={cursor:`pointer`,padding:`4px 10px`,borderRadius:5,fontSize:12,fontWeight:500,lineHeight:1.2,color:`#9aa3ad`,background:`rgba(255, 255, 255, 0.04)`,border:`1px solid transparent`},Jb={color:`#6ee7d7`,background:`rgba(45, 212, 191, 0.16)`,borderColor:`rgba(45, 212, 191, 0.3)`},Yb={width:160,accentColor:`#4ACECC`,margin:`0 4px`};function Xb(e){let t=new URLSearchParams(e),n=t.get(`file`);return n?{dir:t.get(`dir`),file:n}:null}function Zb(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t).toLowerCase()}function Qb({inspect:e=!1}={}){let[t,n]=(0,v.useState)({status:`idle`});return(0,v.useEffect)(()=>{let t=Xb(window.location.search);if(!t){n({status:`error`,error:`missing ?file= parameter`});return}if(!t.dir){n({status:`error`,error:`missing ?dir= parameter`});return}n({status:`loading`});let r=new Worker(new URL(``+new URL(`kernelWorker-CI8DTNs_.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),i=!1;r.addEventListener(`message`,e=>{i||(e.data.type===`loaded`?n({status:`ready`,data:e.data.meshData,measurements:e.data.measurements}):n({status:`error`,error:e.data.error}))});let a=`/__model/${t.file.split(`/`).map(encodeURIComponent).join(`/`)}?dir=${encodeURIComponent(t.dir)}`;return fetch(a).then(e=>{if(!e.ok)throw Error(`fetch ${t.file}: ${e.status}`);return e.arrayBuffer()}).then(n=>{let i={type:`load`,bytes:n,ext:Zb(t.file),inspect:e};r.postMessage(i,[n])}).catch(e=>{i||n({status:`error`,error:e instanceof Error?e.message:String(e)})}),()=>{i=!0,r.terminate()}},[e]),t}var $b=[`iso`,`front`,`top`,`right`],ex=new Set;function tx(e){return $b.includes(e)}function nx(e){return ex.add(e),()=>ex.delete(e)}function rx(e){for(let t of ex)t(e)}function ix(){globalThis.__ready=!0}function ax(){let e=globalThis;e.__ready=!1,e.__renderView=e=>{tx(e)&&rx({view:e})},e.__setScene=e=>{e&&tx(e.view)&&rx(e)}}function ox({marks:e}){return(0,$.jsx)($.Fragment,{children:e.map((e,t)=>(0,$.jsx)(my,{position:[e.pos[0],e.pos[1],e.pos[2]],center:!0,children:(0,$.jsx)(`div`,{style:{background:`#ffcc00`,color:`#000`,font:`700 13px monospace`,padding:`1px 5px`,borderRadius:4,border:`1px solid #000`,whiteSpace:`nowrap`,pointerEvents:`none`},children:e.label})},`${e.label}-${t}`))})}var sx=new URLSearchParams(window.location.search),cx=sx.get(`ui`)!==`0`,lx=sx.get(`dims`)===`1`;function ux(){let e=document.querySelector(`canvas`);if(!e)return;let t=e.toDataURL(`image/png`),n=document.createElement(`a`);n.href=t,n.download=`brepjs-view.png`,n.click()}function dx(){let e=Qb({inspect:cx}),[t,n]=(0,v.useState)(`iso`),[r,i]=(0,v.useState)(`solid`),[a,o]=(0,v.useState)(!0),[s,c]=(0,v.useState)(!0),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(`perspective`),[p,m]=(0,v.useState)(0),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(null),[b,x]=(0,v.useState)(!1),[S,C]=(0,v.useState)(`x`),[w,T]=(0,v.useState)(0),[E,D]=(0,v.useState)(!1),[O,k]=(0,v.useState)([]),A=(0,v.useCallback)(()=>{m(e=>e+1)},[]),ee=(0,v.useCallback)(e=>{g(e)},[]),j=(0,v.useCallback)(e=>{y(e?e.faceId:null)},[]),M=(0,v.useMemo)(()=>e.status===`ready`?My(e.data):null,[e]);(0,v.useEffect)(()=>nx(e=>{if(n(e.view),i(e.viewMode??`solid`),e.section&&M){let t=e.section.axis===`x`?0:e.section.axis===`y`?1:2;C(e.section.axis),T(M.min[t]+e.section.frac*(M.max[t]-M.min[t])),x(!0)}else x(!1);k(e.marks??[])}),[M]);let te=S===`x`?0:S===`y`?1:2,N=M?M.min[te]:0,P=M?M.max[te]:1,F=(0,v.useCallback)(e=>{if(!M)return 0;let t=e===`x`?0:e===`y`?1:2;return(M.min[t]+M.max[t])/2},[M]),ne=(0,v.useCallback)(()=>{x(e=>(e||T(F(S)),!e))},[F,S]),re=(0,v.useCallback)(e=>{C(e),T(F(e))},[F]),ie=(0,v.useMemo)(()=>b&&M?[Py(S,w,E)]:void 0,[b,M,S,w,E]);return e.status===`error`?(0,$.jsxs)(`div`,{style:{color:`#e88`,padding:16,fontFamily:`monospace`},children:[`error: `,e.error]}):e.status===`ready`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(db,{data:e.data,view:t,fitSignal:p,autoRotate:l,gridVisible:s,projection:d,onFirstFrame:ix,children:[(0,$.jsx)(zy,{data:e.data,viewMode:r,...ie?{clippingPlanes:ie}:{},...cx?{onFacePick:ee,onFaceHover:j}:{}}),a&&r!==`wireframe`&&e.data.edges.length>0&&(0,$.jsx)(Uy,{edges:e.data.edges,...ie?{clippingPlanes:ie}:{}}),cx&&(0,$.jsx)(Zy,{data:e.data,selectedFaceIds:h?[h.faceId]:[],hoverFaceId:_}),O.length>0&&(0,$.jsx)(ox,{marks:O})]}),cx&&(0,$.jsx)(Pb,{face:h,onClear:()=>{g(null)}}),cx&&(0,$.jsx)(Wb,{enabled:b,onToggle:ne,axis:S,onAxisChange:re,position:w,min:N,max:P,onPositionChange:T,flip:E,onToggleFlip:()=>{D(e=>!e)}}),cx&&(0,$.jsx)(wb,{dims:Ny(e.data),volume:e.measurements.volume,area:e.measurements.area,triangles:e.data.index.length/3,valid:e.measurements.valid}),!cx&&lx&&(0,$.jsx)(wb,{dims:Ny(e.data)}),cx&&(0,$.jsx)(hb,{viewMode:r,onViewModeChange:i,showEdges:a,onToggleEdges:()=>{o(e=>!e)},showGrid:s,onToggleGrid:()=>{c(e=>!e)},autoRotate:l,onToggleAutoRotate:()=>{u(e=>!e)},projection:d,onToggleProjection:()=>{f(e=>e===`perspective`?`orthographic`:`perspective`)},activeView:t,onView:n,onFit:A,onScreenshot:ux})]}):(0,$.jsx)(`div`,{style:{color:`#9aa`,padding:16,fontFamily:`monospace`},children:`loading model…`})}ax();var fx=document.getElementById(`root`);fx&&(0,y.createRoot)(fx).render((0,$.jsx)(v.StrictMode,{children:(0,$.jsx)(dx,{})}));
4208
+ `;function ib({cellSize:e=10,lineColor:t=`#888898`,lineOpacity:n=.1,fadeStart:r=50,fadeEnd:i=200}){let a=(0,v.useRef)(null),o=i*2.5;return(0,v.useEffect)(()=>()=>{a.current?.dispose()},[]),(0,$.jsxs)(`mesh`,{rotation:[-Math.PI/2,0,0],position:[0,-.01,0],children:[(0,$.jsx)(`planeGeometry`,{args:[o,o]}),(0,$.jsx)(`shaderMaterial`,{ref:a,vertexShader:nb,fragmentShader:rb,uniforms:{cellSize:{value:e},lineColor:{value:new q(t)},lineOpacity:{value:n},fadeStart:{value:r},fadeEnd:{value:i}},transparent:!0,depthWrite:!1,side:2,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1})]})}function ab(){return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`hemisphereLight`,{args:[`#ffffff`,`#1a1a2e`,.65]}),(0,$.jsx)(`directionalLight`,{position:[-50,60,80],intensity:.85,color:`#fff8f0`}),(0,$.jsx)(`directionalLight`,{position:[40,-40,30],intensity:.15,color:`#e0e8ff`})]})}function ob({autoRotate:e=!1,target:t,gridVisible:n=!0,gridProps:r,controlsProps:i,controlsRef:a,onControlsStart:o}){let s={...a?{ref:a}:{},...t?{target:t}:{},...o?{onStart:o}:{}};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ab,{}),(0,$.jsx)(tb,{}),(0,$.jsx)(Ay,{makeDefault:!0,autoRotate:e,autoRotateSpeed:1.5,...s,...i}),n&&(0,$.jsx)(ib,{...r})]})}var sb={iso:new G(.6,.5,.6),front:new G(0,.3,1),top:new G(0,1,-.01),right:new G(1,.3,0)};function cb({data:e,view:t,fitSignal:n,projection:r,onFirstFrame:i}){let a=k_(e=>e.camera),o=k_(e=>e.invalidate),s=(0,v.useRef)(!1),c=(0,v.useRef)(i);c.current=i;let{center:l,radius:u}=(0,v.useMemo)(()=>{let t=jy(e);t.computeBoundingSphere();let n=t.boundingSphere??new zi(new G,1),r={center:n.center.clone(),radius:n.radius||1};return t.dispose(),r},[e]);return(0,v.useEffect)(()=>{let e=sb[t].clone().normalize();a.position.copy(l).addScaledVector(e,u*3),a.near=u/100,a.far=u*100;let n=a;if(n.isOrthographicCamera){let e=Math.min(n.right-n.left,n.top-n.bottom);e>0&&u>0&&(n.zoom=e/(u*2.4))}a.lookAt(l),a.updateProjectionMatrix(),o(),s.current||(s.current=!0,c.current?.())},[a,o,l,u,t,n,r]),null}function lb(){let e=k_(e=>e.camera);return(0,$.jsx)(ky,{makeDefault:!0,position:(0,v.useRef)([e.position.x,e.position.y,e.position.z]).current,zoom:20,near:.1,far:2e3})}function ub(){let e=k_(e=>e.gl);return(0,v.useEffect)(()=>(e.localClippingEnabled=!0,()=>{e.localClippingEnabled=!1}),[e]),null}function db({data:e,view:t=`iso`,fitSignal:n,autoRotate:r=!1,gridVisible:i=!0,projection:a=`perspective`,onFirstFrame:o,onError:s,errorFallback:c,children:l}){return(0,$.jsx)(By,{onError:s,fallback:c,children:(0,$.jsxs)(Qv,{frameloop:r?`always`:`demand`,gl:{preserveDrawingBuffer:!0},children:[(0,$.jsx)(ub,{}),a===`orthographic`&&(0,$.jsx)(lb,{}),(0,$.jsx)(ob,{autoRotate:r,gridVisible:i}),(0,$.jsx)(cb,{data:e,view:t,fitSignal:n,projection:a,onFirstFrame:o}),l]})})}var fb=[`iso`,`front`,`top`,`right`],pb={solid:`Solid`,wireframe:`Wire`,xray:`X-ray`},mb={iso:`Iso`,front:`Front`,top:`Top`,right:`Right`};function hb({viewMode:e,onViewModeChange:t,showEdges:n,onToggleEdges:r,showGrid:i,onToggleGrid:a,autoRotate:o,onToggleAutoRotate:s,projection:c,onToggleProjection:l,activeView:u,onView:d,onFit:f,onScreenshot:p,touch:m=!1,className:h}){return(0,$.jsxs)(`div`,{className:h,style:h?void 0:{...vb,gap:m?8:6},children:[(f||p)&&(0,$.jsxs)(gb,{touch:m,children:[f&&(0,$.jsx)(_b,{label:`Fit`,onClick:f,touch:m}),p&&(0,$.jsx)(_b,{label:`Snap`,onClick:p,touch:m})]}),e&&t&&(0,$.jsx)(gb,{touch:m,children:Object.keys(pb).map(n=>(0,$.jsx)(_b,{label:pb[n],active:e===n,touch:m,onClick:()=>{t(n)}},n))}),(r||a||s||l)&&(0,$.jsxs)(gb,{touch:m,children:[r&&(0,$.jsx)(_b,{label:`Edges`,active:n,onClick:r,touch:m}),a&&(0,$.jsx)(_b,{label:`Grid`,active:i,onClick:a,touch:m}),s&&(0,$.jsx)(_b,{label:`Spin`,active:o,onClick:s,touch:m}),l&&(0,$.jsx)(_b,{label:c===`orthographic`?`Ortho`:`Persp`,active:c===`orthographic`,touch:m,onClick:l})]}),d&&(0,$.jsx)(gb,{touch:m,children:fb.map(e=>(0,$.jsx)(_b,{label:mb[e],active:u===e,touch:m,onClick:()=>{d(e)}},e))})]})}function gb({children:e,touch:t}){return(0,$.jsx)(`div`,{style:t?Sb:yb,children:e})}function _b({label:e,active:t,onClick:n,touch:r}){return(0,$.jsx)(`button`,{type:`button`,onClick:n,"aria-pressed":t,style:{...r?Cb:bb,...t?xb:null},children:e})}var vb={position:`absolute`,top:12,right:12,zIndex:10,display:`flex`,flexDirection:`column`,gap:6,pointerEvents:`none`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},yb={display:`flex`,flexDirection:`column`,gap:4,padding:4,borderRadius:8,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(255, 255, 255, 0.08)`},bb={cursor:`pointer`,pointerEvents:`auto`,padding:`4px 10px`,borderRadius:5,fontSize:12,fontWeight:500,lineHeight:1.2,color:`#9aa3ad`,background:`rgba(255, 255, 255, 0.04)`,border:`1px solid transparent`,transition:`color 120ms, background 120ms`},xb={color:`#6ee7d7`,background:`rgba(45, 212, 191, 0.16)`,borderColor:`rgba(45, 212, 191, 0.3)`},Sb={...yb,gap:6,padding:6},Cb={...bb,padding:`9px 14px`,fontSize:13,borderRadius:6};function wb({dims:e,volume:t,area:n,triangles:r,valid:i,unit:a,className:o}){let s=a?` ${a}`:``,c=[];return e&&c.push((0,$.jsx)(Tb,{label:`Size`,value:`${Eb(e[0])} × ${Eb(e[1])} × ${Eb(e[2])}${s}`},`size`)),t!==void 0&&c.push((0,$.jsx)(Tb,{label:`Volume`,value:`${Eb(t)}${a?` ${a}³`:``}`},`vol`)),n!==void 0&&c.push((0,$.jsx)(Tb,{label:`Area`,value:`${Eb(n)}${a?` ${a}²`:``}`},`area`)),r!==void 0&&c.push((0,$.jsx)(Tb,{label:`Triangles`,value:r.toLocaleString()},`tris`)),i!==void 0&&c.push((0,$.jsx)(Tb,{label:`Validity`,value:i?`valid`:`invalid`,valueColor:i?`#6ee7d7`:`#f0a0a0`},`valid`)),c.length===0?null:(0,$.jsx)(`div`,{className:o,style:o?void 0:Db,children:c})}function Tb({label:e,value:t,valueColor:n}){return(0,$.jsxs)(`div`,{style:Ob,children:[(0,$.jsx)(`span`,{style:kb,children:e}),(0,$.jsx)(`span`,{style:{...Ab,...n?{color:n}:null},children:t})]})}function Eb(e){return Number.isFinite(e)?Number.isInteger(e)?e.toLocaleString():Number(e.toFixed(2)).toLocaleString():`—`}var Db={position:`absolute`,left:12,bottom:12,zIndex:10,display:`flex`,flexDirection:`column`,gap:2,padding:`8px 10px`,borderRadius:8,minWidth:150,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(255, 255, 255, 0.08)`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},Ob={display:`flex`,justifyContent:`space-between`,gap:16,fontSize:12,lineHeight:1.5},kb={color:`#7b8591`},Ab={color:`#c8cdd3`,fontVariantNumeric:`tabular-nums`},jb={PLANE:`Planar`,CYLINDER:`Cylindrical`,CONE:`Conical`,SPHERE:`Spherical`,TORUS:`Toroidal`,BEZIER_SURFACE:`Bézier`,BSPLINE_SURFACE:`B-spline`,REVOLUTION_SURFACE:`Revolved`,EXTRUSION_SURFACE:`Extruded`,OFFSET_SURFACE:`Offset`,OTHER_SURFACE:`Surface`};function Mb(e){return jb[e]??`Surface`}function Nb(e){return Number.isFinite(e)?Number.isInteger(e)?e.toLocaleString():Number(e.toFixed(2)).toLocaleString():`—`}function Pb({face:e,onClear:t,unit:n,className:r}){if(!e)return null;let[i,a,o]=e.normal;return(0,$.jsxs)(`div`,{className:r,style:r?void 0:Ib,children:[(0,$.jsxs)(`div`,{style:Lb,children:[(0,$.jsxs)(`span`,{style:Rb,children:[Mb(e.surfaceType),` face`]}),t&&(0,$.jsx)(`button`,{type:`button`,onClick:t,"aria-label":`Clear selection`,style:zb,children:`✕`})]}),(0,$.jsx)(Fb,{label:`Area`,value:`${Nb(e.area)}${n?` ${n}²`:``}`}),(0,$.jsx)(Fb,{label:`Normal`,value:`${Nb(i)}, ${Nb(a)}, ${Nb(o)}`})]})}function Fb({label:e,value:t}){return(0,$.jsxs)(`div`,{style:Bb,children:[(0,$.jsx)(`span`,{style:Vb,children:e}),(0,$.jsx)(`span`,{style:Hb,children:t})]})}var Ib={position:`absolute`,left:12,top:12,zIndex:10,display:`flex`,flexDirection:`column`,gap:2,padding:`8px 10px`,borderRadius:8,minWidth:170,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(74, 206, 204, 0.3)`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},Lb={display:`flex`,justifyContent:`space-between`,alignItems:`center`,gap:12,marginBottom:2},Rb={color:`#6ee7d7`,fontSize:12,fontWeight:600},zb={cursor:`pointer`,border:`none`,background:`transparent`,color:`#7b8591`,fontSize:12,lineHeight:1,padding:0},Bb={display:`flex`,justifyContent:`space-between`,gap:16,fontSize:12,lineHeight:1.5},Vb={color:`#7b8591`},Hb={color:`#c8cdd3`,fontVariantNumeric:`tabular-nums`},Ub=[`x`,`y`,`z`];function Wb({enabled:e,onToggle:t,axis:n,onAxisChange:r,position:i,min:a,max:o,onPositionChange:s,flip:c,onToggleFlip:l,className:u}){return(0,$.jsxs)(`div`,{className:u,style:u?void 0:Kb,children:[(0,$.jsx)(Gb,{label:`Section`,active:e,onClick:t}),e&&(0,$.jsxs)($.Fragment,{children:[Ub.map(e=>(0,$.jsx)(Gb,{label:e.toUpperCase(),active:n===e,onClick:()=>{r(e)}},e)),(0,$.jsx)(`input`,{type:`range`,min:a,max:o,step:(o-a)/200||.01,value:i,disabled:a===o,onChange:e=>{s(Number(e.target.value))},"aria-label":`Section position`,style:{...Yb,...a===o?{opacity:.4}:null}}),(0,$.jsx)(Gb,{label:`Flip`,active:c,onClick:l})]})]})}function Gb({label:e,active:t,onClick:n}){return(0,$.jsx)(`button`,{type:`button`,onClick:n,"aria-pressed":t,style:{...qb,...t?Jb:null},children:e})}var Kb={position:`absolute`,bottom:12,left:`50%`,transform:`translateX(-50%)`,zIndex:10,display:`flex`,alignItems:`center`,gap:4,padding:4,borderRadius:8,background:`rgba(26, 29, 33, 0.7)`,backdropFilter:`blur(6px)`,border:`1px solid rgba(255, 255, 255, 0.08)`,fontFamily:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`},qb={cursor:`pointer`,padding:`4px 10px`,borderRadius:5,fontSize:12,fontWeight:500,lineHeight:1.2,color:`#9aa3ad`,background:`rgba(255, 255, 255, 0.04)`,border:`1px solid transparent`},Jb={color:`#6ee7d7`,background:`rgba(45, 212, 191, 0.16)`,borderColor:`rgba(45, 212, 191, 0.3)`},Yb={width:160,accentColor:`#4ACECC`,margin:`0 4px`};function Xb(e){let t=new URLSearchParams(e),n=t.get(`file`);return n?{dir:t.get(`dir`),file:n}:null}function Zb(e){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t).toLowerCase()}function Qb({inspect:e=!1}={}){let[t,n]=(0,v.useState)({status:`idle`});return(0,v.useEffect)(()=>{let t=Xb(window.location.search);if(!t){n({status:`error`,error:`missing ?file= parameter`});return}if(!t.dir){n({status:`error`,error:`missing ?dir= parameter`});return}n({status:`loading`});let r=new Worker(new URL(``+new URL(`kernelWorker-DdISCcle.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),i=!1;r.addEventListener(`message`,e=>{i||(e.data.type===`loaded`?n({status:`ready`,data:e.data.meshData,measurements:e.data.measurements}):n({status:`error`,error:e.data.error}))});let a=`/__model/${t.file.split(`/`).map(encodeURIComponent).join(`/`)}?dir=${encodeURIComponent(t.dir)}`;return fetch(a).then(e=>{if(!e.ok)throw Error(`fetch ${t.file}: ${e.status}`);return e.arrayBuffer()}).then(n=>{let i={type:`load`,bytes:n,ext:Zb(t.file),inspect:e};r.postMessage(i,[n])}).catch(e=>{i||n({status:`error`,error:e instanceof Error?e.message:String(e)})}),()=>{i=!0,r.terminate()}},[e]),t}var $b=[`iso`,`front`,`top`,`right`],ex=new Set;function tx(e){return $b.includes(e)}function nx(e){return ex.add(e),()=>ex.delete(e)}function rx(e){for(let t of ex)t(e)}function ix(){globalThis.__ready=!0}function ax(){let e=globalThis;e.__ready=!1,e.__renderView=e=>{tx(e)&&rx({view:e})},e.__setScene=e=>{e&&tx(e.view)&&rx(e)}}function ox({marks:e}){return(0,$.jsx)($.Fragment,{children:e.map((e,t)=>(0,$.jsx)(my,{position:[e.pos[0],e.pos[1],e.pos[2]],center:!0,children:(0,$.jsx)(`div`,{style:{background:`#ffcc00`,color:`#000`,font:`700 13px monospace`,padding:`1px 5px`,borderRadius:4,border:`1px solid #000`,whiteSpace:`nowrap`,pointerEvents:`none`},children:e.label})},`${e.label}-${t}`))})}var sx=new URLSearchParams(window.location.search),cx=sx.get(`ui`)!==`0`,lx=sx.get(`dims`)===`1`;function ux(){let e=document.querySelector(`canvas`);if(!e)return;let t=e.toDataURL(`image/png`),n=document.createElement(`a`);n.href=t,n.download=`brepjs-view.png`,n.click()}function dx(){let e=Qb({inspect:cx}),[t,n]=(0,v.useState)(`iso`),[r,i]=(0,v.useState)(`solid`),[a,o]=(0,v.useState)(!0),[s,c]=(0,v.useState)(!0),[l,u]=(0,v.useState)(!1),[d,f]=(0,v.useState)(`perspective`),[p,m]=(0,v.useState)(0),[h,g]=(0,v.useState)(null),[_,y]=(0,v.useState)(null),[b,x]=(0,v.useState)(!1),[S,C]=(0,v.useState)(`x`),[w,T]=(0,v.useState)(0),[E,D]=(0,v.useState)(!1),[O,k]=(0,v.useState)([]),A=(0,v.useCallback)(()=>{m(e=>e+1)},[]),ee=(0,v.useCallback)(e=>{g(e)},[]),j=(0,v.useCallback)(e=>{y(e?e.faceId:null)},[]),M=(0,v.useMemo)(()=>e.status===`ready`?My(e.data):null,[e]);(0,v.useEffect)(()=>nx(e=>{if(n(e.view),i(e.viewMode??`solid`),e.section&&M){let t=e.section.axis===`x`?0:e.section.axis===`y`?1:2;C(e.section.axis),T(M.min[t]+e.section.frac*(M.max[t]-M.min[t])),x(!0)}else x(!1);k(e.marks??[])}),[M]);let te=S===`x`?0:S===`y`?1:2,N=M?M.min[te]:0,P=M?M.max[te]:1,F=(0,v.useCallback)(e=>{if(!M)return 0;let t=e===`x`?0:e===`y`?1:2;return(M.min[t]+M.max[t])/2},[M]),ne=(0,v.useCallback)(()=>{x(e=>(e||T(F(S)),!e))},[F,S]),re=(0,v.useCallback)(e=>{C(e),T(F(e))},[F]),ie=(0,v.useMemo)(()=>b&&M?[Py(S,w,E)]:void 0,[b,M,S,w,E]);return e.status===`error`?(0,$.jsxs)(`div`,{style:{color:`#e88`,padding:16,fontFamily:`monospace`},children:[`error: `,e.error]}):e.status===`ready`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(db,{data:e.data,view:t,fitSignal:p,autoRotate:l,gridVisible:s,projection:d,onFirstFrame:ix,children:[(0,$.jsx)(zy,{data:e.data,viewMode:r,...ie?{clippingPlanes:ie}:{},...cx?{onFacePick:ee,onFaceHover:j}:{}}),a&&r!==`wireframe`&&e.data.edges.length>0&&(0,$.jsx)(Uy,{edges:e.data.edges,...ie?{clippingPlanes:ie}:{}}),cx&&(0,$.jsx)(Zy,{data:e.data,selectedFaceIds:h?[h.faceId]:[],hoverFaceId:_}),O.length>0&&(0,$.jsx)(ox,{marks:O})]}),cx&&(0,$.jsx)(Pb,{face:h,onClear:()=>{g(null)}}),cx&&(0,$.jsx)(Wb,{enabled:b,onToggle:ne,axis:S,onAxisChange:re,position:w,min:N,max:P,onPositionChange:T,flip:E,onToggleFlip:()=>{D(e=>!e)}}),cx&&(0,$.jsx)(wb,{dims:Ny(e.data),volume:e.measurements.volume,area:e.measurements.area,triangles:e.data.index.length/3,valid:e.measurements.valid}),!cx&&lx&&(0,$.jsx)(wb,{dims:Ny(e.data)}),cx&&(0,$.jsx)(hb,{viewMode:r,onViewModeChange:i,showEdges:a,onToggleEdges:()=>{o(e=>!e)},showGrid:s,onToggleGrid:()=>{c(e=>!e)},autoRotate:l,onToggleAutoRotate:()=>{u(e=>!e)},projection:d,onToggleProjection:()=>{f(e=>e===`perspective`?`orthographic`:`perspective`)},activeView:t,onView:n,onFit:A,onScreenshot:ux})]}):(0,$.jsx)(`div`,{style:{color:`#9aa`,padding:16,fontFamily:`monospace`},children:`loading model…`})}ax();var fx=document.getElementById(`root`);fx&&(0,y.createRoot)(fx).render((0,$.jsx)(v.StrictMode,{children:(0,$.jsx)(dx,{})}));
@@ -1 +1 @@
1
- function e(e,t,n={}){let r={position:e.vertices,normal:e.normals,index:e.triangles,edges:t,faceGroups:e.faceGroups.map(e=>({start:e.start,count:e.count,faceId:e.faceId}))};return n.color&&(r.color=n.color),r}function t(e,t){let r={valid:n(()=>e.isValid(t))??!1},i=n(()=>e.measureVolume(t));i&&e.isOk(i)&&typeof i.value==`number`&&i.value>0&&(r.volume=i.value);let a=n(()=>e.measureArea(t));return a&&e.isOk(a)&&typeof a.value==`number`&&a.value>0&&(r.area=a.value),r}function n(e){try{return e()}catch{return}}function r(e,t){switch(t.replace(/^\./,``).toLowerCase()){case`step`:case`stp`:return e.importSTEP;case`stl`:return e.importSTL;case`iges`:case`igs`:return e.importIGES;case`3mf`:return e.importThreeMF;case`glb`:case`gltf`:return e.importGLB;case`obj`:return e.importOBJ;default:throw Error(`unsupported file extension: ${t}`)}}function i(e,t){let n;try{n=e.getFaces(t)}catch(e){return console.warn(`[brepjs-cad] getFaces threw; faces unselectable`,e),[]}let r=[];for(let t of n)try{let n=e.getSurfaceType(t),i=e.isOk(n)&&n.value?n.value:`OTHER_SURFACE`,a=e.measureArea(t),o=e.isOk(a)&&typeof a.value==`number`?a.value:NaN;r.push({faceId:e.getHashCode(t),surfaceType:i,area:o,normal:e.normalAt(t)})}catch(e){console.warn(`[brepjs-cad] face metadata threw; skipping face`,e)}return r}async function a(n,a,o,s=!1){let c=await r(n,o)(a);if(!n.isOk(c)){let e=c.error;throw Error(`import failed: ${typeof e==`string`?e:JSON.stringify(e)}`)}let l=c.value,u=e(n.mesh(l),n.meshEdges(l).lines);return s&&(u.faceInfos=i(n,l)),{meshData:u,measurements:t(n,l)}}function o(e,t){t?self.postMessage(e,t):self.postMessage(e)}let s=null;function c(){return s||=l().catch(e=>{throw s=null,e}),s}async function l(){let e=new URL(`./`,self.location.origin).href,t=await fetch(`${e}wasm/occt-wasm.js`);if(!t.ok)throw Error(`failed to load occt-wasm.js: ${t.status}`);let n=URL.createObjectURL(new Blob([await t.text()],{type:`application/javascript`})),r=await import(n);URL.revokeObjectURL(n);let i=await r.default({locateFile:t=>t.endsWith(`.wasm`)?`${e}wasm/occt-wasm.wasm`:t}),a=await import(`./brepjs-Dwcl_dBX.js`),o=new i.OcctKernel;return a.registerKernel(`occt-wasm`,new a.OcctWasmAdapter(i,o)),a}function u(e){return[e.position.buffer,e.normal.buffer,e.index.buffer,e.edges.buffer]}async function d(e){try{let{meshData:t,measurements:n}=await a(await c(),new Blob([e.bytes]),e.ext,e.inspect??!1);o({type:`loaded`,meshData:t,measurements:n},u(t))}catch(e){o({type:`error`,error:e instanceof Error?e.message:String(e)})}}self.addEventListener(`message`,e=>{e.data.type===`load`&&d(e.data)});
1
+ function e(e,t,n={}){let r={position:e.vertices,normal:e.normals,index:e.triangles,edges:t,faceGroups:e.faceGroups.map(e=>({start:e.start,count:e.count,faceId:e.faceId}))};return n.color&&(r.color=n.color),r}function t(e,t){let r={valid:n(()=>e.isValid(t))??!1},i=n(()=>e.measureVolume(t));i&&e.isOk(i)&&typeof i.value==`number`&&i.value>0&&(r.volume=i.value);let a=n(()=>e.measureArea(t));return a&&e.isOk(a)&&typeof a.value==`number`&&a.value>0&&(r.area=a.value),r}function n(e){try{return e()}catch{return}}function r(e,t){switch(t.replace(/^\./,``).toLowerCase()){case`step`:case`stp`:return e.importSTEP;case`stl`:return e.importSTL;case`iges`:case`igs`:return e.importIGES;case`3mf`:return e.importThreeMF;case`glb`:case`gltf`:return e.importGLB;case`obj`:return e.importOBJ;default:throw Error(`unsupported file extension: ${t}`)}}function i(e,t){let n;try{n=e.getFaces(t)}catch(e){return console.warn(`[brepjs-cad] getFaces threw; faces unselectable`,e),[]}let r=[];for(let t of n)try{let n=e.getSurfaceType(t),i=e.isOk(n)&&n.value?n.value:`OTHER_SURFACE`,a=e.measureArea(t),o=e.isOk(a)&&typeof a.value==`number`?a.value:NaN;r.push({faceId:e.getHashCode(t),surfaceType:i,area:o,normal:e.normalAt(t)})}catch(e){console.warn(`[brepjs-cad] face metadata threw; skipping face`,e)}return r}async function a(n,a,o,s=!1){let c=await r(n,o)(a);if(!n.isOk(c)){let e=c.error;throw Error(`import failed: ${typeof e==`string`?e:JSON.stringify(e)}`)}let l=c.value,u=e(n.mesh(l),n.meshEdges(l).lines);return s&&(u.faceInfos=i(n,l)),{meshData:u,measurements:t(n,l)}}function o(e,t){t?self.postMessage(e,t):self.postMessage(e)}let s=null;function c(){return s||=l().catch(e=>{throw s=null,e}),s}async function l(){let e=new URL(`./`,self.location.origin).href,t=await fetch(`${e}wasm/occt-wasm.js`);if(!t.ok)throw Error(`failed to load occt-wasm.js: ${t.status}`);let n=URL.createObjectURL(new Blob([await t.text()],{type:`application/javascript`})),r=await import(n);URL.revokeObjectURL(n);let i=await r.default({locateFile:t=>t.endsWith(`.wasm`)?`${e}wasm/occt-wasm.wasm`:t}),a=await import(`./brepjs-P26RleUV.js`),o=new i.OcctKernel;return a.registerKernel(`occt-wasm`,new a.OcctWasmAdapter(i,o)),a}function u(e){return[e.position.buffer,e.normal.buffer,e.index.buffer,e.edges.buffer]}async function d(e){try{let{meshData:t,measurements:n}=await a(await c(),new Blob([e.bytes]),e.ext,e.inspect??!1);o({type:`loaded`,meshData:t,measurements:n},u(t))}catch(e){o({type:`error`,error:e instanceof Error?e.message:String(e)})}}self.addEventListener(`message`,e=>{e.data.type===`load`&&d(e.data)});
@@ -14,7 +14,7 @@
14
14
  background: #1a1d21;
15
15
  }
16
16
  </style>
17
- <script type="module" crossorigin src="./assets/index-C-Flb2I2.js"></script>
17
+ <script type="module" crossorigin src="./assets/index-BNHFpm0l.js"></script>
18
18
  </head>
19
19
  <body>
20
20
  <div id="root"></div>